¿Cómo se debe usar sudo?

24

He intentado configurar sudoantes, pero no he tenido demasiada suerte. ¿Cómo es diferente de su -l -c "x"? Parece que a través del archivo de configuración, uno puede hacerlo para que un usuario solo pueda tener acceso a ciertos comandos y más. Siempre pensé sudoen una forma de alinear un comando como otro usuario o grupo. Dado que las distribuciones como Ubuntu y Mint lo hacen fácil al dar al usuario principal un acceso fácil a la raíz a través de una contraseña, no estoy realmente seguro de cuál es su uso previsto.

¿Cómo agrego un usuario al archivo sudo, dándoles derechos para ejecutar solo ciertos comandos en la raíz? Tampoco quiero abrir ningún agujero de seguridad.

Naftuli Kay
fuente

Respuestas:

16

Para la operación básica, ejecutar comandos como root, la diferencia más visible entre sudo y su es que sudo requiere la contraseña del usuario llamante (es decir, su contraseña) mientras que su requiere la contraseña del usuario objetivo (es decir, la contraseña de root). Las implicaciones de seguridad se han discutido ampliamente en una pregunta anterior: ¿Cuál es la forma más segura de obtener privilegios de root: sudo, su o login? .

Sudo tiene características adicionales más allá de su. En particular, una vez que tenga la contraseña de un usuario, puede ejecutar cualquier comando como ese usuario. Por otro lado, sudo se puede configurar para que el usuario que lo invoca solo pueda ejecutar comandos específicos como otro usuario. Esto es posible porque sudo no requiere ninguna autenticación (aparte de confirmar que usted es usted escribiendo su contraseña, pero eso es sutilmente diferente de autenticar a su usuario para una tarea).

Cambia la configuración de sudo ejecutando el visudocomando como root (nunca edite la configuración directamente). Asegúrese de que la variable de entorno EDITORo VISUALesté configurada en su editor favorito o puede obtener un editor desconocido. La sudoerspágina de manual es un poco breve pero tiene ejemplos. Para permitir que el usuario bobejecute /bin/foo(con cualquier número de argumentos) y /bin/bar --safe(pero no con ningún otro argumento) como root, use las siguientes líneas:

bob ALL = (root) /bin/foo
bob ALL = (root) /bin/bar --safe
Gilles 'SO- deja de ser malvado'
fuente
2
sudoes un invento increíble
tshepang
1
Si sudo requiere la contraseña de root o la contraseña de root depende de la configuración. Se puede configurar de cualquier manera.
Jonathan M Davis
3
@Tshepang Amén, hermano. Si tuviera que liberar la contraseña de root y explicar a los técnicos de soporte acerca de cómo SU y no hacer / nada / que apache2ctl gracefulno sea , creo que preferiría cortarme las muñecas y terminar de una vez.
Shadur
6

La mayor diferencia es que con sudousted no necesita la contraseña de root para ejecutar un comando como root, como lo haría para su. Necesita la contraseña de root para agregar a alguien al sudoersarchivo, pero a partir de entonces esa persona puede ejecutar todo o algo (si lo ha restringido) como root sin requerir una contraseña adicional.

La otra diferencia es, como ha notado, que sudopermite un control mucho más preciso sobre exactamente qué comandos se pueden ejecutar.

Para detalles del formato del sudoersarchivo ejecutado man sudoers. Encontrarás ejemplos de permitir que solo ciertos comandos se ejecuten como root. La estructura básica de cada línea es:

user_list host_list = cmd_list

cmd_list puede incluir detalles de a qué usuario se le permite cambiar al usuario real. Por ejemplo, puede permitir que un webmaster cambie a wwwroot para reiniciar apache pero no a root. También puede incluir otras opciones, como si se requiere la contraseña de los usuarios antes de cambiar (este es el valor predeterminado).

Una línea de ejemplo podría ser:

joe  ALL=(ALL) ALL

lo que significa: dejar que Joe ejecute cualquier comando en cualquier host como cualquier usuario. Una línea más apretada podría ser:

joe  ALL=(operator) /usr/local/ops/

lo que significa: dejar que Joe ejecute cualquier comando en el directorio / usr / local / ops como el "operador" del usuario.

Hay muchos ejemplos al final de la página de manual de sudoers.

Deberías editar /etc/sudoerscon el comando visudo. Esto verifica que el archivo sea legal y ayuda a evitar que lo rompa accidentalmente.

Dave Jennings
fuente
El hecho de que se requiera o no una contraseña cuando se usa sudo depende completamente de cómo sudoersesté configurado el archivo. Se puede configurar para requerir una contraseña o configurar para no requerir una contraseña.
Jonathan M Davis
Prácticas comunes adicionales para evitar cambiar el archivo principal / etc / sudoers porque IDS lo mira y porque su formato puede arruinar su día: use fragmentos de sudo como archivos separados en /etc/sudoers.d. El uso del grupo de rueda para personas permitía cualquier comando.
bbaassssiiee
2

Además de las otras respuestas, sudo proporciona funciones de registro para que pueda realizar un seguimiento de qué comandos se ejecutaron y por quién. Esto no es por motivos de seguridad, ya que un usuario malintencionado que obtiene acceso a sudo puede borrar el registro. Sin embargo, es muy útil averiguar exactamente lo que usted o algún otro administrador hizo con ojos cansados ​​a las 2 am la semana pasada.

JRW
fuente
3
Es por motivos de seguridad porque sudo admite el registro en el syslog que, en cualquier configuración importante relacionada con la seguridad, se configurará para iniciar sesión en una máquina remota separada, de modo que si un sistema se ve comprometido, los registros no pueden verse afectados.
Arrowmaster
El atributo de archivo de solo
agregar