Linux umask命令:设置用户在创建文件或目录时需要减去的默认权限

BUG之神 27
umask命令:设置用户在创建文件或目录时需要减去的默认权限

在Linux系统中umask值代表的是我们创建新文件/目录的默认权限设置,系统root账号默认的umask的值为0022 普通账号的umask的值为0002

查看umask值

使用命令umask命令可以查看当前帐号umask的值

Shell
  1. [root@RedHat8-2 ~]# umask
  2.  
  3. 0022
  4.  
  5. [root@RedHat8-2 ~]# umask -S
  6.  
  7. u=rwx,g=rx,o=rx
 复制 文本

可以看到umask值有四位数字,第一位数字代表的是特殊权限忽略,后三位数字为我们看到的文件/目录的默认权限。

文件默认权限

对于目录,默认权限=777-umask

对于文件,默认权限=666-umask(文件默认无执行权限)


下方的这种算法是错的

root:目录 777-022=755

root:文件 666-022=644

非root用户:目录 777-002=775

非root用户: 文件 666-002=664

在计算默认权限时,不应用最大权限直接减去umask值,而是将umask值所对应的相应位置的权限去掉,这样才能得到正确的结果。


权限对应数字 rwx rwx rwx

第一部分(user) 读: r-- 4

第二部分(group)写: -w- 2

第三部分(其它) 执行: --x 1

如何修改默认umask值

临时修改umask值:

Shell
  1. [root@Hadoop ~]#umask 700
  2.  
  3. [root@Hadoop ~]umask 022

但是这种方式并不能永久更改umask的值,只是将当前的shell临时更改
如果要永久更改umask的值,可以将命令添加至/etc/profile或/etc/bashrc文件中

要修改默认值, 请在您的 shell 配置文件中或者 /etc/profile 文件中写入一个新的 umask 值

Shell
  1. vi /etc/profile
  2. umask 022
  3. source /etc/profile

练习题:假如将umask值设为0003,那么此时创建的目录或文件的默认权限是多少?

再次说明:

在计算默认权限时,不应用最大权限直接减去umask值,而是将umask值所对应的相应位置的权限去掉,这样才能得到正确的结果。

答案:目录的默认权限是774,文件的默认权限是664

计算过程:

Linux umask命令:设置用户在创建文件或目录时需要减去的默认权限

可通过ls -l查看文件详细信息:

Linux umask命令:设置用户在创建文件或目录时需要减去的默认权限

分享