在小白與計算機的日常中,經常會碰到檔案無(讀、寫、執行)許可權,包括很多剛入門的程式設計師,也常常在別人的部落格裡會看到類似 chmod 777 XX.file
、chmod u+x XX.file
、chmod g-w XX.file
這些不明覺厲的命令,今天來幫還不清楚的童鞋科普一下,電腦中每個檔案的許可權 系統究竟是如何管理的,又如何修改檔案的許可權。
看懂檔案型別與許可權等資訊
先不慌,開啟終端,在任意非空目錄下我們輸入:
ls -l
複製程式碼
終端會輸出該目錄下所有檔案的資訊:
好,我們來對每一列是什麼分別介紹:- -r-xr-xr-x:檔案型別及許可權資訊
我們會發現任意一個檔案第一列都是一個由 - d l p s b c D r w x + @ 這些字元組成的字串,這一串字元究竟是由哪幾部分組成又分別代表什麼呢?- 第一位字元:檔案型別資訊,-代表這是一個常規檔案--Regular file,d代表這是一個資料夾--Directory,l代表檔案連結--Symbolic link,更多檔案型別(p-Named pipe、s-Socket、b/c-Device file、D-Door)請參考Unix file types
- 第2-10位,這九位字元每三個為一組,每組的三個字元分別代表讀(r)、寫(w)、執行(x)許可權,三組分別代表不同所有者對該檔案的許可權,第一組:檔案所有者的許可權、第二組:這一組其他使用者的許可權、第三組:非本組使用者的許可權,總結如下圖:
- 在MacOS系統中,輸入
ls -l
發現檔案許可權格式與Linux稍有不同,部分檔案許可權資訊的末尾有”+“或”@“符號: 我們直接看官方說明:終端輸入man ls
,我們可以看到這一段說明:
If the file or directory has extended attributes, the permissions
field printed by the -l option is followed by a '@' character.
Otherwise, if the file or directory has extended security
information (such as an access control list), the permissions
field printed by the -l option is followed by a '+' character.
複製程式碼
那什麼是“extended security”呢?其實就是擴充套件安全資訊
執行 ls -le
檢視extended security:
0: group:everyone deny delete
,意義就很明顯啦~
那什麼又是“extended attributes”呢?繼續檢視“@”的含義,
執行 ls -l@
或xattr -l XX.file
檢視擴充套件屬性:
xattr -c XX.file
。
- 其餘每一列對應的資訊如下: [型別+許可權]---[連線]-[所有者]-[所屬組]-[檔案大小]-[最後修改日期]-[檔名稱]
檔案許可權的修改:
一張圖看懂修改檔案許可權的命令:
通過按位與的設計巧妙的用三個二進位制位表示了三種許可權產生的8種組合。用符號改變許可權時,如:
chmod a+r XX.file
表示對使用者、組、其他 全部新增讀取許可權。
以上,有任何疑問歡迎留言~