Unix Linux文件類型與權限管理

 在小白與計算機的平常中,常常會碰到文件無(讀、寫、執行)權限,包括不少剛入門的程序員,也經常在別人的博客裏會看到相似 chmod 777 XX.filechmod u+x XX.filechmod g-w XX.file這些不明覺厲的命令,今天來幫還不清楚的童鞋科普一下,電腦中每一個文件的權限 系統到底是如何管理的,又如何修改文件的權限。程序員

看懂文件類型與權限等信息

 先不慌,打開終端,在任意非空目錄下咱們輸入:安全

ls -l
複製代碼

終端會輸出該目錄下全部文件的信息: bash

好,咱們來對每一列是什麼分別介紹:

  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)權限,三組分別表明不一樣全部者對該文件的權限,第一組:文件全部者的權限、第二組:這一組其餘用戶的權限、第三組:非本組用戶的權限,總結以下圖:
    • 在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 查看擴展屬性: spa

簡單理解@就是表示文件或目錄有額外屬性,好比在MacOS上 從網上下載個文件有時會提示「此文件來自網絡下載不安全」,就是這個屬性起的做用。而從MacOS下copy文件到Linux系統上時也會由於這個屬性出現打不開的狀況。能夠手動去除掉: xattr -c XX.file

  1. 其他每一列對應的信息以下:
    [類型+權限]---[鏈接]-[全部者]-[所屬組]-[文件大小]-[最後修改日期]-[文件名稱]

文件權限的修改:

一張圖看懂修改文件權限的命令: 設計

經過按位與的設計巧妙的用三個二進制位表示了三種權限產生的8種組合。
用符號改變權限時,如: chmod a+r XX.file表示對用戶、組、其餘 所有添加讀取權限。

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

相關文章
相關標籤/搜索