Linux基礎命令---chmod

一生有你llx發表於2018-11-12

chmod

改變檔案或者目錄的許可權,可以用數字或者字母來標識許可權。在數字模式下:0,代表沒有許可權;1,代表可執行;2,代表可讀;4,代表可寫;多個許可權可以相加。在字元模式下:x,代表執行;r,代表讀;w,代表寫;g,代表組許可權;o,代表組內其他使用者許可權;u,代表使用者許可權ls命令中,看到的許可權分別是:使用者許可權、組許可權、組內其他使用者許可權。

此命令的適用範圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1 、語法

chmod [ 選項]  mode  file

chmod [ 選項]  八進位制模式  file

chmod [ 選項]  –reference=RFILE  file

 

2 、選項列表

選項

說明

--version

顯示命令版本資訊

--help

顯示幫助文件

-c | --changes

和verbose一樣,但是隻有在發生改變的時候才顯示詳細資訊

--preserve-root

禁止對根目錄遞迴炒作

--no-preserve-root

不特殊對待根目錄,預設值

-f | --silent | --quiet

忽略部分錯誤資訊

--reference=file

使用關聯檔案所屬的組

-v | --verbose

顯示詳細資訊

-R | --recursive

用遞迴的方式改變所有的目錄和子目錄

 

3 、說明

chmod 根據模式更改每個給定檔案的檔案模式位,該模式可以是要進行的更改的符號表示,也可以是表示新模式位的位模式的八進位制數。符號模式的格式是[ugoa...][[+-=][perms...]...],其中perms為集合rwxXst的零個或多個字母,或來自結合ugo的單個字母。可以給出多種符號模式,用逗號分隔。

字母ugoa控制哪些使用者訪問檔案的許可權將被更改:(u)擁有該檔案的使用者、(g)檔案組中的其他使用者、(o)不屬於檔案組的其他使用者或所有使用者(A)。如果所有這些都沒有給出,那麼效果就好像給定了“a”,但是在umask中設定的位不受影響。

運算子‘+’使所選的檔案模式位被新增到每個檔案的現有檔案模式位中;‘-’使它們被刪除;‘=‘使它們被新增,並使未提及的位被刪除,除非目錄的未提及的設定使用者和組ID位不受影響。

字母“rwxXst”為受影響的使用者選擇檔案模式位:(r)讀、(w)寫、(x)執行(或搜尋目錄)、(X)只在檔案是目錄或已對某些使用者具有執行許可權、(s)在執行時設定使用者或組ID、(t)限制刪除標誌或粘性位時執行/搜尋。您可以指定“ugo”其中的一個或多個字母:(u)授予擁有檔案的使用者的許可權,(g)授予屬於檔案組的其他使用者的許可權,(o)授予上述兩個類別中任何一個使用者的許可權。

數字模式是1到4個八進位制數字(0-7),通過將值4、2和1的位相加而得。省略的數字被假定為前導零。第一個數字選擇設定使用者ID(4)和設定組ID(2),並限制刪除或貼上(1)屬性。第二位數為擁有該檔案的使用者選擇許可權:讀(4)、寫(2)和執行(1);第三位數選擇檔案組中具有相同值的其他使用者的許可權;第四位數字選擇對不屬於檔案組的其他使用者具有相同值的許可權。

chmod 從不更改符號連結的許可權;chmod系統呼叫不能更改它們的許可權。這不是一個問題,因為符號連結的許可權從未被使用過。但是,對於命令列中列出的每個符號連結,chmod會更改指向檔案的許可權。相反,chmod忽略遞迴目錄遍歷過程中遇到的符號連結。

 

4 、設定uid和gid

如果檔案的組ID與使用者的有效組ID或使用者的輔助組ID不匹配,則chmod將清除常規檔案的“set-group-ID”位,除非使用者具有適當的許可權。附加限制可能導致MODE或RFILE的“set-user-ID”和“set-group-ID”位被忽略.此行為取決於底層chmod系統呼叫的策略和功能。當有疑問時,檢查底層系統行為。

chmod 保留目錄的“set-user-ID”和“set-group-ID”位,除非您顯式地另外指定。您可以使用“u+s”和“g-s”這樣的符號模式設定或清除位,也可以用數字模式設定(但不清楚)這些位。

 

5 、限制刪除標誌或粘性位

受限制的刪除標誌或粘性位是一個位,其解釋取決於檔案型別。對於目錄,它防止非特權使用者刪除或重新命名目錄中的檔案,除非他們擁有該檔案或目錄;這稱為目錄的限制刪除標誌,通常在/tmp之類的可寫目錄中找到。對於一些舊系統上的常規檔案,這一位將程式的文字映像儲存在交換裝置上,以便在執行時更快地載入;這稱為粘性位。

 

6 、例項

1 )修改檔案的許可權為最大值

[root@localhost weijie]#  chmod 777 1.c

You have new mail in /var/spool/mail/root

[root@localhost weijie]#  ls -l 1.c

-rwxrwxrwx  1 root weijie 0 9    7 09:11 1.c

2 )設定組和其他使用者只讀,使用字元模式設定

[root@localhost weijie]#  chmod 777 1.c           // 改為最大許可權

[root@localhost weijie]#  ls -l 1.c

-rwxrwxrwx  1 root weijie 0 9    7 09:11 1.c

[root@localhost weijie]#  chmod go+r 1.c          // 修改組、其他使用者許可權

[root@localhost weijie]#  ls -l 1.c

-rwxrwxrwx  1 root weijie 0 9    7 09:11 1.c      // 這裡沒有效果

 

[root@localhost weijie]#  chmod 700 1.c          // 組、其他使用者許可權為

[root@localhost weijie]#  chmod go+r 1.c         // 組、其他使用者增加讀許可權

[root@localhost weijie]#  ls -l 1.c

-rwxr--r-- 1  root weijie 0 9    7 09:11 1.c    // 成功。可以看到使用字元模式的時候,許可權是一種或的演算法,而不是直接賦值

 

 


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

相關文章