¿Puedo iniciar un proceso como root sin iniciar el shell de inicio de sesión de root?


8

Traté de cambiar el shell de inicio de sesión.

Así /etc/passwdes 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 zshestá disponible:

$ which zsh
/usr/bin/zsh

De acuerdo, parece lógico reemplazarlo zshpor su ruta completa. ¿Pero cómo puedo hacerlo?

Tengo otro usuario en el sistema ( user), sin embargo, no tiene privilegios de root y sudono 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 rootcuenta.

Mi pregunta es: ¿hay alguna forma, incluso programáticamente, de iniciar un proceso con la rootcuenta sin iniciar primero su shell de inicio de sesión?


¿qué pasa su? o gksu? algo así comosu -c 'sed -i s,root:/:zsh,root:/:/usr/bin/zsh, /etc/passwd'
qdii

¿No debería ser la línea del archivo passwd / usr / bin / zsh? ¿Por qué pusiste solo la cadena zsh?
slm

@slm Ese es el cambio que el OP quiere hacer ...
un CVn

1
si la sugerencia @qdii funciona (es decir, eso su -c "<commands>") funciona ... ¿no podríamos simplemente usarla su -c "/bin/bash"para llegar a una fiesta que funcione con la raíz del usuario ?
humanityANDpeace

1
@humanityANDpeace: no se supone que eso funcione. El comando pasado a -cse ejecuta a través del shell de inicio de sesión del usuario. -sse puede usar para usar otro shell ... solo si el shell de inicio de sesión existente es válido o el invocador es root.
Mat

Respuestas:


4

Tener permisos su

Puede usar el siguiente comando para cambiar el shell de cualquier usuario.

su -c "/usr/bin/chsh -s /bin/bash root"

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.

  • soltero
  • init = / bin / sh
  • 1

La línea se verá así:

 kernel /vmlinuz-2.6.15-27-386 root=/dev/mapper/Ubuntu-root ro init=/bin/bash

En Grub debería ser similar a esto:

       ss de comida

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/passwdarchivo. Solo escribe rebootcuando hayas terminado.


2
Él dice que no tiene acceso físico, por lo que es probable que no pueda ver el menú GRUB.
Renan

@Renan. OK, no lo entendí en las primeras lecturas. Está oculto en la línea sobre el "... No puedo arrancar en un CD en vivo ...", que está redactado de manera extraña para mí.
slm

44
Su sucomando no funcionará, ya que intentará invocar el shell de root, que no existe.
Gilles 'SO- deja de ser malvado'

@Gilles: ¿Tienes alguna otra idea? No veo una manera de arreglar esto sin acceso físico entonces. Siente que estamos trabajando en contra de lo que el sistema fue diseñado para evitar en este momento.
slm

1
@slm Sin sudo, creo que la cuenta raíz está bloqueada, por lo que se requiere acceso físico.
Gilles 'SO- deja de ser malvado'
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.