在linux系统中,默认创建的用户的有效期限都是永久的,但有时候,我们需要对某些用户的有效期限做个限定!
比如:公司给客户开的ftp账号,用于客户下载新闻稿件的。这个账号是有时间限制的,因为是付费的。合同到期了,这个账号就要求停用。

废话不多说,直接说下操作记录:

需求:
创建lzwb账号,用于下载/home/hqsb里面的新闻稿件,这个账号的合同到期时间是2018年10月26号

1)创建账号lzwb
[root@dev ~]# useradd lzwb -d /home/hqsb -s /sbin/nologin

2)默认情况下,这个账号建立后,有效期限是永久的。注意下面命令结果:
Last password change:   表示账号创建时的时间
Account expires:  表示账号到期时间
命令格式:chage -l username   查看用户的到期时间情况
[root@dev ~]# chage -l lzwb
Last password change                    : Oct 26, 2016
Password expires                    : never
Password inactive                   : never
Account expires                     : never
Minimum number of days between password change      : 0
Maximum number of days between password change      : 99999
Number of days of warning before password expires   : 7

3)按照需求,修改账号的到期时间
命令格式:usermod -e "到期时间" username 修改系统用户的时间
[root@dev ~]# usermod -e "Oct 26,2018" lzwb

再次查看,发现lzwb的有效时间截止到2018年的10月26号了。
[root@dev ~]# chage -l lzwb
Last password change                    : Oct 26, 2016
Password expires                    : never
Password inactive                   : never
Account expires                     : Oct 26, 2018
Minimum number of days between password change      : 0
Maximum number of days between password change      : 99999
Number of days of warning before password expires   : 7

======================Linux 下修改用户名(同时修改用户组名和家目录)=====================

1) 修改用户名
# usermod -l new_username old_username

比如将kevin用户名修改为shibo
[root@localhost ~]# useradd kevin
[root@localhost ~]# cat /etc/passwd|grep kevin
kevin:x:501:502::/home/kevin:/bin/bash

[root@localhost ~]# usermod -l shibo kevin

查看修改后的用户名
[root@localhost ~]# cat /etc/passwd|grep shibo
shibo:x:501:502::/home/kevin:/bin/bash
[root@localhost ~]# cat /etc/passwd|grep kevin
shibo:x:501:502::/home/kevin:/bin/bash
[root@localhost ~]# su - kevin
su: user kevin does not exist
[root@localhost ~]# su - shibo
[shibo@localhost ~]$ 

发现上面修改, 只会更改用户名,而其他的东西,比如用户组,家目录,UID 等都保持不变。

特别注意:
如果修改的用户名在登录状态中, 需要从要改名的帐号中登出并杀掉该用户的所有进程,要杀掉该用户的所有进程可以执行下面命令:
[root@localhost ~]# pkill -u kevin
[root@localhost ~]# pkill -9 -u kevin

2) 修改用户家目录
同时更改家目录,我们需要在执行 usermod 命令的同时加上 -d 选项

如上将kevin用户修改为shibo后, shibo用户的家目录还是之前的/home/kevin,
现在要将shibo用户的家目录由/home/kevin 改为 /data/shibo
[root@localhost ~]# cat /etc/passwd|grep shibo
shibo:x:501:502::/home/kevin:/bin/bash

[root@localhost ~]# ls /data/shibo
ls: cannot access /data/shibo: No such file or directory

[root@localhost ~]# usermod -d /data/shibo shibo

[root@localhost ~]# cat /etc/passwd|grep shibo  
shibo:x:501:502::/data/shibo:/bin/bash

3) 更改用户 UID 
如上将kevin用户修改为shibo后, shibo用户的uid和gid都没有改变
现在想要将shibo用户的UID改为 1000 
[root@localhost ~]# cat /etc/passwd|grep shibo
shibo:x:501:502::/data/shibo:/bin/bash

[root@localhost ~]# usermod -u 1000 shibo

[root@localhost ~]# cat /etc/passwd|grep shibo
shibo:x:1000:502::/data/shibo:/bin/bash

4) 修改用户组名
现在要把shibo用户的用户组由kevin改为shibo, 这就要用到groupadd命令
[root@localhost ~]# cat /etc/group|grep kevin 
kevin:x:502:
[root@localhost ~]# cat /etc/group|grep shibo 
[root@localhost ~]#
[root@localhost ~]# cat /etc/passwd|grep shibo
shibo:x:1000:502::/data/shibo:/bin/bash

[root@localhost ~]# groupmod -n shibo kevin

[root@localhost ~]# cat /etc/group|grep shibo 
shibo:x:502:
[root@localhost ~]# cat /etc/group|grep kevin
[root@localhost ~]# 
[root@localhost ~]# cat /etc/passwd|grep shibo
shibo:x:1000:502::/data/shibo:/bin/bash

这时候shibo用户的群组已经是shibo了, 现在要把shibo用户的gid由502 改为 2000
[root@localhost ~]# cat /etc/group|grep shibo 
shibo:x:502:
[root@localhost ~]# cat /etc/passwd|grep shibo
shibo:x:1000:502::/data/shibo:/bin/bash

[root@localhost ~]# groupmod -g 2000 shibo

[root@localhost ~]# cat /etc/group|grep shibo
shibo:x:2000:
[root@localhost ~]# cat /etc/passwd|grep shibo
shibo:x:1000:2000::/data/shibo:/bin/bash

[root@localhost ~]# id shibo
uid=1000(shibo) gid=2000(shibo) groups=2000(shibo)