umask-設置默認權限


當進程(process)創建文件時,文件有默認的權限,如rw-r--r--,這個初始的默認值是由 文件權限掩碼 (file mode creation mask/file permission mask/umask)決定的。

 

umask 可以用二進制、八進制、或符號記法顯示。如八進制的 0137 ,符號記法 u=rw-,g=r--,o=--- 。符號記法和八進制記法相反,八進制記法禁止權限,符號記法代表允許權限。

 

umask的結構:

  •     0 = 沒有意義,總是為零,umask 對特殊權限沒有作用。

  •     1 = owner user 執行權限掩碼。

  •     3 = owner group 寫、執行權限掩碼。

  •     7 = others 讀、寫、執行權限掩碼。

 

umask的用法:

  • 當一個位在umask中指定,文件中不會指定這個位指定的權限。

  • 當位不在umask中指定,文件的位所在的權限可以被指定,具體取決於其他因素。

下圖解釋了umask0137對文件的作用

重要:

為了系統安全的原因,普通文件默認沒有執行權限。因此,即使 umask 設置為0000,沒有禁止任何權限,當文件被創建時,文件還是不會有執行權限。當然,創建文件夾時,文件夾有執行權限。

 

管理umask:

在一些普遍流行的 shell 下,如bash  、 ksh 、zsh 和 tcsh,umask內置於shell。shell 下的進程繼承這個內置 umask 。

 

查看當前 umask:

  查看當前八進制 umask :

# umask
0022

  查看當前符號記法 umask :

# umask -S
u=rwx,g=rx,o=rx

設置 umask(通過 umask 命令):

  通過八進制記法設置 umask :

# umask 0027# umask
0027

  通過符號記法設置 umask :

# umask -S u=rwx,g=rx,o=rx
u=rwx,g=rx,o=rx
# umask -S
u=rwx,g=rx,o=rx
# umask
0022

注意:

1.使用 umask 命令設置 umask 值,設置只對當前 shell 有效:

[root@localhost ~]# umask 0027
[root@localhost ~]# umask
0027
[root@localhost ~]# su -
Last login: Tue May 12 12:32:38 CST 2020 on pts/0
[root@localhost ~]# umask
0022
[root@localhost ~]# 

2.當 umask不完整時,填充0左補足:

[root@localhost ~]# umask 7
[root@localhost ~]# umask
0007

 

設置 umask(通過文件):

  為所有用戶設置默認 umask,通過腳本中的 umask 命令, 或設置 UMASK 變量實現:

[root@localhost ~]# grep -i umask -B 1 /etc/bashrc 

    # By default, we want umask to get set. This sets it for non-login shell.
--
    if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
       umask 002
    else
       umask 022
[root@localhost ~]# vim /etc/bashrc 
[root@localhost ~]# grep -i umask -B 1 /etc/bashrc 

    # By default, we want umask to get set. This sets it for non-login shell.
--
    if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
       umask 002
    else
       umask 027
[root@localhost ~]# 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM