公司动态

Linux用户与组管理:基础概念与RHEL 9实操指南

📅 2026/8/9 13:34:53
Linux用户与组管理:基础概念与RHEL 9实操指南
1. 本地用户与组管理的基础概念在Linux系统中用户和组管理是系统管理员最基础的日常工作之一。RH124 9.0课程第六章专门讲解这个主题因为它直接关系到系统安全、资源分配和权限控制的核心机制。每个Linux用户都拥有唯一的用户IDUID系统通过UID而非用户名来识别用户。普通用户的UID通常从1000开始分配而系统用户如运行服务的用户则使用0-999的UID范围。root用户的UID固定为0拥有系统最高权限。用户组则是用户的集合主要用于简化权限管理。一个用户可以属于多个组其中一个是主组primary group其他是附加组supplementary groups。组同样有唯一的组IDGID系统通过GID来识别组。提示在RHEL 9中用户和组的配置文件主要存储在/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow这四个文件中。直接编辑这些文件虽然可行但建议使用专用命令工具来避免格式错误。2. 用户管理实操指南2.1 创建新用户创建用户的基本命令是useradd。在RHEL 9中这个命令有一些值得注意的默认行为和选项sudo useradd -m -s /bin/bash username-m选项会自动创建用户的家目录/home/username-s指定用户的默认shell/bin/bash是最常用的交互式shell如果不指定任何选项RHEL 9会根据/etc/default/useradd文件中的设置创建用户创建用户后可以使用passwd命令为其设置密码sudo passwd username注意在RHEL 9中密码策略比早期版本更严格。默认要求密码至少8个字符包含大小写字母和数字。可以通过/etc/security/pwquality.conf文件调整密码复杂度要求。2.2 修改用户属性usermod命令用于修改已有用户的属性。一些常用场景包括修改用户的主组sudo usermod -g newprimarygroup username添加用户到附加组sudo usermod -aG supplementarygroup username更改用户的家目录并移动现有文件sudo usermod -m -d /new/home/dir username锁定/解锁用户账户sudo usermod -L username # 锁定 sudo usermod -U username # 解锁2.3 删除用户删除用户使用userdel命令。基本用法是sudo userdel username这个命令默认不会删除用户的家目录和邮件假脱机文件。如果要同时删除家目录使用-r选项sudo userdel -r username重要提示在生产环境中删除用户前务必确认该用户的所有文件都已备份或不再需要。删除操作是不可逆的。3. 组管理详细操作3.1 创建和管理组创建新组使用groupadd命令sudo groupadd groupname可以指定GID如果不指定系统会自动分配sudo groupadd -g 1500 groupname删除组使用groupdelsudo groupdel groupname注意如果组是某个用户的主组primary group则不能直接删除需要先修改相关用户的主组。3.2 组成员管理查看组信息及其成员getent group groupname添加用户到组前面usermod命令已经展示过sudo usermod -aG groupname username从组中移除用户sudo gpasswd -d username groupname3.3 组密码管理虽然不常用但Linux组可以设置密码允许非组成员通过密码临时加入组sudo gpasswd groupname设置密码后用户可以使用newgrp命令临时切换主组newgrp groupname4. 用户和组管理的进阶技巧4.1 批量用户管理当需要创建大量用户时可以使用newusers命令配合文本文件批量创建sudo newusers users.txtusers.txt文件格式与/etc/passwd相同。类似地chpasswd命令可以批量修改密码echo username:password | sudo chpasswd4.2 用户模板目录RHEL 9使用/etc/skel目录作为新用户家目录的模板。管理员可以在这个目录中放置默认的配置文件如.bashrc、.profile等这些文件会在创建新用户时自动复制到用户的家目录中。4.3 用户和组信息查询除了基本的id和groups命令外RHEL 9还提供了一些有用的查询工具查看用户登录信息lastlog查看当前登录用户who查看用户的UID、GID和所属组id username4.4 安全最佳实践遵循最小权限原则只给用户必要的权限定期审查用户账户删除不再需要的账户对特权账户如root实施更严格的访问控制使用sudo而不是直接共享root密码实施强密码策略并定期更换密码5. 常见问题排查5.1 用户无法登录可能原因及解决方案密码错误重置密码账户被锁定使用usermod -U解锁shell设置不正确检查/etc/passwd中的shell字段家目录权限问题确保家目录归用户所有且权限正确5.2 权限问题当用户无法访问某些资源时检查资源的权限位ls -l确认用户是否在正确的组中检查是否有SELinux上下文限制ls -Z5.3 用户和组配置文件损坏如果/etc/passwd或/etc/group文件损坏可以使用pwck和grpck命令进行检查和修复sudo pwck sudo grpck6. 实战案例搭建多用户开发环境假设我们需要为一个开发团队设置以下访问控制所有开发者属于dev组项目目录/projects/team1对dev组可读写每个开发者有自己的家目录共享目录/projects/shared对所有人可读但只有管理员可写实现步骤创建组sudo groupadd dev创建用户并加入组sudo useradd -m -G dev -s /bin/bash dev1 sudo useradd -m -G dev -s /bin/bash dev2设置目录权限sudo mkdir -p /projects/team1 /projects/shared sudo chgrp dev /projects/team1 sudo chmod 2775 /projects/team1 # 设置SGID位使新建文件保持组所有权 sudo chmod 755 /projects/shared设置共享目录ACL如果需要更细粒度的控制sudo setfacl -m g:dev:rwx /projects/team17. RHEL 9中的新特性RHEL 9在用户和组管理方面引入了一些改进更严格的默认密码策略改进的useradd/usermod命令选项更好的与systemd集成特别是对于系统用户的管理增强的审计功能可以更详细地跟踪用户管理操作例如现在可以使用--expiredate选项在创建用户时直接设置账户过期日期sudo useradd -e 2024-12-31 tempuser8. 自动化用户管理脚本示例以下是一个简单的bash脚本用于自动创建多个开发用户并设置基本环境#!/bin/bash # 定义用户列表 USERS(dev1 dev2 dev3) GROUPdevelopers PROJECT_DIR/projects # 创建组 sudo groupadd $GROUP # 创建每个用户 for USER in ${USERS[]}; do sudo useradd -m -G $GROUP -s /bin/bash $USER echo 设置$USER的密码 sudo passwd $USER done # 设置项目目录 sudo mkdir -p $PROJECT_DIR sudo chgrp $GROUP $PROJECT_DIR sudo chmod 2775 $PROJECT_DIR echo 用户和组设置完成这个脚本可以保存为setup_devs.sh然后通过chmod x setup_devs.sh赋予执行权限后运行。