Como especificar expressões regulares para argumentos de comando em sudoers

5

sudoers(5) manpage diz que caracteres curinga no estilo do shell (também conhecidos como caracteres meta ou glob) pode ser usado em argumentos de linha de comando no arquivo sudoers. Eles são * , ? , [...] e [!...] .

Minha ideia é usar algumas coisas no estilo de expressão regular, como /path/to/command -a[v]* , para significar command -a , command -av e command -avvv...v em uma linha (para tais comandos que alteram a sua verbosidade dependendo do número de -v argumentos, por exemplo, tcpdump ). Mas isso não funciona.

Existe alguma maneira de fazer isso, não adicionando /path/to/command -a -v várias vezes em sudoers com um número diferente de -v em cada um?

    
por AntonioK 18.03.2015 / 14:59

1 resposta

0

A página sudoers man é bastante clara sobre não suportar isso. Comentários na página man sugerem que ele usa a função fnmatch do sistema para fazer a correspondência. Em sistemas baseados em linux / glibc, o fnmatch pode usar um formato de globbing estendido com expressividade semelhante a expressões regulares, mas com uma sintaxe diferente.

Portanto, se você for capaz de reconstruir o sudo para suportar a sintaxe estendida, encontre o lugar onde o sudo chama fnmatch, adicionando FNM_EXTMATCH ao argumento flags. e #define _GNU_SOURCE para o topo do arquivo que o chama.

Claro que, se você fizer isso, você estará executando a sua própria versão corrigida de um binário suid, portanto tenha cuidado.

    
por 07.09.2018 / 21:05

Tags