1、usermod命令

usermod ,是更改用户属性的命令,用法与 useradd 有点相似。主要有以下几个用法:
① 更改用户 uid :usermod + -u + 指定ID + 用户名 ;
② 更改用户 gid :usermod + -g + 指定ID/用户组名 + 用户名 ;
③ 更改用户加目录:uesrmod + -d + 加目录 + 用户名 ;
④ 更改用户 shell :usermod + -s + shell + 用户名 ;
先补充一下 useradd 的知识,这边还有一个选项 -G ,这里涉及到一个概念,叫扩展组。每个用户可以使用命令 id 来查看一下,见下图,
usermod 命令、mkpasswd命令及用户密码管理
其中,这个组不仅仅包括前面的 gid ,还包括其他的扩展组。一个用户可以属于多个组,但是 gid 只有一个。做一下实验,见下图,
usermod 命令、mkpasswd命令及用户密码管理
使用选项 -G 之后,就是给用户 lys 定义一个扩展组,即加入到 grp2 组中,也就是说现在用户 lys 不仅属于组 lys ,也属于组 grp2 。上图红色框框的组就叫做扩展组。
可不可以继续给用户 lys 加扩展组呢?见下图,
usermod 命令、mkpasswd命令及用户密码管理
结果发现是可以将用户 lys 添加到组 user5 中的,但是一旦指定 -G 之后,就会替换掉原来的 grp2 扩展组,那能不能同时加多个组呢?见下图,
usermod 命令、mkpasswd命令及用户密码管理
结果显示是可以的。但是将 G 换成 g 的话,就会显示--“grp2,user5”组不存在 。这是因为 g 的情况把“grp2,user5”整个当成一个组了。这说明使用 g 的时候,只允许一个组,见下图,
usermod 命令、mkpasswd命令及用户密码管理
以上就是 usermod 的用法。

2、mkpasswd命令

mkpasswd 就是 make password 的缩写,用来生成密码的工具。这个命令默认是不存在的,需要安装,见下图,
usermod 命令、mkpasswd命令及用户密码管理
usermod 命令、mkpasswd命令及用户密码管理
后面讲到 shell 的时候,会再次分享一下这个工具。mkpasswd 这个命令可以生成随机的字符串,我们可以把这个随机的字符串用作密码。安装完毕,来试一下,见下图,
usermod 命令、mkpasswd命令及用户密码管理
以上的字符串默认有9位数,包括大小写字母、数字和特殊符号。我们也可以自定义字符串的长度和特殊符号数量,见下图,
usermod 命令、mkpasswd命令及用户密码管理
上图中,l 表示长度 long ,s 表示特殊符号,special 。

3、用户密码管理

之前说过 passwd set_uid 命令,这个权限使普通用户临时拥有 root 更改密码的权限。 root 用户更改密码非常简单,输入命令 passswd ,回车,即可更改。而普通用户输入命令 passwd lys ,回车,可以更改密码。来看一下 shadow 这个文件,见下图,
usermod 命令、mkpasswd命令及用户密码管理
用户 lys 是由密码的,所以第二段显示的是一段加密的字符串。而下面那些 user 系列的用户是没有密码的,显示的是 !! ,表示没有密码,说明这些用户是不能登录的。
使用命令 head /etc/shadow ,回车,见下图,
usermod 命令、mkpasswd命令及用户密码管理
会发现有的用户第二段是 ,表示这些用户的密码是被锁定的,不能用,也不能登录。
以上说明,只要用户的密码显示为 !! 或是
,就表示这个用户的密码是有问题的,不能登录。
下面来说明一下 passwd -l 这个命令,是用来锁定用户密码的。见下图,
usermod 命令、mkpasswd命令及用户密码管理
上图中,作用于用户 user5 没有看出区别,是因为用户 user5 的密码本来就是 !! 。而作用于用户 lys 之后,就会发现用户 lys 的密码前面多了 !! ,说明用户 lys 的密码被锁定了。
怎么解锁呢?见下图,
usermod 命令、mkpasswd命令及用户密码管理
上面的 -l 就是 lock 的意思,-u 就是 unlock 的意思。使用命令 passwd -u lys 之后就发现用户 lys 的密码前面没有 !! ,说明解锁了。
除了命令 passwd -l 可以锁定用户密码之外,还有一个命令也可以锁定密码,就是 usermod -L ,见下图,
usermod 命令、mkpasswd命令及用户密码管理
可以看到用户 lys 前面多了一个 ! ,不管是 ! 还是 !! ,只要是以 ! 开头的,都说明这个用户被锁定了,不能登录。解锁的命令是 -U ,见下图,
usermod 命令、mkpasswd命令及用户密码管理
可以看到 ! 消失了。

给用户设定密码,见下图,
usermod 命令、mkpasswd命令及用户密码管理
可以发现,密码 123456 只输了一次,而且是明文显示的。这个用法在以后写 shell 脚本的时候可能会用到。通常情况下,命令是按下图这样写的,
usermod 命令、mkpasswd命令及用户密码管理
上图中,将用户 user5 密码改为 111222 ,中间的管道符“|”后面会说到,管道符的含义是将前面命令的结果传递给后面的命令。使用上图的命令,就不用再次输入密码,只需一条命令就可以更改密码。
下面再分享一个 echo 的用法,见下图,
usermod 命令、mkpasswd命令及用户密码管理
echo 命令中的“-e”可以在一行里面出现换行符,“\n”表示换行,“\t”表示插入 Tab 。
上面 echo -e 的用法,也可以用在更改密码上,见下图,
usermod 命令、mkpasswd命令及用户密码管理
上图中,更改密码的命令中没有使用“--stdin”,虽然提示了“新的 密码:无效的密码: 密码少于 8 个字符”,但是新密码还是生效了。直接使用命令 passwd user3 ,密码就得输入两次,才能成功。
这边建议大家密码至少要设置十位以上字符,复杂一点,包括大小写字母和数字,不能有规律性,不要包含个人信息,比如生日,家庭,工作单位等信息,这样才比较安全。