¿Cómo especifico argumentos de comando en sudoers? Como fondo, el awscomando es en realidad una puerta de entrada a un montón de subsistemas y quiero restringir al usuario para que solo se ejecuteaws s3 cp ...any other args...
Cuando intento lo siguiente en /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
El shell lamentablemente solicita contraseña
$ sudo -u gbt-ops aws s3 cp helloworld s3://my-bucket/hw.1
gbt-ops's password:
Si elimino el comando args en Cmnd_Alias, fluye según lo deseado (sin solicitud de contraseña), pero la autorización es demasiado amplia. Entonces, ¿cuál es la forma correcta de restringir solo a ciertos tipos de invocaciones de comandos ?
Cmnd_Alias AWSS3_CMD = /usr/local/bin/aws, /usr/local/aws/bin/aws
Luego
$ sudo -u gbt-ops aws s3 cp helloworld s3://my-bucket/hw.1
...happy
Muchas gracias.

Respuestas:
No ha utilizado ningún comodín, pero ha proporcionado dos argumentos. Por lo tanto,
sudobusca los comandos exactamente como están escritos (excepto la búsqueda de ruta) (desdeman 5 sudoers):Intenta algo como:
Tenga en cuenta que:
Por lo tanto, solo se necesita un comodín por comando.
fuente
/usr/local/bin/aws s3 cpen sudoers, es más seguro reemplazar eso con un script (solo escribible por root).Lo mismo que @muru, pero para aquellos que les gusta el ejemplo de trabajo completo:
Mientras
/sbin/cmd1,/sbin/cmd2puede ser cualquier otro comando.El propósito de
ECHO_CMDes presentar quesudo echo X Asolicitará una frase de contraseña, mientras quesudo echo A Xno, y permitirle ganar confianza a través de un experimento tan simple.(Se asumió que el eco se encuentra
/bin/echo, para verificar dónde está en su sistema, intentewhereis echo)fuente
/bin/echobinarios, pero la mayoría de los shells también tienen una función incorporadaechoque se usará en lugar de este binario si no proporciona la ruta completa.