歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

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

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