1. 程式人生 > >linux檔案許可權學習小結

linux檔案許可權學習小結

參考:《linux鳥哥私房菜》

Linux一般將檔案可存取的身份分為三個類別,分別是 owner/group/others,三種身份各有

read/write/execute 等許可權。


第一個字元代表這個檔案的種類

[ d ]則是目錄。就是資料夾

[ - ]則是檔案。普通建立的檔案;

[ l ]則表示為連結檔(link file);

[ b ]則表示為裝置檔案裡面的可供儲存的介面裝置(可隨機存取裝置);

[ c ]則表示為裝置檔案裡面的串列埠裝置,例如鍵盤、滑鼠(一次性讀取裝置)。

許可權有9位標識,前三個是擁有者許可權,中間三個是組許可權,最後三個是其它許可權。每三位看作二進位制的三位,三位最多表示0-7八個數字。八個數字對應不同的許可權組合。第一位表示數字大小為4,讀許可權。第二位表示數字大小為2,寫許可權。第三位表示數字1,執行許可權。檔案分成3個擁有者許可權的目的,就如同個人,家庭和其他人的關係。家庭可以共享一些資源,個人也會有一些私人空間。rwx許可權對於於對檔案具有的操作型別。資料夾是沒有執行的含義的,x對於資料夾來說是能否進入的許可權。

連線數表示有多少檔名連結到此節點(i-node):

每個檔案都會將他的許可權屬性記錄到檔案系統的 i-node中,我們使用的目錄樹卻是使用檔名來記錄,因此每個檔名就會連結到一個i-node,這個屬悵記錄有多少不同的檔名連結到相同的一個 i-node 號碼。

常用的許可權修改命令:

chgrp :改變檔案所屬群組

chown :改變檔案擁有者

chmod :改變檔案的許可權, SUID, SGID,SBIT 等等的特悵

命令 使用者名稱 檔名

chgrp user1 file1

chown user1 file1

我們還可以使用加:的方式,一次性修改它的屬主和組。

chown user1:user1 file

chmod按照數字修改許可權

chmod 777 file----rwxrwxrwx

檔案預設許可權:umask--預設檔案許可權

我們可以輸入umask,顯示的是0022.先不管第一位。

對於文件而言,使用666-後三位得到文件的許可權

對於目錄而言,使用777-後三位得到檔案的許可權

如果umask改成了003的話,文件的是666-002=664,注意文件不考慮1(x)

目錄依然是777-003=774的許可權。

檔案特殊許可權: SUID,SGID, SBIT

ls -l /usr/bin/passwd

ls -l /etc/shadow

passwd的許可權-rwsr-xr-x 1 root root

shadow的許可權----------. 1 root root

我們可以修改自己的密碼!但是如果你用user1登陸的話,想修改密碼,寫入檔案shadow中去,沒有w許可權是辦不到的。但是user1對passwd指令有x的許可權,擁有執行許可權的使用者,就上升到了擁有者root的許可權,這就是s的作用。對二迚製程序(SUID 僅可用在binary program 上),執行者將具有該程式擁有者 (owner) 的許可權。

SGID與SUID類似,只是SGID是獲取屬組的許可權,而且對目錄文件都有效。

SBIT 目前只對目錄有效,對文件是無效的。

如果others對目錄有w的許可權,就可以刪除掉目錄的東西,加上sbit後,則只可以刪除自己建立的文件和目錄。

SUID 4

SGID 2

SBIT 1

在許可權數字前設定,最大是7最小是0

例如,利用chmod4700 file來設定許可權。但是如果文件本身沒有執行許可權,則s會變成S,代表空。

ACL

有時候我們會有這樣的需求。對其他使用者,讓某一個使用者具有特殊的許可權,這種授權,僅僅使用前面的是不可能做到的。因此,我們引入了acl 

acl的命令格式為-------設定------setacl -m u:使用者:許可權 file

                               -------檢視------getacl file

-x 刪除acl

-m設定檔案acl

-b移除所有

-R遞迴設定acl