1. 程式人生 > >Linux - 檔案許可權(未完)

Linux - 檔案許可權(未完)

檔案許可權說明

檔案許可權有四種:可讀、可寫、可執行、無
檔案許可權作用物件有三種:擁有者、使用者組使用者、其他使用者

  • 擁有者:檔案擁有者,預設情況下,誰建立的檔案擁有者就是誰,例如使用dev使用者建立的檔案則擁有者為dev
  • 使用者組使用者:使用者組用於多人協作,每個使用者都會屬於一個使用者組,當權限作用在使用者組上時對使用者組內的所有使用者均生效。
  • 其他使用者:非擁有者、非使用者組內使用者視為其他使用者。

檔案許可權的閱讀

通過ls -al命令檢視當前目錄下的所有檔案和目錄,並列出詳細資訊,如圖:
在這裡插入圖片描述

  • 第一欄:檔案許可權屬性
  • 第二欄:連結數(快捷方式數)
  • 第三欄:擁有者使用者名稱
  • 第四欄:使用者組名稱
  • 第五欄:檔案大小
  • 第六欄:最後修改日期或建立時間
  • 第七欄:檔名稱

檔案許可權解讀如下:
例如:[email protected],將整串許可權屬性字串拆分成
[-] [rwx] [r--] [r--] [@]

  1. 第一處為檔案型別
    -:表示檔案
    d:表示目錄
    c:字元裝置,如鍵盤、滑鼠等
    b:塊裝置,如硬碟、光碟機等
    l:連結檔案
    s:套接字檔案
  2. 第二處為擁有者許可權
    其中r表示可讀,w表示可寫,x表示可執行。以上擁有者許可權則為可讀可寫可執行。
  3. 第三處為使用者組許可權

    其中r表示可讀,-表示無。以上使用者組使用者許可權則為可讀。
  4. 第四處則為其他使用者許可權
    其中r表示可讀,-表示無。以上其他使用者許可權則為可讀。
  5. 第五處?請指點!!!

以上需要注意的是,讀、寫、執行三個許可權始終按照這樣的順序排列,如果沒有對應的許可權則使用-來代替。


檔案許可權的修改

  • 修改檔案許可權
    一、字元修改
    字元修改的基本思路是告訴系統程式 增加、刪除、修改 什麼許可權。這裡的“誰”就是許可權作用物件,所以首先需要知道檔案許可權作用物件如何表達:擁有者為u(即user),使用者組使用者為g(即group),其他使用者為o(即other),全部則為a

    (即all)。然後增加、刪除、修改可以通過 “+” , “-” , “=”來表示,許可權則通過"rwx"來表示。系統藉助chmod程式來完成檔案許可權的修改。那麼修改檔案許可權則可以通過chmod <作用物件><+ | - | =><許可權> <檔名稱>來完成,如:
    A. 修改1.txt擁有者許可權為可讀可寫可執行:chmod u+rwx 1.txt
    B. 取消1.txt擁有者可寫許可權:chmod u-w 1.txt
    C. 設定1.txt擁有者許可權為可讀:chmod u=r 1.txt
    D. 設定1.txt使用者組許可權為可讀可執行:chmod g=rx 1.txt
    E. 取消1.txt使用者組可寫許可權:chmod g-w 1.txt
    F. 設定1.txt其他使用者許可權為不可讀不可寫不可執行:chmod o=-
    優勢:可以看出,通過字元修改只需要關注我們需要為什麼物件改變什麼許可權,而不需要關注它原本具備什麼許可權,更不需要關心別的許可權作用物件具備什麼許可權。(個人觀點)
    二、數字修改
    數字修改的基本思路是通過一個數字來表達三個許可權,建立在如何讓三個數字混合後得到的數字是唯一的數學問題上,很慶幸這個問題不是太難。檔案許可權對應的數字分別為:可讀4,可寫2,可執行1。為什麼不是3,2,1?因為如果給定一個許可權數3,沒法確定是[可讀3]還是[可寫2+可執行1]許可權。那麼修改檔案許可權則可以通過chmod <擁有者許可權數><使用者組許可權數><其他使用者許可權數> <檔名稱>來完成,如:
    A. 修改1.txt擁有者、使用者組使用者、其他使用者許可權為可讀可寫可執行:chmod 777 1.txt,7=4+2+1表示可讀可寫可執行。
    B. 修改1.txt擁有者許可權為可讀可寫可執行、使用者組使用者許可權為可讀、其他使用者許可權為可讀可執行:chmod 745 1.txt
    C. 修改1.txt擁有者許可權為可讀可寫、使用者組許可權為可寫、其它使用者沒有許可權:chmod 620 1.txt
    探究chmod 7 1.txt chmod 77 1.txt,許可權數不夠三位的表達:作用物件從後到前,例如第一句命令表示擁有者和使用者組使用者均無許可權,其他使用者擁有可讀可寫可執行許可權。第二句命令表示擁有者無許可權,使用者組使用者和其他使用者擁有可讀可寫可執行許可權。
    優勢:命令更簡潔,如果我們需要同時設定各個物件許可權,使用起來比較方便,但沒有字元修改那麼靈活(個人觀點)

  • 修改檔案所屬使用者組
    chgrp <組名> <檔名>
    例:chgrp test01 1.txt
    注意:如果組名不存在,將會出現chgrp: invalid group: 'test01',此時可以通過groupadd test01新增使用者組,不需要的時候再通過groupdel test01刪除使用者組。
    思考:如果設定1.txt的使用者組為test01後刪除test01。那麼1.txt的使用者組會變成什麼?
    經過實踐,建立使用者組時會給使用者組產生一個數字標識,當組被刪除後,檔案使用者組部分會變成這個數字標識。如果新建了使用者組得到同樣的標識,那麼檔案使用者組部分會變成新建的使用者組名稱。

  • 修改擁有者

(未完待續)