詳解 Linux 文件屬性、擁有者、群組、許可權、差異

發表於2018-05-22

寫在前面

我們都知道Linux是一個支援多使用者、多工的系統,這也是它最優秀的特性,即可能同時有很多人都在系統上進行工作,所以千萬不要強制關機,同時,為了保護每個人的隱私和工作環境,針對某一個文件(檔案、目錄),Linux系統定義了三種身份,分別是擁有者(owner)、群組(group)、其他人(others),每一種身份又對應三種許可權,分別是可讀(readable)、可寫(writable)、可執行(excutable)

文件屬性

使用命令ls -al --full-time,或者此命令的簡寫ll可以檢視檔案或者目錄的所有屬性。如下:
詳解 Linux 文件屬性、擁有者、群組、許可權、差異
從上面可以看到,每一行都有7列,分別是:

  1. 第一列
    共10位,第1位表示文件型別,d表示目錄,-表示檔案,l表示連結檔案,d表示可隨機存取的裝置,如U盤等,c表示一次性讀取裝置,如滑鼠、鍵盤等。後9位,依次對應三種身份所擁有的許可權,身份順序為:owner、group、others,許可權順序為:readable、writable、excutable。如:-r-xr-x---的含義為當前文件是一個檔案,擁有者可讀、可執行,同一個群組下的使用者,可讀、可寫,其他人沒有任何許可權
  2. 第二列
    表示連結數
  3. 第三列
    表示擁有者
  4. 第四列
    表示所屬群組
  5. 第五列
    表示文件容量大小,單位位元組
  6. 第六列
    表示文件最後修改時間,注意不是文件的建立時間哦
  7. 第七列
    表示文件名稱。以點(.)開頭的是隱藏文件

變更擁有者(owner)

位置

詳解 Linux 文件屬性、擁有者、群組、許可權、差異

注意:必須是該位置下已存在的帳號。也就是在/etc/passwd中有記錄的擁有者才能改變。

語法

備註:此命令也可以順便變更文件群組,但還是建議使用chgrp命令來變更文件群組。

選項

-R 遞迴變更,即連同次目錄下的所有檔案(夾)都要變更。

用法

chown daemon test 變更資料夾test賬號為daemon
詳解 Linux 文件屬性、擁有者、群組、許可權、差異
chown daemon:root test 變更資料夾test群組為root
詳解 Linux 文件屬性、擁有者、群組、許可權、差異

chown root.users test 變更資料夾賬號為root,群組為users
詳解 Linux 文件屬性、擁有者、群組、許可權、差異
chown .root test 單獨變更群組為root
詳解 Linux 文件屬性、擁有者、群組、許可權、差異

備註:雖然也可以在擁有者與群組間加小數點(.),但為了避免有的同學命名中帶點,故還是建議使用冒號“:”來隔開擁有者與群組,避免誤判。

變更群組(group)

位置

詳解 Linux 文件屬性、擁有者、群組、許可權、差異

備註:從這裡可以檢視到所有群組

語法

備註:關於options,可以通過man chgrp、info chgrp、chgrp --help等命令查詢詳細用法。

用法

chgrp -R users test 改變test資料夾及其所有子檔案(夾)的群組為users
詳解 Linux 文件屬性、擁有者、群組、許可權、差異

注意:群組名稱不在位置內,將會報錯invalid group

詳解 Linux 文件屬性、擁有者、群組、許可權、差異

變更許可權

Linux文件的基本許可權就三個,分別是read/write/execute,加上身份owner/group/others也只有九個。許可權變更的方式有2種,分別是符號法數字法

符號法

分別使用u,g,o來代表三種身份,a表示全部身份;分別使用r、w、x表示三種許可權;分別使用+、-、=表示操作行為

語法

設定許可權(=)

變更目錄test的許可權為任何人都可讀、寫、執行。

詳解 Linux 文件屬性、擁有者、群組、許可權、差異

去掉許可權(-)

去掉目錄test執行許可權

詳解 Linux 文件屬性、擁有者、群組、許可權、差異

備註:執行許可權(x),對目錄而已就是其他使用者能否cd test成為工作目錄。

新增許可權(+)

增加目錄test執行許可權

詳解 Linux 文件屬性、擁有者、群組、許可權、差異

備註:很熟悉吧,如果我們編寫完一個shell檔案test.sh後,通過chmod a+x test.sh就新增了檔案執行許可權。

數字法

顧名思義,就是使用數字來代表許可權,r,w,x分別為4,2,1。三種許可權累加就可以得出一種身份的許可權。

設定目錄test的許可權為任何人都可讀、寫、執行。

詳解 Linux 文件屬性、擁有者、群組、許可權、差異
設定目錄test的許可權為任何人都可讀、寫。

詳解 Linux 文件屬性、擁有者、群組、許可權、差異

賦予一個shell檔案test.sh可執行許可權,擁有者可讀、寫、執行,群組賬號和其他人可讀、執行。

備註:有沒有發現數字法更簡單啊!!!

檔案和目錄許可權差異

文件許可權對於檔案和目錄有巨大的差異

檔案

針對的是該檔案內容

  • readable 可讀取該檔案的實際內容
  • writable 可以編輯、新增或者是修改該檔案的內容
  • executable 有可以被系統執行的許可權

備註:具有w許可權不可以刪除檔案,刪除檔案是目錄許可權控制的範圍!!!記住檔案許可權針對是檔案內容

目錄

針對的是該目錄下的檔案物件

  • readable 具有讀取目錄結構清單的許可權,即可以通過ls命令,查詢該目錄清單。
  • writable 具有變動該目錄結構清單的許可權,即可以建立、遷移、刪除、更名該目錄下的檔案。
  • executable 具備進入該目錄的許可權,即可以通過cd命令,轉到工作目錄。

備註:從上面可以得出,開放目錄給任何人瀏覽時,至少需要賦予rx許可權。讀取目錄檔案內容,至少需要目錄許可權x和檔案許可權r

總結

Linux的每個文件可以分別針對三種身份賦予rwx許可權;chgrp命令變更檔案群組,chmod命令變更檔案許可權,chown變更檔案擁有者;那麼以後記得使用文件許可權來保護資料的安全性哦

如果你覺得本篇文章對您有幫助的話,感謝您的【推薦】
如果你對 linux 感興趣的話可以關注我,我會定期的在部落格分享我的學習心得

相關文章