管理sudo权限
目录
把账号加到sudo组里面
Debian/Ubuntu
运行以下命令,添加用户到sudo组中
sudo usermod -aG sudo username
# Verify the user is added to the `sudo` group
groups username
RHEL/CentOS/Rocky Linux
把用户添加到wheel组当中
usermod -aG wheel username
# Verify the user is added to the `wheel` group:
groups username
检查权限
切换到这个用户下
sudo whoami
输出应该是root
指定权限
通过visudo来修改sudo用户的权限
只允许用户执行某一个命令
在配置文件中加入类似这样的一行
username ALL=(ALL) NOPASSWD: /usr/local/bin/manage_user.sh
授予全部权限
username ALL=(ALL) NOPASSWD: ALL
ALL=(ALL): 全部权限.- 第三个
ALL:全部命令 NOPASSWD: 使用sudo的时候不需要密码
第一个 ALL (主机)
第一部分的 ALL 表示用户可以从任何主机运行指定的命令。可以替换为特定的主机名或 IP 地址。
示例
username myserver=(ALL) ALL
myserver: 只允许用户在主机名为myserver的机器上使用sudo。- 如果是多主机环境,可以指定多个主机:
username host1,host2=(ALL) ALL - 支持使用网络地址:
username 192.168.1.0/24=(ALL) ALL
比如可以限定用户只能通过堡垒机执行sudo
第二个ALL(目标用户)
这里需要特别说明sudo的含义是switch user do
Another way to switch users or execute commands as others is to use the
sudocommand.
括号中的 ALL 表示用户可以以任何用户身份(包括 root)运行命令。可以替换为特定用户或用户组。
示例
- 特定用户:
username ALL=(root) ALL只允许用户以root身份运行命令。 - 特定用户组(以
%开头表示组名):username ALL=(%admin) ALL允许用户以admin组中的任何用户身份运行命令。 - 仅允许自己:
username ALL=(username) ALL只允许用户以自己的身份运行命令(无root权限)。
第二个ALL(命令列表)
指定单个命令:username ALL=(ALL) /usr/bin/systemctl
指定多个命令:username ALL=(ALL) /usr/bin/systemctl, /usr/bin/journalctl
禁止命令:
可以结合 ! 来禁止某些命令:
username ALL=(ALL) ALL, !/usr/bin/rm