13 votos

Permitir complejo sudo comando en Linux Debian

Debo permitir que un comando específico en un Debian Linux para un único usuario. He intentado esto en la /etc/sudoers archivo:

# User privilege specification
zabbix  ALL=NOPASSWD: /usr/bin/apt-get --print-uris -qq -y upgrade 2>/dev/null |awk '{print $2}' | wc | awk '{print $1}'

Esto no funciona como se esperaba. Si ejecuto el comando como usuario zabbix con sudo, me pide la contraseña (aunque he especificado el NOPASSWD opción).

Sin embargo, esto funciona:

# User privilege specification
zabbix  ALL=NOPASSWD: /usr/bin/apt-get

Pero tiene el inconveniente de que todos los subcomandos de apt-get son allowd. Es allí una manera de cómo puedo solucionar esto para permitir que solo un comando específico?

25voto

katit Puntos 130

Usted probablemente está cayendo mal de la forma en que la redirección interactúa con sudo. La redirección se realiza en el usuario que llama y no el privilegio de usuario. Probablemente sería más fácil para ti que te envuelva de comandos en una secuencia de comandos y, a continuación, permitir que el usuario zabbix para ejecutar ese script por ejemplo,

#!/bin/bash
/usr/bin/apt-get --print-uris -qq -y upgrade 2>/dev/null |awk '{print $2}' | wc | awk '{print $1}'

el conjunto de sudoers como

zabbix  ALL=NOPASSWD: /path/to/script

Ahora bien, el script será ejecutado como usuario con privilegios y no sólo el particular apt-get. No obstante, asegúrese de que el usuario zabbix no se puede escribir la secuencia de comandos.

10voto

user606723 Puntos 417

No estoy de acuerdo con lain. Si bien funciona, no necesita awk a ejecutar como root. Yo no estaría cómodo con esto, ya que usted podría ser capaz de atacar awk de alguna manera. Se trata de un intérprete de lenguaje de programación, después de todo.

Cuando uno corre sudo /usr/bin/apt-get --print-uris -qq -y upgrade 2>/dev/null |awk '{print $2}' | wc | awk '{print $1}', están ejecutando sudo /usr/bin/apt-get --print-uris -qq -y upgrade y, a continuación, tuberías o redirigir como el usuario que llama.

Intente esto: zabbix ALL=NOPASSWD: /usr/bin/apt-get --print-uris -qq -y upgrade

Por el camino, no hay nada de malo con poner esto en un script como lain ¿y todavía se podía hacer eso. Sólo quiero evitar la ejecución de awk como root, si es posible.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: