用户账户分为:超级用户、系统用户、普通用户。

    超级用户:

                用户名:root  ; UID:0;

    系统用户:

                用户名:由用户自行设定; UID:1~499(Centos6及之前),1~999(Centos7);

    普通用户:

                用户名:由用户自行设定; UID:500+(Centos6及之前),1000+(Centos7);


用户配置文件:用户解析库、用户认证库。

    用户解析库:/etc/passwd

    用户认证库:/etc/shadow

        /etc/passwd字段详解:(字段间使用":"分隔)

            root:x:0:0:root:/root:/bin/bash

            第一字段:用户名称

            第二字段:使用X做密码占位符

            第三字段:用户UID

            第四字段:用户主要组的GID

            第五字段:用户主要组组名

            第六字段:用户家目录

            第七字段:用户默认bash

        /etc/shadow字段详解:

            root:$6$6kkn6aL6.uXXGiV9$Z1rLH/FLESIInB.V1TfCn9V/AhDlQMQIwOKwpxdk4h101tB6SdUv6USEIccF2XNcR.kpUuQE6x4HbSed24bNP.::0:99999:7:::

            第一字段:用户名称

            第二字段:经过加密的用户密码;主要由 加密算法+salt(盐)+加密后的密码  组成期间由"$"分隔;

            第三字段:最后一次修改密码的时间,其表示法为从1970年1月1日到当前系统时间所经过的天数;

            第四字段:密码的最短使用期限;0表示随时可更改密码;

            第五字段:密码的最长使用期限;

            第六字段:密码使用达到最大使用期限前多少天提示用户;默认为7天;

            第七字段:密码过期后可更改密码宽限期;

            第八字段:用户密码的绝对失效时间;其表示法为从1970年1月1日到指定日期时间的天数; usermod  -e   可修改;

            第九字段:保留,并未使用;

用户账户管理相关命令:
        useradd  --  创建一个新用户或更新默认新用户信息

            格式:useradd  [options]  USERNAME

        常用选项:

            -d, --home-dir HOME_DIR:指定新建用户的家目录;

            -g, --gid GROUP:指定新建用户的主要组;GROUP可使用组名或GID;如不使用此选项默认会创建同名组设置为主要组;

            -G, --groups GROUPS:指定新建用户的附加组;GROUP可使用组名或GID;

            -r, --system :创建一个系统用户;

        userdel --  删除用户账户和相关文件

            格式:userdel  [options]  UESRNAME

        常用选项:

            -f, --force :强制删除用户,即使用户正处于登陆状态等情况;(不建议使用)

            -r,--remove :用户主目录中的文件将随用户主目录和用户邮箱一起删除。

        usermod  --  修改一个用户账户

            格式:usermod   [options]  USERNAME

        常用选项:

            -d, --homeHOME_DIR:更改用户的家目录;(前提修改的目录事先存在)

            -c, --commentCOMMENT:修改用户注释信息;

            -e  expire-date:修改用户密码过期的绝对日期;

            -l, --loginNEW_LOGIN:修改用户的登陆名;
            -s, --shellSHELL:修改用户的登陆SHELL;
            -u, --uidUID:修改用户的UID;

            -g, --gidGROUP:修改用户主要组;

            -G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:修改用户附加组;可使用-aG为用户追加附加组;

            -L,--lock:锁定用户;

            -U,--unlock:解锁用户;

        passwd  --  更新用户的身份验证令牌

            格式:passwd  [options] USERNAME

        常用选项:

            -d, --delete :删除用户的密码;(仅限 root 用户)

            -l, --lock :锁定指名帐户的密码(仅限 root 用户)
            -u, --unlock解锁指名账户的密码(仅限 root 用户)

            --stdin :  从标准输入读取令牌(仅限 root 用户)



组账户分为:超级用户组、系统组、普通用户组。

    超级用户组:

                组名:root;GID:0;

     系统用户组:

                组名:由用户自行设定; GID:1~499(Centos6及之前),1~999(Centos7);

    普通用户组:

               组名:由用户自行设定; GID:500+(Centos6及之前),1000+(Centos7);


