在linux系統中,存在兩種類型的用戶:root用戶和普通用戶。root用戶幾乎不受權限限制,而普通用戶則受到嚴格的權限控制。
當使用ls -l命令查看目錄內容時,會看到一系列字符,如下圖所示:
這些字符的含義如下:
- 擁有者:表示文件或目錄的所屬者。
- 所屬組:表示文件或目錄所屬的組。
-
第一個字符:
- d:表示目錄。
- -:表示普通文件。
-
后面九個字符(每組三個):
- r表示讀權限。
- w表示寫權限。
- x表示執行權限。
這些權限分為三組:
- 第一組:擁有者的權限。
- 第二組:所屬組的權限。
- 第三組:其他人的權限。
要改變這些權限,可以使用以下命令:
- u:改變擁有者的權限。
- g:改變所屬組的權限。
- o:改變其他人的權限(other)。
也可以使用八進制方法進行權限更改:
- rwx:每一位權限可以用二進制表示,1表示有權限,0表示無權限。每組用八進制表示。
要更改文件或目錄的所有者和所屬組,需要使用以下命令:
- chown:更改擁有者。
- chgrp:更改所屬組。
這些操作需要root權限。
進入一個目錄需要什么權限呢?答案是需要x權限。
在目錄內創建文件則需要w權限。
目錄的初始權限為777,普通文件的初始權限為666。但實際顯示的權限可能不同,這是因為umask的影響。umask中的權限不會出現在最終的權限中。
我的umask值是0002。
更改umask后,新創建的文件權限會發生變化。
最終的權限并不是簡單的初始權限減去umask,而是通過位運算得出的:最終權限 = 初始權限 & (~umask)。
粘滯位(sticky bit)可以防止用戶在共享目錄中刪除他人創建的文件或目錄。例如,創建一個共享目錄mytmp,并設置所有權限:
假設有兩個用戶,分別是temp和ML。
在沒有設置粘滯位的情況下,用戶可以在共享目錄中刪除其他用戶的文件:
設置粘滯位后,用戶就無法刪除其他用戶的文件了: