1、umask说明
在Linux系统中umask值代表的是我们创建新文件/目录的默认权限设置,系统root账号默认的umask的值为0022 普通账号的umask的值为0002
2、查看umask值
使用命令umask命令可以查看当前帐号umask的值
[root@RedHat8-2 ~]# umask
0022
[root@RedHat8-2 ~]# umask -S
u=rwx,g=rx,o=rx
[root@RedHat8-2 ~]# su - stu10
Last login: Fri Jun 11 14:05:19 CST 2021 on pts/0
[stu10@RedHat8-2 ~]$ umask
0002
[stu10@RedHat8-2 ~]$ umask -S
u=rwx,g=rwx,o=rx
可以看到umask值有四位数字,第一位数字代表的是特殊权限忽略,后三位数字为我们看到的文件/目录的默认权限。
账号能有的目录最大权限为777,文件能有的最大权限为666,我们根据此权限对应umask的值就能够计算出该账号的默认文件/目录权限。
root:目录 777-022=755
root:文件 666-022=644
stu10:目录 777-002=775
stu10: 文件 666-002=664
权限对应数字
rwx rwx rwx
第一部分(user) 读: r-- 4
第二部分(group)写: -w- 2
第三部分(其它) 执行: --x 1
3、验证测试
root测试:
[root@RedHat8-2 ~]# whoami
root
[root@RedHat8-2 ~]# umask
0022
[root@RedHat8-2 ~]# mkdir umask
[root@RedHat8-2 ~]# cd umask/
[root@RedHat8-2 umask]# mkdir dir
[root@RedHat8-2 umask]# touch file
[root@RedHat8-2 umask]# ll
total 0
drwxr-xr-x 2 root root 6 Jun 11 14:27 dir
-rw-r--r-- 1 root root 0 Jun 11 14:27 file
root新建默认目录权限为:rwxr-xr-x=755 / 777-022=755
root新建默认文件权限为:rw-r--r--=644 / 666-022=644
普通账号测试:
[stu10@RedHat8-2 ~]$ whoami
stu10
[stu10@RedHat8-2 ~]$ umask
0002
[stu10@RedHat8-2 ~]$ ls
[stu10@RedHat8-2 ~]$ mkdir stu-dir
[stu10@RedHat8-2 ~]$ touch stu-file
[stu10@RedHat8-2 ~]$ ll
total 0
drwxrwxr-x 2 stu10 stu10 6 Jun 11 15:14 stu-dir
-rw-rw-r-- 1 stu10 stu10 0 Jun 11 15:14 stu-file
stu10普通账号新建默认目录权限为:rwxrwxr-x=775 / 777-002=775
stu10普通账号新建默认文件权限为:rw-rw-r--=664 / 666-002=664
4、修改umask值测试
我们将umask的值设置成0027进行测试
[root@RedHat8-2 ~]# umask
0022
[root@RedHat8-2 ~]# umask 0027
[root@RedHat8-2 ~]# umask
0027
[root@RedHat8-2 ~]# umask -S
u=rwx,g=rx,o=
[root@RedHat8-2 ~]# cd umask/
[root@RedHat8-2 umask]# mkdir dir-027
[root@RedHat8-2 umask]# touch file-027
[root@RedHat8-2 umask]# ll
total 0
drwxr-xr-x 2 root root 6 Jun 11 14:27 dir
drwxr-x--- 2 root root 6 Jun 11 15:32 dir-027
-rw-r--r-- 1 root root 0 Jun 11 14:27 file
-rw-r----- 1 root root 0 Jun 11 15:33 file-027
我们可以对比两次测试权限的变化
此时root新建默认目录权限为:rwxr-x---=750 / 777-027=750
此时root新建默认文件权限为:rw-r-----=640 / 666-027=640
注:
但是这种方式并不能永久更改umask的值,只是将当前的shell临时更改
如果要永久更改umask的值,可以将命令添加至/etc/profile或/etc/bashrc文件中
对已存在文件/目录无效,只会对新建生效。