我正在处理 sudoers 文件。以下陈述的正确方法是什么?
零个或多个命令行选项,每个选项都以单破折号或双破折号开头,后跟一个或多个字符。我希望有效地允许长命令行选项和短命令行选项,总共零个或多个,例如 -v --variable -vb 等。
我相信以下是适当的 perl 正则表达式。
... <binary> (?:-{1,2}\w+)* <file>
我不确定如何将其转换为与 bash /sudoers 兼容的内容。
答案1
该sudoers
文件允许使用 shell 样式的通配符,但不支持正则表达式。有关详细信息,请参阅能请参阅“通配符”部分的Sudoers 手册。
在这种情况下,最好的办法就是编写一个脚本,使用正则表达式验证输入,然后以错误终止(如果无效)或将输入传递给指定的二进制文件(如果有效)。您可以使用 perl、Ruby、Python 或任何您最喜欢的语言轻松编写这样的脚本。让您的 sudoers 访问脚本而不是二进制文件。