解密 Linux 文件系統權限
已發表: 2017-02-24Linux 文件權限對某些人來說似乎是神秘的數論象形文字,這是可以理解的。 Linux 的文件系統權限模型源於 UNIX 的遺留問題。 但是,一旦您了解了它們背後的邏輯,它們就很容易掌握。
權限組和類型
使用以下信息在文件系統中定義所有文件和文件夾訪問控制:
- 三個權限組: u代表所有者, g組, o或a ,所有用戶。
- 三種權限類型: r 、read、 x 、execute、 w 、write。
權限類型是字符“r”、“x”和“w”,稱為標誌,如果您以某種方式列出文件或文件夾的權限,就會顯示為這樣。 未設置的標誌用“-”字符表示。 權限組用於更改文件所有權和組的命令,我們將在稍後進行深入研究。
查看權限
您可以使用 GUI 文件管理器或通過在控制台終端中檢查ls命令的輸出來查看文件或文件夾的權限。
打開終端並輸入以下命令:
$觸摸測試
$ ls -la 測試
-rw-r–r– 1 yorgos 員工 0 Feb 23 17:07 測試
字符串“-rw-r–r–”包含我們感興趣的文件系統權限信息。其餘字段從左到右顯示以下信息:
- 該文件有多少個鏈接 (1)
- 所有者用戶 ID (yorgos)
- 組 ID(員工)
- 以字節為單位的文件長度 (0)
- 創建日期(2 月 23 日)
- 創建時間 (17:07)
- 文件名(測試)
權限位
您會注意到有 9 種不同的權限組和類型組合,但有 10 個標誌位置。 第一個顯示文件類型標誌,而後者指示權限本身。 文件類型可以是:“-”代表文件,“l”代表符號鏈接(這些文件系統鏈接只指向另一個文件)和“d”代表目錄。 由於我們示例中的第一個字符/標誌是“-”,因此我們談論的是一個簡單的文件。 繼續,讓我們分解權限字段:
– :文件類型(可以包含 l、- 或 d)
rw- :讀寫權限(不執行)。 這些權限是給所有者的。
r- : 讀權限,沒有寫和執行權限。 這些權限涉及屬於某個組的用戶。
r– :讀權限,不能寫和執行。 最後,這些權限關係到其他所有人。
所以實際上,這只是意味著“這個文件可以由所有者讀取和寫入,而其他人是只讀的”。 該組共享相同的權限。
修改權限
同樣,為了修改文件或文件夾的權限,您可以使用 GUI 命令(這超出了本文的範圍,因此我們不會去那裡)或在終端中使用某些 linux 命令。 我們將要使用的命令稱為chmod (更改文件模式)。 chmod命令接受以多種不同方式改變其行為的各種參數,但其一般用途如下:
$ chmod <模式> <文件>
<mode> 由以下符號指定:
r讀取標誌
w寫標誌
x執行標誌
u用戶/所有者權限標誌
g組權限標誌
o其他用戶權限標誌
還有一些其他的,但我們將在文章的最後部分討論這些。
因此,假設您想為屬於該組的用戶授予執行權限(但首先要確保您是文件的所有者!):
$ chown g+x 測試
$ ls -l 測試
-rwxrwxrwx 1 yorgos 員工 0 Feb 23 17:07 測試
或者,也許您需要完全鎖定其他所有人。 他們將無法讀取、寫入或執行文件:
$ chown o-rwx 測試
$ ls -l 測試
-rwxrwx— 1 yorgos 員工 0 Feb 23 17:07 測試
在這裡,我們看到最後一個標誌都未設置為“-”。
如果您想查看更多示例,請通過發出以下命令查閱 chmod 的手冊頁:
$ man chmod
所有者和組
您還可以使用chown命令更改文件的文件和組所有權。
chown命令接受以某種方式改變其行為的各種參數,但最常見的用法如下:
# chown <所有者> <文件>
或者
# chown <所有者:組> <文件>
第一個示例用於將文件的所有者更改為另一個文件的所有者。 但請記住,您必須具有 root 訪問權限才能更改文件的所有權。 因此,通過執行以下操作:
# chown 沒有人測試
# ls -l 測試
-rwxrwxrwt 1 無人員工 0 Feb 23 17:07 測試
現在發現該文件歸用戶標識“nobody”所有,不再歸“yorgos”所有。
同樣的命令:
# chown none: 車輪測試
# ls -l 測試
-rwxrwxrwt 1 無人輪 0 Feb 23 17:07 測試
將文件的所有權更改為nobody並將組更改為wheel 。
如果您想了解有關該命令及其各種參數的更多信息,請通過發出以下命令查閱 chown 手冊頁:
$ man chown
特殊權限
除了我們已經在文章中提到的權限類型和組之外,還有一些其他的,稱為“特殊權限”。
這些是:
s 設置用戶 ID 和設置組 ID 標誌。
噸 粘性標誌。
第一個是通過在chmod命令中以通常的方式使用“s”標誌設置的,如下所示:
$ chmod u+s 測試
$ ls -l 測試
-rwsrwx— 1 約戈斯 職員 0 二月 23 17:07 測試
此標誌也稱為 SUID(設置用戶 ID)或 SGID(設置組 ID)標誌。 如果設置了該位,則文件繼承其所有者的訪問權限。 這意味著執行文件的任何人都以所有者身份執行此操作。 SGID 類似,但文件繼承了其組的訪問權限。 當然,這可能會導致安全問題,因此必須小心。
粘性位或“t”特別有用。 當設置在一個目錄中時,通常像 /tmp 一樣共享,在那裡創建的文件只能由它們各自的所有者重命名或刪除。 如果未設置粘性位,則目錄的所有者無法控制它們。
您可以通過發出以下命令使目錄“粘性”:
$ chmod +t /目錄
八進製表示
除了使用標誌來定義諸如“r”和“w”之類的權限之外,您還可以使用數值。 chmod命令將以下值分配給權限:
“r” = 4
“w” = 2
“x” = 1
因此,為了將文件設置為所有者可以讀/寫/執行,其他人可以讀/執行,意思是“-rwxr-xr-x”,我們這樣計算數值:
rwx = 4+2+1 = 7
rx = 4+1 = 5
我們最後發出命令:
$ chmod 755 測試
$ ls – 測試
-rwxr-xr-x 1 約戈斯 職員 24 年 2 月 21 日 02:08 測試
通過使用不同的權限和數值自行練習以掌握它!