Sai da raiz e do usuário com um comando

9

Eu sei sobre "não usar sudo su - " etc. Mas, vamos ser honestos, quase todos nós fazemos isso.

Então, aqui está o problema. Nós não podemos ter logins root habilitados, então temos que ssh em como nosso usuário então su para root.
Aqui está a árvore do processo:

    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

Eu gostaria de sair do root, depois do meu usuário com um comando. Existe uma maneira de fazer isso?

BTW exit & amp; & amp; exit não funciona porque sai do shell e não processa o resto do comando

josh@ubuntu:~$ sudo su -
root@ubuntu:~# exit && exit
logout
josh@ubuntu:~$
    
por Joshua Zitting 11.09.2015 / 19:40

3 respostas

9

Tecnicamente, ninguém respondeu à sua pergunta. Eu aprecio que eles pensem que o caminho deles é melhor (provavelmente é), mas aqui está outra abordagem (no caso de você ter que su - algum tempo e ter o mesmo problema);

  1. [Faça login em um sistema]
  2. $ sudo su -;exit
  3. # echo "do things"
  4. # exit

Quando você sair do root, o usuário original também fará logout, uma vez que continua seu último comando.

Felicidades!

    
por Alexander E. Smith 16.11.2015 / 22:39
14

Apenas faça

exec sudo -i

Agora o shell raiz está substituindo o padrão, e quando você sai, você sai "ambos" (incorretamente redigido, desde que o primeiro shell pare de existir com o exec ).

Olhe:

[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:~] % 

Eu uso muito para ter um terminal ssh -ed: use exec ssh whatever e quando você sair, o terminal fecha.

    
por Rmano 11.09.2015 / 19:59
1

quando você está se tornando usuário root apenas digite ::

sudo -s && exit

quando você sair do root, o shell será fechado automaticamente. você pode exportar este comando para torná-lo permanente.

echo "alias mysudo='sudo -s; exit'" >> ~/.bashrc && source ~/.bashrc
    
por javesh bhardwaj 24.09.2017 / 16:10