Digamos que he ido y he hecho algo tonto, como usar 'chsh' para cambiar el shell del usuario raíz a una ruta de archivo incorrecta. Los inicios de sesión futuros en la cuenta raíz fallarán abruptamente, citando / bin / lo que no se encuentre, y lo reiniciarán en la pantalla de inicio de sesión. Salvo un modo de recuperación o insertando un LiveCD para editar / etc / passwd, ¿cuáles son mis opciones para recuperar mi sistema? Supongamos también (¿por diversión?) Que no hay otros usuarios en la rueda. Pensamientos?
23
Respuestas:
Al arrancar, agregue
init=/bin/bash
(o una ruta a cualquier otro shell funcional) a sus opciones de arranque; se lo colocará directamente en un solo shell de usuario. Es posible que deba hacerlomount -o remount,rw /
antes de modificar la/etc/passwd
entrada en ese entorno. Después de eso, solo reinicie o hagaexec /sbin/init 3
. Simplemente no escribaexit
ni presione Ctrl + D, ya que esto provocaría un kernel panic *.Puede ser necesaria una variación adicional de este método en algunos sistemas cargados en modo de dos etapas (con una imagen initrd). Si observa que las opciones de arranque contienen
init=
y, lo más importante,real_init=
el lugar para colocar/bin/bash
debe ser el último parámetro (es decirreal_init=/bin/bash
).* Esto se debe a que en ese entorno, el núcleo ve el shell como el programa init , que es el único proceso que el núcleo conoce, representa un sistema en ejecución debajo del ojo del núcleo. Terminar repentinamente ese proceso, sin decirle al kernel que apague el sistema, debe resultar en pánico del kernel. (¿No entrarías en pánico si de repente todo a tu alrededor se volviera negro y silencioso?)
fuente
exec
, pero supongo que es mejor no estropear demasiado los puntos de montaje de antemano./etc/passwd
)./
) antes de ejecutar init./bin/bash
se ejecuta exactamente en el punto, luego/sbin/init
se ejecutará en el arranque normal. Por lo tanto, el sistema no puede realizar ninguna acción en ese momento.Puede usar
su
y especificar un shell para ejecutar (no estoy seguro si está tratando de implicar que esto no es posible con su nota sobre que no hay otros usuarioswheel
):De lo contrario, podría hacer algo similar si su demonio ssh permite iniciar sesión en la raíz:
También puede establecer un shell como su inicio en su gestor de arranque, por ejemplo,
init=/bin/ksh
o similar.fuente
Si su gestor de arranque está configurado para permitir la edición en vivo de los parámetros del kernel, una solución es reiniciar y usar un shell como proceso de inicio, por ejemplo
init=/bin/bash
. Luego, monte lo que sea necesario montar a mano y edite/etc/passwd
.sync
y arranca de nuevo con tu habitualinit
.fuente
Si la esencia de su pregunta es que ha bloqueado todas las formas de convertirse en root, entonces, por definición, no puede convertirse en root.
Es común permitir tres formas de convertirse en root en un sistema unix:
root
en un indicador de inicio de sesión y escribiendo la contraseña de root. Esto ejecuta el shell de root.su
y escribiendo la contraseña de root. En algunos sistemas, esto requiere estar en un grupo particular (a menudo llamadowheel
); en otros sistemas, cualquiera que conozca la contraseña de root puede convertirse en root. Los sistemas que usan PAM para autenticación se usanpam_wheel
para administrar el grupo de ruedas si tienen uno. Si especifica un comando consu -c
, se ejecuta a través del shell de root.sudo
y escribiendo su propia contraseña. La cuenta de usuario debe haber recibido poderes de sudo por parte de un administrador. A menos quesudoers
esté restringido en el archivo, puede ejecutar cualquier comando, independientemente del shell de root.Una forma tradicional de proteger contra el shell de root no está disponible es definir otra cuenta con UID 0 y un shell diferente (
toor
es un nombre tradicional). Por ejemplo, si el shell de root es un ejecutable vinculado dinámicamente (una buena idea para conservar la memoria) y una actualización de la biblioteca falla, el shell de root podría quedar inutilizable. La cuenta raíz alternativa tendría un ejecutable vinculado estáticamente, posiblemente uno con utilidades comunes incorporadas como BusyBox .fuente
Las respuestas anteriores son geniales y aprendí al leerlas. Si no recuerda los detalles de estos enfoques y no le importa reiniciar, siempre puede iniciar su sistema usando una distribución de CD en vivo, montar la partición / y luego editar / etc / passwd y reiniciar. No es tan elegante como las soluciones anteriores, pero es más fácil de recordar.
fuente
/etc/passwd
archivo. Aparte de esto, buen punto: solo quería agregar la misma sugerencia a mi respuesta.