Linux命令——chmod/chown/chgrp

Linux命令——chmod

chmod命令格式

chmod命令的全程爲Change mode(改變模式),即改變文件或目錄的權限。
chmod [OPTION]... MODE[,MODE]... FILE...

[OPTION]
-c:若該文件權限確實已經更改,才顯示其更改動作
-f:若該文件權限無法被更改也不要顯示錯誤訊息
-v:顯示權限變更的詳細資料
-R:對目前目錄下的所有文件與子目錄進行相同的權限變更(即以遞迴的方式逐個變更)
–help:顯示輔助說明
–version:顯示版本

MODE
MODE的格式爲[ugoa...][[+-=][rwxX]...][,...],組成部分爲三個部分:可控制文件的用戶類型、文件權限和操作符。多個mode用逗號(",")分割。
可控制文件的用戶類型分爲四種:
u:文件所有者
g:文件所有者同組用戶
o:其它用戶
a:所有用戶(即包含以上三者)
文件權限分爲四種
r:讀權限
w:寫權限
x:可執行權限
X:表示只有當該文件是個子目錄或者該文件已經被設定過爲可執行
-:無選項
運算符分爲三種
+:添加權限
-:刪除權限
=:重置權限

FILE
表示需要改變權限的一個或多個文件

其實理解chmod命令並不難,我們只需要記住改變權限操作中一定是:改變誰的權限(通過FILE選項指定),怎樣去改變(通過OPTION部分設置),改變成什麼樣的(通過MODE選項指定)。

Linux系統文件類型和權限的表示方法

Linux系統用10個字符表示文件的類型和訪問權。其中:
第1位表示文件類型。文件類型的枚舉值爲:
-:常規文件,即file
d:目錄文件
b:block device 即塊設備文件,如硬盤;支持以block爲單位進行隨機訪問
c:character device 即字符設備文件,如鍵盤支持以character爲單位進行線性訪問
l:symbolic link 即符號鏈接文件,又稱軟鏈接文件
p:pipe 即命名管道文件
s:socket 即套接字文件,用於實現兩個進程進行通信
第2~4位表示文件所有者對文件的權限。權限的排列順序爲讀寫執行。
第5~7位表示文件所有者同組用戶對文件的權限。權限的排列順序爲讀寫執行。
第8~10表示其它用戶對文件的權限。權限的排列順序爲讀寫執行。

我們使用ls -l命令會看到如下信息。

[root@localhost ~]# ls -l
total 80
-rw-r--r-- 1 root root    56 Sep  2 14:43 abc.txt
-rw------- 1 root root   949 Sep  2 18:50 anaconda-ks.cfg
drwxr-xr-x 2 root root  4096 Sep  2 10:57 Desktop
-rw-r--r-- 1 root root 38088 Sep  2 18:50 install.log
-rw-r--r-- 1 root root  4507 Sep  2 18:48 install.log.syslog
[root@localhost ~]# 

信息中第一列信息表示文件的類型和文件的訪問權限。例如Desktop這一行的第一列信息是drwxr-xr-xd表示是一個目錄;rwx表示文件所有者有讀、寫和可執行權限;r-x表示同組用戶有讀權限、無寫權限,有可執行權限;r-x表示其它用戶有讀、無寫權限和可執行權限;r-x表示同組用戶有讀權限、無寫權限,有可執行權限。

chmod數字表示法

mode除了使用[ugoa...][[+-=][rwxX]...][,...]表示之外,還有一種數字表示法。
這種數字表示法使用三位數字,第一位表示用戶所有者的權限,第二位表示同組用戶內的權限,第三位表示其他用戶的選項。每一位數字都是二進制轉換爲十進制的結果
例如:-rwxrw-r–可用二進制表示爲-111110100,即有權限就用1表示,沒有就用0表示。那麼0和1組合成讀、寫和可執行:100、010和001,對應的10進製爲4、2和1,即4讀權限,2表示寫權限,1表示可執行權限。上面的-111110100即可表示爲761。
在舉個例子:chmod 761 test.sh表示文件所有者有讀、寫和可執行權限(4+2+1=7);組內用戶有讀、寫權限(4+2+0=6) ;其它用戶有可執行權限(0+0+1=1)。也就是說根據需要將4,2和1相加得出的計算結果就是要改變的權限。

chmod示例

所有用戶可讀、寫和執行權限
chmod a+wrx test.sh
chmod ugo+wrx test.sh
chmod 777 test.sh

所有者和同組用戶添加讀、寫和執行權限,其它用戶添加可讀(-rwxrwxr–)
chmod ug+rwx,o+r test.sh
chmod 774 test.sh

所有者添加可讀、寫和執行權限,同組和其它用戶僅可讀(-rwxr–r--)
chmod u+wrx,go=r test.sh
chmod 744 test.sh

所有者保留讀、寫和執行權限,移除同組和其它用戶的讀權限(-rwx------)
chmod go-r test.sh
chmod 700 test.sh

chown語法格式

chown的全稱爲Change owner(改變文件所有者),所有者包括文件所有者和文件所屬組。
chown [OPTION] user or group|user.group 文件
[OPTION]
-c:若該檔案擁有者確實已經更改,才顯示其更改動作
-f:若該檔案擁有者無法被更改也不要顯示錯誤訊息
-h:只對於連結(link)進行變更,而非該 link 真正指向的檔案
-v:顯示擁有者變更的詳細資料
-R:對目前目錄下的所有檔案與子目錄進行相同的擁有者變更(即以遞迴的方式逐個變更)
–help:顯示輔助說明
–version:顯示版
user or group|user.group表文件新所有者或所屬組,同事這所有用戶和所屬組使用user.group。

chown示例

改變test文件的所有者爲zhangxy
chown zhangxy test.sh

改變test文件的所有者爲zhangxy,所屬組爲test
chown zhangxy.test test.sh

改變test目錄以及子目錄和文件的所有者爲zhangxy
chown -R zhangxy test

chgrp語法格式

chgrp的全稱爲Change group(改變用戶組),即改變文件所屬組。相當於chown的低配版,chown可以改變文件所有者和文件所屬組,而chgrp只能改變文件所屬的組。
chgrp [OPTION] group files

chgrp示例

改變文件所屬組爲test
chgrp test test.sh

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章