Esci da root e dall'utente con un solo comando


9

So di "non usare sudo su -" ecc. Ma siamo onesti, quasi tutti lo facciamo.

Quindi, ecco il problema. Non è possibile abilitare gli accessi root, quindi dobbiamo ssh in come il nostro utente quindi su su root.
Ecco l'albero dei processi:

    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

Vorrei uscire dalla radice, quindi dal mio utente con un comando. C'è un modo per fare questo?

BTW exit && exit non funziona perché esce dalla shell e non elabora il resto del comando

josh@ubuntu:~$ sudo su -
root@ubuntu:~# exit && exit
logout
josh@ubuntu:~$

5
"Quasi tutti lo facciamo .." Ne dubito. Mantengo diverse macchine e ho tutte le password e non uso mai "sudo su" su sistemi basati su debian. E mi aspetto che molti di noi non lo usino.
Rinzwind,

1
Non usare sudo su, è inutile e avvia solo un ulteriore processo. Utilizzare sudo -i, se necessario, invece.
Terdon,

Uso sudo -iper ottenere una shell di root. Per quanto riguarda ssh, è possibile configurare ssh per consentire gli accessi root, personalmente uso le opzioni "senza password" per root e per entrambe le chiavi ssh er kerberos. Ciò mantiene l'account root bloccato sulle password.
Pantera,

Non capisco bene cosa non funziona. Prima exitesce su, il secondo si disconnette. Non è quello che volevi fare?
Pilota

1
@ Pilot6 hai provato quel codice ?? Ho appena fatto e non funziona .. questo è SOLO quello che voglio fare .. Ma non funziona ..
Joshua Zitting

Risposte:


9

Tecnicamente, nessuno ha risposto alla tua domanda. Apprezzo che pensino che la loro strada sia migliore (probabilmente lo è), ma ecco un altro approccio (nel caso in cui tu abbia un su -po 'di tempo e abbia lo stesso problema);

  1. [Accedi a un sistema]
  2. $ sudo su -;exit
  3. # echo "do things"
  4. # exit

Quando esci da root, anche l'utente originale si disconnetterà poiché continua con l'ultimo comando.

Saluti!


14

Basta fare

exec sudo -i

Ora la shell di root sta sostituendo quella di default, e quando esci, esci da "entrambi" (formulato in modo errato, poiché la prima shell non esiste più con exec).

Guarda:

[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 molto per avere un sshterminale -ed: usa exec ssh whatevere quando esci, il terminale si chiude.


2
BEN FATTO!!! Grazie! Non devo più digitare exit due volte !!
Joshua Zitting,

Fatto con intelligenza! eccellente
Anwar,

1

quando stai diventando utente root basta digitare ::

sudo -s && exit

quando uscirai dalla radice, la shell si chiuderà automaticamente. puoi esportare questo comando per renderlo permanente.

echo "alias mysudo='sudo -s; exit'" >> ~/.bashrc && source ~/.bashrc
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.