1. 程式人生 > >Linux入門教程:檔案許可權、使用者、使用者組

Linux入門教程:檔案許可權、使用者、使用者組

單個檔名或目錄名長度不超過255字元;檔案或目錄的絕對路徑長度不超過4096字元。


一、檔案所有者與使用者組

一個檔案有很多屬性,包括檔案型別、檔案許可權、檔案隱藏許可權、檔案所有者、使用者組、檔案大小、建立日期、修改日期、訪問日期等。

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;



更多精彩linux視訊教程,盡在51CTO學院: