文件权限管理之: umask
    umask(user’s mask)用来设置文件权限掩码权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限
    mask: 新建文件、目录的默认权限是由mask决定的
    umask: 会影响到mask,umask表示要减掉的权限

    shell (vim,touch) =======umask======> 新文件或目录权限
    vsftpd ==== ===umask======> 新文件或目录权限
    samba ==== ===umask======> 新文件或目录权限
    useradd ==== ===umask======> 用户HOME

    示例1:在shell进程中创建文件

    1. [root@localhost ~]# umask //查看当前用户的umask权限
    2. 0022
    3. [root@localhost ~]# umask -S //查看当前用户的mask权限
    4. u=rwx,g=rx,o=rx
    5. [root@localhost ~]# touch file800
    6. [root@localhost ~]# mkdir dir800
    7. [root@localhost ~]# ll -d dir800 file800
    8. drwxr-xr-x. 2 root root 4096 3 11 19:40 dir800
    9. -rw-r--r--. 1 root root 0 3 11 19:40 file800
    10. root: 文件 644 umask: 0022
    11. 目录 755
    12. 普通用户: 文件 664 umask: 0002
    13. 目录 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