![linux知識點系列之 umask](http://p2.ttnews.xyz/loading.gif)
介紹
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](http://p2.ttnews.xyz/loading.gif)
使用符號設置掩碼
當umask使用符號設置掩碼時,它將使用以下語法進行修改:[用戶標識] 操作符 權限符號
用戶標識表
操作符表
權限符號表
示例:
<code>umask u-w # 禁止為用戶設置寫權限,同時保持其餘標誌不變。
umask u-w,g=r,o+r # u-w 禁止為用戶設置寫權限,同時保持其餘標誌不變;
# g=r 允許對組啟用讀權限,同時禁止對組的寫入和執行權限;
# o+r 允許對其他人啟用讀權限,同時保持其他標誌不變。/<code>
常用 umask
常用的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
閱讀更多 叨叨軟件測試 的文章