Cómo cambiar al usuario root pero permanecer en el mismo directorio

9

Recientemente cambié a Ubuntu y he observado una cosa cuando uso el siguiente comando para cambiar a usuario root

sudo su - root

Me lleva directamente al inicio de root ( /root), por lo que pierdo mi lugar en el sistema de archivos (el directorio donde ejecuté este comando). ¿Hay alguna forma de cambiar a root sin perder el directorio actual?

Hammad Hassan
fuente

Respuestas:

16

En primer lugar, no lo use sudo su. No está mal, es peligroso ni nada, es poco elegante y sin sentido . Está ejecutando dos programas separados para hacer un trabajo fácilmente manejado por uno. Si desea iniciar un shell como root, sudopuede hacerlo por usted.

Si desea iniciar un shell de inicio de sesión (eso es lo que sudo su -hace), use sudo -i. Eso, sin embargo, dado que inicia un shell de inicio de sesión, lo llevará al directorio de inicio de la raíz de forma predeterminada.

Para iniciar un shell normal sin inicio de sesión, puede usar sudo -s. Eso iniciará un shell raíz para usted y lo mantendrá en el directorio desde donde lo ejecutó:

terdon@tpad ~ $ pwd
/home/terdon
terdon@tpad ~ $ sudo -i  ## changes directory
[root@tpad ~]# pwd
/root
[root@tpad ~]# logout
terdon@tpad ~ $ sudo -s  ## doesn't change directory
[root@tpad terdon]# pwd
/home/terdon

Entonces, la forma de iniciar un shell raíz y permanecer en el mismo directorio es sudo -s.

terdon
fuente
1
El problema puede ser que sudo -sno ejecuta el perfil del usuario objetivo porque no es un shell de inicio de sesión. Entonces, tal vez la verdadera pregunta es si hay una manera de obtener un shell de inicio de sesión sudo, pero sin cambiar el directorio. Probablemente no.
Barmar
@Barmar no, pero lo sudo -ihace. Utilicé -sya que el OP no quería un shell de inicio de sesión (no quería moverme a $HOME). Si desea un shell de inicio de sesión, use sudo -i. He publicado una comparación de los entornos de sudo -i, su -, sudo -sy suen mi pregunta aquí si quieres echar un vistazo.
terdon
Justo ahora tuve una muy mala experiencia con este comando, sudo -s. Incluso no cambia el directorio, pero no me dio acceso completo a la raíz. Algunos de mis archivos estaban presentes en un directorio pero no pude verlos como usuario normal y como usuario raíz de esta manera (sudo -s). Luego usé el método anterior (sudo su - root) y fui al directorio y ahora mis archivos eran visibles para mí. ¿Por qué sudo -s me ha dado acceso restringido?
Hammad Hassan
@HammadHassan de ninguna manera lo que describiste podría haber sucedido. Debe haber algo más sucediendo. ¿Qué quiere decir "no se puede ver" los archivos? ¿Quizás quiere decir "incapaz de leer los archivos"? ¿Tal vez estás usando encriptación?
terdon
"no se puede ver" significa simple comando "ls". No me mostró mis archivos. Sin cifrado en absoluto. Mis archivos son simples. Y esto realmente sucedió.
Hammad Hassan
8

Esto es muy simple. Sólo tipo

sudo su

en vez de

sudo su - root

Esto lo mantendrá en la misma carpeta que root.

Joo Nice
fuente
99
Esto no está mal, quiero decir que funciona, pero usarlo sudo suno tiene mucho sentido. Para eso sudo -ses eso . Nunca he entendido por qué tantos tutoriales de Ubuntu sugieren sudo su.
terdon
@terdon Tampoco lo he entendido nunca, pero parece estar muy extendido entre todos los usuarios de Linux. Tal vez la aliteración lo hace más memorable.
Barmar
@Barmar personalmente, solo lo he visto en el mundo de Ubuntu. Dado que la mayoría de los sistemas Linux tienen una cuenta raíz normal de forma predeterminada, cuando se necesita un shell lo haría su(solo, no sudo). Sin embargo, debido a que Ubuntu deshabilita la cuenta raíz de forma predeterminada, sudo suha surgido de forma bastante natural. aparentemente también es el caso en algunos rincones del mundo UNIX, pero en Linux, solo lo he visto en Ubuntu.
terdon
@terdon Lo he visto durante décadas, ni siquiera estoy seguro de qué distribuciones estábamos usando. Usamos Debian en mi compañía actual, y mis compañeros de trabajo lo usan.
Barmar