组账户配置文件:组账户认证库,组账户解析库。

    组账户解析库:/etc/group        

    组账户认证库:/etc/gshadow

        /etc/group字段详解:

            root:x:0

            第一字段:组名

            第二字段:密码占位符;

            第三字段:GID

            第四字段:以该组为附加组的用户;

        /etc/gshadow字段详解:

            root:::

            第一字段:组名;

            第二字段:组账户加密保存的密码;

            第三字段:组账户管理员(已废弃)

            第四字段:以该组为附加组的用户账户列表;


         groupadd  --  创建一个新组

            格式:groupadd  [options]  GROUPNAME

        常用选项:

            -g, --gid GID:指定该组的GID;

            -r, --system:将新建的组设置为系统组;

        

        groupdel  --  删除一个组

            格式:groupdel  [options]  GROUPNAME


        groupmod  --  修改组账户信息

            格式:groupmod  [options]  GROUPNAME

        常用选项:
            -g, --gid GID:修改GID

            -n, --new-name NEW_GROUP:修改组名;


        su  --  切换用户身份

            格式:su [options] USERNAME

        常用选项:

            -, -l, --login:切换登陆用户及其shell,家目录等一系列选项;

            -c :使用某用户身份执行某命令:(#] su  root  -c "usseradd  god")

        注意:su USERNAME  与  su   -USERNAME  区别在于 前者只是切换了身份,但SHELL环境仍然是原用户的SHELL;而后者连用户和SHELL环境一起切换成新用户的了。只有切换了SHELL环境才不会出现PATH环境变量错误。


        id  --  显示真实和有效的 UID 和 GID

            格式:id  [options]  USERNAME

        常用选项:

            -u:显示用户有效UID
            -g:显示用户有效GID
            -n:显示名称


其他相关配置文件:
    /etc/default/useradd
    作用:定义创建用户时的用户属性的默认值文件
    GROUP=100 // 在创建用户时如果没有为用户指定基本组,系统会为用户指定一个与用户名相同的组作为其基本组;
    HOME=/home // 在创建用户时,如果没有为用户指定家目录,则会在/home目录中创建一个于用户名相同的目录作为家目录
    INACTIVE=-1 // 在创建用户时,设定用户密码过期之后的宽限期,默认为-1,意为关闭用户密码过期宽限功能,即宽限期为永远;
    EXPIRE=  // 在创建用户时,设定用户密码的绝对失效日期,默认没有启用;
    SHELL=/bin/bash // 在创建用户时,设定用户的默认登陆shell,默认值为/bin/bash
    SKEL=/etc/skel // 在创建用户时,为用户家目录提供的默认文件的模板
    CREATE_MAIL_SPOOL=yes // 在创建用户是,是否直接为用户创建邮箱文件,默认创建;


    /etc/login.defs(definations)
    作用:定义shadow_utils相关的属性,包括用户邮箱路径、密码的时间参数、UID和GID的范围,删除用户账户的命令、是否设置私有组(仅包含一个用户并作为该    用户主要组)、权限位掩码、家目录创建开关、加密算法选择;
    MATL_DIR        /var/spool/mail
    //指定创建用户时为用户指定邮箱文件的路径
    PASS_MAX_DAYS 99999
    PASS_MIN_DAYS 0
    PASS_MIN_LEN  5
    PASS_WARN_AGE 7
    //与密码的时间参数有关的设置
    UID_MIN                  1000
    UID_MAX                 60000
    # System accounts
    SYS_UID_MIN               201
    SYS_UID_MAX               999
    GID_MIN                  1000
    GID_MAX                 60000
    # System accounts
    SYS_GID_MIN               201
    SYS_GID_MAX               999
    //指定默认的ID选择范围
    CREATE_HOME yes
    //是否在创建用户时为用户创建家目录的开关
    UMASK           077
    //指定用户家目录的默认权限的掩码
    USERGROUPS_ENAB yes
    //是否开启私有组开关
    ENCRYPT_METHOD SHA512
    //加密算法的选择


    /etc/skel(directory)
    作用:为新创建的用户的家目录提供默认的shell配置文件




用户权限及特殊权限说明


    安全上下文匹配规则:

        当以R用户打开RFILE文件时,首先判断R用户是否为RFILE文件的所有者,如果是则直接赋予所有者权限;如果不是则继续判断R用户是否为RFILE文件所属组的成员,如果是则赋予所属组的权限;如果不是,则赋予其他人权限;


    权限有三种:r,w,x

        在目录文件上:r权限代表可读取此目录中的子目录或文件;w权限代表可对此目录进行改名;x权限代表可在其他语句中以路径的方式,引用此文件目录;

        在非目录文件上:r权限代表可读取其内容;w权限代表可对此文件实施写操作;x权限代表可将此文件发起为进程(执行此文件);


    修改查看权限相关命令:

        chmod命令  --  改变文件的访问权限

        改变权限的两种方式:数字权限标识和直接赋值权限;

            数字权限标识:

                rwx  :  7      rw- :6   r-x:5 ......... 

                rw-r--r--  :  644

                rwxrwxrwx  :  777

                权限遮罩码:用于创建文件时为文件赋予默认的权限设置;默认的权限遮罩码在/etc/bashrc中;默认为0022,所以创建的文件的默认权限为0777-0022;

            直接赋值权限:

                u,g,o:分别为所有者,所属组,其他人;可直接写出u=rwx等;

            示例:

                    chmod  u=rwx,g=rw-,o=rw-  /etc/a.txt

                    chmod  u+r   /etc/a.txt

                    chmod  644  /etc/a.txt

            (权限位中"-"代表不具备此权限;可使用ls -l 命令查看文件的权限相关信息)



特殊权限:

        SUID:某些特殊文件需要暂时使用其文件所有者的身份运行此文件,此类功能通过设置SUID实现;具备此权限的文件在所有者的执行权限上用"s"标识,如果同时具有执行权限则为"s",如果不具备执行权限则标识为"S";

        设置示例:chmod   u+s  /etc/a.txt

       

        SGID:所有在此目录中创建的新文件和目录的所属组均为其父目录的所属组,而并非进程发起者的主要组;SGID权限显示在文件的属组权限位上的执行权限;如果属组本来就有执行权限则显示为"s",否则显示为"S"。

        设置示例:chmod   g+s  /etc/

       

        STICKY:如果在某个目录上的权限设置为多个用户都拥有写权限,那就意味着凡是拥有写权限的用户都能直接管理该目录中的所有文件名,包括改名文件及删除文件名等操作;因此需要在这样的目录上设置STICKY特殊权限;如果此类目录设置了STICKY,则所有用户即便拥有写权限也仅能删除或改名所有者为自身的文件; STICKY权限的显示位置:在目录的其他用户的权限位的执行权限上,如果该权限位本来有执行权限,则显示为t,否则显示T。

        设置示例:chmod   o+t  /etc/a.txt

       

         文件的扩展属性:可通过lsattr命令和chattr命令查看和修改文件的扩展属性;

                文件的扩展属性包括:

                  a:在向文件写数据时只能以附加的方式进行写操作;文件的内容不能被更改和删除;一般会为日志文件设置此属性;
                  A:atime,文件的访问时间戳控制属性;对于并发访问量较大或并发访问频率较高的文件应该设置此属性以降低IO成本;
                  c:设置是否自动压缩之后在存储
                  C:是否开启“写实复制”功能
                  d:使用dump备份文件系统时,跳过属性设置为d的文件
                  D:设置文件在文件系统中的异步写操作;
                  i:设置文件不能被删除、改名及设定链接关系
                  s:设置文件的保密性删除
                  u:于s属性相反,如果此类文件被删除,则在存储器中会继续保存其内容


        FACL:在Centos7或RH7以上版本更加完善  --  文件的第二扩展属性

            实现FACL相关命令:setfacl,getfacl

            -m acl_spec:为指定文件设置acl_spec
            -x acl_spec:将acl_spec从指定文件上移除

           acl_spec:acl_specification,acl规格,访问控制列表
            u:USERNAME:MODE
            g:GROUPNAME:MODE
            MODE一般是使用符号权限标识法的权限:

        示例:

          查看文件第二扩展属性:

            [root@localhost ~]# getfacl    /etc/passwd

          为文件赋予指定用户的额外访问权限:
            [root@localhost ~]# setfacl -m u:link:rwx     /tmp/temp/
         撤销指定文件的额外访问权限:
            [root@localhost ~]# setfacl -x u:link     /tmp/temp/

(如果设置了FACL之后,再修改目标文件的使用权限,那么FACL中设置的权限条目可能受到影响而导致授权失败;因此,为了保证没有此项干扰,应该先调整目标文件或目录权限,在设置FACL;)