Centos7系列:用户及密码管理相关命令

Centos7系列:用户及密码管理相关命令

Administrator 969 2018-04-03

主要介绍usermod更改用户属性的命令的用法,和用户密码管理的相关知识,以及mkpasswd命令的用法和作用。


usermod命令

  • usermod命令可以更改用户的uidgid以及用户的家目录和shell;

  • 在之前的useradd命令中,选项useradd -G可以为用户添加扩展组,即用户的gid只有一个,但可以同时也属于其他用户组,这些用户组就是用户的扩展组;

  • usermod同样有-G选项,为已经存在用户添加扩展组,具体用法为usermod -G (组名) (用户名)

    [root@evobot ~]# usermod -G evobot lux
    [root@evobot ~]# id lux
    uid=1001(lux) gid=1001(lux) 组=1001(lux),1002(evobot)
    [root@evobot ~]# usermod -G grp1 lux
    [root@evobot ~]# id lux
    uid=1001(lux) gid=1001(lux) 组=1001(lux),1003(grp1)
    
  • 上面的例子也可以看出,当使用-G选项为用户添加新的扩展组时,会替换之前的扩展组,若需要添加多个扩展组,需要一次添加多个扩展组,多个组名之间使用,分隔:

    [root@evobot ~]# usermod -G evobot,grp1 lux
    [root@evobot ~]# id lux
    uid=1001(lux) gid=1001(lux) 组=1001(lux),1002(evobot),1003(grp1)
    

用户密码管理

更改密码

  • 用户密码管理,常用的命令时passwd命令,由于passwd命令具有ser_uid权限,所以普通用户也可以使用该命令更改密码;

  • 更改当前用户密码,直接执行passwd命令即可,若更改其他用户密码,则需要root用户执行passwd命令,用法为passwd (username):

    [root@evobot ~]# passwd evobot 
    更改用户 evobot 的密码 。
    新的 密码:
    重新输入新的 密码:
    passwd:所有的身份验证令牌已经成功更新。
    
    [root@evobot ~]# tail /etc/shadow
    ntp:!!:17540::::::
    postfix:!!:17540::::::
    chrony:!!:17540::::::
    sshd:!!:17540::::::
    tcpdump:!!:17540::::::
    syslog:!!:17598::::::
    centos:!!:17602:0:99999:7:::
    lux:$1$AFvb7KAB$qg0IKBSFsGRDAO5XPaoYr/:17604:0:99999:7:::
    nginx:!!:17604::::::
    evobot:$1$ORddLa4O$eScmBtXm8sIosft7XETeO1:17624:0:99999:7:::
    
  • 为用户更改密码后,在/etc/shadow文件中就可以看到用户的密码位多了加密的字符串,而没有密码的用户,密码位是两个!

  • /etc/shadow密码文件中,还有一些用户的密码位是*号,这表示用户的密码是无法使用、被锁定的:

    [root@evobot ~]# head /etc/shadow
    root:$1$MNOcZHup$MrsJJ3KwxTERWrlgmpjcC0:17602:0:99999:7:::
    bin:*:17110:0:99999:7:::
    daemon:*:17110:0:99999:7:::
    adm:*:17110:0:99999:7:::
    lp:*:17110:0:99999:7:::
    sync:*:17110:0:99999:7:::
    shutdown:*:17110:0:99999:7:::
    halt:*:17110:0:99999:7:::
    mail:*:17110:0:99999:7:::
    operator:*:17110:0:99999:7:::
    

