在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)的关键属性(密码)进行了修改,是用户管理在应急场景下的终极体现。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复