在類unix系統中,系統經過chmod命令來改變文件系統對象(文件及目錄)的訪問權限。它一樣能夠用來改變特別的模式標記。操做請求是由umask過濾。命令是change和mode的縮寫。app
命令的語法:less
chmod [options] mode [,mode] file [file2 ...]ui
一般的執行選項option包括:spa
-R 遞歸, 即包含子目錄裏的目標unix
-f 即對全部目標強制執行,即使中間發生錯誤code
-v 顯示詳細信息orm
若是一個符號連接被指定,目標對象則產生對應變化。與符號連接直接關聯的文件模式一般不會被用到。經過ls和stat命令能夠查看文件模式。好比:對象
$ ls -l findPhoneNumbers.sh -rwxr-xr-- 1 dgerman staff 823 Dec 16 15:03 findPhoneNumbers.sh $ stat -c %a findPhoneNumbers.sh 754
文件模式中的r,w,x分別表示讀、寫及執行訪問。ls命令的第一個字符表示對象類型,連字符表示純文本文件。腳本能夠被當前用戶讀寫及執行,能夠被工做組其餘用戶讀及執行,其餘用戶則只能讀取。blog
八進制模式遞歸
chmod數字表示支持最多四個八進制數字。最右側的三個數字分別指代文件全部者、羣組級其餘用戶的權限。當出現四個數字時,最左邊數字表示專門的setuid、setgid及sticky標記。
# | Permission | rwx |
---|---|---|
7 | read, write and execute | rwx |
6 | read and wite | rw- |
5 | read and execute | r-x |
4 | read only | r-- |
3 | write and execute | -wx |
2 | write only | -w- |
1 | execute only | --x |
0 | none | --- |
例如須要容許全部羣組成員能夠更新該文件,可使用chmod 664 sharedFile,因爲沒有設置特殊標記,全部等同於chmod 0664 sharedFile。
符號模式
chmod命令一樣支持劃分更細的符號表示。它容許修改指定的模式並保持其它模式不變。符號模式由三部分組成,表示以下:
$ chmod [references] [operator] [modes] file ...
其中references表示權限做用的用戶類型。若是沒有指定則表示所有用戶。references一般用下面一個或多個字母表示:
Reference | Class | Description |
---|---|---|
u | user | 文件全部者 |
g | group | 組成員用戶 |
o | others | 即非文件全部者也非組成員用戶的用戶 |
a | all | 上面三種用戶 |
chmod命令使用一個操做符來指定怎麼調整文件的模式,支持下列操做符:
Operator | Description |
---|---|
+ | 爲指定類添加指定模式 |
- | 爲指定類移除指定模式 |
= | 爲指定類指定所有的文件模式 |
模式指定了哪種權限將被添加或者移除,一些基本的模式對應基本的權限:
r <read> <read a file or list a directory's contents>
w <write> <write to a file or directory>
x <execute> <execute a file or recurse a directory tree>
X <special execute> <which is not a permission in itself but rather can be used instead of x. It applies execute permissions to directories regardless of their current permissions and applies execute permissions to a file which already has at least one execute permission bit already set (either user, group or other). It is only really useful when used with '+' and usually in combination with the -R option for giving group or other access to a big directory tree without setting execute permission on normal files (such as text files), which would normally happen if you just used "chmod -R a+rx .", whereas with 'X' you can do "chmod -R a+rX ." instead>
s <setuid/gid> <details in Special modes section>
t <sticky> <details in Special modes section>
多個符號標記能夠同時指定,不須要逗號或空格。
參考:
https://en.wikipedia.org/wiki/Chmod