1. 用户理解
    用户就是系统使用者的身份
    在系统中用户存储为若干窜字符+若干个系统配置文件
    用户信息涉及到的系统配置文件:
    /etc/passwd        ###用户信息
    用户:密码:uid:gid:说明:家目录:用户使用的shelllinux云自动化运维基础知识5.6(用户管理及文件权限)_运维/etc/shadow        ###用户认证信息
    用户:密码:最后一次密码修改该时间:最短有效期:最长有效期:警告期:非活跃期:帐号到期日
    /etc/group        ###组信息

    组名称:组密码:组id:附加组成员linux云自动化运维基础知识5.6(用户管理及文件权限)_linux_02

    /etc/gshadow        ###组认证信息

  2. linux云自动化运维基础知识5.6(用户管理及文件权限)_运维_03
    /home/username        ###用户家目录
    /etc/skel/.*        ###用户骨架文件

    linux云自动化运维基础知识5.6(用户管理及文件权限)_运维_04

    2.用户管理
       (1).用户建立
       useradd        参数        用户名字
            -u    ##指定用户uid
            -g    ##指定用户初始组信息,这个组必须已经存在
            -G    ##指定附加组,这个组必须存在
            -c    ##用户说明
            -d    ##用户家目录
            -s    ##用户所使用的shell,/etc/shells记录了用户能使用shell的名字

    linux云自动化运维基础知识5.6(用户管理及文件权限)_运维_05
       (2).用户删除
        userdel     -r    用户名称 -r表示删除用户信息及用户的系统配置

       (3).组的建立
        groupadd     -g        ##建立组
        groupdel    组名字        ##删除组

    作以上实验的监控命令:
    watch -n 1 'tail -n 3 /etc/passwd /etc/group;echo ====;ls -l /home;echo ===;ls -l /mnt'linux云自动化运维基础知识5.6(用户管理及文件权限)_linux_06


       (4).用户id信息查看
         id      参数         用户
          -u        ##用户uid
          -g        ##用户初始组id
          -G        ##用户所有所在组id
          -n        ##显示名称而不是id数字
          -a        ##显示所有信息

       (5).用户信息更改
    usermod       参数             用户
             -l             ##更改用户名称
             -u             ##更改uid
             -g             ##更改gid
             -G             ##更改附加组
             -aG     ##添加附加组
             -c             ##更改说明
             -d             ##更改家目录指定
             -md     ##更改家目录指定及家目录名称
             -s             ##更改shell
             -L             ##冻结帐号
             -U             ##解锁

    3.用户权力下放
       (1)在系统中超级用户可以下放普通用户不能执行的操作给普通用户
       (2)下放权力配置文件:/etc/sudoerslinux云自动化运维基础知识5.6(用户管理及文件权限)_运维_07

       (3)下放权力的方法
        *)超级用户执行visudo进入编辑/etc/sudoers模式
        *)格式:
               获得权限用户       主机名称=(获得到的用户身份)         命令
        test    desktop0.example.com=(root)    /usr/sbin/useradd


        test用户能在desktop0.example.com以超级用户身份执行/usr/sbin/useradd
        (4)执行下放权限命令
            sudo         命令                ##如果第一次执行sudo需要输入当前用户密码
            在/etc/sudoers中如果设置如下:
            test    desktop0.example.com=(root)     NOPASSWD: /usr/sbin/useradd
            表示用户调用sudo命令的时候不需要自己密码

    4.用户认证信息的控制
        chage     参数              用户
                -d                ##用户密码组后一次修改的时间,如果设定成0,用户登陆系统后必须修改自己的密码    
                -m                ##最短有效期
                -M                ##最长有效期
                -W                ##警告期
                -I                ##用户非活跃天数
                -E                ##帐号到期日格式 -E "YYYY-MM-DD"

    5.文件权限

     (1).文件属性的查看####

       ls -l filename
       -|rw-r--r--.|1| root| root|   46 |Oct  1 05:03 |filename
       — —————————  —  ————  ————    ——  ————————————  ————————
       1    2       3    4      5     6      7           8
    linux云自动化运维基础知识5.6(用户管理及文件权限)_linux_08
       1."-":    文件类型
        -       ##普通文件
        d       ##目录
        c       ##字符设备
        s       ##套接字
        p       ##管道
        b       ##快设备
        l       ##连接

       2."rw-r--r--":文件读写权限
        rw-|r--|r--
        *   $   @

        *所有人的权限
        $所有组的权限
        @其他人的权限

       3."1":
        对文件:文件内容被系统记录的次数
        对目录:目录中文件属性的字节数

       4."root":文件所有人

       5."root":文件所有组

       6."46":文件内容的大小

       7."Oct  1 05:03":文件最后一次被修改的时间

       8."filename":文件名字

      (2).文件所有人所有组的管理

    chown     username        file|dir    ##更改文件的所有人
    chown     username.groupname    file|dir    ##更改所有人所有组
    chown -R username        dir        ##更改目录本身及里面所有内容的所有人
    chgrp -R groupname        dir        ##更改目录本身及里面所有内容的所有组linux云自动化运维基础知识5.6(用户管理及文件权限)_linux_09

    监控命令
    watch -n 1 ls -lR /mnt

      (3).文件普通权限
           rw-|r--|r--
            u   g   o
           u:文件所有人对文件可以读写
           g:文件组成员对文件可读
           o:其他人对文件可读
            u优先匹配,g次优先,o当u,g不匹配时匹配

           1.r
          对文件:可以查看文件中的字符
          对目录:可以查看目录中文件的信息

           2.w
          对文件:可以更改文件内字符
          对目录:可以在目录中添加删除文件

           3.x
          对文件:可以运行文件内记录的程序动作
          对目录:可以进入目录中
       (4).字符方式修改该文件权限
           chmod [-R] <u|g|o><+|-|=><r|w|x> file|dir    

           chmod u-x file1            ##file1拥有者去掉x权限
           chmod g+w file1            ##file1拥有组添加w权限
           chmod u-x,g+w file1        ##file1拥有者去掉x权,file1拥有组添加w权限
           chmod ugo-r file2        ##file2的用户组其他人去掉r权限
           chmod ug+x,o-r file3        ##file3用户和组添加x权限,其他人去掉r权限linux云自动化运维基础知识5.6(用户管理及文件权限)_运维_10

        (5).数字方式修改该文件权限
            在linux中
            r=4
            w=2
            x=1
           文件权限数字表示方式
           rw-|r--|r--
            u   g   o
           u=rw-=4+2+0=6
           g=r--=4+0+0=4
           o=r--=4+0+0=4
           所以文件权限表示为644

            chmod    修改后权限值    file
            chmod    777    file

            7=rwx
            6=rw-
            5=r-x
            4=r--
            3=-wx
            2=-w-
            1=--x
            0=---


    6.系统默认权限的设定

         从系统存在角度来说,开放权力越大,系统存在意义越高
         从系统安全角度来说,开放权力越少,系统安全性越高
         所以系统设定新建文件或目录会去掉一些权限
         设定方式
         umask        ##查看系统保留权限默认为022
         umask 077            ##修改该系统保留权限为077,此设定为临时设定,只当前shell中生效

    永久设定方式:
    vim /etc/bashrc        ##shell
    70     if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
    71        umask 002    ##普通用户umask
    72     else
    73        umask 077    ##超级用户     uask                                                                     
     74     fi

    vim /etc/profile    ##系统
     59 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
     60     umask 002    ##普通用户umask
     61 else
     62     umask 077       ##超级用户umask                                                                                         
     63   filinux云自动化运维基础知识5.6(用户管理及文件权限)_linux_11

    以上两个文件umask设定值必须保持一致
    source /etc/bashrc
    source /etc/profile
    让设定立即生效
    linux云自动化运维基础知识5.6(用户管理及文件权限)_linux_12


    7.文件的访问控制(acl列表)######
    (1).acl定义
    acl = access control
    指定特殊用户对特殊文件有特殊权限
    drwxrwx---+ 2 root root 17 Jul 18 01:39 /westos/
          ^表

    getfacl  /westos/

    # file: westos/        ##文件名称
    # owner: root        ##文件所有人
    # group: root        ##文件所有组
    user::rwx        ##拥有者权限
    user:student:rwx    ##特殊用户权限
    group::---        ##组权限
    mask::rwx        ##权限掩码
    other::---        ##其他人权限

        注意:当文件上有权限列表时,ls -l 能看到的权限是假的
    linux云自动化运维基础知识5.6(用户管理及文件权限)_linux_13

    (2).设定acl列表

      设定
    setfacl -m <u|g>:<username|groupname>:权限    文件|目录
    -m    #设定
    u    #用户
    g    #组
    linux云自动化运维基础知识5.6(用户管理及文件权限)_linux_14

       删除列表中的用户或者组####
    setfacl -x <u|g>:<username|groupname>    文件|目录

       关闭列表
    setfacl -b 文件|目录    linux云自动化运维基础知识5.6(用户管理及文件权限)_运维_15

       acl mask值
    1.mask    权限掩码
    mask用来标示能够赋予用户最大权限
    当用chmod改变文件普通权限时可能会被破坏linux云自动化运维基础知识5.6(用户管理及文件权限)_linux_16
    修复
    setfacl -m m:rwx 文件名称

    ####acl 默认权限######
    当我们需求某个目录对于student可写,并且目录中新建的子目录对student也可写
    就要设定默认默认权限

    注意:    默认权限只对目录中新建立的文件或者目录生效,对已经建立的文件无效,
        对于目录本身也无效

    setfacl -m d:u:student:rwx  /westos







    8.特殊权限####
       (1).suid        ##冒险位
          之针对二进制可执行文件,
          文件内记录的程序产生的进程的所有人为文件所有人
          和进程发起人身份无关

          设定方式:
          chmod u+s file
          suid=4
          chmod 4xxx filelinux云自动化运维基础知识5.6(用户管理及文件权限)_linux_17

       (2).sgid        ##强制位
            对文件:只针对二进制可执行文件,
          任何人运行二进制文件
        程序时程序产生的进程的所有组都是文件的所有组
          和程序发起人组的身份无关
            对目录:当目录有sgid权限后,目录中新建的所有文件的所有组
        都自动归属到目录的所有组之中,和文件建立者所在的组无关linux云自动化运维基础知识5.6(用户管理及文件权限)_linux_18

       设定方式:

       chmod g+s file|dir
       sgid=2
       chmod 2xxx file|dir
        
       (3).sticky    ##粘制位
       t权限:
       只针对与目录,当一个目录上有t权限,那么目录中的文件只能被文件的拥有者删除

       设定方式:
       chmod o+t direcotry
       t=1
       chmod    1777 direcotrylinux云自动化运维基础知识5.6(用户管理及文件权限)_运维_19