Linux 权限管理进阶:sudo 实战技巧详解
今天分享一下sudo权限管理。
sudo(superuser do)允许普通用户在不切换到 root 账户的前提下,以其他用户(默认是 root)的身份运行命令。相比直接使用 su,sudo 提供了更细粒度、更安全的权限控制。
2. sudo 的基本命令用法复制
sudo command # 以 root 权限执行命令
sudo -u 命令 # 以指定用户身份执行命令
sudo -i # 获取一个 root 登录 shell
sudo -l # 查看当前用户被授权执行的命令列表1.2.3.4.
所有 sudo 的核心配置文件是 /etc/sudoers,但你不应该直接编辑它。推荐使用 visudo 来避免配置错误导致系统无法使用 sudo。
复制
visudo1.
sudoers 文件的基本语法:
复制
<用户> <主机>= (<可切换身份>) <命令列表>1.
例如:
复制
liyb ALL=(ALL) NOPASSWD: /usr/vibin/systemctl restart nginx1.
含义是:用户 liyb 可以在所有主机上,以任意用户身份,无需输入密码,执行 /bin/systemctl restart nginx。
4. 实战案例(1) 限制用户只运行特定命令:
复制
liyb ALL=(ALL) /usr/bin/systemctl restart nginx1.
效果:用户 bob 只能使用 sudo 重启 nginx,不能用它来执行其他命令。
(2) 多个用户共享相同权限:
复制
Cmnd_Alias RESTART_CMDS = /sbin/reboot, /usr/bin/systemctl restart nginx
User_Alias ADMINS = alice, liyb
ADMINS ALL=(ALL) NOPASSWD: RESTART_CMDS1.2.3.4.
用户组 ADMINS 成员可以无需密码执行 RESTART_CMDS 里的命令。
(3) 开发人员编辑特定配置文件
复制
dev ALL=(ALL) NOPASSWD: /usr/bin/vi /etc/nginx/nginx.conf1.
开发人员只能编辑 nginx 配置文件,而无法访问其他系统文件。
(4) 将liyb设为root权限
复制
liyb ALL=(ALL) ALL1.
如果设置成这样,代表liyb用户可以执行任何权限,不过需要输入密码才能执行。
还有一种办法就是将liyb用户加入wheel组。
所有通过 sudo 执行的命令都会被记录,方便日后审计和追踪:
Ubuntu/Debian 系统:/var/log/auth.logCentOS/RHEL 系统:/var/log/secure日志信息包含用户名、执行命令、终端信息、是否成功等关键信息:
阅读剩余
THE END