千鋒Linux雲端計算-檔案許可權管理

松鼠q發表於2024-11-06
  1. 掌握基本許可權ugo的命令(chmod、chown),列舉2條設定許可權命令並解釋每個單詞含義。
  2. 掌握基本許可權acl的命令(setfacl、getfacl),列舉2條設定許可權命令並解釋每個單詞含義。
  3. 瞭解特殊許可權含義(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] filenamechown [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許可權

千鋒Linux雲端計算-檔案許可權管理

  setfacl -m u:username:jurisdiction filenamesetfacl -m g:groupname:jurisdiction filename修改或新增acl條目

  setfacl -x u:[username] filenamesetfacl -x g:[groupname] filename刪除特定或所有使用者或組的acl條目

  setfacl -b filename刪除所有acl

  setfacl -R [other options] rules dictname遞迴地為目錄及其子目錄和檔案設定acl許可權

新增acl許可權後使用llls -l檢視會看到許可權後面有1個+,表示該檔案或目錄有擴充套件地acl許可權,刪除acl許可權後使用ll命令檢視時,許可權後是一個.,表示該檔案或目錄有SELinux安全上下文。

千鋒Linux雲端計算-檔案許可權管理

3. 其它特殊許可權suid,sgid,stick,chattr,umask

  • suid允許使用者在執行某個程式時暫時獲得該程式所有者的許可權,這是一種強大的機制,但也可能帶來安全風險,因此需要謹慎使用。當一個檔案被設定了suid許可權時,任何使用者執行該檔案,都會以檔案所有者的身份執行,而不是以執行該檔案的使用者的身份執行。

  chmod u+s filename設定suid許可權,chmod u-s filename移除suid許可權

千鋒Linux雲端計算-檔案許可權管理

  • sgid類似於suid是一種特殊的檔案許可權,但作用於組而不是使用者。sgid允許使用者在執行某個程式時暫時獲得該程式所屬組的許可權,這在需要共享資源或執行需要特定組許可權的任務時非常有用。

  chmod g+s filenamechmod g+s dictname設定sgid許可權,chmod g-s filenamechmod 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的值表示要移除的許可權位。

相關文章