Linux 檔案許可權

64G漂流瓶發表於2024-03-20

檢視檔案許可權:

 ls -l file_name
 -rw-r--r-- 12 linuxize users 12.0K Apr  28 10:10 file_name
|[-][-][-]- [------] [---]
| | | | | | |
| | | | | | +-----------> 7. Group 使用者組
| | | | | +-------------------> 6. Owner 所有者
| | | | +--------------------------> 5. Alternate Access Method
| | | +----------------------------> 4. Others Permissions 其他使用者許可權
| | +-------------------------------> 3. Group Permissions 使用者組許可權
| +----------------------------------> 2. Owner Permissions 所有者許可權
+------------------------------------> 1. File Type 檔案型別

檔案型別(1. File Type)

檔案型別。

-:檔案;

d:目錄;

l:(L) 連結;

許可權組

對於所有者和使用者組許可權,檔案/目錄建立時,預設賦值所有者為建立者,使用者組為建立者所在組,但它們是可被更改的。

繼檔案型別之後的 9 個字元,分為 3 個許可權組,都使用 -, r, w, x 來組合。

數值授權(推薦)

各許可權數值:

  • r (read 讀) = 4

  • w (write 寫) = 2

  • x (execute 執行) = 1

  • - (無許可權) = 0

由於各個許可權組合不會得到相同的數字,因此每一類使用者的許可權都可以用一個數字表示,修改許可權使用命令 chmod,格式為:

 chmod [OPTIONS] NUMBER FILE... # 多個檔案使用空格隔開

例:

 chmod 760 filename

7 表示所有者許可權:4 + 2 + 1 = 7,即 rwx,所有者擁有全部許可權。

6 表示使用者組許可權:4 + 2 = 6,即 rw-,使用者組擁有讀寫許可權。

0 表示其他使用者許可權:0,即 ---,其他使用者沒有許可權。

以數值形式檢視檔案許可權,使用 stat 命令:

 stat -c "%a" file_name

符號授權(有特殊用處)

格式:

 chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE...

解釋:

[ugoa…]

  • u - 所有者。

  • g - 使用者組。

  • o - 其他使用者。

  • a - 所有使用者,等同於 ugo

[-+=]

  • - - 移除指定許可權。

  • + - 新增指定許可權。

  • = - 賦值指定許可權,覆蓋原有許可權,如果 = 後面為空,則為移除所有許可權。

perms...

  • 許可權符,可選且多選:r, w, x, X, s, t

  • 也可以複製其它許可權組,但只能單選:u, g, o

    例:chmod g=u filename

[,…]

  • 表示分別授權,, 之間不能有空格。例:chmod u=rwx,g=r,o= filename

FILE...

  • 為一個或多個檔案或目錄設定許可權,使用空格隔開。

修改使用者組
 chgrp new_group_name file_or_directory

修改所有者
 sudo chown [-R] new_owner_username[:new_group_name] /path/to/file_or_directory

引數:

  • -R:如果目標是目錄,遞迴修改此目錄及所有子目錄和檔案的所有者。

  • :new_group_name:使用者名稱:使用者組,修改所有者的同時指定使用者組,即:同時修改使用者組。

特殊許可權

特殊許可權:s, S, t, T

s:體現在所有者許可權組時:setuid (Set User ID up on execution),體現在使用者組許可權組時:setgid (Set Group ID up on execution),意思是執行時(有 x 許可權)提升許可權,以檔案所有者(setuid)或使用者組(setgid)的身份進行執行。

S:類似於 s,但沒有執行許可權(x)。

  • Ss 的一個變體,給檔案所有者或使用者組設定 s 許可權時,如果檔案已經擁有 x 許可權,則設定之後體現為 s,如果檔案沒有 x 許可權,則設定之後體現為 S

  • 沒有設定 S 許可權的命令,只有設定 s 許可權的命令,二者之間的體現取決於檔案原有的執行許可權 x

t:set sticky bit,最常見於像 /tmp 這樣的目錄上,它允許使用者在目錄中建立檔案或子目錄,但只允許檔案的所有者或管理者刪除或改名自己的檔案。

T:類似於 t,但沒有執行許可權(x),屬於 t 的變體。描述參照 S

特殊許可權授權

使用數值形式設定特殊許可權:

  • setuid = 4

  • setgid = 2

  • sticky = 1

  • no changes = 0 (可忽略)

特殊許可權數值放在第一位:

 sudo chmod 6760 filename

檔案許可權將展示為 -rwsrwS---

第一個數字 6:setuid + setgid = 4 + 2 = 6,因此在所有者和使用者中都體現了 s 許可權。由於所有者的許可權值為 7,有執行許可權,所以它表示為 s,而使用者組許可權為 6,沒有執行許可權,因此表示為 S

移除特殊許可權

移除特殊許可權,使其留下常規許可權,使用符號授權方式:

 sudo chmod u-s /path/to/file_or_directory

參考

參考文章:https://linuxize.com/post/understanding-linux-file-permissions/

相關文章