如何使用标志授予特定命令的 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 -*