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

相关推荐
Yana.nice17 小时前
openssl将证书从p7b转换为crt格式
java·linux
AI逐月17 小时前
tmux 常用命令总结:从入门到稳定使用的一篇实战博客
linux·服务器·ssh·php
小白跃升坊18 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
跃渊Yuey18 小时前
【Linux】线程同步与互斥
linux·笔记
舰长11518 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
zmjjdank1ng18 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.18 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
VekiSon18 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发
zl_dfq19 小时前
Linux 之 【进程信号】(signal、kill、raise、abort、alarm、Core Dump核心转储机制)
linux
Ankie Wan19 小时前
cgroup(Control Group)是 Linux 内核提供的一种机制,用来“控制、限制、隔离、统计”进程对系统资源的使用。
linux·容器·cgroup·lxc