Sudo
sudoers 文件的多個參數萬用字元匹配?
我試圖弄清楚如何在 sudoer 中創建一個條目,在該條目中我允許一組有限的參數,一些參數是可選的,但命令仍然非常嚴格。
有什麼簡單的方法可以限制這些限制嗎?
我希望使用者能夠使用 -w 標誌和可選值執行,但仍然具有限制性。我不想硬編碼 -w 選項的值。使用者應該能夠執行任何這些命令,其中 10 是任何數字。
/usr/bin/iptables -nvL * /usr/bin/iptables -w -nvL * /usr/bin/iptables -w 10 -nvL *
我想出了這4個條目。有沒有更好的方法來定義可選值?
username ALL=(root) NOPASSWD: /usr/bin/iptables -nvL * username ALL=(root) NOPASSWD: /usr/bin/iptables -w -nvL * username ALL=(root) NOPASSWD: /usr/bin/iptables -w [[\:digit\:]] -nvL * username ALL=(root) NOPASSWD: /usr/bin/iptables -w [[\:digit\:]][[\:digit\:]] -nvL *
我擔心:/
如果您不想使用萬用字元,例如 »?« 甚至 »*«,您必須準確地提供您想要的。
根據 sudoers 的手冊頁,它只提供通用萬用字元:
Wildcards sudo allows shell-style wildcards (aka meta or glob characters) to be used in host names, path names and command line arguments in the sudoers file. Wildcard matching is done via the glob(3) and fnmatch(3) functions as specified by IEEE Std 1003.1 (“POSIX.1”). * Matches any set of zero or more characters (including white space). ? Matches any single character (including white space). [...] Matches any character in the specified range. [!...] Matches any character not in the specified range. \x For any character ‘x’, evaluates to ‘x’. This is used to escape special characters such as: ‘*’, ‘?’, ‘[’, and ‘]’. NOTE THAT THESE ARE NOT REGULAR EXPRESSIONS. Unlike a regular expression there is no way to match one or more characters within a range.