文件权限管理之: umask
umask(user’s mask)用来设置文件权限掩码。权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
mask: 新建文件、目录的默认权限是由mask决定的
umask: 会影响到mask,umask表示要减掉的权限
shell (vim,touch) =======umask======> 新文件或目录权限
vsftpd ==== ===umask======> 新文件或目录权限
samba ==== ===umask======> 新文件或目录权限
useradd ==== ===umask======> 用户HOME
示例1:在shell进程中创建文件
[root@localhost ~]# umask //查看当前用户的umask权限
0022
[root@localhost ~]# umask -S //查看当前用户的mask权限
u=rwx,g=rx,o=rx
[root@localhost ~]# touch file800
[root@localhost ~]# mkdir dir800
[root@localhost ~]# ll -d dir800 file800
drwxr-xr-x. 2 root root 4096 3月 11 19:40 dir800
-rw-r--r--. 1 root root 0 3月 11 19:40 file800
root: 文件 644 umask: 0022
目录 755
普通用户: 文件 664 umask: 0002
目录 775
示例2:修改shell umask值(临时)
[root@localhost ~]# umask 000
[root@localhost ~]# mkdir dir900
[root@localhost ~]# touch file900
[root@localhost ~]# ll -d dir900 file900
drwxrwxrwx. 2 root root 4096 3月 11 19:44 dir900
-rw-rw-rw-. 1 root root 0 3月 11 19:44 file900
示例3:修改shell umask值(永久 建议不要)
[root@localhost ~]# vim /etc/profile
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
[root@localhost ~]# source /etc/profile //立即在当前shell中生效
示例4:通过umask决定新建用户HOME目录的权限
[root@localhost ~]# grep -i umask /etc/login.defs
UMASK 077
[root@localhost ~]# useradd gougou
[root@localhost ~]# ll -d /home/gougou/
drwx------. 4 gougou gougou 4096 3月 11 19:50 /home/gougou/
[root@localhost ~]# vim /etc/login.defs
UMASK 000
[root@localhost ~]# useradd yangyang
[root@localhost ~]# ll -d /home/yangyang/
drwxrwxrwx. 4 yangyang yangyang 4096 3月 11 19:53 /home/yangyang/
示例5:vsftpd进程 /etc/vsftpd/vsftpd.conf —-貌似不太对
local_umask=000
随记:subshell
[root@localhost ~]# cd /home/;ls
alice centos tom
[root@localhost home]# pwd
/home
[root@localhost home]# cd
[root@localhost ~]# (cd /home/;ls)
alice centos tom
[root@localhost ~]# pwd
/root
[root@localhost ~]# umask 077; touch file60 //当前shell生效
[root@localhost ~]# (umask 077; touch file70) //()表示在子shell生效 subshell
[root@localhost ~]# ll file70
-rw------- 1 root root 0 10-26 14:31 file70
[root@localhost ~]#
[root@localhost ~]# umask
0022