chmod 命令用的很多,但是對這個命令卻不是很了解。 在網上搜了一下。 整理如下。
命令格式:
chmod [-cfvR] [–help] [–version] mode file…
查看幫助:[root@qs-wg-db2 ~]# chmod --help
Usage: chmod [OPTION]… MODE[,MODE]… FILE…
or: chmod [OPTION]… OCTAL-MODE FILE…
or: chmod [OPTION]… –reference=RFILE FILE…
Change the mode of each FILE to MODE.
-c, –changes like verbose but report only when a change is made
–no-preserve-root do not treat /’specially (the default)
–preserve-root fail to operate recursively on `/
-f, –silent, –quiet suppress most error messages
-v, –verbose output a diagnostic for every file processed
–reference=RFILE use RFILE’s mode instead of MODE values
-R, –recursive change files and directories recursively
–help display this help and exit
–version output version information and exit
Each MODE is of the form `[ugoa]*(-+=)+’.[root@qs-wg-db2 ~]#
參數說明:
1. -cfvR 部分-c : 若該檔案權限確實已經更改,才顯示其更改動作
-f : 若該檔案權限無法被更改也不要顯示錯誤訊息
-v : 顯示權限變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的權限變更(即以遞回的方式逐個變更), 這個-R 用的還是很多的。
2. Mode 部分
這部分可以分成如下3塊: [who] operator [permission]
`[ugoa]*(-+=)+’.
who的含義是:u 文件屬主權限
g 同組用戶權限
o 其它用戶權限
a 所有用戶(包括以上三種)
operator的含義:+ 增加權限
- 取消權限
= 唯一設定權限
permission的含義:r 讀權限
w 寫權限
x 執行權限
X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執行。
s 文件屬主和組id
l 給文件加鎖,使其它用戶無法訪問
如: chmod a+x
3. 示例:
(1)將檔案 file1.txt 設為所有人皆可讀取 :chmod ugo+r file1.txt
(2)將檔案 file1.txt 設為所有人皆可讀取 :chmod a+r file1.txt
(3)將檔案 file1.txt 與 file2.txt 設為該檔案擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入 :chmod ug+w,o-w file1.txt file2.txt
(4)將 ex1.py 設定為只有該檔案擁有者可以執行 :chmod u+x ex1.py
(5)將目前目錄下的所有檔案與子目錄皆設為任何人可讀取 :chmod -R a+r *
(6)收回所有用戶的對file1的執行權限chmod a-x file1
4. 使用數字來賦權
4.1 先看一下文件的權限格式[root@qs-wg-db2 scripts]# ll
total 20
-rw-r–r– 1 Oracle oinstall 0 Feb 24 00:00 alertlogbyday.log
-rwxr-xr-x 1 oracle oinstall 430 Feb 20 01:10 alertlogbyday.sh
-rwxr-xr-x 1 oracle oinstall 7 Feb 24 05:00 del_st_arch.log
-rwxr-xr-x 1 oracle oinstall 648 Feb 19 00:51 del_st_archive.sh
-rwxr-xr-x 1 oracle oinstall 9 Feb 24 05:00 max_sn.log
drwxr-xr-x 3 root root 4096 Feb 23 23:40 pymonitor
ll的結果返回七列,分別表示如下含義:第一欄 [文件屬性]
第二欄 [文件數]
第三欄 [擁有者]
第四欄 [所有者群組]
第五欄 [大小]
第六欄 [建檔日期]
第七欄 [檔名]
4.1.1 第一欄 [文件屬性]
包括文件的類型和文件的權限。這塊共有十個字段,如:drwxr-xr-x,
我們把這10個列分成四塊:[d] [rwx] [r-x] [r-x]第一塊(也就是第一列):用來表示這個文件的類型,有如下值:
(1)[ d ]則是目錄,我這里的是d,表示的是一個目錄
(2)[ - ]則是文件;
(3)[ l ]則表示為連結檔(link file);
(4)[ b ]則表示為裝置文件里面的可供儲存的接口設備;
(5)[ c ]則表示為裝置文件里面的串行端口設備,例如鍵盤、鼠標。
第二塊(第 2到4 列):表示文件擁有者的權限。
第三塊(第 5到7 列):表示擁有者同組人的權限。
第四塊(第 8到10 列):表示是非擁有者組人的權限。
解釋:這些權限均有[rwx] 三個參數表示,而且分別對應不同的位置。每塊由3個列組成,每列對應一個值。 [ r ]代表可讀、[ w ]代表可寫、[ x ]代表可執行。
舉例: 如果擁有者只有只讀的權限,那么第2到4列就是[r--],有讀寫的權限就是[rw-],有讀寫和執行的權利就是[rwx].
4.1.2 其它欄
略
4.2 使用數字賦權
在4.1 中了解准備知識之后,就可以使用數字賦權了。 每塊用戶有3個權限[rwx]. 他們對應數字:r-->4
w-->2
x-->1
使用數字賦權的命令格式如下:chmod abc filename
其中的abc 分別代表3個數字,並且分別對應問個不同的屬組。 即:數字a 對應 第2到4位,表示擁有者的權限。
數字b 對應 第5到7位,表示同組用戶的權限。
數字c 對應第8到10位,表示其他組的權限。
rwx 對應4,2,1. 那么只讀的權限用4表示[r--],讀寫用6(4+2)表示[rw-],寫加執行用7(4+2+1)表示[rwx]。 只讀加執行用5(4+1)表示[r-x]。
示例:chmod 755 file1
chmod 777 file1 <==> chmod a=rwx file
chmod 771 file <==> chmod ug=rwx,o=x file