linux知識點系列之 umask


linux知識點系列之  umask

介紹

umask(user’s mask)用來設置文件權限掩碼權限掩碼是由3個八進制的數字所組成,將現有的存取權限減掉權限掩碼後,即可產生建立文件時預設的權限。

UNIX最初實現時不包含umask命令。1978年左右,在UNIX第七版中引入,用於解決權限掩碼問題。

Shell 命令

在 Shell 中,使用 umask命令來設置權限掩碼。

<code>umask [-S] [maskExpression]   # 中括號內的參數是可選的。/<code>

參數說明:

  • -S  以符號的形式來表示權限掩碼。

顯示當前掩碼

<code>$ umask           # 以數字形式顯示掩碼(八進制)
022
$ umask -S # 以符號形式顯示掩碼
u=rwx,g=rx,o=rx/<code>

使用數字設置掩碼

<code>$ umask 007    # 設置權限掩碼為 007
$ umask # 以數字形式顯示掩碼(八進制)
0007 # 0 - 特殊權限 (setuid | setgid | sticky )
# 0 - (u)用戶權限掩碼
# 0 - (g)組權限掩碼
# 7 - (o)其他用戶權限掩碼
$ umask -S # 以符號形式顯示掩碼
u=rwx,g=rwx,o=/<code>

八進制掩碼錶


linux知識點系列之  umask


使用符號設置掩碼

當umask使用符號設置掩碼時,它將使用以下語法進行修改:[用戶標識] 操作符 權限符號

用戶標識表


linux知識點系列之  umask


操作符表


linux知識點系列之  umask


權限符號表


linux知識點系列之  umask


示例:

<code>umask u-w                 # 禁止為用戶設置寫權限,同時保持其餘標誌不變。
umask u-w,g=r,o+r # u-w 禁止為用戶設置寫權限,同時保持其餘標誌不變;
# g=r 允許對組啟用讀權限,同時禁止對組的寫入和執行權限;
# o+r 允許對其他人啟用讀權限,同時保持其他標誌不變。/<code>

常用 umask

常用的umask及所對應的目錄和文件權限。

linux知識點系列之  umask


使用場景

系統 umask

在系統變量文件(/etc/profile)中設置。

<code># 查看默認 umask
$ grep -C 1 umask /etc/profile
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else

umask 022
fi

# 設置系統 umask,在 /etc/profile 末尾添加 umask 022即可
$ echo "umask 022" >> /etc/profile

# 實時生效環境變量
$ source /etc/profile/<code>

用戶 umask

在用戶變量文件(~/.bash_profile)中設置。

<code># 設置系統 umask,在 /etc/profile 末尾添加 umask 022即可
$ echo "umask 022" >> ~/.bash_profile

# 實時生效環境變量
$ source ~/.bash_profile/<code>

vsftpd中的umask使用

vsftpd中的umask參數:

  • local_umask:本地用戶的 umask
  • anon_umask:虛擬用戶的 umask
<code># 查看默認 umask
$ grep -C 1 umask /etc/vsftpd/vsftpd.conf
local_umask=027

# 設置 umask 為 0022
$ sed -i 's/local_umask=027/local_umask=022/g' /etc/vsftpd/vsftpd.conf

# 重啟 vsftpd 生效
$ systemctl restart vsftpd/<code>

中間件 umask

以 tomcat 為例,說明設置中間件 umask,其他中間件類似。

<code># 查看默認 umask
$ grep -C 1 umask bin/catalina.sh
if [ -z "$UMASK" ]; then
UMASK="0027"
fi
umask $UMASK

# 設置 umask 為 0022
$ sed -i 's/UMASK="0027"/UMASK="0022"/g' bin/catalina.sh/<code>
  • https://en.wikipedia.org/wiki/Umask
  • http://www.man7.org/linux/man-pages/man2/umask.2.html


分享到:


相關文章: