「Linux命令基础」用户管理

用户账号基础概念

在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:修改家目录并迁移文件。

常见问题解决方案

  1. 用户已存在错误

    arduino 复制代码
    useradd:用户"wangwu"已存在

    解决 :先用id wangwu确认用户信息,如需重新创建,先删除原账号userdel -r wangwu

  2. 主目录未创建

    arduino 复制代码
    用户创建成功但/home下没有对应目录

    解决 :检查/etc/passwd中用户主目录设置,手动创建目录并修改所有权mkdir /home/user; chown user:user /home/user

  3. 密码不符合复杂度要求

    sql 复制代码
    BAD PASSWORD: The password fails the dictionary check

    解决 :设置包含大小写、数字和特殊字符的密码,或使用passwd --stdin 用户名从文件读取复杂密码

  4. 用户无法登录

    复制代码
    密码正确但登录后立即退出

    解决 :检查/etc/passwd中用户shell设置是否正确,确保不是/sbin/nologin

实战练习

理论题

  1. 解释/etc/passwd文件中各字段的含义,以deng:x:1000:1000:deng:/home/deng:/bin/bash为例 答案:依次为用户名、密码占位符(x表示密码在shadow文件)、UID、GID、描述信息、主目录路径和登录shell

  2. 什么情况下需要在useradd命令中使用-r选项? 答案 :创建系统用户时使用-r选项,这类用户通常没有主目录且UID在特定范围内(通常小于1000)

  3. 如何查看系统中所有被锁定的用户账号? 答案 :查看/etc/shadow文件中密码字段以!开头的行,或使用passwd -S 用户名检查账号状态

实操题

  1. 以root用户登录进行测试运行。①使用groupadd developers创建developers用户组;②创建UID为1500,主目录为/opt/dev01,属于developers组的dev01账号;③设置dev01的密码为Dev@2023;④锁定dev01;⑤使用groups dev01命令查看dev01所属的用户组;⑥删除dev01并删除家目录 操作步骤

    bash 复制代码
    groupadd 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用户管理是系统管理员的基础技能,通过useraddusermoduserdelpasswd等命令可以完成大多数用户管理工作。理解/etc/passwd/etc/shadow文件结构有助于排查用户相关问题。实际工作中要注意密码安全策略,定期审查用户列表,及时清理不用的账号。对于团队协作项目,合理规划用户组能有效管理文件权限。记住,任何用户修改操作都应先在测试环境验证,特别是批量操作时更应谨慎。

相关推荐
墨迹的陌离4 小时前
【Linux】重生之从零开始学习运维之Nginx-root&alias实践
linux·运维·学习
Casia_Dominic4 小时前
【tmux无法使用鼠标滚轮滚动页面的问题】解决方案
linux·git·github·tmux
伊成8 小时前
linux中如何清除history命令
linux·运维·chrome
阿沁QWQ9 小时前
全连接队列
linux·服务器·前端
伤心男孩拯救世界(Code King)10 小时前
Linux网络:网络层-IP协议
linux·网络·tcp/ip·智能路由器
thinkMoreAndDoMore10 小时前
linux驱动开发(21)-Linux设备驱动模型(一)
linux·驱动开发
CP-DD10 小时前
Linux 内核不能直接访问物理地址,必须通过虚拟地址访问。
linux·运维·服务器
Raymond运维10 小时前
MySQL介绍和MySQL包安装
linux·运维·数据库·mysql
躲在没风的地方10 小时前
OceanBase数据库
linux·数据库·oceanbase
John_ToDebug11 小时前
解析 Chromium 架构分层下 Windows 与 Linux 链接器行为差异及其影响
linux·c++·架构