管理sudo权限
Contents
把账号加到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
sudo
command.
括号中的 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