限制用户运行特定的 sudo 命令

限制用户运行特定的 sudo 命令

这是一个脚本:

#!/bin/bash

user='my_sudo_user'
sudo -lU $user

我试图限制我non_sudo_user运行这个脚本的能力。使用visudo,我尝试过:

non_sudo_user ALL=(ALL) NOPASSWD: /bin/bash /full/path/script.sh
non_sudo_user ALL=(ALL) NOPASSWD: /usr/bin/sudo -lU
non_sudo_user ALL=(ALL) NOPASSWD: /usr/bin/sudo -lU *   # unsafe

它们都不起作用。我收到这条消息:

Sorry, user non_sudo_user is not allowed to execute 'list' as my_sudo_user on host123.

但我在sudoer文件中提供了 -l 。

我能做什么?顺便说一下,这是 Ubuntu。

编辑

我实际上运行这个脚本:

for u in $(awk -F'[/:]' '{if($3>=1000&&$3!=65534) print $1}' /etc/passwd); do sudo -lU $u ; done

所以我事先没有明确的用户名单。

答案1

编辑: OP 提供更多信息后完成重写。

在 /etc/sudoers 中指定用户具有执行权限/usr/sbin/sudo

这将允许他们执行 sudo 命令,但他们无权运行任何其他命令。

我刚刚在 CentOS-7.3.1611 上使用全新的用户帐户进行了测试:

testusr ALL=(ALL) NOPASSWD: /usr/sbin/sudo

我不知道在允许的命令列表中指定 sudo 命令本身是否有任何安全隐患 在生产环境中依赖它之前,请先检查和测试...它可能不安全。

答案2

我认为只有当您可以作为(全部)该用户运行任意命令时,您才能列出其他用户可以运行的命令。所以与其...

在 sudoers 中:

non_sudo_user ALL=(ALL) NOPASSWD: /usr/bin/sudo -l

并列出它们,运行为non_sudo_user

for target_user in user1 user2 user3... ; do
    sudo -u "$target_user" sudo -l
done

相关内容