上一帖提到用户与用户组的创建,在创建的过程中,我们可以搭配很多参数,用来设置用户账户的一些设置与属性。但很多时候,我们的用户账户是已经在业务中使用的。不可能去删除用户后重新添加。这时,就需要去直接调整已有用户的账户属性了。


    在这种场景中,我们有两种解决的方式。第一种就是改配置文件。linux中一切皆文件。在配置文件中调整相应的设置即可。但这种调整方式比较麻烦,不仅要知道配置文件的路径名称,而且要找到配置用户所在的配置行,还要知道配置段的各个涵义,然后才能去做调整。对于初学者而言难度较大。第二种方式就相对简单了很多。使用usermod命令,简单明了。


下面就简单介绍下usermod用法:

命  令可选参数作  用
usermod-u指定用户的UID
-g指定用户的GID
-d指定用户的家目录
-s指定用户的shell
-G指定新的附加组
-L锁定用户账号
-U解锁用户账号

测试示例:

[root@server02 ~]# useradd newuser
[root@server02 ~]# tail -1 /etc/passwd
newuser:x:1115:1116::/home/newuser:/bin/bash
[root@server02 ~]# usermod -u 1110 -g 1110 newuser 
[root@server02 ~]# tail -1 /etc/passwd
newuser:x:1110:1110::/home/newuser:/bin/bash
[root@server02 ~]# usermod -d /home/newuser01 -s /sbin/nologin newuser
[root@server02 ~]# tail -1 /etc/passwd
newuser:x:1110:1110::/home/newuser01:/sbin/nologin
[root@server02 ~]# usermod -G 1000 newuser
[root@server02 ~]# id newuser             //id命令用于查看账户属性
uid=1110(newuser) gid=1110(grp100) 组=1110(grp100),1000(user1)
[root@server02 ~]# passwd newuser
更改用户 newuser 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@server02 ~]# usermod -U newuser
[root@server02 ~]# tail -1 /etc/shadow
newuser:$6$5ac7Kh.y$S4gRnb......rBB/YCs/8DM9ZN13aeLiNUllUB/:17316:0:99999:7:::
[root@server02 ~]# usermod -L newuser
[root@server02 ~]# tail -1 /etc/shadow    //锁定后密码前面有感叹号
newuser:!$6$5ac7Kh.y$S4gRnb......rBB/YCs/8DM9ZN13aeLiNUllUB/:17316:0:99999:7:::
[root@server02 ~]# usermod -U newuser
[root@server02 ~]# tail -1 /etc/shadow
newuser:$6$5ac7Kh.y$S4gRnb......rBB/YCs/8DM9ZN13aeLiNUllUB/:17316:0:99999:7:::

在上面的示例中,使用了passwd设置账户的口令。

passwd命令有以下几种用法:

[root@server02 ~]# passwd --help
用法: passwd [选项...] <帐号名称>
  -k, --keep-tokens       保持身份验证令牌不过期
  -d, --delete            删除已命名帐号的密码(只有根用户才能进行此操作)
  -l, --lock              锁定指名帐户的密码(仅限 root 用户)
  -u, --unlock            解锁指名账户的密码(仅限 root 用户)
  -e, --expire            终止指名帐户的密码(仅限 root 用户)
  -f, --force             强制执行操作
  -x, --maximum=DAYS      密码的最长有效时限(只有根用户才能进行此操作)
  -n, --minimum=DAYS      密码的最短有效时限(只有根用户才能进行此操作)
  -w, --warning=DAYS      在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
  -i, --inactive=DAYS     当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
  -S, --status            报告已命名帐号的密码状态(只有根用户才能进行此操作)
  --stdin                 从标准输入读取令牌(只有根用户才能进行此操作)

Help options:
  -?, --help              Show this help message
  --usage                 Display brief usage message

其中特别注意的是“-l”和“-u”,它们是用于锁定和解锁账户的。还有参数“--stdin”的用法,示意如下:

[root@server02 ~]# echo "123456" |passwd --stdin newuser
更改用户 newuser 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@server02 ~]# echo -e "123456\n123456" |passwd newuser  //“-e”表示支持换行
更改用户 newuser 的密码 。
新的 密码:无效的密码: 密码少于 8 个字符
重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。