第03章用户管理

作者: fe8478c7ba2a | 来源:发表于2018-04-16 19:41 被阅读7次
    用户管理

    1.用户/组基本概念

    概念
    Users and groups:
    . Every process (running program) on the system runs as aparticular user.
    . Every file is owned by a particular user. 
    . Access to files and directories are restricted by user. 
    . The user associated with a running process determines the files and directories accessible to that process.
    
    #查看当前登录的用户信息:
    [root@tianyun ~]# id
          uid=0(root) gid=0(root) groups=0(root)
    #查看文件的owner:
            [root@tianyun ~]# ll /home/ 
            drwx------. 4 alice alice 4096 Jun 2 15:59 alice
            drwx------. 2 root root 16384 Jun 1 23:09 lost+found
            drwxr-xr-x 2 root root 4096 Jun 2 15:33 tianyun
    #查看运行进程的username:
            [root@tianyun ~]# ps aux 
            USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
            root 1 0.0 0.0 19360 1536 ? Ss 13:29 0:00 /sbin/init
            root 2 0.0 0.0 0 0 ? S 13:29 0:00 [kthreadd]
            root 3 0.0 0.0 0 0 ? S 13:29 0:00 [migration/0]
            root 4 0.0 0.0 0 0 ? S 13:29 0:00 [ksoftirqd/0]
    #用户组信息存储的文件:
            /etc/passwd(7列)
            root:x:0:0:root:/root:/bin/bash
     #用户名:x:uid:gid:描述:HOME:shell
     #系统约定: RHEL6
            uid: 0 特权用户
            uid: 1~499 系统用户
            uid: 500+ 普通用户
    
    #The root user
    
      . uid is 0
      . all power
      . This user has the power to override normal privileges on the file system
      . installing or removing software and to manage system files and directorie
     . Most devices can only be controlled by root
    
    #/etc/shadow(8列)
       root:$1$MYG2NDG6$a1wtyr5GDM2esAPjug0YP0:15636:0:99999:7:   :   :
    #加密算法$id$salt$encrypted
        $1: MD5
        $5: SHA-256
        $6: SHA-512
    
        root:$1$MYG2NDG6$a1wtyr5GDM2esAPjug0YP0:15636:0:99999:7:: :
    
     --------------------------
    

    1)“登录名”是与/etc/passwd文件中的登录名相一致的用户账号
    2)“口令”字段存放的是加密后的用户口令字,如果为空,则对应用户没有口令,登录时不需要口令;
    星号代表帐号被锁定;
    双叹号表示这个密码已经过期了。
    $6$开头的,表明是用SHA-512加密的,
    $1$ 表明是用MD5加密的
    $2$ 是用Blowfish加密的
    $5$ 是用 SHA-256加密的。

    3)“最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。
    4)“最小时间间隔”指的是两次修改口令之间所需的最小天数。
    5)“最大时间间隔”指的是口令保持有效的最大天数。
    6)“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
    7)“不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。(软限制。到期后多少天就不能用账号了。)
    8)“失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。(硬限制。)

    1. 保留
      /etc/group
      root:x:0:
      [root@tianyun ~]# man 5 passwd
      PASSWD(5) File formats PASSWD(5)

    NAME 名称
    passwd - 密码文件

    描述
    Passwd 是个文本文件, 它包含了一个系统帐户列表,
    给出每个帐户一些有用的信息,比如用户 ID,组 ID, 家目录, shell,等.
    通常它也包含了每个用户经过加密的密码.
    它通常应该是可读的(许多命令,工具程序,象 ls(1) 用它做用户 Id
    到用户名称的映射),但是只允许超级用户有写方式权限.

    在过去美好的日子里,这种一般的读许可没有什么大问题.
    每个人都能读到加密了的密码,因为硬件太慢以至于不能解开一个
    精选的密码,另外,这基本假定是为友好的使用团体使用的.
    现在,许多人运行一些版本的影子密码套件,它们在 /etc/passwd
    的密码域里是 *,而不再是加密的口令, 加密的口令放在 /etc/shadow
    中,那个文件只有超级用户能读.

    不管是否使用了影子密码,许多系统管理员使用一个星号在加密的密码字段
    以确保用户不能鉴别他(她)自己的密码. (见下面的注意)

    如果你建立了一个新的登录,首先放个星号在密码字段, 然后使用
    passwd(1) 设置它.

       (密码文件)里每行一条记录,并且每行有这样的格式:
    
              account:password:UID:GID:GECOS:directory:shell
              (帐号:密码:用户ID:组ID:一般的信息:目录:shell)
    
            [root@tianyun ~]# man 5 shadow
            [root@tianyun ~]# man 5 group
                关于man手册
                    1、用户命令
                    2、系统调用
                    3、C库调用
                    4、设备文件及特殊文件
                    5、配置文件格式
                    6、游戏
                    7、杂项
                    8、管理命令及守护进程
                    9、Linux内核API(CentOS7以后出现)
                    之所以分这九个章节是应为有的命令分属不同类,查看命令具体属于man中的哪个章节需要使用命令
    #2.用户/组管理
        用户:
        ==创建用户 未指定选项==
            [root@tianyun ~]# useradd user01 
                        . 未指定该用户的主组
                        . 未指定该用户的附加组
                        . 未指定用户的HOME
                        . 未指定用户的SHELL
                        . 未指定用户的UID...
      [root@tianyun ~]# grep 'user01' /etc/passwd /etc/shadow /etc/group
      /etc/passwd:user01:x:507:512::/home/user01:/bin/bash
      /etc/shadow:user01:!!:16589:0:99999:7:::
      /etc/group:user01:x:512:
    
      [root@tianyun ~]# id user01 
        uid=507(user01) gid=512(user01) groups=512(user01)
    
      [root@tianyun ~]# ls /var/spool/mail/user01 
         /var/spool/mail/user01
    

    小结:
    如果创建一个用户时,未指定任何选项,系统会创建一个和用户名相同的组作为用户的Primary Group.

    ==创建用户    指定选项==
                [root@tianyun ~]# useradd user02 -u 1503 //创建用户usr02,指定uid
                [root@tianyun ~]# useradd user03 -d /aaa //创建用户user03 指定家目录
                [root@tianyun ~]# useradd user05 -s /sbin/nologin //创建用户并指定shell
                [root@tianyun ~]# useradd user07 -G hr,it,fd //创建用户,指定附加组
                [root@tianyun ~]# useradd user10 -u 4000 -s /sbin/nologin
    ==删除用户========
        [root@tianyun ~]# userdel user10 
         //删除用户user10,但不删除用户家目录和mail spool
        [root@tianyun ~]# ll -d /home/user10/
               drwx------ 3 506 510 4096 09-01 21:14 /home/user10/
        [root@tianyun ~]# ll /var/spool/mail/user10 
              -rw-rw---- 1 506 mail 0 09-01 21:14 /var/spool/mail/user10
    
        [root@tianyun ~]# userdel -r user2
              //删除用户user2,同时删除用户家目录和mail spool
    
    ==用户密码========
        方法一:root修改其他用户(alice)密码
            [root@tianyun ~]# passwd alice
        方法二:用户(zhuzhu)登录,自己修改密码。
            [zhuzhu@tianyun ~]$ passwd
    ==组成员管理========
        注意:只针对已存在的用户      -G  组名 组名 ... 用户名
            [root@tianyun ~]# usermod -G hr niuniu2 //覆盖原有的附加组
            [root@tianyun ~]# usermod -G fd,it niuniu2
            [root@tianyun ~]# usermod -aG hr niuniu2 //增加新的附加组
    
    ==其它选项管理=======
        [root@tianyun ~]# usermod -s /sbin/nologin niuniu2
    #修改登录SHELL
       用户组:
            [root@tianyun ~]# groupadd hr
    
            [root@tianyun ~]# groupadd net01 -g 2000 
                               //添加组net01,并指定gid 2000
    
            [root@tianyun ~]# grep 'net01' /etc/group 
                                //查看/etc/group中组net01信息
    
            [root@tianyun ~]# groupdel net01 
                                          //删除组net01
    

    分类

    #基本组
            随用户创建,自动创建的同名组
            用户的基本组,显示在/etc/passwd
    #附加组
            用户加入的其他组。
        #案例
            1 useradd是创建用户的命令。
            2 usermod是修改用户的命令。
            3 groupadd是创建组的命令。
            4 -u 制定用户的UID。
            5 -g 制定用户的基本组。
            6 -G 制定用户的附加组。
            7 /etc/passwd 可以查看的是用户的基本组。
            8 /etc/group 可以查看用户的附加组。
    
    
    
    #一、创建用户AAA,同时生成基本组AAA
          [root@QF ~]# useradd AAA
          [root@QF ~]# grep AAA /etc/passwd
          AAA:x:6001:6001::/home/AAA:/bin/bash
    
    #二、创建用户BBB,同时生成基本组BBB
          [root@QF ~]# useradd BBB
          [root@QF ~]# grep BBB /etc/passwd
          BBB:x:6002:6002::/home/BBB:/bin/bash
    
    #三、创建组CCC
          [root@qf ~]# groupadd CCC
          [root@qf ~]# grep CCC /etc/group
          CCC:x:7001:
    
    #四、修改用户AAA的基本组为CCC.
    #五、查看passwd中,用户AAA的基本组是CCC。
          [root@qf ~]# usermod  AAA   -g CCC
          [root@qf ~]# grep AAA /etc/passwd
          AAA:x:6001:7001::/home/AAA:/bin/bash
    
    #六、修改用户BBB的附加组为CCC.
    #七、查看group中,用户BBB的附加组是CCC。 
         [root@qf ~]# usermod  BBB   -G CCC
         [root@qf ~]# grep CCC /etc/group
         CCC:x:7001:BBB
    

    3.提权(了解)

    #永久提权Switching users with su
            [alice@tianyun ~]$ useradd u1
                 -bash: /usr/sbin/useradd: 权限不够
            [alice@tianyun ~]$ su - root
                  password:
            [root@tianyun ~]# useradd u1
          成功
    #临时提权Running commands as root with sudo
    #以root身份授权普通用户xulei
          [root@tianyun ~]# vim /etc/sudoers (vim 脚本)
               %wheel ALL=(ALL) NOPASSWD: ALL
      允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令
    
          [root@tianyun ~]# useradd xulei -G wheel (-G 添加到附加组)
          [root@tianyun ~]# id xulei
             uid=504(xulei) gid=504(xulei) 组=504(xulei),10(wheel)
    
    # passwd xulei
      切换用户xulei登陆
     [xulei@tianyun ~]$ useradd gougou10
      -bash: /usr/sbin/useradd: 权限不够
     [xulei@tianyun ~]$ sudo useradd gougou10
     [xulei@tianyun ~]$ id gougou10
      uid=505(gougou10) gid=505(gougou10) 组=505(gougou10)
    
    4.命令概览
    groupadd(创建组)groupdel(删除组)
    passwd(修改密码)
    
    5.扩展知识
    1.用户创建时的默认设置能否改变呢?(比如SHELL是禁止登陆)
        原理
           /etc/default/useradd文件为设置添加的用户规则文件。
            示例
           [root@tianyun ~]# vim /etc/default/useradd (vim 脚本)
                              SHELL=/sbin/nologin (禁止shell登录)
    ---尝试新建用户吧。
    2.用户密码策略能否设置?(比如密码有效期只有14天)
      设置个别用户
         #chage
           原理
             chage 命令负责管理用户密码时效问题
           名词
              last change 最后一次更改密码的时间
              max days 最长过期天数
              min days 两次修改密码的最小间隔时间
              warn days 警告密码过期时间。
              password expired 密码已过期
              inactive days不活跃的时期,密码过期后,锁定帐号的天数
    选项:
        -d, --lastday 最近日期        将最近一次密码设置时间设为“最近日期”
         -E, --expiredate 过期日期     将帐户过期时间设为“过期日期”
         -h, --help                    显示此帮助信息并推出
         -I, --inactive INACITVE       过期 INACTIVE 天数后,设定密码为失效状态
         -l, --list                    显示帐户年龄信息
         -m, --mindays 最小天数        将两次改变密码之间相距的最小天数设为“最小天数”
         -M, --maxdays 最大天数        将两次改变密码之间相距的最大天数设为“最大天数”
         -R, --root CHROOT_DIR         chroot 到的目录
         -W, --warndays 警告天数       将过期警告天数设为“警告天数”
                
    #案例
     1.设置用户密码最小天数(-m),最大天 数(-M),提醒天数(-W),不活跃天数(-l)
        chage -m 0 -M 90 -W 7 -I 14 username 
     2.设置用户下次登录立刻更改密码。
        chage -d 0 username
     3.列出用户密码策略信息。
        chage -l username 
     4.设置用户密码过期日期。
        chage -E YYYY-MM-DD username
    #设置新建用户
    /etc/login.defs
      #原理
         /etc/login.defs是设置用户帐号密码限制的文件。该文件里的配置对root用户无效
      #示例
         [root@tianyun ~]# vim /etc/login.defs (vim 脚本)
             MAIL_DIR /var/spool/mail
             PASS_MAX_DAYS 30
             PASS_MIN_DAYS 0
             PASS_MIN_LEN 5
             PASS_WARN_AGE 7
             CREATE_HOME yes
             ENCRYPT_METHOD SHA512
    
    3.生产环境手动创建用户示例:
        1.创建用户
          [root@tianyun~]# useradd maomao100
        2.免会话配置密码。
          [root@tianyun~]# echo 123456 |passwd --stdin maomao100
        3.强制用户在下一次登录时修改密码
          [root@tianyun~]# chage -d 0 maomao100
    4.如何将多个用户加入到指定的组:
      #前言
         usemod -G 改写用户的组之后,用户的组信息是覆盖,也就是说usermod使用户只能存在于一个组。那么如何使用户同时属于多个组呢? gpasswd -a试试吧
      #案例
          [root@localhost ~]# useradd user1
          [root@localhost ~]# useradd user2
          [root@localhost ~]# useradd user3
          [root@localhost ~]# groupadd group1
          [root@localhost ~]# gpasswd -a user1 group1
          正在将用户“user1”加入到“group1”组中
          [root@localhost ~]# gpasswd -a user2 group1
          [root@localhost ~]# cat /etc/group
              group1:x:1011:user1,user2 
    5.如何替换某个组的所有成员呢?
         [root@localhost ~]# gpasswd -M user2,user3 group1
         [root@localhost ~]# cat /etc/group
                group1:x:1011:user2,user3
    6.如何删除某个组的某个成员
       原组中有三个用户,删除其中一个用户。
         [root@localhost ~]# grep group1 /etc/group
                group1:x:1011:user3,user1,user2
         [root@localhost ~]# gpasswd -d user1 group1
         正在将用户“user1”从“group1”组中删除
         [root@localhost ~]# grep group1 /etc/group
               group1:x:1011:user3,user2
    

    相关文章

      网友评论

        本文标题:第03章用户管理

        本文链接:https://www.haomeiwen.com/subject/ldzkkftx.html