天天看點

檔案或目錄權限chmod

前面說到 ls 指令的時候,有個 ls -l 的用法,見下圖

檔案或目錄權限chmod

這個指令可以檢視檔案的詳細資訊,具體含義詳見下圖,

檔案或目錄權限chmod

先來回顧一下檔案類型:

“d” 表示目錄

“-” 表示普通檔案或是二進制檔案

“c” 表示字元串裝置檔案

“l” 表示軟連結檔案

“b” 表示塊裝置檔案

“s” 表示 socket 檔案

第一列中除了第一個字元表示檔案的類型之外,後面的九位表示檔案的權限,有三個屬性:是否可讀(read,可讀為r,不可讀為-),是否可寫(write,可寫為w,不可寫為-),是否可執行(可執行為x,不可執行為-)。

①權限的前三位 表示檔案所有者的權限,rw-為可讀可寫不可執行

②權限的中間三位 表示檔案所屬使用者組的權限,r--為隻讀

③權限的後三位 表示其他使用者的權限,即除了檔案所有者和檔案所屬組之外的使用者權限。r--為隻讀

權限還可以用數字表示,r=4,w=2,x=1,例如: rwx=7,rw-=6;--x=1;rw-r--r--=644;rw-r-xr-x=655。

現在搞清楚了權限的表達方式,來介紹一個指令 chmod ,它是 change mode 的縮寫,意思為更改權限。

做個實驗,我們把 2.txt 這個檔案更改一下權限,為所有者讀寫執行,所屬組和其他使用者全部都沒有權限,這個權限就表達為 rwx------=700,現在輸入指令 chmod 700 2.txt ,回車,即可設定成功,然後用指令 ls -l 2.txt ,見下圖,

檔案或目錄權限chmod

以上就是 chmod 這個指令對權限更改的用法。

接着再來說一下,權限位後面的那一點 “.”,這個點不是每個檔案都有的,這個“.”意味着這個檔案受制于 selinux ,如果 selinux 開啟了,建立的檔案或是建立的目錄第一列的最後一位會有一點,

檔案或目錄權限chmod

如果把 selinux 關閉,輸入指令 getenforce 檢視 selinux 是否關閉,回車,見下圖,

檔案或目錄權限chmod

指令 setenforce 0 是臨時關閉 selinux 。徹底關閉的話,需要更改配置檔案,輸入指令 vi /etc/selinux/config ,這次先不更改,檢視下圖,

檔案或目錄權限chmod

預設 SELINUX=enforcing ,enforcing 表示開啟,permissive 表示警告, disabled 表示關閉。按字母“:q”退出。

更改配置檔案并重新開機,接下來,我們建立一個新的檔案,再用 ls -l 指令檢視就不會有一個點了。這個做個了解就可以了。

關于 chmod 的用法,還有一個選項 -R ,

舉個例子,見下圖,

檔案或目錄權限chmod

用 cd 指令進入目錄 /tmp/ ,用 ls -l 指令檢視這個目錄,再用指令 ls -l 進入目錄 lys2 ,可以看到 1.txt 檔案,這個檔案的權限是 rw-r--r-- ,即 744 ,我們更改一下 1.txt 這個檔案的權限,輸入指令 chmod 777 lys2 ,回車,再用指令 ls -l lys2 和 ls -ld lys2 做個比較,見下圖 ,

檔案或目錄權限chmod

可以看出目錄 lys2 下的檔案 1.txt 的權限并沒有變化。由此可見, chmod 這個指令對檔案也好,對目錄也好,它操作生效的僅僅是目錄本身,如果想把目錄下面的子目錄和子檔案,全部一次性的批量的更改權限的話,這個時候就用到 -R 這個指令了,輸入指令 chmod -R 770 lys2 ,見下圖,

檔案或目錄權限chmod

可以看出,lys2 目錄和 1.txt 檔案的權限都變成 rwxrwx--- , 770 了。

chmod 指令還有一種更簡單直覺的用法,見下圖,

檔案或目錄權限chmod
檔案或目錄權限chmod

其中, u=rwx ,即 user 所有者使用者的權限。g=r ,即 group 所屬組使用者的權限。o=r ,即 other 其他使用者的權限。上面的指令中,- 不顯示出來,直接略過,并且把 - 寫上去的指令也是不對的。上圖中的這個指令寫法比較的繁瑣,建議還是用數字表示。

chmod 指令還有一種用法,見下圖,

檔案或目錄權限chmod

其中,a+x 中的 a 表示所有的使用者,+ 表示加上權限,x 表示可執行權限。指令執行完畢之後,用 ls -l 指令檢視,可以發現,所有者、所屬組和其他使用者的權限裡都有 x 這個可執行權限。而 a-x 這個指令就是,所有的使用者減去 x 這個可執行權限,用指令 ls -l 檢視,可以發現所有的使用者權限都沒有了 x 這個可執行權限。

a 是針對所有使用者權限的指令,當然也可以隻針對單個使用者權限的指令,把 a 換成 u 、 g 、o 就是更改相對應使用者的權限。見下圖,

檔案或目錄權限chmod

以上就是 chmod 指令的用法,總結:

①chmod + 數字權限表達方式 + 檔案 ,更改檔案的使用者權限;

②chmod + 數字權限表達方式 + 目錄 ,僅更改目錄的使用者權限,沒有更改目錄下的子目錄和子檔案權限;

③chmod + -R + 數字權限表達方式 + 目錄,批量更改目錄和目錄下的子目錄和子檔案權限;

④chmod + u=rwx,g=rwx,o=rwx + 目錄,u,g,o中的權限自己定義,并非全部寫 rwx ,僅更改目錄的使用者權限,沒有更改目錄下的子目錄和子檔案權限;

⑤chmod + (a/u/g/o)+(+/-)+(r/w/x/-)+ 檔案/目錄,增加或去掉相關使用者的相關權限。

繼續閱讀