Salga de la raíz y del usuario con un comando

9

Sé sobre "no usar sudo su -", etc. Pero seamos honestos, casi todos lo hacemos.

Entonces, aquí está el problema. No podemos habilitar los inicios de sesión de root, por lo que debemos ingresar como nuestro usuario y luego su a root.
Aquí está el árbol de procesos:

    1  7897  7826  7826 ?           -1 S     1000   0:00 sshd: josh@pts/0
 7897  7898  7898  7898 pts/0     8182 Ss    1000   0:00  \_ -bash
 7898  7990  7990  7898 pts/0     8182 S        0   0:00      \_ sudo su -
 7990  7991  7990  7898 pts/0     8182 S        0   0:00          \_ su -
 7991  7992  7992  7898 pts/0     8182 S        0   0:00              \_  -su
 7992  8182  8182  7898 pts/0     8182 R+       0   0:00                  \_ ps axjf

Me gustaría salir de la raíz, luego de mi usuario con un comando. ¿Hay alguna forma de hacer esto?

Por cierto, exit && exit no funciona porque sale del shell y no procesa el resto del comando

josh@ubuntu:~$ sudo su -
root@ubuntu:~# exit && exit
logout
josh@ubuntu:~$
Joshua Zitting
fuente
55
"Casi todos lo hacemos ..." Lo dudo. Mantengo varias máquinas y tengo todas las contraseñas y nunca uso "sudo su" en sistemas basados ​​en Debian. Y espero que la mayoría de nosotros no lo usemos.
Rinzwind
1
No lo use sudo su, no tiene sentido y solo inicia un proceso adicional. Use sudo -i, si es necesario, en su lugar.
terdon
Yo uso sudo -ipara obtener un shell de raíz. En cuanto a ssh, puede configurar ssh para permitir inicios de sesión de root, personalmente uso las opciones "sin contraseña" para root y las teclas ssh o kerberos. Esto mantiene la cuenta raíz bloqueada a las contraseñas.
Panther
No entiendo lo que no funciona. La primera exitsale su, la segunda cierra la sesión. ¿No es lo que querías hacer?
Pilot6
1
@ Pilot6 ¿has probado ese código? Simplemente lo hice y no funciona ... eso es SOLO lo que quiero hacer ... Pero no funciona ...
Joshua Zitting

Respuestas:

9

Técnicamente, nadie respondió su pregunta. Aprecio que piensen que su camino es mejor (probablemente lo sea), pero aquí hay otro enfoque (en caso de que tenga su -algún tiempo y tenga el mismo problema);

  1. [Iniciar sesión en un sistema]
  2. $ sudo su -;exit
  3. # echo "do things"
  4. # exit

Cuando salga de la raíz, el usuario original también cerrará sesión ya que continúa con su último comando.

¡Salud!

Alexander E. Smith
fuente
14

Solo haz

exec sudo -i

Ahora el shell raíz está reemplazando al predeterminado, y cuando sale, sale "ambos" (incorrectamente redactado, ya que el primer shell deja de existir con el exec).

Mira:

[romano:~] % ssh pern
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-28-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

[romano@pern:~] % exec sudo -i
[sudo] password for romano: 
root@pern:~# whoami
root
root@pern:~# pstree -a -s -l -p -u $$
init,1
  └─sshd,1140 -D
      └─sshd,17450 
          └─sshd,17570,romano  
              └─sudo,17571,root -i
                  └─bash,17665
                      └─pstree,17678 -a -s -l -p -u 17665
root@pern:~# exit
logout
Connection to pern.XXX.XXX.XXX closed.
[romano:~] % 

Lo uso mucho para tener una sshterminal ed: usa exec ssh whatevery cuando sales, la terminal se cierra.

Rmano
fuente
2
¡¡¡BIEN HECHO!!! ¡Gracias! ¡Ya no tengo que escribir exit dos veces!
Joshua Zitting
¡Listo! excelente
Anwar
1

cuando se convierta en usuario root simplemente escriba ::

sudo -s && exit

cuando salgas de la raíz, tu shell se cerrará automáticamente. puede exportar este comando para hacerlo permanente.

echo "alias mysudo='sudo -s; exit'" >> ~/.bashrc && source ~/.bashrc
javesh bhardwaj
fuente