「Linux命令基础」用户和用户组实训

用户与用户组关系管理

在Linux系统中,用户和用户组的关系就像班级里的学生和小组。一个用户可以同时属于多个组,这种灵活的成员关系为权限管理提供了便利。创建用户时,系统会自动生成一个与用户同名的主组,这个组会成为用户创建文件时的默认属组。

理解用户和用户组的关系对后续权限设置至关重要。通过id命令可以查看用户的UID、主组GID以及所有附加组。系统管理员需要根据实际工作需求,合理规划用户组结构,将具有相同权限需求的用户划分到同一组中。

用户与用户组操作实例

任务要求:以root用户登录进行测试运行,①创建developers用户组;②创建testers用户组;③创建用户user1并指定主组为developers;④创建用户user2并添加附加组developers和testers;⑤显示用户user2的以下身份信息,包括,用户ID (UID), 主组ID (GID),所属组列表

bash 复制代码
groupadd developers # ①创建developers用户组
groupadd testers    # ②创建testers用户组
useradd -g developers user1 # ③创建用户user1并指定主组为developers
useradd -G developers,testers user2 # ④创建用户user2并添加附加组developers和testers
id user2    # ⑤显示用户user2的身份信息,包括,用户ID (UID),主组ID (GID),所属组列表
# **运行结果示例**
# uid=1002(user2) gid=1003(developers) groups=1003(developers),1004(testers)

案例解析:第一、二个命令创建了两个用户组;第三个创建了user1并指定developers为主组;第四个创建user2并将developers和testers作为附加组;最后用id命令验证了用户组关系。

用户账号有效期设置

设置账号有效期是系统安全的重要措施,特别适合临时项目人员或实习生账号。通过useraddusermod-e选项可以指定账号过期时间,过期后用户将无法登录系统。

账号有效期管理实例

任务要求:以root用户登录进行测试运行,①创建user3用户设置有效期为2026-12-30;②创建user3用户;③修改用户user3的有效期为2026-12-30;④检查用户user2的有效性

bash 复制代码
useradd -e 2026-12-30 user3 # ①创建user3用户设置有效期为2026-12-30
useradd user4   # ②创建user4用户
usermod -e 2026-12-30 user4 # ③修改用户user4的有效期为2026-12-30
chage -l user3  # ④检查用户user3的有效性
# **运行结果示例**
# 最近一次密码修改时间                                    :6月 14, 2025
# 密码过期时间                                    :从不
# 密码失效时间                                    :从不
# 帐户过期时间                                            :12月 30, 2026
# 两次改变密码之间相距的最小天数          :0
# 两次改变密码之间相距的最大天数          :99999
# 在密码过期之前警告的天数        :7

安全建议 :对于临时账号,设置有效期可以避免遗忘删除带来的安全隐患。使用chage命令可以查看和修改更详细的密码和账号过期策略。

修改用户密码策略

任务要求:以root用户登录进行测试运行,①添加用户bob;②设置用户bob的密码最小长度为10,过期时间为60天,过期前7天警告;③验证bob用户的密码策略

bash 复制代码
useradd bob # ①添加用户bob
chage -m 10 -M 60 -W 7 bob  # ②设置用户bob的密码最小长度为10,过期时间为60天,过期前7天警告
chage -l bob  # ③验证bob用户的密码策略
# **运行结果示例**
# 最近一次密码修改时间                                    :7月 23, 2025
# 密码过期时间                                    :9月 21, 2025
# 密码失效时间                                    :从不
# 帐户过期时间                                            :从不
# 两次改变密码之间相距的最小天数          :10
# 两次改变密码之间相距的最大天数          :60
# 在密码过期之前警告的天数        :7

解析

  • -m:最小修改间隔(天)。
  • -M:最大有效期(天)。
  • -W:警告天数。

强制用户修改密码

任务要求:以root用户登录进行测试运行,①添加用户diana;②强制用户diana下次登录时修改密码;③验证diana用户的密码策略

bash 复制代码
useradd diana   # ①添加用户diana
chage -d 0 diana    # ②强制用户diana下次登录时修改密码
chage -l diana  # ③验证diana用户的密码策略
# **运行结果示例**
# 最近一次密码修改时间                                    :密码必须更改
# 密码过期时间                                    :密码必须更改
# 密码失效时间                                    :密码必须更改
# 帐户过期时间                                            :从不
# 两次改变密码之间相距的最小天数          :0
# 两次改变密码之间相距的最大天数          :99999
# 在密码过期之前警告的天数        :7

解析-d 0:将密码上次修改时间设置为0(即"立即过期")。

用户密码管理

密码是系统安全的第一道防线。Linux系统中,root用户可以修改任何用户的密码,而普通用户只能修改自己的密码。强密码策略应该包含大小写字母、数字和特殊字符,长度不少于8位。

密码设置实例

任务要求:以root用户登录进行测试运行,①修改user3的密码;②切换到user3用户并加载其环境变量;③user3修改自己密码;④退出user3账号;⑤强制user3用户下次登录修改密码.

bash 复制代码
passwd user3    # ①修改user3的密码
新的密码:******
重新输入新的密码:******
su - user3  # ②切换到user3用户并加载其环境变量
[user3@study ~]$ passwd # ③user3修改自己密码
(当前)UNIX 密码:******   # 原始密码
新的 密码:******   # 新密码
重新输入新的 密码:******   # 确认新密码
[user3@study ~]$ exit   # ④退出user3账号
passwd -e user3 # ⑤强制user3用户下次登录修改密码

