Traté de cambiar el shell de inicio de sesión.
Así /etc/passwd
es como se ve la primera línea (en una instalación de Debian Wheezy):
rootx:0:0:root:/root:/:zsh
Cuando intento iniciar sesión como root
:
Cannot execute zsh: No such file or directory
Sé que zsh
está disponible:
$ which zsh
/usr/bin/zsh
De acuerdo, parece lógico reemplazarlo zsh
por su ruta completa. ¿Pero cómo puedo hacerlo?
Tengo otro usuario en el sistema ( user
), sin embargo, no tiene privilegios de root y sudo
no está instalado en el sistema.
Suponga que por cualquier razón (encriptación, acceso físico, ...) no puedo arrancar en un CD en vivo para modificar el archivo.
Sin embargo, sí sé las credenciales de la root
cuenta.
Mi pregunta es: ¿hay alguna forma, incluso programáticamente, de iniciar un proceso con la root
cuenta sin iniciar primero su shell de inicio de sesión?
su
? ogksu
? algo así comosu -c 'sed -i s,root:/:zsh,root:/:/usr/bin/zsh, /etc/passwd'
su -c "<commands>"
) funciona ... ¿no podríamos simplemente usarlasu -c "/bin/bash"
para llegar a una fiesta que funcione con la raíz del usuario ?-c
se ejecuta a través del shell de inicio de sesión del usuario.-s
se puede usar para usar otro shell ... solo si el shell de inicio de sesión existente es válido o el invocador es root.Respuestas:
Tener permisos su
Puede usar el siguiente comando para cambiar el shell de cualquier usuario.
Si tienes acceso físico
Durante el arranque de Grub, puede acceder a cualquier sistema siempre que tenga acceso a la consola y no haya una contraseña que le impida obtener acceso al menú de Grub.
Durante el arranque inicial del sistema cuando aparece el menú Grub, si ingresa al menú y edita (presiona la etecla) la línea del núcleo, puede agregar una de las siguientes cosas para que el núcleo arranque en modo de usuario único.
La línea se verá así:
En Grub debería ser similar a esto:
Una vez que haya realizado los cambios, inicie el núcleo (presione la tecla b).
Esto le dará acceso temporal al sistema con un shell donde puede usar vi / vim para realizar los cambios que necesite en su
/etc/passwd
archivo. Solo escribereboot
cuando hayas terminado.fuente
su
comando no funcionará, ya que intentará invocar el shell de root, que no existe.