Linux

授予特定命令和任何標誌集的 sudo 訪問權限 (RedHat)

  • March 9, 2015

如何為帶有標誌的特定命令授予 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')"

我知道我可以輕鬆地單獨請求每個命令(由於公司的政策,我可能不得不這樣做),但我想避免它,以防我需要進行任何腳本更改,我不想送出另一張票等待。

sudo允許在文件中的主機名、路徑名和命令行參數中使用shell 樣式的萬用字元(又名元或 glob 字元) 。sudoers

*匹配任何零個或多個字元集。

? 匹配任何單個字元。

[...] 匹配指定範圍內的任何字元。

[!...] 匹配不在指定範圍內的任何字元。

\x 對於任何字元“x”,計算結果為“x”。這用於轉義特殊字元,例如:‘*’, ‘?’, ‘[’, and ‘]’.

因此,您可以按照以下方式定義一些內容,以允許帶有或不帶有參數的命令:

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

引用自:https://serverfault.com/questions/674067