Linux账号管理(4)- useradd/usermod/passwd
useradd
useradd用来添加一个用户:
[root@studyclub ~]# useradd [-u UID] [-g 所属组] [-c 说明信息] 准备添加的用户名
选项与参数:
-u 后面接的是UID,一个数字,用来指定特定的UID,如果不写,系统会自动分配一个ID
-g 后面接组名,用来指定这个文件属于哪个用户组
-c 这个是/etc/passwd的第五栏里的内容,用来说明用户的情况(内容随便写)
# useradd还有很多选项,但是不常用,哪怕是上面提到的三个,也不是很常用,但是应该知道的。
下面我们实操看一下useradd的使用:
实例1:
[root@studyclub ~]# useradd dog # 添加dog用户
[root@studyclub ~]# ll -d /home/dog/ # 添加用户,系统默认会创建一个家目录
drwx------ 2 dog dog 62 Jun 8 11:47 /home/dog/
# 注意,上面的家目录默认用户自己有最高权限,其余用户都没有权限。
# 我们再来看看和用户相关的几个文件:
[root@studyclub ~]# grep dog /etc/passwd /etc/shadow /etc/group
/etc/passwd:dog:x:1006:1007::/home/dog:/bin/bash # 建立用户相关的信息行,包括UID、GID、用户目录和用户对应的shell
/etc/shadow:dog:!!:18786:0:99999:7:::
/etc/group:dog:x:1007:
# 可以看到,上面的用户配置文件、密码文件和组文件都发生了变化
实例2:指定用户ID和用户组添加用户
[root@studyclub ~]# useradd -u 1500 -g james monkey # 添加用户monkey,uid为1500,分到james用户组
[root@studyclub ~]# grep monkey /etc/passwd /etc/shadow
/etc/passwd:monkey:x:1500:1001::/home/cat:/bin/bash
/etc/shadow:monkey:!!:18786:0:99999:7:::
usermod
usermod用来修改用户的一些信息:
usermod [-cdglsu] username
选项与参数:
-c 后接账号说明,即/etc/passwd第5列的内容
-d 后接账号的家目录,即/etc/passwd的第6列
-g 指定(修改)用户组
-l 后接用户名
-s 修改用户登录的shell,默认是/bin/bash
-u 后面接uid,修改用户uid
这个usermod和后面的groupmod请慎用,能不用就不用,因为一旦修改了用户的信息,会影响到用户对linux的使用,在生产环境中非常危险。所以我们接下来只做简单演示:
# 修改登录shell
[root@studyclub ~]# usermod -s /bin/sh james
[root@studyclub ~]# cat /etc/passwd
......
james:x:1001:1002::/home/james:/bin/sh # 修改登录用的shell成功
test:x:1004:1004::/home/test:/bin/bash
.....
# 修改用户名:把test用户改名为test1
[root@studyclub ~]# usermod -l test1 test
[root@studyclub ~]# cat /etc/passwd
......
test1:x:1004:1004::/home/test:/bin/bash # 可以看出,uid为1004的用户的用户名变成了test1
......
passwd
passwd用来修改用户密码:
passwd [--stdin] 用户名
passwd [-l] [-u] [--stdin] [-deSnxwi] 用户名
选项和参数:
--stdin 从标准输入获取新密码。如:cat test.txt | passwd --stdin username
-l 锁死用户禁止其登录(仅root可执行)
-u 解锁已经锁死的用户,恢复其登录资格(仅root可执行)
-d 删除密码,用户可以无密码登录(仅root可执行)
-e 强制用户下次登录时修改密码(仅root可执行)
-S 显示用户的密码状态(仅root可执行)
-n 后接天数,表示多少天以内不允许更改密码(仅root可执行)【对应shadow文件用户行的第四个字段】
-x 后接天数,表示多少天以内必须要修改密码(仅root可执行)【对应shadow文件用户行的第五个字段】
-w 后接天数,密码到期前多少天开始有告警信息(仅root可执行)【对应shadow文件用户行的第六个字段】
-i 后接天数,表示密码到期多少天后账号无法登录,即这是给用户修改密码的最大宽限期
我们通过实例看看passwd的用法:
实例1:
# 查看密码状态
[root@studyclub ~]# passwd -S jason
jason PS 2021-05-05 0 99999 7 -1 (Password set, SHA512 crypt.) # 密码已经设置,采用了SHA512方式加密
# 说明:创建密码时间是2021-05-05;0代表没有不可修改密码的期限,任何时候都可以修改;99999是在99999天内必须修改密码;7代表到期前7天开始警告用户;-1代表密码不会失效
实例2:
# 锁死用户禁止其登录
[root@studyclub ~]# passwd -l jason # 锁死用户
Locking password for user jason.
passwd: Success
[root@studyclub ~]# passwd -S jason
jason LK 2021-05-05 0 99999 7 -1 (Password locked.) # 结果显示:密码已被锁死。此时再使用jason用户登录linux,会发现jason已经无法登录linux了。
实例3:
# 接下来我们把锁死的用户解锁
[root@studyclub ~]# passwd -u jason
Unlocking password for user jason.
passwd: Success
[root@studyclub ~]# passwd -S jason
jason PS 2021-05-05 0 99999 7 -1 (Password set, SHA512 crypt.) # 解锁后,一切又恢复了正常。此时jason用户可以正常登录linux了。
实例4:
# 强制用户下次登录时修改密码
[root@studyclub ~]# passwd -e jason # 强制用户下次登录时修改密码
Expiring password for user jason.
passwd: Success
# 下面我们用jason用户登录linux,输入用户名、密码登录成功后会提示用户修改密码:
You are required to change your password immediately (root enforced) # root强制要求你修改密码,立刻、马上^_^
Last failed login: Tue Jun 8 13:48:19 CST 2021 from 10.0.0.1 on ssh:notty
There were 2 failed login attempts since the last successful login.
Last login: Thu May 13 10:17:33 2021
welcome to studyclub
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user jason.
Changing password for jason.
(current) UNIX password: # 输入新密码
实例5:
# 设置密码在5天内必须修改,最大宽限期2天,到期后强制用户必须修改密码
[root@studyclub ~]# passwd -x 5 -i 2 jason
Adjusting aging data for user jason.
passwd: Success
[root@studyclub ~]# passwd -S jason # 看一下状态
jason PS 2021-06-07 0 5 7 2 (Password set, SHA512 crypt.)
# 下面我们来模拟时间过到了第5天(当前日期加4就是第5天)
[root@studyclub ~]# date -s 20210611
Fri Jun 11 00:00:00 CST 2021
# 接下来我们用jason用户登录
Warning: your password will expire in 2 days # 提示密码还有两天就要过期了,这两天就是我们-i选项设置的宽限期
Last failed login: Tue Jun 8 13:48:19 CST 2021 from 10.0.0.1 on ssh:notty
There were 2 failed login attempts since the last successful login.
Last login: Tue Jun 8 00:01:41 2021 from 10.0.0.1
welcome to studyclub
# 我们继续模拟时间到了第8天(已经超出宽限期了)
[root@studyclub ~]# date -s 20210614
Mon Jun 14 00:00:00 CST 2021
# 这个时候我们用jason用户登录系统:
You are required to change your password immediately (password aged) # 可以看到,由于超出期限,系统强制用户修改密码
Last login: Sun Jun 13 00:00:07 2021 from 10.0.0.1
welcome to studyclub
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user jason.
Changing password for jason.
(current) UNIX password:
下节预告:
下一节我们开始学习用户组管理命令:groupadd、groupmod、groupdel
新手应知: 尝鲜Rocky Linux
《Linux基础及进阶》: 027 - Linux硬盘与文件系统(12) 028 - Linux硬盘与文件系统(13)- 本章实战练习 029 - Linux账号管理(1)-用户及用户组简介 030 - Linux账号管理(2)-UID、用户配置文件介绍 031 - Linux账号管理(3)-用户组配置文件
看完本文有收获?请分享给更多人
推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!
微信号|bjdream-1