chmod

用來變更文件或目錄的權限

概要

1chmod [OPTION]... MODE[,MODE]... FILE...
2chmod [OPTION]... OCTAL-MODE FILE...
3chmod [OPTION]... --reference=RFILE FILE...

主要用途

  • 通過符號組合的方式更改目標文件或目錄的權限。
  • 通過八進制數的方式更改目標文件或目錄的權限。
  • 通過參考文件的權限來更改目標文件或目錄的權限。

參數

mode:八進制數或符號組合。

file:指定要更改權限的一到多個文件。

選項

1-c, --changes:當文件的權限更改時輸出操作信息。
2--no-preserve-root:不將'/'特殊化處理,默認選項。
3--preserve-root:不能在根目錄下遞歸操作。
4-f, --silent, --quiet:抑制多數錯誤消息的輸出。
5-v, --verbose:無論文件是否更改了權限,一律輸出操作信息。
6--reference=RFILE:使用參考文件或參考目錄RFILE的權限來設置目標文件或目錄的權限。
7-R, --recursive:對目錄以及目錄下的文件遞歸執行更改權限操作。
8--help:顯示幫助信息並退出。
9--version:顯示版本信息並退出。

返回值

返回狀態爲成功除非給出了非法選項或非法參數。

例子

參考man chmod文檔的DESCRIPTION段落得知:

  • u符號代表當前用戶。
  • g符號代表和當前用戶在同一個組的用戶,以下簡稱組用戶。
  • o符號代表其他用戶。
  • a符號代表所有用戶。
  • r符號代表讀權限以及八進制數4
  • w符號代表寫權限以及八進制數2
  • x符號代表執行權限以及八進制數1
  • X符號代表如果目標文件是可執行文件或目錄,可給其設置可執行權限。
  • s符號代表設置權限suid和sgid,使用權限組合u+s設定文件的用戶的ID位,g+s設置組用戶ID位。
  • t符號代表只有目錄或文件的所有者纔可以刪除目錄下的文件。
  • +符號代表添加目標用戶相應的權限。
  • -符號代表刪除目標用戶相應的權限。
  • =符號代表添加目標用戶相應的權限,刪除未提到的權限。
 1linux文件的用戶權限說明:
 2
 3# 查看當前目錄(包含隱藏文件)的長格式。
 4ls -la
 5  -rw-r--r--   1 user  staff   651 Oct 12 12:53 .gitmodules
 6
 7# 第1位如果是d則代表目錄,是-則代表普通文件。
 8# 更多詳情請參閱info coreutils 'ls invocation'(ls命令的info文檔)的'-l'選項部分。
 9# 第2到4位代表當前用戶的權限。
10# 第5到7位代表組用戶的權限。
11# 第8到10位代表其他用戶的權限。
 1# 添加組用戶的寫權限。
 2chmod g+w ./test.log
 3# 刪除其他用戶的所有權限。
 4chmod o= ./test.log
 5# 使得所有用戶都沒有寫權限。
 6chmod a-w ./test.log
 7# 當前用戶具有所有權限,組用戶有讀寫權限,其他用戶只有讀權限。
 8chmod u=rwx, g=rw, o=r ./test.log
 9# 等價的八進制數表示:
10chmod 764 ./test.log
11# 將目錄以及目錄下的文件都設置爲所有用戶擁有讀寫權限。
12# 注意,使用'-R'選項一定要保留當前用戶的執行和讀取權限,否則會報錯!
13chmod -R a=rw ./testdir/
14# 根據其他文件的權限設置文件權限。
15chmod --reference=./1.log  ./test.log

注意

  1. 該命令是GNU coreutils包中的命令,相關的幫助信息請查看man chmodinfo coreutils 'chmod invocation'

  2. 符號連接的權限無法變更,如果用戶對符號連接修改權限,其改變會作用在被連接的原始文件。

  3. 使用-R選項一定要保留當前用戶的執行和讀取權限,否則會報錯!

來源:https://github.com/jaywcjlove/linux-command

最後修改於: Wednesday, January 31, 2024

相關文章:

翻譯: