- 掌握基本許可權ugo的命令(chmod、chown),列舉2條設定許可權命令並解釋每個單詞含義。
- 掌握基本許可權acl的命令(setfacl、getfacl),列舉2條設定許可權命令並解釋每個單詞含義。
- 瞭解特殊許可權含義(suid、chattr、umask),列舉2條設定許可權命令並解釋每個單詞含義。
1. 設定傳統許可權ugo
許可權物件:
- u(user)檔案或目錄的所有者,屬主
- g(group)檔案或目錄的所屬的組,屬組
- o(other)所有其他使用者,其他人
- a(all)所有人,u+g+o
許可權型別:
- r(read)讀取檔案內容或列出目錄內容,讀,r=4
- w(write)修改檔案內容或修改目錄中的檔案,寫,w=2
- x(execute)執行檔案或訪問目錄中的檔案,執行,x=1
chmod [options] mode filename
更改檔案或目錄許可權change mode
- 使用符號模式
cd /tmp # 切換至/tmp目錄
touch f1 # 在/tmp目錄下建立名為f1的空檔案
ls -l f1 # 長格式列出f1檔案的詳細資訊
# -rw-r--r--. 1 root root 0 11月 6 13:57 f1
chmod ug+x,o-r f1 # 為屬主和屬組新增執行檔案許可權,其他人刪除讀取檔案許可權
ls -l f1
# -rwxr-xr--. 1 root root 0 11月 6 13:57 f1,f1變為綠色表示可執行檔案
chmod g=-,o+rx f1 # 設定屬組無任何許可權,為其他人新增讀取和執行許可權
# -rwx---r-x. 1 root root 0 11月 6 13:57 f1
- 使用數字模式
chmod 750 f1 # 設定屬主許可權為讀、寫、執行,屬組許可權為讀、執行,其他人無許可權
ls -l f1
# -rwxr-x---. 1 root root 0 11月 6 13:57 f1
mkdir d1 # 新建名為d1的目錄
touch d1/f2 d1/f3 # 在d1目錄下建立f2和f3檔案
chmod -R 750 d1 # 遞迴更改d1目錄及其所有子目錄和檔案的許可權,如果不新增選項-R,則只更改目錄d1的許可權,目錄d1下的子目錄和檔案許可權不變
chown [options] [user].[group] filename
或chown [options] [user]:[group] filename
更改檔案或目錄的屬主和屬組
chown alice.root f1 # 設定f1檔案的屬主為alice,屬組為root
chown -R :alice d1 # 設定d1目錄及d1目錄下的子目錄和檔案的屬組為alice
2. 設定擴充套件許可權acl(access control list,訪問控制列表)
acl是對傳統ugo檔案許可權模型的擴充套件,ugo只能為1個使用者,1個組和其他人設定許可權。而acl提供更細粒度的許可權控制,它允許為特定使用者而不止是檔案的所有者、為特定組而不止是檔案所屬組設定許可權,能設定掩碼限制所有組的許可權,為新建檔案和子目錄設定預設許可權。acl許可權優先順序高於ugo,如果一個檔案既有ugo又有acl許可權,acl許可權將決定最終訪問權。acl保留了ugo模型的基本結構同時增加了更多靈活性。
getfacl filename
檢視acl許可權
setfacl -m u:username:jurisdiction filename
,setfacl -m g:groupname:jurisdiction filename
修改或新增acl條目
setfacl -x u:[username] filename
,setfacl -x g:[groupname] filename
刪除特定或所有使用者或組的acl條目
setfacl -b filename
刪除所有acl
setfacl -R [other options] rules dictname
遞迴地為目錄及其子目錄和檔案設定acl許可權
新增acl許可權後使用ll
即ls -l
檢視會看到許可權後面有1個+
,表示該檔案或目錄有擴充套件地acl許可權,刪除acl許可權後使用ll
命令檢視時,許可權後是一個.
,表示該檔案或目錄有SELinux安全上下文。
3. 其它特殊許可權suid,sgid,stick,chattr,umask
- suid允許使用者在執行某個程式時暫時獲得該程式所有者的許可權,這是一種強大的機制,但也可能帶來安全風險,因此需要謹慎使用。當一個檔案被設定了suid許可權時,任何使用者執行該檔案,都會以檔案所有者的身份執行,而不是以執行該檔案的使用者的身份執行。
chmod u+s filename
設定suid許可權,chmod u-s filename
移除suid許可權
- sgid類似於suid是一種特殊的檔案許可權,但作用於組而不是使用者。sgid允許使用者在執行某個程式時暫時獲得該程式所屬組的許可權,這在需要共享資源或執行需要特定組許可權的任務時非常有用。
chmod g+s filename
和chmod g+s dictname
設定sgid許可權,chmod g-s filename
和chmod g-s dictname
移除sgid許可權。
- stick
- chattr用於更改檔案或目錄屬性的命令,允許設定和取消各種檔案屬性。
chattr [options] [attributes] filename
chattr +i f1
新增檔案不可更改(刪除、重新命名、修改),chattr -i f1
移除不可更改屬性。
- umask使用者檔案建立模式掩碼,用於設定新建立檔案和目錄的預設許可權。檔案的預設許可權通常為666(rw-rw-rw-),表示所有使用者都有讀取和寫入許可權但是沒有執行許可權,目錄的預設許可權通常是777(rwxrwxrwx),表示所有使用者都有讀取寫入和執行許可權。umask是一個許可權掩碼,用於從預設許可權中移除某些許可權位,umask的值表示要移除的許可權位。