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
)。
-
S
是s
的一個變體,給檔案所有者或使用者組設定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/