歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> 詳解Linux系統中管理文件權限的chown和chmod命令

詳解Linux系統中管理文件權限的chown和chmod命令

日期:2017/3/1 17:31:17   编辑:Linux技術

chown
用法:chown [選項]... [所有者][:[組]] 文件...
 或:chown [選項]... --reference=參考文件 文件...
更改每個文件的所有者和/或所屬組。
當使用 --referebce 參數時,將文件的所有者和所屬組更改為與指定參考文件相同。

-c, --changes 類似 verbose,但只在有更改時才顯示結果
--dereference 受影響的是符號鏈接所指示的對象,而非符號鏈接本身
-h, --no-dereference 會影響符號鏈接本身,而非符號鏈接所指示的目的地
(當系統支持更改符號鏈接的所有者時,此選項才有用)
--from=當前所有者:當前所屬組
只當每個文件的所有者和組符合選項所指定時才更改所
有者和組。其中一個可以省略,這時已省略的屬性就不
需要符合原有的屬性。
--no-preserve-root 不特殊對待"/"(默認值)
--preserve-root 不允許在"/"上遞歸操作
-f, --silent, --quiet 去除大部份的錯誤信息
--reference=參考文件 使用參考文件的所屬組,而非指定值
-R, --recursive 遞歸處理所有的文件及子目錄
-v, --verbose 為處理的所有文件顯示診斷信息

以下選項是在指定了 -R 選項時被用於設置如何穿越目錄結構體系。
如果您指定了多於一個選項,那麼只有最後一個會生效。

-H 如果命令行參數是一個通到目錄的符號鏈接,則遍歷符號鏈接
-L 遍歷每一個遇到的通到目錄的符號鏈接
-P 不遍歷任何符號鏈接(默認)

--help 顯示此幫助信息並退出
--version 顯示版本信息並退出

如果沒有指定所有者,則不會更改。 所屬組若沒有指定也不會更改,但當加上
":"時 GROUP 會更改為指定所有者的主要組。所有者和所屬組可以是數字或名稱。

例1:

復制代碼代碼如下:
[root@localhost ~]# chown zhangy:zhangy nginx.conf #將nginx.conf所屬用戶和組改為zhangy,zhangy
[root@localhost ~]# ls -al |grep nginx.conf
-rw-r--r-- 1 zhangy zhangy 0 5月 3 15:21 nginx.conf
[root@localhost ~]# chown -R zhangy:zhangy www #將www目錄,所屬用戶和組改為zhangy,zhangy
[root@localhost ~]# ls -al |grep ww
drwxr-xr-x 2 zhangy zhangy 4096 5月 3 15:20 www #將www目錄,所屬用戶改為root
[root@localhost ~]# chown root nginx.conf
[root@localhost ~]# ls -al |grep nginx.conf
-rw-r--r-- 1 root zhangy 0 5月 3 15:21 nginx.conf

例2:

復制代碼代碼如下:
[root@localhost database]# ll
總用量 4592
-rw-r--r-- 1 root root 2466 7月 23 18:02 1.html
-rw-r--r--. 1 tank tank 4099771 5月 28 14:42 28toplearning.sql
-rw-r--r--. 1 tank tank 596069 5月 29 00:07 toplearning.tar.gz


復制代碼代碼如下:
[root@localhost database]# chown .tank 1.html #只改變組
[root@localhost database]# ll
總用量 4592
-rw-r--r-- 1 root tank 2466 7月 23 18:02 1.html #組已改變
-rw-r--r--. 1 tank tank 4099771 5月 28 14:42 28toplearning.sql
-rw-r--r--. 1 tank tank 596069 5月 29 00:07 toplearning.tar.gz

chmod
用法:chmod [選項]... 模式[,模式]... 文件...
 或:chmod [選項]... 八進制模式 文件...
 或:chmod [選項]... --reference=參考文件 文件...
將每個文件的模式更改為指定值。

-c, --changes 類似 --verbose,但只在有更改時才顯示結果
--no-preserve-root 不特殊對待根目錄(默認)
--preserve-root 禁止對根目錄進行遞歸操作
-f, --silent, --quiet 去除大部份的錯誤信息
-v, --verbose 為處理的所有文件顯示診斷信息
--reference=參考文件 使用指定參考文件的模式,而非自行指定權限模式
-R, --recursive 以遞歸方式更改所有的文件及子目錄
--help 顯示此幫助信息並退出
--version 顯示版本信息並退出

每種 MODE 都應屬於這類形式"[ugoa]*([-+=]([rwxXst]*|[ugo]))+"。

操作對像

u 文件屬主權限
g 同組用戶權限
o 其它用戶權限
a 所有用戶(包括以上三種)

權限設定

+ 增加權限
- 取消權限
= 唯一設定權限

權限類別

r 讀權限
w 寫權限
x 執行權限
X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執行。
s 文件屬主和組id
l 給文件加鎖,使其它用戶無法訪問

r-->4
w-->2
x-->1

例1:

復制代碼代碼如下:
[root@localhost ~]# chmod ugo+r nginx_bak.conf #所有人皆可讀取
[root@localhost ~]# chmod a+r nginx_bak.conf #所有人皆可讀取
[root@localhost ~]# chmod ug+w,o-w nginx_bak.conf #設為該檔案擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入
[root@localhost ~]# chmod u+x nginx_bak.conf #創建者擁有執行權限
[root@localhost ~]# chmod -R a+r ./www/ #將www下的所有檔案與子目錄皆設為任何人可讀取
[root@localhost ~]# chmod a-x nginx_bak.conf #收回所有用戶的對nginx_bak.conf的執行權限
[root@localhost ~]# chmod 777 nginx_bak.conf #所有人可讀,寫,執行

例2:

復制代碼代碼如下:
# chmod a+s test.ppt #chmod g+s ,為某個文件設置替代組標識
# ls -al |grep test.ppt
-rwSr-Sr--. 1 tank tank 2320384 11月 18 19:29 test.ppt

第一個S指示用戶替代標識(suid)已經被設置。
第二個S指示替代組標識(sgid)已經被設置。

這樣,每一個運行該程序的用戶將給予和程序擁有者同樣有效的用戶標識,和用戶所屬組同樣有效的組標識。

Copyright © Linux教程網 All Rights Reserved