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

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

往期精彩文章: