在管理和维护 CentOS 服务器时,始终遵循最小权限原则是一项至关重要的安全实践,直接使用 root 用户进行日常操作,虽然权限至高无上,但也带来了巨大的安全风险——一个无意的命令或脚本错误就可能导致整个系统崩溃或被恶意利用,创建一个具有特定权限的普通用户,并授予其在必要时执行管理员命令的能力(即 sudo 权限),是每一位系统管理员都应掌握的技能,本文将详细介绍在 CentOS 系统中创建新用户并为其配置 sudo 权限的完整流程,探讨不同方法的优劣,并提供验证步骤。
第一步:创建新用户账户
在授予任何权限之前,我们首先需要一个用户账户,CentOS 提供了 useradd
命令来完成这项工作,为了确保新用户拥有完整的个人环境,我们通常会使用 -m
选项来为其创建家目录,并使用 -s
选项指定一个默认的 Shell,如 /bin/bash
。
打开终端,以 root 用户或已有 sudo 权限的用户身份,执行以下命令来创建一个名为 newuser
的新用户:
sudo useradd -m -s /bin/bash newuser
这里对命令的各个部分进行解释:
sudo
:因为创建用户需要管理员权限,所以我们使用sudo
来临时提升权限。useradd
:用于创建新用户的系统命令。-m
:告诉系统在/home
目录下为新用户创建一个与用户名同名的家目录,这是推荐的设置,许多应用程序的配置文件都依赖于此目录。-s /bin/bash
:为新用户设置默认的登录 Shell 为 Bash,这是最常用且功能最强大的 Shell 之一。
用户创建后,它还没有密码,无法登录,我们需要为这个新用户设置一个安全的密码,使用 passwd
命令:
sudo passwd newuser
执行后,系统会提示您输入两次新密码,为了安全,输入密码时屏幕上不会显示任何字符。
第二步:授予 Sudo 权限
创建好用户后,核心步骤就是授予其 sudo 权限,在 CentOS(以及其他基于 Red Hat 的系统)中,主要有两种推荐的方法可以实现这一目的。
将用户添加到 wheel 组(推荐)
这是最标准、最安全且最受推荐的方法,在 CentOS 中,wheel
组是一个特殊的用户组,其成员默认被允许使用 sudo
命令,这种方式的优点是权限管理集中化,只需管理用户的组成员关系即可控制其 sudo 权限。
要将 newuser
添加到 wheel
组,请使用 usermod
命令:
sudo usermod -aG wheel newuser
命令解析:
usermod
:用于修改用户账户属性的命令。-a
:代表“append”(追加),这是非常关键的选项,它确保用户被添加到新的组中,而不是被替换为仅属于这个新组,如果省略-a
,用户将会离开所有其他次要组。-G wheel
:指定要添加到的组名为wheel
。newuser
:目标用户名。
默认情况下,CentOS 的 sudoers 配置文件(/etc/sudoers
)已经包含了允许 wheel
组成员使用 sudo 的规则,其内容通常如下:
## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL
这行配置的意思是,任何属于 wheel
组的用户,都可以在任何主机(ALL
)上,以任何用户身份((ALL)
,通常是 root)执行任何命令(ALL
)。
直接编辑 Sudoers 文件(不推荐)
虽然不推荐给初学者,但直接编辑 /etc/sudoers
文件也是一种授予权限的方法,这种方法更灵活,可以为单个用户定制非常精细的权限规则,但风险也更高,因为一个语法错误就可能导致所有用户都无法使用 sudo,甚至无法登录系统。
绝对不要使用普通的文本编辑器(如 vi
或 nano
)直接编辑此文件,正确的做法是使用 visudo
命令。visudo
会在保存文件之前对其进行语法检查,从而避免因配置错误而锁死系统。
执行 sudo visudo
命令后,系统会打开一个临时文件(通常是 /etc/sudoers.tmp
),在文件中找到类似 ## Allow root to run any commands anywhere
的部分,在其下方添加以下一行:
newuser ALL=(ALL) ALL
这行规则的含义是为 newuser
用户授予与方法一中 wheel
组相同的、不受限制的 sudo 权限,编辑完成后,保存并退出编辑器(在 vi
中是 wq
)。visudo
会自动检查语法,如果无误,则会更新 /etc/sudoers
文件。
授权方式 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
wheel 组 | 管理集中、安全、不易出错、符合标准 | 灵活性相对较低 | 大多数标准场景,授予普通用户完整管理员权限 |
编辑 sudoers | 极度灵活,可精细化控制每个命令和主机 | 风险高,易因语法错误导致系统问题 | 需要为特定用户定制特定、有限的命令权限时 |
第三步:验证 Sudo 权限
授予权限后,验证其是否生效是必不可少的环节,通过 su
命令切换到新创建的用户:
su - newuser
符号会模拟一次完整的登录,加载新用户的环境变量等,切换后,命令提示符通常会变为 ,表示当前是普通用户身份。
尝试执行一个需要 root 权限的命令,例如查看 /root
目录的内容:
sudo ls /root
首次使用 sudo
时,系统会提示你输入当前用户(即 newuser
)的密码,而不是 root 用户的密码,输入正确密码后,如果命令成功执行并列出了 /root
目录下的文件,就证明 sudo 权限配置成功。
另一个更简洁的验证命令是:
sudo whoami
如果权限配置正确,命令的输出应该是 root
。
相关问答FAQs
Q1:为什么强烈推荐使用将用户添加到 wheel 组的方式,而不是直接修改 sudoers 文件?
A1: 主要基于安全性、可维护性和一致性的考虑,使用 wheel
组是一种集中化的管理策略,系统管理员只需关注用户的组成员关系,就能轻松地批量授予或撤销 sudo 权限,这比在 sudoers 文件中逐行添加或删除要安全和高效得多。visudo
虽然能防止语法错误,但直接编辑文件仍然增加了误操作的风险,例如不小心修改了其他关键规则,而使用 usermod
操作用户组,其命令简单且影响范围明确,遵循 wheel
组的约定是 Linux 系统管理的标准实践,有助于保持系统配置的一致性和可读性,方便其他管理员快速理解和维护。
Q2:如果我需要临时让一个用户拥有 sudo 权限,用完后就收回,哪种方法最方便?
A2: 毫无疑问,使用 wheel
组的方法最方便,当你需要授予权限时,只需执行 sudo usermod -aG wheel username
,当用户完成任务后,要收回权限,只需将该用户从 wheel
组中移除即可,命令为 sudo gpasswd -d username wheel
,这个过程非常快速、直接,且不会对 sudoers 文件造成任何改动,极大地降低了管理的复杂性和风险,如果使用编辑 sudoers 文件的方法,则需要再次使用 visudo
,找到对应的行,将其注释掉或删除,操作相对繁琐。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复