傳統Unix檔案系統許可權
類Unix系統中的許可權管理分為三個不同的類別:檔案擁有者、同組用戶以及其他用戶 。
在類Unix系統中,當一個新檔案被創建時,其許可權由創建該檔案的進程所用的umask決定。
許可權就是對檔案或目錄“加鎖”,有不同許可權的人才能進去不同的入口。
正常許可權
許可權的查看
其中rw-r--r--.就是這個檔案的許可權了,而後邊的root root代表檔案的屬主和數組。
我們先來看一下許可權用什麼代表:
•r:讀許可權(read)
•w:寫許可權(write)
•x執行(execute)
所屬:
•u:屬主
•g:屬組
•o:其他人
rw-r--r--9個位,分為三段,每段三個位,依次為r,w,x許可權,三段分別為屬主,屬組,其他人三種類別的許可權。
屬主具有讀寫許可權,屬組有讀許可權,其他人有讀許可權,如果顯示為-,則代表該類人沒有此許可權。那么root用戶對此檔案有讀和寫的許可權,但是沒有執行許可權,什麼是執行許可權呢,比如說我們的Windows中的exe檔案,能雙擊執行的就為可執行的,那么linux中,x則代表可執行,一般為腳本檔案,或者是二進制檔案(比如說ls命令)。
root組的用戶對這個檔案有隻讀許可權,也就是不能更改和執行了,。對於不是root用戶,和不屬於root組的用戶,則也是只有隻讀許可權。
許可權設定相關命令
許可權設定有兩種方法:
•模式法
對象+-=許可權
對象:ugoa——a相當於ugo三種類別的人
許可權:rwx
•數字法
數字也可以代表許可權,r使用4表示,w使用2表示,x使用1表示,1、2、4看著有規律啊,不錯,的確rwx使用二進制表示的話,有許可權使用1表示,沒有使用0。具體只要在相應位上有許可權,則二進制為1,則三個位組合起來,再從二進制轉化為十進制則數字可計算出來許可權。
umask
umask值用來消除創建檔案時的相應位上的許可權(從二進制方面理解);
新建檔案: 666 - umask值就是新建檔案的默認許可權,因為新建檔案默認沒有執行許可權的(沒有1許可權,所以只要有奇數許可權則代表有執行許可權),所以得到的許可權必定是偶數,如果umask為奇數,則用666減去將得到奇數許可權,如果所得結果某位存在奇數許可權,則將其許可權+1(因為從二進制方面理解,如果相應位沒有許可權,則多減了1,故要加上1來彌補這個許可權)。
新建目錄: 777 - umask值就是新建目錄的默認許可權;
管理員的umask 是 022;
普通用戶的umask是 002。
許可權的理解
X的作用(x許可權特殊形式)
•針對目錄增加x許可權
對檔案
•無執行的檔案,不會增加x許可權
•任意三種人有執行許可權,也會增加x許可權
檔案與目錄的許可權與注意
對目錄的許可權意義:
•只有讀:只能查看目錄檔案列表,不能訪問檔案,也不能cd目錄(查看,刪除)
•只有執行:可以cd進去,不能ls,可以訪問目錄中的檔案。執行是基礎許可權
•寫權取:配合x許可權才生效
特殊許可權
SUID
SUID許可權代表不管是誰執行此程式,將繼承此程式所有者的許可權。比如修改密碼命令passwd,因此每個用戶都可以用此命令修改自己的密碼,由於其繼承的是屬主root用戶的許可權。
SGID
SGID作用於目錄或可執行程式,作用於目錄代表在此目錄創建的檔案或目錄,默認的屬組繼承此目錄的屬組。
Sticky
貼上位許可權,只能作用於目錄上,只有自己才能刪除自己創建的檔案.使用t來表示,同樣需要執行許可權x,否則表現為T。有這樣的需求,如果多人合作,希望整個團隊的人都能更改這個目錄的檔案,但是這個目錄的檔案 不能被其他人刪除,比如說系統的/tmp目錄,這個目錄每個用戶都可以在裡面創建檔案,但是不能刪除其他用戶創建的檔案,除了root。
特殊許可權可以使用數字法
特殊許可權:
•SUID:4
•SGID:2
•Sticky:1
SUID只能作用於二進制可執行程式,不能作用於目錄,因為其對應的是程式,程式需要能執行。
刪除檔案要看其父目錄是否有許可權,否則儘管對一個檔案有讀寫許可權任然不能刪除。刪除的是目錄項中的檔案名稱。
參見
•訪問控制表
•chattr
•chmod
•檔案系統
•GID
•lsattr
•POSIX
•UID