Estou tentando permitir o comando find no sudoers, mas proibir find ... -exec rm
ou find ... -delete
.
Aqui está o que eu fiz:
$ sudo grep find /etc/sudoers.d/myUser
myUser ALL=!/usr/bin/find * -exec *
myUser ALL=!/usr/bin/find * -delete *
myUser ALL=/usr/bin/find *
$
Mas quando tento usar o comando find * -exec, ele funciona em vez de ser proibido:
$ sudo su - myUser
$ sudo find var/www/html/ ! -type d -exec ls -l {} +
lrwxrwxrwx 1 adn adn 23 Mar 21 2023 var/www/html/index.html -> index.nginx-debian.html
$
Como posso fazer isso?
(fonte:
man 5 sudoers
)No seu caso
myUser ALL=/usr/bin/find *
é a última correspondência quando você usa-exec
ou-delete
, então se aplica.Alterar a ordem:
Meus testes (com
sudo
1.9) indicam que você também precisapara proibir o uso de where
-delete
no final (uma linha similar para-exec
não é necessária, pois-exec
sempre precisa de mais argumentos). E se seufind
for projetado para funcionar com exatamente zero caminhos iniciais fornecidos, então você também precisa:Acho que você provavelmente quer proibir
-ok
também. Dependendo da implementação defind
, pode haver outros argumentos que você queira proibir:-execdir
,-okdir
,-fprint
,-fprintf
,-fprint0
, talvez mais.Todas essas linhas adicionais devem ser colocadas depois de
myUser ALL=/usr/bin/find *
.Uma falha na identificação de todos os argumentos e sintaxes que podem ser abusados obviamente resultará em uma falha de segurança.