用户账号基础概念
在Linux系统中,用户是指能够登录系统并执行操作的主体,可以是真实的人也可以是系统服务。每个用户都有唯一的身份标识UID,就像身份证号码一样。Linux系统通过UID而非用户名来识别用户,这保证了系统的安全性。 用户账号信息主要存储在/etc/passwd
和/etc/shadow
两个文件中。passwd
文件保存用户基本信息,所有用户都可读取;而shadow
文件存储加密后的密码,只有root用户才能查看,这种设计有效提高了系统安全性。 passwd
文件中每行记录一个用户,用冒号分隔为7个字段。例如deng:x:1000:1000:deng:/home/deng:/bin/bash
,依次表示用户名、密码占位符、UID、GID、描述信息、主目录和登录shell。
用户管理实战案例
添加用户账号
创建用户最基本的命令是useradd
。系统会默认创建同名用户组、主目录并分配UID/GID。 任务要求:以root用户登录进行测试运行。①查看/etc/passwd文件中用户的基本信息;②添加普通用户zhangsan;③查看/etc/passwd文件中zhangsan用户的基本信息;④查看/etc/group文件中zhangsan用户组的基本信息;⑤创建指定UID为1005,主目录为/home/lisi_home的用户lisi;⑥创建属于zhangsan组的用户wangwu,账号2025年底过期;⑦创建系统用户admin;⑧查看/etc/passwd文件中最后4条的用户的基本信息。
bash
# ①查看/etc/passwd文件中用户的基本信息
cat /etc/passwd
# **运行结果示例**
# root:x:0:0:root:/root:/bin/bash
# bin:x:1:1:bin:/bin:/sbin/nologin
# ......
# ②添加普通用户zhangsan
useradd zhangsan
# ③查看/etc/passwd文件中zhangsan用户的基本信息
grep zhangsan /etc/passwd
# **运行结果示例**
# zhangsan:x:1000:1000::/home/zhangsan:/bin/bash
# ④查看/etc/group文件中zhangsan用户组的基本信息
grep zhangsan /etc/group
# **运行结果示例**
# zhangsan:x:1000:
# ⑤创建指定UID为1005,主目录为/home/lisi_home的用户lisi
useradd -u 1005 -d /home/lisi_home lisi
# ⑥创建属于zhangsan组的用户wangwu,账号2025年底过期
useradd -g zhangsan -e 2025-12-31 wangwu
# ⑦创建系统用户admin
useradd -r admin
# ⑧查看/etc/passwd文件中最后4条的用户的基本信息
tail -4 /etc/passwd
# **运行结果示例**
# zhangsan:x:1000:1000::/home/zhangsan:/bin/bash
# lisi:x:1005:1005::/home/lisi_home:/bin/bash
# wangwu:x:1006:1000::/home/wangwu:/bin/bash
# admin:x:997:995::/home/admin:/bin/bash
useradd选项解析:
-u 1005
:指定用户ID(UID)为 1005-d /home/lisi_home
:设置用户主目录为 /home/lisi_home-g zhangsan
:指定主组(用户所属的主要组)-e 2025-12-31
:设置账户过期日期(2025年12月31日)-r
:创建系统账户(UID范围为 1-999,具体值随系统变化)
设置用户密码
新创建的用户必须设置密码才能登录,使用passwd
命令。 任务要求:以root用户登录进行测试运行。①设置用户zhangsan的密码;②重启系统;③使用zhangsan账号登录系统;④zhangsan用户修改自己密码
bash
# ①设置用户zhangsan的密码
passwd zhangsan
更改用户zhangsan的密码。
新的密码:******** # 密码不会显示
重新输入新的密码:******** # 确认密码不会显示
# ②重启系统
reboot
# ③使用zhangsan账号登录系统
# ④zhangsan用户修改自己密码
[zhangsan@localhost ~]$ passwd
(current) UNIX password: ****** # 输入zhangsan用户当前的密码
新的密码:******** # 密码不会显示
重新输入新的密码:******** # 确认密码不会显示
安全提示:密码最好包含大小写字母、数字和特殊字符,长度不少于8位。root可以修改任何用户密码且不需要原密码,普通用户修改自己密码需要验证原密码。
修改用户属性
用户创建后可能需要调整属性,使用usermod
命令: 任务要求:以root用户登录进行测试运行。①修改zhangsan的主目录为/new/home/zhangsan;②将lisi加入附加组zhangsan和wangwu;③查看/etc/shadow文件中zhangsan账号的密码信息;④锁定zhangsan账号;⑤再次查看/etc/shadow文件中zhangsan账号的密码信息;⑥解锁zhangsan账号;⑦再次查看/etc/shadow文件中zhangsan账号的密码信息。
bash
# ①修改zhangsan的主目录为/new/home/zhangsan
usermod -d /new/home/zhangsan zhangsan
# ②将lisi加入附加组zhangsan
usermod -aG zhangsan lisi
# ③查看/etc/shadow文件中zhangsan账号的密码信息
grep zhangsan /etc/shadow
# **运行结果示例**
# zhangsan:$6$srlaYARW$.OuzMr9ywnHZeixJzb.stpqpJ2m9hIF67YqxvYhvNB7LGuethxjJoeFUiK0S3Dz3ikyHe/OjavcQExuMG3oHA0:20290:0:99999:7:::
# ④锁定zhangsan账号
usermod -L zhangsan
# ⑤再次查看/etc/shadow文件中zhangsan账号的密码信息
grep zhangsan /etc/shadow
# **运行结果示例**
# zhangsan:!$6$srlaYARW$.OuzMr9ywnHZeixJzb.stpqpJ2m9hIF67YqxvYhvNB7LGuethxjJoeFUiK0S3Dz3ikyHe/OjavcQExuMG3oHA0:20290:0:99999:7:::
# ⑥解锁zhangsan账号
usermod -U zhangsan
# ⑦再次查看/etc/shadow文件中zhangsan账号的密码信息
grep zhangsan /etc/shadow
# **运行结果示例**
# zhangsan:$6$srlaYARW$.OuzMr9ywnHZeixJzb.stpqpJ2m9hIF67YqxvYhvNB7LGuethxjJoeFUiK0S3Dz3ikyHe/OjavcQExuMG3oHA0:20290:0:99999:7:::
usermod选项解析:
-d
:指定新的主目录路径(将原路径更改为/new/home/zhangsan
)-aG
:追加到指定组(保留用户原有组关系);单独使用-G
会覆盖原有附加组-L
:在/etc/shadow
密码字段前添加!
标记-U
:移除/etc/shadow
中的!
锁定标记
删除用户账号
不再使用的账号应及时删除,使用userdel
命令 任务要求:以root用户登录进行测试运行。①查看/etc/passwd文件中zhangsan的用户信息;②查看/etc/passwd文件中lisi的用户信息;③查看/home目录下的文件;④删除zhangsan用户但保留主目录;⑤再次查看/etc/passwd文件中zhangsan的用户信息;⑥彻底删除lisi用户及其主目录;⑦再次查看/etc/passwd文件中lisi的用户信息;⑧再次查看/home目录下的文件。
bash
# ①查看/etc/passwd文件中zhangsan的用户信息
grep zhangsan /etc/passwd
# **运行结果示例**
# zhangsan:x:1000:1000::/new/home/zhangsan:/bin/bash
# ②查看/etc/passwd文件中lisi的用户信息
grep lisi /etc/passwd
# **运行结果示例**
# lisi:x:1005:1005::/home/lisi_home:/bin/bash
# ③查看/home目录下的文件
ls /home
# **运行结果示例**
# lisi_home wangwu zhangsan
# ④删除zhangsan用户但保留主目录
userdel zhangsan
# ⑤再次查看/etc/passwd文件中zhangsan的用户信息
cat /etc/passwd | grep zhangsan
# 查找不到zhangsan的用户信息
# ⑥彻底删除lisi用户及其主目录
userdel -r lisi
# ⑦再次查看/etc/passwd文件中lisi的用户信息
grep lisi /etc/passwd
# 查找不到lisi的用户信息
# ⑧再次查看/home目录下的文件
ls /home
# **运行结果示例**
# wangwu zhangsan # zhangsan的家目录没有删除,lisi的家目录删除了
userdel选项解析:
-r
选项:同步删除用户相关文件 (主目录/home/lisi
、邮件目录/var/mail/lisi
等)
案例代码与解析
创建用户并设置家目录与Shell
任务要求:以root用户登录进行测试运行。①创建用户alice,指定家目录为/home/alice,登录Shell为/bin/zsh;②验证家目录;③查看/etc/passwd文件中alice账号的信息
bash
# ①创建用户alice,指定家目录为/home/alice,登录Shell为/bin/zsh
useradd -m -d /home/alice -s /bin/zsh alice
# ②验证家目录
ls -ld /home/alice
# **运行结果示例**
# drwx------ 2 alice alice 62 6月 23 10:15 /home/alice
# ③查看/etc/passwd文件中alice账号的信息
grep alice /etc/passwd
# **运行结果示例**
# alice:x:1000:1000::/home/alice:/bin/zsh
useradd选项解析:
-m
:自动创建家目录。-d
:指定家目录路径。-s
:指定登录Shell。
锁定和解锁用户
任务要求:以root用户登录进行测试运行。①锁定用户alice;②验证锁定状态;③解锁用户alice
bash
# ①锁定用户alice
passwd -l alice
# ②验证锁定状态
grep alice /etc/shadow # 密码字段前有`!`
# **运行结果示例**
# alice:!!:20262:0:99999:7:::
# ③解锁用户alice
passwd -uf alice
passwd选项解析:
-l
:锁定用户(禁用登录)。-u
:解锁用户。-f
:强制执行操作。
删除用户并清理家目录
任务要求:以root用户登录进行测试运行。①添加用户charlie;②删除用户charlie并清理家目录;③验证用户是否删除
bash
# ①添加用户charlie
useradd charlie
# ②删除用户charlie并清理家目录
userdel -r charlie
# ③验证用户是否删除
grep charlie /etc/passwd # 无输出表示删除成功
ls /home/ # 确认家目录已删除
passwd选项解析:
-r
:删除用户时同时删除家目录和邮件池。
修改用户名和家目录
任务要求:以root用户登录进行测试运行。①添加用户eve;②修改用户eve的用户名为eve_new,并迁移家目录;③验证用户名和家目录
bash
# ①添加用户eve
useradd eve
# ②修改用户eve的用户名为eve_new,并迁移家目录
usermod -l eve_new -d /home/eve_new -m eve
# ③验证用户名和家目录
grep eve_new /etc/passwd
# 输出:eve_new:x:1003:1003::/home/eve_new:/bin/bash
ls -ld /home/eve_new # 确认家目录已迁移
usermod选项解析:
-l
:修改用户名。-d -m
:修改家目录并迁移文件。
常见问题解决方案
-
用户已存在错误
arduinouseradd:用户"wangwu"已存在
解决 :先用
id wangwu
确认用户信息,如需重新创建,先删除原账号userdel -r wangwu
-
主目录未创建
arduino用户创建成功但/home下没有对应目录
解决 :检查
/etc/passwd
中用户主目录设置,手动创建目录并修改所有权mkdir /home/user; chown user:user /home/user
-
密码不符合复杂度要求
sqlBAD PASSWORD: The password fails the dictionary check
解决 :设置包含大小写、数字和特殊字符的密码,或使用
passwd --stdin 用户名
从文件读取复杂密码 -
用户无法登录
密码正确但登录后立即退出
解决 :检查
/etc/passwd
中用户shell设置是否正确,确保不是/sbin/nologin
实战练习
理论题
-
解释
/etc/passwd
文件中各字段的含义,以deng:x:1000:1000:deng:/home/deng:/bin/bash
为例 答案:依次为用户名、密码占位符(x表示密码在shadow文件)、UID、GID、描述信息、主目录路径和登录shell -
什么情况下需要在useradd命令中使用
-r
选项? 答案 :创建系统用户时使用-r
选项,这类用户通常没有主目录且UID在特定范围内(通常小于1000) -
如何查看系统中所有被锁定的用户账号? 答案 :查看
/etc/shadow
文件中密码字段以!开头的行,或使用passwd -S 用户名
检查账号状态
实操题
-
以root用户登录进行测试运行。①使用
groupadd developers
创建developers用户组;②创建UID为1500,主目录为/opt/dev01
,属于developers
组的dev01账号;③设置dev01的密码为Dev@2023
;④锁定dev01;⑤使用groups dev01
命令查看dev01所属的用户组;⑥删除dev01并删除家目录 操作步骤 :bashgroupadd developers ①创建developers用户组 useradd -u 1500 -d /opt/dev01 -g developers dev01 # ②创建UID为1500,主目录为`/opt/dev01`,属于`developers`组的dev01账号 passwd dev01 # ③设置dev01的密码为`Dev@2023` usermod -L dev01 # ④锁定dev01 groups dev01 # ⑤查看dev01所属的用户组 userdel -r dev01 # ⑥删除dev01并删除家目录
总结
Linux用户管理是系统管理员的基础技能,通过useradd
、usermod
、userdel
和passwd
等命令可以完成大多数用户管理工作。理解/etc/passwd
和/etc/shadow
文件结构有助于排查用户相关问题。实际工作中要注意密码安全策略,定期审查用户列表,及时清理不用的账号。对于团队协作项目,合理规划用户组能有效管理文件权限。记住,任何用户修改操作都应先在测试环境验证,特别是批量操作时更应谨慎。