命令格式:
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]*([-+=]([rwxXst]*|[ugo]))+'.
Report bugs to <bug-coreutils@gnu.org>.
[root@qs-wg-db2 ~]#
參數(shù)說明:
1. -cfvR 部分
-c : 若該檔案權(quán)限確實已經(jīng)更改,才顯示其更改動作
-f : 若該檔案權(quán)限無法被更改也不要顯示錯誤訊息
-v : 顯示權(quán)限變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的權(quán)限變更(即以遞回的方式逐個變更), 這個-R 用的還是很多的。
2. Mode 部分
這部分可以分成如下3塊: [who] operator [permission]
`[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.
who的含義是:
u 文件屬主權(quán)限
g 同組用戶權(quán)限
o 其它用戶權(quán)限
a 所有用戶(包括以上三種)
operator的含義:
+ 增加權(quán)限
- 取消權(quán)限
= 唯一設(shè)定權(quán)限
permission的含義:
r 讀權(quán)限
w 寫權(quán)限
x 執(zhí)行權(quán)限
X 表示只有當該檔案是個子目錄或者該檔案已經(jīng)被設(shè)定過為可執(zhí)行。
s 文件屬主和組id
l 給文件加鎖,使其它用戶無法訪問
如: chmod a+x
3. 示例:
(1)將檔案 file1.txt 設(shè)為所有人皆可讀取 :
chmod ugo+r file1.txt
(2)將檔案 file1.txt 設(shè)為所有人皆可讀取 :
chmod a+r file1.txt
(3)將檔案 file1.txt 與 file2.txt 設(shè)為該檔案擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入 :
chmod ug+w,o-w file1.txt file2.txt
(4)將 ex1.py 設(shè)定為只有該檔案擁有者可以執(zhí)行 :
chmod u+x ex1.py
(5)將目前目錄下的所有檔案與子目錄皆設(shè)為任何人可讀取 :
chmod -R a+r *
(6)收回所有用戶的對file1的執(zhí)行權(quán)限
chmod a-x file1
4. 使用數(shù)字來賦權(quán)
4.1 先看一下文件的權(quán)限格式
[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的結(jié)果返回七列,分別表示如下含義:
第一欄 [文件屬性]
第二欄 [文件數(shù)]
第三欄 [擁有者]
第四欄 [所有者群組]
第五欄 [大小]
第六欄 [建檔日期]
第七欄 [檔名]
我們設(shè)置文件的權(quán)限就是這是第一欄里的文件屬性。
文件屬性這塊共有十個字段,如:drwxr-xr-x
我們把這10個列分成4塊:[d] [rwx] [r-x] [r-x]
第一塊:也就是第一列,用來表示這個文件的類型,有如下值:
(1)[ d ]則是目錄,我這里的是d,表示的是一個目錄
(2)[ - ]則是文件;
(3)[ l ]則表示為連結(jié)檔(link file);
(4)[ b ]則表示為裝置文件里面的可供儲存的接口設(shè)備;
(5)[ c ]則表示為裝置文件里面的串行端口設(shè)備,例如鍵盤、鼠標。
第二塊:第 2到4 列,表示文件擁有者的權(quán)限。
第三塊:第5到7 列,表示擁有者同組人的權(quán)限。
第四塊:第8到10列,表示是非擁有者組人的權(quán)限。
這些權(quán)限均有[rwx] 三個參數(shù)表示,而且分別對應(yīng)不同的位置。每塊由3個列組成,每列對應(yīng)一個值。 [ r ]代表可讀、[ w ]代表可寫、[ x ]代表可執(zhí)行。
舉例: 如果擁有者只有只讀的權(quán)限,那么第2到4列就是[r--],有讀寫的權(quán)限就是[rw-],有讀寫和執(zhí)行的權(quán)利就是[rwx].
4.2 使用數(shù)字賦權(quán)
在4.1 中了解準備知識之后,就可以使用數(shù)字賦權(quán)了。 每塊用戶有3個權(quán)限[rwx]. 他們對應(yīng)數(shù)字:
r -->4
w-->2
x-->1
使用數(shù)字賦權(quán)的命令格式如下:
chmod abc filename
其中的abc 分別代表3個數(shù)字,并且分別對應(yīng)問個不同的屬組。 即:
數(shù)字a 對應(yīng) 第2到4位,表示擁有者的權(quán)限。
數(shù)字b 對應(yīng) 第5到7位,表示同組用戶的權(quán)限。
數(shù)字c 對應(yīng)第8到10位,表示其他組的權(quán)限。
rwx 對應(yīng)4,2,1. 那么只讀的權(quán)限用4表示[r--],讀寫用6(4+2)表示[rw-],寫加執(zhí)行用7(4+2+1)表示[rwx]。 只讀加執(zhí)行用5(4+1)表示[r-x]。
示例:
chmod 755 file1
chmod 777 file1 <==> chmod a=rwx file
chmod 771 file <==> chmod ug=rwx,o=x file