Linux常用命令-usermod

命令

usermod

描述

modify a user account
修改用户信息

用法

1
usermod [options] LOGIN

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Options:
-d HOME_DIR 更改家目录
-e EXPIRE_DATE 设置账户过期时间,格式为YYYY-MM-DD
-f INACTIVE 设置密码失效时间
-g GROUP 强制更改用户属组
-G GROUPS 更改附加组,注意会删除用户原有的附加组
-a,--append 追加附加组,配合-G使用(注意低版本可能不支持此选项)
-l NEW_LOGIN 更改用户名
-s SHELL 更改用户shell
-u UID 更改用户UID
-c 更改注释信息
-m 移动用户家目录,配合-d选项使用
-L 锁定用户
-U 解锁用户

注意

如非必要不建议同时更改用户名和uid

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# 添加的注释信息即为Name字段
$ usermod -c aaa usera
$ tail -1 /etc/passwd
usera:x:1002:1002:aaa:/home/usera:/bin/bash
$ finger usera
Login: usera Name: aaa
Directory: /home/usera Shell: /bin/bash
Never logged in.
No mail.
No Plan.
# 更改usera的账户过期时间
$ usermod -e 2021-1-31 usera
$ chage -l usera
Last password change : Jan 08, 2021
Password expires : never
Password inactive : never
Account expires : Jan 31, 2021

$ id usera
uid=1002(usera) gid=1002(usera) groups=1002(usera)
$ id userb
uid=1003(userb) gid=1003(userb) groups=1003(userb)
$ groupadd group1
$ groupadd group2
# 更改usera的属组为group1
$ usermod -g group1 usera
$ id usera
uid=1002(usera) gid=1004(group1) groups=1004(group1)
# 更改userb的附加组为group2,注意会删除用户原有的附加组
$ usermod -G group2 userb
$ id userb
uid=1003(userb) gid=1003(userb) groups=1003(userb),1005(group2)
# 追加附加组,如将userb添加到sudo组
$ usermod -aG sudo userb
# 删除userb的所有附加组
$ usermod -G userb userb
$ id userb
uid=1003(userb) gid=1003(userb) groups=1003(userb)
# 更改userb的用户名为www,uid不变
$ usermod -l www userb
$ id userb
id: userb: no such user
$ id www
uid=1003(www) gid=1003(userb) groups=1003(userb),1005(group2)

$ finger usera
Login: usera Name:
Directory: /home/usera Shell: /bin/bash
Never logged in.
$ echo $SHELL
/bin/bash
$ more /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
# 更改usera的登录shell
$ usermod -s /bin/sh usera
$ tail -2 /etc/passwd
usera:x:1002:1004::/home/usera:/bin/sh
www:x:1003:1003::/home/userb:/bin/bash
$ finger usera
Login: usera Name:
Directory: /home/usera Shell: /bin/sh
Never logged in.
# 更改usera的uid为1020
$ usermod -u 1020 usera
$ id usera
uid=1020(usera) gid=1004(group1) groups=1004(group1)
$ ll /home/
drwx------ 2 usera group1 62 Jan 9 00:42 usera/
drwx------ 2 www userb 62 Jan 9 00:42 userb/
# 移动usera的家目录到/opt/usera,注意目标目录必须不存在
$ usermod -md /opt/usera usera
$ ll /home/
drwx------ 2 www userb 62 Jan 9 00:42 userb/
$ ll /opt/
drwx------ 2 usera group1 62 Jan 9 00:42 usera/
$ ll /opt/usera/
total 12
drwx------ 2 usera group1 62 Jan 9 00:42 ./
drwxr-xr-x. 3 root root 19 Jan 9 00:52 ../
-rw-r--r-- 1 usera group1 18 Apr 1 2020 .bash_logout
-rw-r--r-- 1 usera group1 193 Apr 1 2020 .bash_profile
-rw-r--r-- 1 usera group1 231 Apr 1 2020 .bashrc

# 还可以通过如下命令来查看用户的passwd和shadow配置信息
$ getent passwd usera
usera:x:1002:1002::/home/usera:/bin/bash
$ getent shadow usera
usera:$6$N/o7E/yu$Dg0eFCBUo6swK75Iy0LoXPzhRq./BRR.T1F4hHllk5iUk4Axr83yyMxpvppw9lbl3QiP8Z8ga6uNW5AwPXvR8/:18663:0:99999:7:::