安全实践passwd -e会使用户密码立即过期,强制用户在下次登录时修改密码,适合新账号初始密码分发后的场景。

用户与用户组重命名

随着组织架构变化,有时需要重命名用户或用户组。Linux提供了usermodgroupmod命令来完成这些操作,但要注意重命名后可能需要对文件属主和属组进行相应调整。

重命名操作实例

任务要求:以root用户登录进行测试运行,①创建用户组group2;②创建用户user4;③将用户组group2改名为group02;④将用户user4改名为Liu;⑤修改用户Liu的家目录为/home/Liu;⑥显示用户Liu的身份信息,包括,用户ID (UID),主组ID (GID),所属组列表。

bash 复制代码
groupadd group2 # ①创建用户组group2
useradd user4   # ②创建用户user4
groupmod -n group02 group2  # ③将用户组group2改名为group02
usermod -l Liu user4    # ④将用户user4改名为Liu
usermod -d /home/Liu -m Liu # ⑤修改用户Liu的家目录为/home/Liu
id Liu  # ⑥显示用户Liu的身份信息,包括,用户ID (UID),主组ID (GID),所属组列表
# **运行结果示例**
# uid=1004(Liu) gid=1005(user5) 组=1005(user5)

注意事项 :用户重命名后,其主目录不会自动改名,需要使用-d-m选项同步更新。

常见问题解决方案

  1. 用户组不存在

    vbnet 复制代码
    useradd: group 'developers' does not exist

    解决 :先创建用户组groupadd developers,再创建用户

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

    csharp 复制代码
    BAD PASSWORD: The password is too simplistic

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

  3. 账号过期无效

    复制代码
    账号已过期但仍可登录

    解决 :检查/etc/shadow中第8字段是否为过期日期(格式YYYY-MM-DD);确认系统时间正确

  4. 重命名后文件属主未更新

    复制代码
    重命名用户后旧文件仍显示原用户名

    解决 :使用find / -user 原UID -exec chown 新用户名 {} \;批量修改文件属主

实战练习

理论题

  1. 解释id命令输出中"gid"和"groups"的区别 答案:gid表示用户的主组ID,是用户创建文件时的默认属组;groups列出用户所属的所有附加组,用于扩展权限
  2. 设置账号有效期和密码有效期有什么不同? 答案:账号有效期禁止用户在指定日期后登录;密码有效期要求用户定期更改密码但不会禁止登录
  3. 重命名用户后为什么需要更新主目录? 答案:保持一致性避免混淆,某些程序会根据用户名查找主目录,不更新可能导致路径错误

实操题

  1. 任务要求 :以root用户登录进行测试运行,①创建用户组temp_group;②创建用户组developers;③创建用户temp_user并设置,主组为temp_group、附加组为developers、账号2024年6月30日过期、初始密码Temp@1234

    操作步骤

    bash 复制代码
    groupadd temp_group  # ①创建用户组temp_group
    groupadd developers  # ②创建用户组developers
    useradd -g temp_group -G developers -e 2024-06-30 -p Temp@1234 temp_user    # ③创建用户`temp_user`并设置,主组为`temp_group`、附加组为`developers`、账号2024年6月30日过期、初始密码`Temp@1234`
  2. 任务要求 :以root用户登录进行测试运行,①创建用户old_user;②将用户old_user重命名为new_user并迁移主目录为/home/new_user 操作步骤

    bash 复制代码
    useradd old_user
    usermod -l new_user -d /home/new_user -m old_user

总结

Linux用户和用户组管理是系统管理员的基础技能,合理的用户规划能大幅简化后续的权限管理工作。创建用户时就应该考虑好组关系、密码策略和有效期等安全设置,而不是事后补救。重命名操作需要格外小心,确保相关配置和文件属性同步更新。密码管理要遵循最小权限原则和复杂性要求,定期审查用户列表和权限分配。实际工作中,建议建立标准的用户管理流程,包括申请、审批、创建、复核等环节,确保系统安全可控。记住,良好的用户管理习惯是维护系统安全的第一道防线。

相关推荐
花下的晚风32 分钟前
如何搭建Linux环境下的flink本地集群
linux·flink
RainbowSea1 小时前
用户中心项目部署上线03
linux·服务器·spring boot
Gss7771 小时前
Vim 编辑器全模式操作指南
linux·编辑器·vim
sagima_sdu1 小时前
银河麒麟安装软件商店方法
linux·运维·服务器
Gene_20224 小时前
Ubuntu 22.04 使用 Issac Gym 进行人形强化学习训练
linux·运维·ubuntu
快乐肚皮4 小时前
Zookeeper学习专栏(十):核心流程剖析之服务启动、请求处理与选举协议
linux·学习·zookeeper·源码
toradexsh5 小时前
Yocto meta-toradex-security layer 使用 TI AM62 安全启动功能
linux·安全·arm·ti·am62
程序员JerrySUN7 小时前
Linux 内核基础统简全解:Kbuild、内存分配和地址映射
java·linux·运维·服务器·嵌入式硬件·缓存·文件系统
努力做小白9 小时前
Linux驱动19 --- FFMPEG
linux·运维·驱动开发·单片机·嵌入式硬件·ffmpeg
果子⌂13 小时前
Kubernetes 服务发布进阶
linux·运维·服务器·云原生·容器·kubernetes·云计算