sudo: Como permitir apenas um argumento para um comando?

8

Quero adicionar uma entrada aos meus suoders para permitir que um usuário execute um comando com exatamente um argumento não opcional.

# tail -1 /etc/sudoers
ALL     ALL = (:tool) NOPASSWD: /bin/echo [a-z]*
$ sudo -g tool /bin/echo abc def
abc def
$ sudo -g tool /bin/echo -abc def
[sudo] password for user: 

Posso fazer isso usando o sudoers sytnax? Ou preciso criar um script auxiliar?

Elrond
fonte
é um argumento definido como sempre -abc? ou pode variar?
Mike
A [a-z]*já é o argumento que quero. Portanto, é um argumento variável. (Eu uso / bin / echo apenas para teste.) #
1100 Elrond

Respostas:

8

Que eu saiba, você não pode passar argumentos que não sejam de comando para o sudo se esse argumento variar.

Você pode especificar algo como isto:

users ALL=(ALL) NOPASSWD: /usr/bin/tail /some/file

Isso permitiria ao usuário finalizar alguns arquivos, mas não outros arquivos.

Se você precisar passar uma variável, recomendo um script de wrapper.

Aqui está um exemplo de um wrapper rsync:

https://sites.google.com/site/beingroot/articles/useful-scripts/wrapper-script-to-use-rsync-via-sudo

Se você pesquisar no google por invólucros sudo, poderá encontrar muitos outros exemplos.

Certifique-se de codificar todos os caminhos e executar verificações de integridade na entrada se o usuário não puder ser confiável.

jeffatrackaid
fonte
2
Deve ter verificações de sanidade de qualquer maneira. Não acredite em ninguém! [/ paranóico]
Nathan C