在上一章节中,我们学习了如何利用 useradd
添加一个新的用户,利用 passwd
给用户设置、修改密码。但是如果手一抖不小心用户信息添加错了,或者需要修改用户信息,该如何操作呢?
前面也讲过,我们可以手动修改 /etc/passwd
以及 /etc/shadow
文件来添加一个用户,那么手动修改文件当然也可以修改用户信息。不过今天要为大家讲解的是使用Linux的 usermod
命令来修改用户信息。
一、修改用户命令 usermod
Linux usermod命令可用来修改用户帐号的各项设定。
useradd [选项] 用户名
该命令常用的选项及各自的含义如下:
-c
修改用户的说明信息,对应于修改/etc/passwd
文件中用户信息的第5个信息-d
修改用户的主目录,对应于修改/etc/passwd
文件中目标用户信息的个信息-e
修改用户的失效日期,格式为 "YYYY-MM-DD",对应于修改/etc/shadow
文件用户密码信息的第8个信息-g
修改用户的初始组,对应于修改/etc/passwd
文件用户信息的第4信息(GID)-u
修改用户的UID,对应于修改/etc/passwd
文件用户信息的第3个信息(UID)-G
修改用户的附加组,其实就是把用户加入其他用户组,即修改 /etc/group 文件;-l
修改用户名称;-L
临时锁定用户(Lock)-U
解锁用户(Unlock),和 -L 对应-s
修改用户的登录 Shell,默认是 /bin/bash
从上面的参数来看,与上一章讲解的 useradd
命令的参数对比来看,这两个命令的参数是差不多的。只不过usermod
命令比useradd
多了 -L
和 -U
两个参数。
1、比如我现在要锁定在上一章创建的用户testuser
:
$ usermod -L testuser
锁定用户的本质,就是使用户的密码失效,使之不能登录,所以我们去看 /etc/shadow
密码文件,发现这个用户的密码位前面多了一个 !
号:
2、解锁用户
既然能锁定用户,自然也能解锁用户:
$ usermod -U testuser
执行命令之后,我们再去查看 /etc/shadow
文件,密码位前面的 !
就取消了。
3、修改用户说明
$ usermod -c "modify user descript" testuser
在修改用户说明之前,我们先来看看现在的用户说明是什么:
$ grep "testuser" /etc/passwd
执行命令命令之后,我们再来看下用户说明:
用户说明已经被成功修改了。
4、把用户加入新的组
比如我们要把 testuser
用户添加到root组:
$ usermod -G root testuser
二、修改用户的密码状态: chage
该命令不仅可以用来修改用户的密码状态,还可以和 passwd -S
命令一样 显示详细的用户密码信息。
chage [选项] 用户名
该命令常用的选项及各自的含义如下:
-m
:密码可更改的最小天数,为零时代表任何时候都可以更改密码,对应/etc/shadow
文件中的第4个字段-M
:密码保持有效的最大天数,对应/etc/shadow
文件中的第5个字段-w
:用户密码到期前,提前收到警告信息的天数,对应/etc/shadow
文件中的第6个字段-E
:帐号到期的日期,过了这天,此帐号将不可用。对应/etc/shadow
文件中的第8个字段-d
:上一次更改的日期,对应/etc/shadow
文件中的第3个字段-i
:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用, 对应/etc/shadow
文件中的第7个字段-l
:列出用户的详细密码状态
我们先来查看下 testuser
的密码信息:
$ chage -l testuser
各信息意思如下:
Last password change
: 最近一次密码修改时间: 6月 18, 2020Password expires
:密码过期时间:从不Password inactive
:密码失效时间:从不Account expires
:帐户过期时间:从不Minimum number of days between password change
:两次改变密码之间相距的最小天数:0Maximum number of days between password change
:两次改变密码之间相距的最大天数:99999Number of days of warning before password expires
:在密码过期之前警告的天数:7
1、修改密码过期时间
我可以通过如下命令修改我的密码过期时间,设置60天后过期:
$ chage -M 60 testuser
2、设置密码失效时间
$ chage -i 5 testuser
意思是在密码过期后5天,密码自动失效,这个用户将无法登陆系统了。
3、chage命令还有个硬核功能,可以强制用户在第一次登录后,必须先修改密码,并利用新密码重新登陆系统,此用户才能正常使用
我们创建一个新的用户 testuser2
,然后设置它的密码创建日期为1970年1月1日:
# 创建用户
$ useradd testuser2
#设置密码123456
$ echo "123456" | passwd --stdin testuser2
#设置密码创建日期为1970年1月1日
$ chage -d 0 testuser2
执行完成之后,我们用testuser2
用户去登录系统,提示需要去修改密码:
三、删除用户命令:userdel
userdel
命令使用很简单,用于删除用户帐号的相关数据。
userdel [选项-r] 用户名
若不加 -r
参数,则仅删除用户帐号,而不删除用户宿主目录,那么用户目录就会变成没有属主和属组的目录,也就是垃圾文件。
比如分别删除 testuser
以及 testuser2
用户:
# 删除testuser用户,不加-r参数
$ userdel testuser
# 删除testuser2用户,加-r参数
$ userdel -r testuser2
可以看到,删除 testuser
不加 -r
参数,执行命令之后,该用户的宿主目录保留了。
四、查看用户的UID和GID命令:id
id
命令比较简单,可以查询用户的UID、GID 和附加组的信息:
id 用户名
比如查看 eddy
用户的:
$ id eddy
$ uid=1009(eddy) gid=1009 groups=1009
执行命令之后到uid(用户ID)、gid(初始组ID), groups是用户所在组。
现在我把eddy
用户加入root
组:
大家发现该用户的附加组信息中多了一个root
组。
今天为大家讲解了如何修改Linux用户信息,修改用户密码以及如何删除用户。下一章继续为大家讲解Linux用户相关的其他操作命令。