Linux入門:檔案許可權、使用者、使用者組__Linux
來源:互聯網
上載者:User
單個檔案名稱或目錄名長度不超過255字元; 檔案或目錄的絕對路徑長度不超過4096字元;
一、檔案所有者與使用者組
一個檔案有很多屬性,包括檔案類型、檔案許可權、檔案隱藏許可權、檔案所有者、使用者組、檔案大小、建立日期、修改日期、訪問日期等,比如下面是/etc/inittab檔案的屬性:
1.檔案類型
(1)d:目錄;find / -type d 查詢; (2)-:一般檔案; find / -type f 查詢; (3)l:連結檔案; find / -type l 查詢; (4)b:塊裝置,即存放裝置,比如/dev/sda; find / -type b 查詢; (5)c:字元裝置,即序列埠裝置,如鍵盤,比如/dev/zero; find / -type c 查詢; (6)s:socket,比如/var/run/acpid.socket; find / -type s 查詢; (7)p:pipe檔案,比如我們可以通過 mknod mypipe p 建立pipe檔案; find / -type p 查詢;
2.檔案所有者與使用者組
首先說明一點:檔案所有者與使用者組本身沒有什麼關係,比如使用者組可以是root,但是檔案所有者為xiazdong; 案例分析: (1)一個檔案的檔案所有者為xiazdong,使用者組為root,當前登入使用者為xiazdong,如果想要讓檔案的所有者變成root,能成功嗎。不能; (2)一個檔案的檔案所有者為xiazdong,使用者組為root,當前登入使用者為root,如果想要讓檔案的所有者變成root,能成功嗎。能; 總結一點:改檔案的所有者、使用者組應該是root的職責;
再說明一點:一個使用者總會歸屬於一個或多個使用者組,一個使用者組裡可以有多個使用者,比如root使用者歸屬於root使用者組,但是我們也可以建立一個使用者xzdong,及歸屬於group1使用者組,又歸屬於group2使用者組;
3.檔案的mtime、atime、ctime
mtime:檔案內容修改時間; atime:檔案訪問時間; ctime:檔案許可權、所有者被修改的時間;
ls
--time=atime/ctime
命令
chgrp、chown命令用來設定檔案的所有者、使用者組; (1)chgrp xiazdong test.txt:將test.txt的檔案使用者組設定為xiazdong; (2)chgrp xiazdong dir:將dir的檔案使用者組設定為xiazdong; (3)chown xiazdong test.txt:將test.txt的檔案所有者設定為xiazdong; (4)chown xiazdong:root test.txt:將test.txt的檔案所有者設定為xiazdong,使用者組設定為root;
二、檔案許可權
檔案許可權規定了檔案所有者對檔案/目錄的許可權、檔案所屬使用者組的成員對檔案/目錄的許可權、其他人對於檔案/目錄的許可權; (1)r:可讀許可權; (2)w:可寫入權限; (3)x:可執行許可權;
對於目錄和檔案來說,這些許可權代表的意義是不同的。 對於檔案來說: (1)r:可以讀取檔案的內容; (2)w:可以寫入檔案內容,但是不能刪除檔案,如果要賦予刪除檔案的許可權,則需要指定目錄許可權; (3)x:執行檔案,不是每個檔案都需要這個許可權的,比如txt檔案不需要;
對於目錄來說: (1)r:可以讀取目錄下的目錄結構,即能夠執行ls查看目錄下的檔案名稱; (2)w:能夠改變目錄的結構,即添加、刪除目錄下的檔案、對檔案重新命名; (3)x:能夠進入目錄,即cd到該目錄; 但是請注意:如果目錄只有r,但沒有x許可權,則只能ls出檔案名稱,而不能顯示檔案屬性,如下圖所示:
註:如果dir目錄下存在test.txt檔案,如果xiazdong使用者沒有dir的寫入權限,則就算對test.txt有rwx許可權,也不能刪除test.txt;
最要注意的是:不管檔案使用權限設定成什麼樣了(此處只討論一般的許可權,特殊許可權不算),root都能夠對檔案或目錄rwx;
案例:-rwxr--r-- 表示(1)檔案所有者能夠對該檔案可讀、可寫、可執行;(2)所屬使用者組能夠對該檔案可讀;(3)其他人能夠對該檔案可讀;
命令
chmod命令可以設定檔案的許可權; 注意:我們可以通過數字或符號設定許可權; 如果是數字,則4代表r,2代表w,1代表x,如果是5代表r-x,6代表rw-,7代表rwx; 如果是符號,則a代表全部人,u代表owner,g代表group,o代表others,r就是r,w就是w,x就是x,什麼都不寫表示一個許可權都沒有; (1)chmod 755 test.txt:賦予test.txt rwxr-xr-x (2)chmod u=rwx,go=r test.txt:賦予test.txt rwxr--r-- (3)chmod a=r test.txt:賦予test.txt r--r--r-- (4)chmod a+x test.txt:給test.txt全部的人添加x許可權; (5)chmod a-x test.txt:給test.txt全部的人刪除x許可權; (6)chmod u=rwx,go= test.txt:賦予test.txt rwx------
以下的部分均為ext檔案系統專屬特性
三、檔案隱藏屬性
(1)a:檔案只能添加,不能修改、刪除;常用於記錄檔; (2) i:檔案不能修改、刪除,即使root也不行,用於固定不變的檔案;
命令
1、lsattr list attribute,即列出檔案或目錄的隱藏屬性;
lsattr file:列出檔案的隱藏屬性; lsattr -d dir:列出目錄的隱藏屬性;
2、chattr
change attribute,即修改檔案或目錄的隱藏屬性; (1)i:如果設定了此屬性,則目錄或檔案不能被修改(即使root也不能修改或刪除他)。 (2)a:如果設定了此屬性,只能新增內容,而不能修改或刪除內容;
chattr +ai file:添加屬性; chattr -ai file:刪除屬性; chattr =a file:設定屬性;
四、檔案特殊許可權
檔案有3個特殊屬性: (1)SUID:在使用者所有者的x許可權位置為“s”,如/usr/bin/passwd; (2)SGID:在使用者組的x許可權位置為“s”,如/usr/bin/locate; (3)SBIT:在其他的x許可權位置為“t”,如/tmp;
SUID
SUID 只能賦予二進位檔案,並且使用者對該檔案具有x許可權時,賦予SUID才有效果; SUID效果:當一般使用者對二進位檔案b有x許可權,並且b檔案已經設有SUID許可權,當一般使用者執行b時,則此使用者會具有檔案所有者的許可權;
SGID
SGID能夠賦予目錄或檔案,執行者必須具備x許可權; SGID用途:團隊開發,並且一個目錄是團隊的共用目錄,任何人在此目錄中建立檔案,檔案的使用者組都是團隊,而不是個人使用者組; SGID效果: (1)當賦予檔案SGID時:當執行者執行時,此執行者會有使用者組的許可權; (2)當賦予目錄SGID時:執行者進入目錄後,有效使用者組為目錄的使用者組,比如使用者建立一個檔案,則此檔案的使用者組為目錄的使用者組; 比如建立chmodtest目錄,許可權為drwxrwsrwx,則用xiazdong進入該目錄後建立test.txt,則test.txt的檔案所有者為xiazdong,但是使用者組為root;
SBIT
只能賦予目錄,如果對目錄賦予SBIT之後,則使用者A在此目錄下建立的檔案或目錄只有root和使用者A能刪除,其他人不能刪除;
命令
設定SUID、SGID、SBIT,通過chmod設定;
SUID:4 SGID:2 SBIT:1
(1)-rwsrw-r--: 數字表示 :chmod 4764 file,第一個數字4就是設定了SUID; 符號表示:chmod u=rwxs,g=rw,o=r file (2)-rwxrwsr--: 數字表示 :chmod 2764 file,第一個數字2就是設定了SGID; 符號表示:chmod u=rwx,g=rwxs,o=r file (3)-rwxrwxr-t: 數字表示 :chmod 1764 file,第一個數字1就是設定了SBIT; 符號表示:chmod u=rwx,g=rwx,o=rt file
u+s:加上SUID; g+s:加上SGID; o+t:加上SBIT;