授予特定命令和任何标志设置的 sudo 访问权限 (RedHat)

授予特定命令和任何标志设置的 sudo 访问权限 (RedHat)

如何使用标志授予特定命令的 sudo 访问权限。

例如,我请求以下命令的 sudo 访问权限:

sudo /usr/bin/su - wassa /usr/was7/profiles/dmgr/bin/wsadmin.sh

我可以运行上述命令,但无法运行以下任何命令(它会提示输入密码然后说我没有所需的访问权限):

sudo /usr/bin/su - wassa /usr/was7/profiles/dmgr/bin/wsadmin.sh -lang jython -c "AdminApplication.stopApplicationOnCluster('app', '$APP_CLUSTER')"
sudo /usr/bin/su - wassa /usr/was7/profiles/dmgr/bin/wsadmin.sh -lang jython -c "AdminApplication.stopApplicationOnCluster('app', '$APP_CLUSTER')"

我知道我可以轻松地单独请求每个命令(由于公司政策,我可能不得不这样做),但我想避免这样做,以防我需要进行任何脚本更改,我不想提交另一张票并等待。

答案1

sudo允许 shell 样式通配符(又名元字符或全局字符)用于主机名、路径名和命令行参数在里面sudoers文件。

*匹配零个或多个字符的任意集合。

? 匹配任意单个字符。

[...] 匹配指定范围内的任意字符。

[!...] 匹配不在指定范围内的任意字符。

\x 对于任何字符“x”,计算结果为“x”。这用于转​​义特殊字符,例如:‘*’, ‘?’, ‘[’, and ‘]’

因此,您可以定义类似这样的内容,以允许带或不带参数的命令:

leeman24 ALL=(wassa) /usr/was7/profiles/dmgr/bin/wsadmin.sh, /usr/was7/profiles/dmgr/bin/wsadmin.sh -*

相关内容