答案:通过安装sudo并配置/etc/sudoers文件,使用visudo工具为用户或组设置细粒度权限,如指定命令范围、免密执行及按组授权,同时遵循最小权限原则,避免ALL=ALL,使用绝对路径,禁用危险命令,启用日志审计,并定期审查权限,确保安全与可用性平衡。

在Linux系统中,sudo 是管理权限的核心机制,允许可信用户以超级用户或其他用户身份执行特定命令。配置多用户 sudo 权限并实现细粒度授权,不仅能提升系统安全性,还能满足团队协作中的权限分离需求。
一、确认sudo服务已安装并启用
大多数现代Linux发行版默认安装sudo,但可手动确认:
# 检查是否安装sudodpkg -l | grep sudo # Debian/Ubuntu
rpm -qa | grep sudo # RHEL/CentOS
若未安装,使用包管理器安装:
apt install sudo # Ubuntu/Debianyum install sudo # CentOS 7
dnf install sudo # CentOS 8+/RHEL/Fedora
确保目标用户已被加入sudo组(Debian系)或wheel组(Red Hat系):
usermod -aG sudo username # Ubuntu/Debianusermod -aG wheel username # RHEL/CentOS
二、编辑sudoers文件进行细粒度授权
直接修改 /etc/sudoers 可能导致语法错误引发权限问题,应使用专用工具 visudo:
visudo该命令会打开 /etc/sudoers 文件,并在保存时检查语法正确性。
常见授权语法格式:
用户名 主机=(目标用户:目标组) 命令列表示例场景与配置:
- 允许用户 tom 在本机以 root 执行 systemctl 相关命令: tom ALL=(root) /bin/systemctl start *, /bin/systemctl stop *, /bin/systemctl restart *
- 允许用户 jerry 执行所有命令,无需密码: jerry ALL=(ALL:ALL) NOPASSWD: ALL
- 为运维组 ops 授予重启网络和查看日志的权限: %ops ALL=(root) /sbin/restart-network, /usr/bin/tail /var/log/*.log
三、按组统一管理权限
通过创建自定义用户组集中管理权限,更便于维护:
groupadd sysadminusermod -aG sysadmin alice
usermod -aG sysadmin bob
在 /etc/sudoers 中添加组权限:
%sysadmin ALL=(ALL) /usr/bin/systemctl, /usr/sbin/useradd, /usr/sbin/userdel这样组内成员即可执行指定命令,新增用户只需加入组即可继承权限。
四、限制权限范围与安全建议
精细控制是安全的关键。避免使用 ALL=ALL,应明确命令路径与参数限制。
- 使用绝对路径:防止 PATH 污染导致命令替换
- 禁止危险命令:如 /bin/sh、/usr/bin/python 等可能提权的交互式工具
- 启用日志审计:sudo 默认记录到 /var/log/auth.log 或 /var/log/secure
- 定期审查授权:通过 grep "username" /etc/sudoers 检查个人权限
可结合 sudo -l 查看当前用户被授予的命令:
sudo -l基本上就这些。合理划分用户职责,用最小权限原则配置sudo规则,能有效降低误操作和安全风险。配置完成后务必测试验证,确保既可用又安全。









