在管理Linux服务器时,我们经常需要执行一些需要高级权限的命令,直接使用root用户登录并进行操作,虽然直接,但存在相当大的安全风险,一次不经意的误操作,就可能对系统造成不可逆的损害,为普通用户授予sudo权限,是兼顾安全与便利的最佳实践。

sudo命令的核心思想是“最小权限原则”,它允许被授权的普通用户,以超级管理员(root)或其他用户的身份,安全地执行特定的命令,执行时,系统会验证当前用户的密码,而不是root密码,这进一步增强了安全性,当命令执行完毕后,权限即刻收回,用户依然回归到普通权限状态,这为系统安全提供了一层坚实的保障。
下面,我们将详细讲解在CentOS系统中,如何一步步为普通用户添加sudo权限。
理解sudoers文件:权限配置的核心
所有的sudo权限配置,都集中在一个核心文件中——/etc/sudoers,这个文件定义了哪些用户、哪些用户组,可以在哪些主机上,以哪些用户的身份,运行哪些命令。
重要警告:永远不要直接使用普通的文本编辑器(如vim或nano)去编辑/etc/sudoers文件,因为一旦语法出现错误,可能导致所有sudo功能失效,甚至无法再通过sudo获得root权限,给系统管理带来极大麻烦。
CentOS系统为我们提供了一个专用于编辑此文件的工具——visudo,这个工具会在保存时自动检查语法有效性,有效防止了配置错误的发生。
实践操作:为普通用户授权
假设我们需要为一个名为 zhangsan 的用户添加sudo权限。
第一步:使用root用户登录
你需要使用密码登录到你的CentOS服务器,确保你当前是以root用户身份进行操作,你可以通过输入 whoami 命令来确认当前用户身份。
第二步:执行visudo命令
在root用户的终端中,输入以下命令:
visudo
这将使用默认的文本编辑器(通常是vi或nano)打开/etc/sudoers文件。
第三步:配置用户权限(三种常用方法)

在打开的/etc/sudoers文件中,你会看到一些默认的配置行,我们需要在适当的位置添加新的规则。
将用户加入wheel组(最推荐、最规范的方法)
在CentOS中,默认存在一个名为 wheel 的用户组,这个组的成员天然拥有全部的sudo权限,这是一种非常清晰和易于管理的授权方式。
找到文件中这样一行:
# %wheel ALL=(ALL) ALL 你会发现这行开头有一个 号,表示它是被注释掉的,我们只需要删除号,取消注释即可:
%wheel ALL=(ALL) ALL 保存并退出编辑器(在vi中,按 Esc键,然后输入 :wq 回车)。
就是将用户 zhangsan 添加到 wheel 组中,执行命令:
usermod -aG wheel zhangsan
-a参数表示“追加”,确保不会将用户从其他组中移除。-G参数指定要加入的组名,这里是wheel。
直接为用户添加权限规则
如果你不想使用wheel组,也可以直接在/etc/sudoers文件中为用户单独创建一条规则。
使用visudo打开文件后,找到 ## Allow root to run any commands anywhere 这一部分,在其下方添加一行:
zhangsan ALL=(ALL) ALL 这条规则的含义是:
zhangsan:授权给的用户名。- 第一个
ALL:规则适用于所有主机。 (ALL):允许以任何用户的身份执行命令。- 第二个
ALL:允许执行所有命令。
保存并退出。

无需密码验证的sudo权限(谨慎使用)
在某些自动化脚本或特定场景下,你可能希望用户执行sudo时不需要输入密码,这非常方便,但也带来了更高的安全风险,请务必在明确需求的前提下使用。
只需在规则后面添加 NOPASSWD: 关键字:
zhangsan ALL=(ALL) NOPASSWD: ALL 验证配置是否成功
完成以上步骤后,权限是立即生效的,我们来验证一下配置是否成功。
切换至普通用户进行测试:
切换到刚刚被授权的用户 zhangsan:
su - zhangsan
执行sudo命令测试:
尝试执行一个需要root权限的命令,例如查看 /root 目录,这个目录默认只有root用户可以访问:
sudo ls -l /root
如果系统提示你输入密码,请输入当前用户 zhangsan 的登录密码(不是root密码),密码输入正确后,如果成功列出了 /root 目录下的内容,那么恭喜你,sudo权限已经配置成功!
可能遇到的问题与解决思路
- “用户不在sudoers文件中”错误:这明确表示你添加的用户或规则未被系统识别,请仔细检查你在
/etc/sudoers文件中的拼写是否正确,以及是否使用了正确的visudo命令进行保存。 - 权限错误:即使使用了
sudo,也可能遇到 “Permission denied”,这通常是因为你执行的命令本身需要更高权限,或者你试图访问的文件/目录权限设置极为严格,请再次确认你的sudo规则是否正确,特别是(ALL)部分,确保了可以以root身份运行。
为合适的团队成员配置sudo权限,是Linux系统管理中一项基础且至关重要的安全工作,它避免了多人共享root密码带来的混乱与风险,并且所有通过sudo执行的操作都会被详细记录在系统日志中,便于事后审计和故障排查,遵循“按需授权”的原则,只赋予完成工作所必需的最小权限,是构建安全服务器环境的基石,从今天起,告别鲁莽的root直接操作,拥抱更安全、更规范的sudo管理方式吧。
