umask

顯示或設置創建文件的權限掩碼。

概要

1umask [-p] [-S] [mode]

主要用途

  • 顯示當前的文件權限掩碼。
  • 通過八進制數的方式設置創建文件的權限掩碼。
  • 通過符號組合的方式設置創建文件的權限掩碼。

參數

mode(可選):八進制數或符號組合。

選項

1-p:當沒有參數時指定該選項,執行產生的輸出格式可複用爲輸入;
2-S:以符號組合的方式輸出創建文件的權限掩碼,不使用該選項時以八進制數的形式輸出。

返回值

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

例子

以下的例子均假設文件權限掩碼爲0022。

1# 以八進制數的形式輸出創建文件的權限掩碼。
2umask -p
3# 執行結果:
4umask 0022
5# 以符號組合的方式輸出創建文件的權限掩碼。
6umask -S
7# 執行結果:
8u=rwx,g=rx,o=rx

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

  • u符號代表當前用戶。
  • g符號代表和當前用戶在同一個組的用戶,以下簡稱組用戶。
  • o符號代表其他用戶。
  • a符號代表所有用戶。
  • r符號代表讀權限以及八進制數4
  • w符號代表寫權限以及八進制數2
  • x符號代表執行權限以及八進制數1
  • +符號代表添加目標用戶相應的權限。
  • -符號代表刪除目標用戶相應的權限。
  • =符號代表添加目標用戶相應的權限,刪除未提到的權限。

那麼剛纔以符號形式輸出的結果u=rwx,g=rx,o=rx轉化爲八進制數等於0755

用八進制數來設置同樣的權限,umask需要額外的執行減法0777 - 07550022,而chmod不需要。

符號組合模式的添加、刪除、賦值權限。

 1# 添加權限:
 2# 爲組用戶添加寫權限。
 3umask g+w
 4# 刪除權限:
 5# 刪除其他用戶的寫、執行權限
 6umask o-wx
 7# 賦值權限:
 8# 賦值全部用戶所有權限,等價於umask u=rwx,g=rwx,o=rwx
 9umask a=rwx
10# 清除其他用戶的讀、寫、執行權限。
11umask o=

創建文件夾、文件(假設當前目錄不存在)

1# 創建文件
2touch test.sh
3# 查看權限,發現執行權限的設置不起作用。
4stat test.sh
5# 創建文件夾
6touch newdir
7# 查看權限,發現執行權限的設置可以起作用。
8stat newdir

注意

  1. 該命令是bash內建命令,相關的幫助信息請查看help命令。

  2. chmod用於更改已有對象的權限,umask影響之後新建對象的權限。

  3. 請謹慎使用該命令,特別是不要取消當前用戶的讀取權限,那樣會導致你在終端使用TAB鍵補全時報錯。

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

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

相關文章:

翻譯: