跳轉到內容

Unix/許可權快速入門

來自華夏公益教科書


檔案訪問許可權

[編輯 | 編輯原始碼]

在您的主目錄中,鍵入

% ls -l

您將看到您現在獲得了有關目錄內容的大量詳細資訊。

每個檔案(和目錄)都有訪問許可權,可以透過鍵入 ls -l 來顯示。此外,ls -lg 提供有關哪個組擁有該檔案(以下示例中的 istrain)的更多資訊

-rwxrw-r-- 1 ccaajim istrain 3210 Aug15 14:25 train.doc

在左側列中是一個包含 10 個符號的字串,由符號 d, r, w, x, - 組成,偶爾也會有 sS。目前對您來說重要的符號是 r 代表讀,w 代表寫,x 代表執行。如果存在 d,它將位於字串的左側,表示目錄:否則字串將以 - 開頭。

剩餘的 9 個符號表示許可權,或訪問許可權,並被分成三組,每組三個。

最左邊的 3 個符號表示檔案所有者(上述示例中的 ccaajim)的許可權。最右邊的三個符號表示所有其他使用者(在 Unix 中稱為 world)的許可權。中間三列是授予使用者所屬組的許可權。

符號 r、w 等的含義略有不同,具體取決於它們是指普通檔案還是目錄。

檔案訪問許可權

[編輯 | 編輯原始碼]
  • r(或 -),表示讀許可權(或沒有許可權),即存在或不存在讀取和複製檔案的許可權
  • w(或 -),表示寫許可權(或沒有許可權),即存在或不存在修改檔案的許可權
  • x(或 -),表示執行許可權(或沒有許可權),即存在或不存在執行檔案的許可權(在適當的情況下)

目錄訪問許可權

[編輯 | 編輯原始碼]
  • r 允許使用者列出目錄中的檔案;
  • w 表示使用者可以從目錄中刪除檔案或將檔案移動到目錄中;
  • x 表示訪問目錄中檔案的許可權。這意味著您可以讀取目錄中的檔案,前提是您對單個檔案具有讀許可權。

因此,為了讀取檔案,您必須對包含該檔案的目錄具有執行許可權,因此對包含該目錄作為子目錄的任何目錄具有執行許可權,依此類推,一直向上到樹根。

一些例子

[編輯 | 編輯原始碼]
許可權字串 效果
-rwxrwxrwx 每個人都可以讀取、寫入和執行(以及刪除)的檔案
-rw------- 只有所有者可以讀取和寫入的檔案 - 其他人無法讀取或寫入,並且沒有人擁有執行許可權(例如您的郵箱檔案)

粘滯位

[編輯 | 編輯原始碼]

粘滯位 由 "t" 標誌表示:它表示檔案或目錄只能由其所有者(或 root)刪除。

setuid 位

[編輯 | 編輯原始碼]

setuid 位由 "s" 標誌表示:它表示檔案應以其所有者的使用者 ID 執行。

更改訪問許可權

[編輯 | 編輯原始碼]

chmod (更改檔案模式)

[編輯 | 編輯原始碼]

只有檔案的所有者可以使用 chmod 來更改檔案的許可權。chmod 的選項如下

符號 含義
u 使用者
g
o 其他
a 全部(即 u 和 g 和 o)
r
w 寫(和刪除)
x 執行(和訪問目錄)
+ 新增許可權
- 撤銷許可權

例如,要刪除檔案 allcolours 的組和其他人對它的讀、寫和執行許可權,請輸入

% chmod go-rwx allcolours

這將保留其他許可權不變。

要授予檔案 allcolours 的所有使用者讀寫許可權,請輸入

% chmod a+rw allcolours

使用整數引數與 chmod

[編輯 | 編輯原始碼]

除了上面概述的語法之外,您還可以使用 chmod 和一個數字引數,該引數代表使用者和預期的許可權。一個常見的例子是

% chmod 755 myscript.sh

此示例等效於 chmod u=wrx,g=rx,o=rx

它是如何工作的?嗯,讓我們將數字稱為三元組,以提醒我們它是一個三位數字的字串。每個數字代表 ugo 之一的許可權。我們像這樣為每個可能的許可權賦予一個數值

數字 含義
1 執行
2
4
0 清除許可權

在我們上面的示例中,數字字串是 755。這隻能透過一種方式加起來(可以這麼說)。

位置 組合
u 7 4 + 2 + 1
g 5 4 + 0 + 1
o 5 4 + 0 + 1

這意味著 chmod 755 filename 表示檔案所有者可以讀、寫和執行,組和其他使用者可以讀和執行。

此命令可以獲取或設定建立檔案的預設許可權。

華夏公益教科書