在Linux系统的日常运维与管理中,用户管理是确保系统安全、稳定运行的核心环节,CentOS 7作为一款广泛使用的服务器操作系统,其用户管理机制既强大又严谨,本文将系统性地介绍CentOS 7中用户与组管理的相关知识、常用命令及最佳实践,帮助管理员高效、安全地完成用户配置工作。

用户管理的核心概念
在深入命令操作之前,理解几个核心概念至关重要,它们是所有用户管理操作的理论基础。
-
用户类型:CentOS 7中的用户主要分为三类。
- 超级用户(root):拥有系统的最高权限,可以执行任何操作,无任何限制,出于安全考虑,应谨慎使用root账户。
- 系统用户:用于运行系统服务或应用程序,如
apache,mysql,nobody等,这些用户通常无法登录系统,其主要作用是隔离服务权限。 - 普通用户:由管理员创建,用于日常工作和操作,其权限受到严格限制,只能在授权范围内访问和修改文件,从而保障系统安全。
-
用户组:用户组是多个用户的集合,通过将用户添加到组,可以批量地为组内所有成员分配相同的权限,极大地简化了权限管理,一个用户可以属于一个“主组”和多个“附加组”。
-
关键配置文件:用户和组的信息存储在几个关键的文本文件中。
/etc/passwd:存储用户账户的基本信息,如用户名、UID(用户ID)、GID(组ID)、家目录、默认Shell等。/etc/shadow:存储用户密码的哈希值及密码策略(如过期时间),该文件对普通用户不可读,安全性更高。/etc/group:存储用户组的信息,如组名、GID、组成员列表。/etc/gshadow:存储用户组密码及相关管理员信息。
用户与组的常用命令
掌握命令行工具是进行CentOS 7用户管理的关键,以下是最核心的命令及其用法。
创建、修改与删除用户
-
创建用户:使用
useradd命令。# 创建一个名为testuser的用户,并自动创建其家目录 sudo useradd -m testuser # 创建用户时指定主组、附加组、Shell和注释信息 sudo useradd -m -g developers -G admins,sshusers -s /bin/bash -c "Developer Account" devuser
常用参数:
-m:创建用户的家目录(通常为/home/username)。-g <组名>:指定用户的主组。-G <组名1>,<组名2>:指定用户的附加组,多个组用逗号分隔。-s <Shell路径>:指定用户登录后使用的Shell,如/bin/bash。-c <注释>:添加用户的描述信息。
-
设置/修改密码:使用
passwd命令。
# 为当前登录用户修改密码 passwd # root用户为其他用户设置或修改密码 sudo passwd testuser
-
修改用户属性:使用
usermod命令。# 将用户testuser追加到admins组 sudo usermod -a -G admins testuser # 修改用户testuser的登录名为newuser sudo usermod -l newuser testuser # 锁定用户,禁止其登录 sudo usermod -L newuser # 解锁用户 sudo usermod -U newuser
注意:在使用
-G参数修改附加组时,它会覆盖原有的附加组列表,若要追加新组,必须使用-a(append)选项。 -
删除用户:使用
userdel命令。# 仅删除用户账户,保留其家目录和文件 sudo userdel olduser # 删除用户账户的同时,删除其家目录及邮件池 sudo userdel -r olduser
用户组管理
- 创建组:
groupadd groupname - 修改组:
groupmod -n newgroupname oldgroupname - 删除组:
groupdel groupname(删除组前需确保该组没有用户作为其主组)
为了更直观地展示,下表小编总结了常用命令:
| 功能 | 命令 | 常用示例 |
|---|---|---|
| 创建用户 | useradd |
sudo useradd -m -s /bin/bashtestuser |
| 设置密码 | passwd |
sudo passwd testuser |
| 修改用户 | usermod |
sudo usermod -a -G wheel testuser |
| 删除用户 | userdel |
sudo userdel -r testuser |
| 创建组 | groupadd |
sudo groupadd developers |
| 删除组 | groupdel |
sudo groupadd developers |
| 查看用户ID | id |
id testuser |
| 查看所属组 | groups |
groups testuser |
使用sudo进行权限委派
直接使用root账户进行日常操作存在巨大的安全风险,最佳实践是使用普通用户登录,通过sudo(superuser do)机制来临时获取root权限执行特定命令。
sudo的配置文件是/etc/sudoers,强烈建议使用visudo命令进行编辑,该命令会在保存时检查语法,避免因配置错误导致sudo无法使用。
一个常见的配置是允许特定用户组的成员执行所有命令:
# 允许wheel组的成员执行所有命令 %wheel ALL=(ALL) ALL
只需将一个普通用户添加到wheel组,该用户就能使用sudo了:

sudo usermod -a -G wheel testuser
CentOS 7的用户管理体系是构建系统安全堡垒的基石,通过理解用户与组的模型,熟练运用useradd, usermod, passwd等命令,并结合sudo进行精细化的权限委派,管理员可以有效地控制资源访问,追踪操作行为,从而维护整个系统的稳定与安全,规范化的用户管理流程,是每一位专业系统运维人员的必备技能。
相关问答 (FAQs)
Q1: 在CentOS 7中,useradd 和 adduser 命令有什么区别?
A: 在CentOS 7(以及大多数基于Red Hat的系统)中,useradd 和 adduser 实际上是同一个命令。adduser 通常是 useradd 的一个符号链接(软链接),你可以通过 ls -l /usr/sbin/adduser 来验证这一点,无论你使用哪个命令,调用的都是同一个二进制文件,其功能和所有参数都是完全一样的,在一些其他Linux发行版(如Debian/Ubuntu)中,adduser 可能是一个更友好的、交互式的Perl脚本,它会自动创建家目录、设置密码等,而useradd是更底层的工具,但在CentOS 7中,可以认为二者没有区别。
Q2: 如果忘记了root密码,但又没有其他具有sudo权限的用户账户,该如何重置?这和用户管理有关吗?
A: 这确实是一个与用户管理密切相关的高级应急场景,当无法通过常规方式登录时,可以通过单用户模式(Single-User Mode)或恢复模式来重置root密码,步骤如下:
- 重启服务器,在GRUB引导菜单出现时,按
e键进入编辑模式。 - 找到以
linux16或linuxefi开头的行,使用方向键移动到行末。 - 在行末添加
init=/bin/bash或rd.break,推荐使用rd.break,因为它更现代且安全。 - 按
Ctrl + X启动系统,此时会进入一个临时的shell环境。 - 挂载文件系统:由于进入的是救援模式,根文件系统是只读的,需要重新挂载为读写模式。
mount -o remount,rw /sysroot
- 切换到原始系统环境:
chroot /sysroot
- 修改root密码:你就可以使用
passwd命令来重置root密码了。passwd root
- 更新SELinux上下文(非常关键!):由于我们修改了
/etc/shadow文件,需要让SELinux重新标记该文件,否则重启后可能依然无法登录。touch /.autorelabel
- 退出并重启:
exit exit
系统会自动重启,重启过程可能会因为SELinux重新标记文件而稍长,这是正常的,重启完成后,你就可以使用新设置的root密码登录了,整个过程绕过了正常的用户认证,直接在底层对用户账户(这里是root)的关键属性(密码)进行了修改,是用户管理在应急场景下的终极体现。