Я работаю над файлом sudoers. Как правильно сформулировать следующее?
Ноль или более параметров командной строки, каждый из которых начинается с одинарного или двойного дефиса, за которым следует один или несколько символов. Я хочу эффективно разрешить как длинные, так и короткие параметры командной строки, нулевое или более общее, например -v --variable -vb и т. д.
Я считаю, что следующее будет подходящим регулярным выражением Perl.
... <binary> (?:-{1,2}\w+)* <file>
Я не совсем уверен, как это преобразовать во что-то совместимое с bash / sudoers.
В sudoers
file позволяет использовать подстановочные знаки в стиле оболочки, но не поддерживает регулярные выражения. Для специфики того, что вы жестяная банка сделать изначально, см. раздел «Подстановочные знаки» в Руководство Sudoers.
Лучшее, что можно сделать в этой ситуации, - просто написать сценарий, который проверяет ввод с помощью вашего регулярного выражения, а затем либо завершает работу с ошибкой (если недопустим), либо передает ввод в указанный двоичный файл (если он действителен). Вы можете легко написать такой скрипт, используя Perl, Ruby, Python или что угодно, что вам больше всего нравится. Предоставьте своим sudoers доступ к сценарию вместо двоичного файла.