Como especificar argumentos de comando em sudoers? Como pano de fundo, o aws
comando é na verdade um gateway para vários subsistemas e quero restringir o usuário a executar apenasaws s3 cp ...any other args...
Quando tento o seguinte em /etc/sudoers
Cmnd_Alias AWSS3_CMD = /usr/local/bin/aws s3 cp, /usr/local/aws/bin/aws s3 cp
gbt1 ALL=(gbt-ops) NOPASSWD: AWSS3_CMD
Infelizmente, o shell solicita senha
$ sudo -u gbt-ops aws s3 cp helloworld s3://my-bucket/hw.1
gbt-ops's password:
Se eu remover o comando args em Cmnd_Alias, ele fluirá conforme desejado (sem solicitação de senha), mas a autorização será muito ampla. Portanto, qual é a maneira correta de restringir apenas a certos tipos de invocações de comando .
Cmnd_Alias AWSS3_CMD = /usr/local/bin/aws, /usr/local/aws/bin/aws
Então
$ sudo -u gbt-ops aws s3 cp helloworld s3://my-bucket/hw.1
...happy
Muito obrigado.
Respostas:
Você não usou nenhum curinga, mas forneceu dois argumentos. Portanto,
sudo
procura comandos exatamente como escritos (exceto pesquisa de caminho) (deman 5 sudoers
):Tente algo como:
Observe que:
Portanto, apenas um curinga é necessário por comando.
fonte
/usr/local/bin/aws s3 cp
em sudoers, é mais seguro substituí-lo por um script (somente gravável por raiz).O mesmo que @muru, mas para quem gosta de exemplo completo de trabalho:
Enquanto
/sbin/cmd1
,/sbin/cmd2
pode haver outros comandos.O objetivo de
ECHO_CMD
é apresentar quesudo echo X A
solicitará a senha, enquantosudo echo A X
não estiver , e permitir que você ganhe confiança por meio de um experimento tão simples.(Supunha-se que o eco se encaixa
/bin/echo
, para verificar onde ele está no seu sistema, tentewhereis echo
)fonte
/bin/echo
binário, mas a maioria dos shells também possui uma função internaecho
que será usada no lugar desse binário se você não fornecer o caminho completo.