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