今天分享一下sudo权限管理
1 什么是 sudo
?
sudo
(superuser do)允许普通用户在不切换到 root 账户的前提下,以其他用户(默认是 root)的身份运行命令。相比直接使用 su
,sudo
提供了更细粒度、更安全的权限控制。
2 sudo 的基本命令用法
sudo command # 以 root 权限执行命令
sudo -u 命令 # 以指定用户身份执行命令
sudo -i # 获取一个 root 登录 shell
sudo -l # 查看当前用户被授权执行的命令列表
3 sudo 权限配置
所有 sudo 的核心配置文件是 /etc/sudoers
,但你不应该直接编辑它。推荐使用 visudo
来避免配置错误导致系统无法使用 sudo。
visudo
sudoers 文件的基本语法:
<用户> <主机>= (<可切换身份>) <命令列表>
例如:
liyb ALL=(ALL) NOPASSWD: usr/vibin/systemctl restart nginx
含义是:用户 liyb
可以在所有主机上,以任意用户身份,无需输入密码,执行 /bin/systemctl restart nginx
。
4 实战案例
4.1 限制用户只运行特定命令
liyb ALL=(ALL) usr/bin/systemctl restart nginx
效果:用户 bob
只能使用 sudo
重启 nginx,不能用它来执行其他命令。
4.2 多个用户共享相同权限
Cmnd_Alias RESTART_CMDS = sbin/reboot, usr/bin/systemctl restart nginx
User_Alias ADMINS = alice, liyb
ADMINS ALL=(ALL) NOPASSWD: RESTART_CMDS
用户组 ADMINS
成员可以无需密码执行 RESTART_CMDS
里的命令。
4.3 开发人员编辑特定配置文件
dev ALL=(ALL) NOPASSWD: usr/bin/vi /etc/nginx/nginx.conf
开发人员只能编辑 nginx 配置文件,而无法访问其他系统文件。
4.4 4将liyb设为root权限
liyb ALL=(ALL) ALL
如果设置成这样,代表liyb用户可以执行任何权限,不过需要输入密码才能执行。
还有一种办法就是将liyb
用户加入wheel
组。

5 sudo 日志与审计
所有通过 sudo
执行的命令都会被记录,方便日后审计和追踪:
Ubuntu/Debian 系统: /var/log/auth.logCentOS/RHEL 系统: /var/log/secure
日志信息包含用户名、执行命令、终端信息、是否成功等关键信息:

6 安全建议与最佳实践
最小权限原则:只授权用户执行他们所需的最少命令 避免通配符(如 bin/*):容易被滥用 谨慎使用 NOPASSWD:虽然方便,但可能成为安全隐患 定期审计授权规则:用户、命令需求可能会变化
往期精彩文章:
文章转载自运维李哥不背锅,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




