我们在 RHEL6.6 上使用 devtoolset-3。用户运行 scl enable devtoolset-3 bash 以便访问包含所有 devtoolset-3 工具的环境。
我想允许用户以 root 身份运行命令的子集。执行此操作的正常方法是将 sudo 与 sudoers 文件一起使用,该文件包含命令别名以及您希望用户能够以 root 身份执行的命令列表。
我尝试过各种组合,但无法想出正确的食谱。
以下是我尝试过的一些事情:
尝试1:
我创建一个命令别名:
Cmnd_Alias ALLOWEDCOMMANDS=/usr/bin/pkill <process name>
然后允许 myGroup 的成员无需密码即可执行这些命令
%myGroup ALL=(ALL) NOPASSWD:SETENT: ALLOWEDCOMMANDS
通过该设置,如果我尝试运行 sudo pkill 我得到:
抱歉,不允许用户以 root 身份执行 '/usr/bin/scl enable devtoolset-3 'pkill' '''
尝试2:
我修改了 sudoers 文件以获得完整的命令:
Cmnd_Alias ALLOWEDCOMMANDS=/usr/bin/scl enable devtoolset-3 pkill <some_process_name>
但我仍然遇到同样的错误。
尝试3:
如果我将其列为/usr/bin/scl
允许的命令,则允许用户在启用 scl 的环境中以 root 身份执行任何命令。
谁能想出一种可靠的方法来允许用户在启用 scl 的 shell 中运行特定的命令列表?
答案1
以防万一其他人遇到这个问题,我想我应该在这里发布从红帽支持那里收到的答案。
事实证明,devtoolset-3 版本的 sudo 不能很好地发挥您在 /etc/sudoers 中指定的命令别名的格式。
在启用 devtoolset-3 的 shell 中,您可以使用别名 sudo=/usr/bin/sudo。然后您的用户将运行标准 sudo ,它可以正确处理命令别名。
使用该别名后,一切都会按预期进行。