用户管理
一. 用户管理基础
    1. 用户的分类 
       (1) 超级用户(UID=0)
       (2) 普通用户(UID=500-...)
       (3) 伪用户(UID=1-499)
    2. 用户组的分类
       (1) 标准组
       (2) 私用组
    3. 用户管理的文件
       (1) /etc/passwd
    作用: 存储系统的用户信息
    格式:
     用户名:口令:UID:主组GID:描述:主目录:shell
    实例:
      root:x:0:0:root:/root:/bin/bash
     (2) /etc/shadow
     作用: 存储用户的口令信息
     格式:
       用户名:口令:最后一次修改口令日期:口令的最小使用天数:口令的最大使用天数:口令失效前多少天警告:过期后多少天禁用账户:有效期:保留
   实例:
      root:$123948asldew:13562:0:9999:7:::
     (3) /etc/group
     作用: 存储系统的用户组信息
     格式:
       用户组名:口令:GID:成员列表
     实例:
         root:x:0:root,bin
     (4) /etc/gshadow
     作用:存储用户组口令信息
     格式:
        用户组名:口令:管理员:成员
     实例:
        root:$13asdfaasd:admin:root,bin
     (5) /etc/login.defs
      作用:存储新建用户的部分默认规则信息
      内容:
          MAIL_DIR 路径 //设置用户的默认邮箱位置
          PASS_MAX_DAYS 数字 //设置口令的最大使用天数
          PASS_MIN_DAYS 数字 //设置口令的最小使用天数
          PASS_MIN_LEN 数字  //设置口令的最小长度
          PASS_WARN_AGE 数字 //设置口令的过期警告日期
          UID_MIN 数字   
          UID_MAX 数字  //设置自动生成的UID范围
          GID_MIN 数字
          GID_MAX 数字 //设置自动生成的GID范围
          CREATE_HOME yes/no //设置系统是否自动创建用户主目录
     (6) /etc/default/useradd
        作用: 存储新建用户的部分默认规则信息
        内容: GROUP=数字 //设置用户默认主组,当禁用私用组时有效
               HOME=路径 //设置用户主目录的默认位置
               INACTIVE=数字  //口令过期后多少禁用账户
               EXPIRE=日期  //设置用户默认有效期
               SKEL=路径  //设置默认用户配置文件的位置
               SHELL=路径  //指定用户的默认shell
      (7) 用户环境配置文件
           -/etc/profile //用户的登录脚本
           -.bash_profile //用户个人登录脚本
           -.bash_history //用户命令历史记录文件
           -.bash_logout  //用户注销脚本
           -.bashrc //设置命令别名

二. 用户管理命令
   1.  groupadd 
      作用: 创建用户组
      格式:groupadd [参数] 用户组名
      实例:#groupadd  users
            #groupadd -g 100 -o   hrs
    2. groupdel
      作用: 删除用户组
      格式:groupdel  用户组名
      实例:#groupdel hrs
    3. groupmod
      作用: 修改用户组信息
      格式:groupmod 参数  用户组名
      实例:#groupmod -g 900 -o   hrs
            #groupmod -n houres  hrs
    4. gpasswd
      作用:设置组的口令、设置组的管理员或组的成员
      格式: gpasswd [参数] 用户组名
      实例:#gpasswd  hrs
            #gpasswd -A  u1 hrs
            #gpasswd -a  u1 hrs
            #gpasswd -d u1 hrs   
   5. useradd
    作用:创建用户
    格式:useradd [参数]  用户名
    参数:-u 数字  //指定用户的UID
          -o      //与-u连用,指定重复的UID
          -g 用户组名 //指定用户的主组
          -G 用户组名 //指定用户的附加组
          -d 路径  //指定用户的主目录
          -s 路径  //指定用户的shell
          -e 日期  //指定用户的有效期
    实例:#useradd user1
          #useradd -u 0 -o admin
   6. passwd
     作用: 修改用户口令
     格式:passwd [参数] [用户名]
     实例:#passwd
           #passwd user1
           #passwd -d user2
           #passwd -l  user1
           #passwd -u -f user1
   7. userdel
      作用: 删除用户
      格式: userdel  [参数]  用户名
      实例:#userdel  user1
            #userdel -r user1
   8. usermod
      作用:修改用户信息
      格式:usermod 参数  用户名
      参数:  -u 数字 //修改用户的UID,可-o参数,使用不唯一的UID
             -g 用户组名 //修改用户主组
             -G 用户组名 //修改用户的附加组
             -d 路径 //修改用户的主目录
             -s 路径 //修改用户的shell
             -e 日期  //修改用户的有效期
             -l 新用户名  //修改用户名称
      实例:#usermod -u 0 -o -g 0  user2
   9. groups
      作用:查看用户所属组的信息
      格式:groups [用户名]
      实例: #groups 
             #groups  user1
   10. id
      作用:查看用户uid、主组及附加组信息
      格式: id [参数] [用户名]
      实例:#id 
            #id user2
            #id -u user2
            #id -g  user2
            #id -G users
            #id -gn user2
   11. who
      作用: 查看当前已登录的用户信息
      实例:#who 
   12.  w
      作用: 查看当前已登录的用户信息
      实例:#w
   13. last
      作用:查看最近几次的用户登录情况
      实例:#last 
            #last -1
            #last root
            #last -1  root
            #last 1
   14. lastlog
       作用:查看所有用户的最后一次登录活动
       实例:#lastlog
   15. su
       作用:切换用户环境
       格式: su [-/参数] [用户名]
       实例:$su
             $su - root  //中间加了-表示转换的时候附带权限
             $su -c "/usr/sbin/useradd u3" root
   16. exit
       作用:退出用户环境
       实例:#exit
   17. logout
       作用:注销用户
       实例:#logout
   18. wall
       作用:发送广播消息
       实例:#wall
    19. write
       作用:向指定用户发送消息
       格式: write 用户名 [终端名]
       实例:#write  user1
             #write  user1  tty3
