Dado que Ubuntu deshabilita la cuenta raíz de forma predeterminada, ¿por qué no deshabilitar también el acceso al shell raíz?

12

Los valores predeterminados actuales para la cuenta de root en /etc/passwdIS root:x:0:0:root:/root:/bin/bash.

¿Por qué no configurarlo root:x:0:0:root:/root:/usr/sbin/nologin?

loongyh
fuente
77
Para que puedas hacer sudo -i?
AlexP
12
"deshabilita la cuenta raíz" es una descripción un poco floja: lo que realmente deshabilita es la autenticación basada en contraseña de la cuenta raíz
steeldriver
1
@AlexP, de hecho, lo acabo de probar, sudo -i no funciona con la raíz establecida en / usr / sbin / nologin.
loongyh

Respuestas:

19

Si ese fuera el caso, solo podría ejecutar comandos con sudouno a la vez, pero no podría iniciar un shell raíz. Un shell raíz es conveniente en muchos casos, por ejemplo, si planea ejecutar múltiples comandos como root en una fila.

Específicamente, no se pudo ejecutar sudo -i, como señaló AlexP. De man sudo:

-i, --login    Run the shell specified by the target user's password database entry as a login shell.
Alberto Santini
fuente
77
¿No sudo /bin/bashfunciona para hacer eso?
Federico Poloni
55
@FedericoPoloni que sería más como sudo -screo (un shell de root, pero no un shell de inicio de sesión de root ). Sin embargo, es un buen punto, y de hecho sudo -sparece funcionar incluso cuando la cáscara de la raíz lo está/usr/sbin/nologin
steeldriver
1
Se puede desactivar -i, -s, /bin/bash, y así sucesivamente con sólo permitiendo una lista blanca de comandos, consulte la documentación para el archivo sudoers. Esto es tan fino que, por ejemplo, es posible permitir que los usuarios se ejecuten /etc/init.d/someservice restartcomo root sin permitir que se ejecuten /etc/init.d/someservice stop. Pero el valor predeterminado de ubuntu es simplemente no establecer una contraseña rooty permitir que los usuarios administradores hagan todo con sudo. Probablemente la razón es a) más de un usuario administrador yb) El usuario administrador no necesita recordar una segunda contraseña para la cuenta raíz.
allo
8

Además de la respuesta de sudo de Alberto Santini, hay otra respuesta (mucho mejor). Si el shell de root está configurado en algo que no es un shell, el arranque de un solo usuario no funciona. Hay recuperación suloginpara cosas como el shell no existente o el shell completamente roto, pero no funcionará si el shell parece ser un shell válido pero en realidad no es un shell.

Todavía puede sudoobtener directamente un shell especificando el shell para sudoque ni siquiera sea una buena protección.

Joshua
fuente