Unix Linux檔案型別與許可權管理

小可長江發表於2019-01-23

 在小白與計算機的日常中,經常會碰到檔案無(讀、寫、執行)許可權,包括很多剛入門的程式設計師,也常常在別人的部落格裡會看到類似 chmod 777 XX.filechmod u+x XX.filechmod g-w XX.file這些不明覺厲的命令,今天來幫還不清楚的童鞋科普一下,電腦中每個檔案的許可權 系統究竟是如何管理的,又如何修改檔案的許可權。

看懂檔案型別與許可權等資訊

 先不慌,開啟終端,在任意非空目錄下我們輸入:

ls -l
複製程式碼

終端會輸出該目錄下所有檔案的資訊:

Unix Linux檔案型別與許可權管理
好,我們來對每一列是什麼分別介紹:

  1. -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)許可權,三組分別代表不同所有者對該檔案的許可權,第一組:檔案所有者的許可權、第二組:這一組其他使用者的許可權、第三組:非本組使用者的許可權,總結如下圖:
      Unix Linux檔案型別與許可權管理
    • 在MacOS系統中,輸入ls -l 發現檔案許可權格式與Linux稍有不同,部分檔案許可權資訊的末尾有”+“或”@“符號:
      Unix 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:

Unix Linux檔案型別與許可權管理
你會發現許可權末尾有'+'的都會有0: group:everyone deny delete,意義就很明顯啦~

那什麼又是“extended attributes”呢?繼續檢視“@”的含義,
執行 ls -l@xattr -l XX.file 檢視擴充套件屬性:

Unix Linux檔案型別與許可權管理
簡單理解@就是表示檔案或目錄有額外屬性,比如在MacOS上 從網上下載個檔案有時會提示“此檔案來自網路下載不安全”,就是這個屬性起的作用。而從MacOS下copy檔案到Linux系統上時也會因為這個屬性出現打不開的情況。可以手動去除掉:xattr -c XX.file

  1. 其餘每一列對應的資訊如下:
    Unix Linux檔案型別與許可權管理
    [型別+許可權]---[連線]-[所有者]-[所屬組]-[檔案大小]-[最後修改日期]-[檔名稱]

檔案許可權的修改:

一張圖看懂修改檔案許可權的命令:

Unix Linux檔案型別與許可權管理
通過按位與的設計巧妙的用三個二進位制位表示了三種許可權產生的8種組合。
用符號改變許可權時,如:chmod a+r XX.file表示對使用者、組、其他 全部新增讀取許可權。

以上,有任何疑問歡迎留言~

相關文章