锁定账户

  • passwd-l选项,可以锁定用户,用户被锁定后,在密码文件/etc/shadow中,密码位字符串前面会加上!!

    [root@evobot ~]# passwd -l evobot 
    锁定用户 evobot 的密码 。
    passwd: 操作成功
    [root@evobot ~]# tail /etc/shadow
    ntp:!!:17540::::::
    postfix:!!:17540::::::
    chrony:!!:17540::::::
    sshd:!!:17540::::::
    tcpdump:!!:17540::::::
    syslog:!!:17598::::::
    centos:!!:17602:0:99999:7:::
    lux:$1$AFvb7KAB$qg0IKBSFsGRDAO5XPaoYr/:17604:0:99999:7:::
    nginx:!!:17604::::::
    evobot:!!$1$ORddLa4O$eScmBtXm8sIosft7XETeO1:17624:0:99999:7:::
    
  • 解锁用户账户,则使用passwd-u选项:

    [root@evobot ~]# passwd -u evobot 
    解锁用户 evobot 的密码。
    passwd: 操作成功
    [root@evobot ~]# tail /etc/shadow
    ntp:!!:17540::::::
    postfix:!!:17540::::::
    chrony:!!:17540::::::
    sshd:!!:17540::::::
    tcpdump:!!:17540::::::
    syslog:!!:17598::::::
    centos:!!:17602:0:99999:7:::
    lux:$1$AFvb7KAB$qg0IKBSFsGRDAO5XPaoYr/:17604:0:99999:7:::
    nginx:!!:17604::::::
    evobot:$1$ORddLa4O$eScmBtXm8sIosft7XETeO1:17624:0:99999:7:::
    
  • 锁定用户账户还可以使用usermod -L (username)命令,用户被锁定后,在/etc/shadow中的密码字符串前面会有一个!

    [root@evobot ~]# usermod -L evobot
    [root@evobot ~]# tail /etc/shadow
    ntp:!!:17540::::::
    postfix:!!:17540::::::
    chrony:!!:17540::::::
    sshd:!!:17540::::::
    tcpdump:!!:17540::::::
    syslog:!!:17598::::::
    centos:!!:17602:0:99999:7:::
    lux:$1$AFvb7KAB$qg0IKBSFsGRDAO5XPaoYr/:17604:0:99999:7:::
    nginx:!!:17604::::::
    evobot:!$1$ORddLa4O$eScmBtXm8sIosft7XETeO1:17624:0:99999:7:::
    
  • usermod命令锁定的账户,使用usermod -U (username)进行解锁:

    [root@evobot ~]# usermod -U evobot 
    [root@evobot ~]# tail /etc/shadow
    ntp:!!:17540::::::
    postfix:!!:17540::::::
    chrony:!!:17540::::::
    sshd:!!:17540::::::
    tcpdump:!!:17540::::::
    syslog:!!:17598::::::
    centos:!!:17602:0:99999:7:::
    lux:$1$AFvb7KAB$qg0IKBSFsGRDAO5XPaoYr/:17604:0:99999:7:::
    nginx:!!:17604::::::
    evobot:$1$ORddLa4O$eScmBtXm8sIosft7XETeO1:17624:0:99999:7:::
    
    

passwd命令的其他用法

  • passwd命令更改密码还可以使用passwd --stdin (username)为用户更改密码,这种方式更改密码只需要输入一次密码,并且密码是明文显示:

    [root@evobot ~]# passwd --stdin evobot 
    更改用户 evobot 的密码 。
    123456
    passwd:所有的身份验证令牌已经成功更新。
    
  • 这种用法一般会在shell脚本里使用,常用的用法是echo "112233" | passwd --stdin (username),这种方式不需要输入密码,echo后面的密码会在管道符|的作用下,传递给后面的passwd命令:

    [root@evobot ~]# echo "112233" | passwd --stdin evobot
    更改用户 evobot 的密码 。
    passwd:所有的身份验证令牌已经成功更新。
    
    
  • 一行命令更改密码,也可以使用echo -e的用法,echo -e选项使得后面的内容里可以加上换行符\n或者制表符\t,所以更改密码可以用echo -e "223344\n223344" | passwd (username)的形式:

    [root@evobot ~]# echo -e "223344\n223344" | passwd evobot
    更改用户 evobot 的密码 。
    新的 密码:无效的密码: 密码少于 8 个字符
    重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。
    
    

mkpasswd命令

  • mkdpasswd是Linux中用来生成密码的命令行工具,默认这个命令是没有安装的,安装该命令,需要安装expect软件包:yum install -y expect;

  • mkpasswd命令可以生成包含特殊符号,数字,字母大小写的随机字符串;

    [root@evobot ~]# mkpasswd 
    xEK0~wsn3
    
  • 也可以指定生成的随机字符串的长度,使用-l选项,以及包含特殊符号个数,使用-s选项:

    [root@evobot ~]# mkpasswd -l 12	
    tio7lovMZd2}
    [root@evobot ~]# mkpasswd -l 12 -s 3
    hwg3R~2Qd[-h
    [root@evobot ~]# mkpasswd -l 12 -s 0
    y8zJSikw3qnt