對話 UNIX,第 4 部分: UNIX 所有權和權限管理( 三 )


drwxr-xr-x3 strike strike 4096 Aug 24 04:04 IBM/
drwxrwxr-x3 strike admin 4096 Jun 14 06:06 backups/
注意: 清單 3 顯示了 ls -l 的典型輸出 。清單 2 看起來有些不同,這是因為在前面的討論中出于簡化的目的,有意隱藏了組所有者的信息 。您可以使用 -G 隱藏組所有者 。
名為 backups 的目錄的組所有者為 admin,它將某些權限給予了組中所有的成員 。同時,我的其他文件的組所有者為 strike 。通常,一個用戶是他或她的同名組中的唯一成員,這個同名組有效地將訪問權限限制于該用戶 。
細節內容
如果您回頭再看看上面的 ls 的輸出結果,您將注意到,每行內容的開頭有一個由 10 個字符組成的序列 。每個字符都是一個開/關設置或位,后者表示了三類用戶(您本人、您的一個組和其他用戶)的某一種特定的權限 。圖 1 顯示了每一位的用法 。
圖 1. UNIX 文件的權限位
在圖 1 中:
起始位表示該文件是否為目錄(通常,起始位 表示該文件是否為特殊文件 。如果該文件是特殊文件,起始字符 d 表示目錄、l 表示符號鏈接,等等) 。這個設置是無法改變的 。
接下來的三位(用藍色表示的)分別表示您 對該文件的讀、寫和執行權限 。您可以禁用寫權限位,例如要防止刪除文件 。(是的,要刪除一個文件,您需要寫權限 。)
接下來的三位(用綠色表示的)表示組 對該文件的讀、寫和執行權限 。
最后的三位(用橙色表示的)表示所有其他 用戶(即除了您自己以及您的組中的成員之外的所有用戶)的權限 。
可以使用 ls -laF 的輸出作為示例查找上述內容:
只有我可以讀和寫 .bash_history、.bash_profile、.bashrc 和 .viminfo 文件 。我可以查看、編輯和刪除這些文件 。
只有我可以訪問 .ssh 目錄 。第一位表示它是一個特殊的文件,d 表示目錄 。我可以顯示該目錄中的內容,因為已經設置了它的用戶讀位 。我可以在該目錄中添加和刪除文件,因為已經設置了它的用戶寫位 。您可能奇怪為什么該目錄是用戶可執行的 。除非設置了該位,否則無法遍歷目錄(進入目錄并列舉目錄) 。(另外,正如本系列的第 3 部分中所提到的,您的 .ssh 目錄必須是您私有的,否則您的公鑰訪問無法正常工作 。)
我可以讀和寫 Archive.zip 文件,并且其他用戶可以讀該文件 。(當然,strike 組也可以讀該文件,但如果我是該組中唯一的成員,那么這個權限是沒有實際意義的 。)
我可以列舉、讀和寫 IBM(另一個目錄)中的文件,而其他用戶可以列舉其中的內容 。
最后,admin 組的成員和我可以列舉、讀和寫 backups 目錄中的文件,而其他用戶可以列舉和讀 。
設置目錄的保護 (sticky) 位
如果您希望確保一個目錄持久,而不會被意外地刪除,那么可以使用 chmodT 設置其保護 位 。
$ ls -lF
drwxrwxrwx2 strike strike68 Aug 28 06:21 dropbox/
drwx------2 strike strike68 Aug 28 06:21 mine/
$ chmodt dropbox
$ ls -lF
drwxrwxrwt2 strike strike68 Aug 28 06:21 dropbox/
drwx------2 strike strike68 Aug 28 06:21 mine/
設置保護位并將權限設置為所有用戶都可以讀、寫和執行,每個用戶都可以在 dropbox 目錄中放置文件,但只有我能夠刪除該目錄中的文件或該目錄本身 。
如果您運行 ls -ld /tmp,這個用作應用程序臨時空間的系統范圍臨時目錄可能是保護的 。
您可以使用 chmod(更改模式 change mode)命令修改相應的權限(除了目錄位之外) 。您可以使用 chgrp(更改組 change group)命令來修改文件所屬的組 。(超級用戶 root 也可以使用 chown 或 change owner 命令來更改文件所有權 。)

推薦閱讀