Linux chmod命令詳解

keeptrying發表於2012-12-26

轉自:http://blog.csdn.net/tianlesoftware/article/details/6204412

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]*([-+=]([rwxXst]*|[ugo]))+'.

 

Report bugs to .

[root@qs-wg-db2 ~]#

 

 

引數說明:

1. -cfvR 部分

    -c : 若該檔案許可權確實已經更改,才顯示其更改動作

    -f : 若該檔案許可權無法被更改也不要顯示錯誤訊息

    -v : 顯示許可權變更的詳細資料

    -R : 對目前目錄下的所有檔案與子目錄進行相同的許可權變更(即以遞迴的方式逐個變更) 這個-R 用的還是很多的。

 

2.  Mode 部分

這部分可以分成如下3塊: [who] operator [permission]

                         `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.

 

who的含義是:

    u 檔案屬主許可權

    g 同組使用者許可權

    o 其它使用者許可權

    a 所有使用者(包括以上三種)

operator的含義:

    + 增加許可權

    - 取消許可權

    =  唯一設定許可權

permission的含義:

    r 讀許可權

    w 寫許可權

    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的結果返回七列,分別表示如下含義:

第一欄  [檔案屬性]

第二欄  [檔案數]

第三欄  [擁有者]

第四欄  [所有者群組]

第五欄  [大小]

第六欄  [建檔日期]

第七欄  [檔名]

 

我們設定檔案的許可權就是這是第一欄裡的檔案屬性。

 

檔案屬性這塊共有十個欄位,如:drwxr-xr-x

 

我們把這10個列分成4塊:[d] [rwx] [r-x] [r-x]

第一塊:也就是第一列,用來表示這個檔案的型別,有如下值:

    1[ d ]則是目錄,我這裡的是d,表示的是一個目錄

    2[ - ]則是檔案;

    3[ l ]則表示為連結檔(link file)

    4[ b ]則表示為裝置檔案裡面的可供儲存的介面裝置;

    5[ c ]則表示為裝置檔案裡面的串列埠裝置,例如鍵盤、滑鼠。

第二塊:第 24 列,表示檔案擁有者的許可權。

第三塊:第57 列,表示擁有者同組人的許可權。

第四塊:第810列,表示是非擁有者組人的許可權。

 

   這些許可權均有[rwx] 三個參數列示,而且分別對應不同的位置。每塊由3個列組成,每列對應一個值。 [ r ]代表可讀、[ w ]代表可寫、[ x ]代表可執行。

    舉例: 如果擁有者只有只讀的許可權,那麼第24列就是[r--],有讀寫的許可權就是[rw-],有讀寫和執行的權利就是[rwx].

 

4.2 使用數字賦權

4.1 中瞭解準備知識之後,就可以使用數字賦權了。 每塊使用者有3個許可權[rwx]. 他們對應數字:

    r --&gt4

    w--&gt2

    x--&gt1

 

使用數字賦權的命令格式如下:

    chmod abc filename

其中的abc 分別代表3個數字,並且分別對應問個不同的屬組 即:

    數字a 對應 24位,表示擁有者的許可權。

    數字b 對應 57位,表示同組使用者的許可權。

    數字c 對應第810位,表示其他組的許可權。

 

    rwx 對應421. 那麼只讀的許可權用4表示[r--],讀寫用64+2)表示[rw-],寫加執行用74+2+1)表示[rwx] 只讀加執行用54+1)表示[r-x]

 

示例:

    chmod 755 file1

    chmod 777 file1 <==> chmod a=rwx file 

    chmod 771 file  <==> chmod ug=rwx,o=x file 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25744374/viewspace-751661/,如需轉載,請註明出處,否則將追究法律責任。

相關文章