三. 用户安全管理
   1. 文件访问权限管理
      (1) 文件访问权限种类
       -基本权限
        a. 读 (r/4)
         文件:允许用户打开文件,读取文件内容
         目录:允许用户列出目录内容         
        b. 写 (w/2)
         文件:允许用户修改文件内容
         目录:允许用户在目录中创建/删除子对象
        c. 执行(x/1)
         文件:允许用户运行文件
         目录:允许用户进行目录
       -特殊权限
        a. suid (s/4)
         应用在可执行文件上,任何用户执行文件时都以文件拥有者的身份执行
        b. sgid (s/2)
         应用在可执行文件上,任何用户执行文件时都以文件拥有组成员身份执行
        c. 粘着位 (t/1)
        应用在目录文件上,在目录中删除对象时,只能删除用户自己拥有的对象
    (2) 文件访问者
         -文件拥有者
         -文件拥有组成员用户
         -其他用户
    (3) 文件访问权限的操作
        -chmod
      作用:修改文件的访问权限
      格式:chmod [参数] 权限值/用户+\-权限 文件
      实例:#chmod 755  /abc/d1
            #chmod 1777  /abc/soft
            #chmod u+w,a-x  /abc/f1
            #chmod u+s,g+s,o+t  /abc/d1
            #chmod -R 755  /abc/d1
         -chown
       作用: 修改文件的拥有者
     格式:chown [参数] 用户名[.用户组名]  文件
     实例:#chown  u2  /abc/f1
           #chown  u2.g1 /abc/f2
           #chown -R  u2  /abc/d1
         -chgrp
        作用: 修改文件的拥有组
        格式:chgrp [参数] 用户组名 文件
        实例:#chgrp g1   /abc/f3
             #chgrp -r  g1  /abc/d1
         -umask
         作用:查看或修改权限掩码
         格式: umask  [权限值]
         实例:#umask 
               #umask 0044  
         -lsattr
         作用: 查看文件的属性
         格式:  lsattr [文件]
         实例:#lsattr
               #lsattr /abc/f1
         -chattr
         作用:修改文件的属性
         格式:chattr +/-/=属性   文件
         属性:  a  在文件中追加内容,不要删除或修改内容
                   在目录中可创建对象,但不能删除
                i  只读
         实例:#chattr +a  /abc/d1

   2. 系统权限的分配
      (1) 分配权限
     #chmod  740  /etc/sudoers
     #vi /etc/sudoers
    .....
格式: 接受权限的用户名  登录主机=(用户名)  命令
实例:     u1         ALL=(root)  /usr/sbin/useradd
     #chmod 440 /etc/sudoers
     (2) 接受权限的用户必须使用sudo调用授权的程序
      sudo -u 用户名  命令
实例: $sudo -u root   /usr/sbin/usreadd u2
    3. 用户的限制
       (1) 认识PAM
        -PAM(可插拔验证模块)是一种身份验证机制,可为应用程序提供身份验证及访问验证服务
        -PAM采用模块化结构,所有模块都存放在/lib/security目录中
        -每个支持PAM验证的程序都需要在/etc/pam.d中建立相应的配置文件
       (2) 限制系统拒绝普通用户登录
        -修改/etc/pam.d/login文件
          #vi /etc/pam.d/login
           .......
  auth   required   pam_nologin.so
            ......
       -在/etc/下创建nologin文件
          #touch /etc/nologin
       (3) 限制用户的登录时间
        -修改/etc/pam.d/login文件
         #vi /etc/pam.d/login
        ..........
  account required  pam_time.so
        ......
        -修改/etc/security/time.conf
         #vi /etc/security/time.conf
  格式:服务;终端名;用户名;时间范围
  实例:login;*;root;Al0800-1800
       (4) 限制用户登录地点
      -修改/etc/pam.d/login文件
         #vi /etc/pam.d/login
        ..........
  account  required pam_access.so
         .....
      -修改/etc/security/access.conf文件
         #vi /etc/security/access.conf
         ........
格式: 权限:用户:地点
实例: -:root:LOCAL
        (5) 限制root用户的登录终端
        -修改/etc/pam.d/login文件
         #vi /etc/pam.d/login
        ..........
  auth  required   pam_securetty.so
        ....
        -修改/etc/securetty文件
         #vi /etc/securetty 
        ....
        终端名
        .....
        (6) 限制使用su命令
         -修改/etc/pam.d/su文件
      #vi /etc/pam.d/su
    ......
auth  required /lib/security/$ISA/pam_wheel.so 用户名/group=用户组名
     ....
   4. 用户安全建议
      (1) 删除不需要的用户
      (2) 设置复杂的用户口令
      (3) 尽量少用管理员用户直接登录
      (4) 限制管理员远程登录
      (5) 离开终端时应该锁定