Come passare all'utente root ma rimanere nella stessa directory


9

Di recente sono passato a Ubuntu e ho osservato una cosa quando utilizzo il comando seguente per passare all'utente root

sudo su - root

Mi porta direttamente alla home di root ( /root), quindi perdo il mio posto nel filesystem (la directory in cui ho eseguito questo comando). Esiste un modo per passare a root senza perdere la directory corrente?

Risposte:


16

Prima di tutto, non usare sudo su. Non è sbagliato, o pericoloso o altro, è solo inelegante e inutile . Stai eseguendo due programmi separati per fare un lavoro facilmente gestito da uno. Se vuoi avviare una shell come root, sudopuoi farlo per te.

Se vuoi avviare una shell di login (ecco cosa sudo su -fa), usa sudo -i. Ciò, tuttavia, poiché avvia una shell di accesso, ti porterà nella directory principale di root per impostazione predefinita.

Per avviare una normale shell senza accesso, è possibile utilizzare sudo -s. Ciò avvierà una shell di root per te e ti terrà nella directory da cui è stata eseguita:

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

Quindi, il modo per avviare una shell di root e rimanere nella stessa directory è sudo -s.


1
Il problema potrebbe essere che sudo -snon esegue il profilo dell'utente di destinazione perché non è una shell di accesso. Quindi forse la vera domanda è se c'è un modo per ottenere una shell di accesso sudo, ma senza cambiare directory. Probabilmente no.
Barmar

@Barmar no, ma lo sudo -ifa. Ho usato -sdal momento che l'OP non voleva una shell di login (non volevo passare a $HOME). Se si desidera una shell di accesso, utilizzare sudo -i. Ho postato un confronto degli ambienti di sudo -i, su -, sudo -se sunella mia domanda qui , se si vuole avere uno sguardo.
terdon,

Proprio ora ho avuto una brutta esperienza con questo comando, sudo -s. Anche non cambia la directory ma non mi ha dato l'accesso root completo. Alcuni dei miei file erano presenti in una directory ma non sono stato in grado di vederli come utente normale e come utente root in questo modo (sudo -s). Poi ho usato il vecchio modo (sudo su - root) e sono andato nella directory e ora i miei file erano visibili a me. Perché sudo -s mi ha dato accesso limitato?
Hammad Hassan,

@HammadHassan non è possibile che ciò che descrivi possa essere successo. Deve esserci qualcos'altro in corso. Cosa intendi con "impossibile vedere" i file? Intendi forse "impossibile leggere i file"? Stai forse usando la crittografia?
terdon,

"impossibile vedere" significa semplice comando "ls". Non mi ha mostrato i miei file. Nessuna crittografia. I miei file sono semplici. E questo è davvero successo.
Hammad Hassan,

8

Questo è molto semplice Basta digitare

sudo su

invece di

sudo su - root

Questo ti terrà nella stessa cartella di root.


9
Questo non è sbagliato, intendo che funziona, ma l'utilizzo sudo sunon ha molto senso. Questo è ciò che sudo -sserve. Non ho mai capito perché suggeriscano così tanti tutorial su Ubuntu sudo su.
terdon,

@terdon Anche io non l'ho mai capito, ma sembra essere molto diffuso tra tutti gli utenti Linux. Forse l'allitterazione lo rende più memorabile.
Barmar

@Barmar personalmente, l'ho visto solo nel mondo Ubuntu. Poiché la maggior parte dei sistemi Linux ha un normale account root per impostazione predefinita, quando si necessita di una shell che si farebbe su(da solo, no sudo). Poiché, tuttavia, Ubuntu disabilita l'account root per impostazione predefinita, sudo suè arrivato in modo abbastanza naturale. è anche, a quanto pare , il caso in alcuni angoli del mondo UNIX, ma in Linux l'ho visto solo su Ubuntu.
terdon,

@terdon L'ho visto per decenni, non sono nemmeno sicuro di quali distribuzioni stessimo usando. Usiamo Debian nella mia attuale compagnia, e i miei colleghi lo usano.
Barmar
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.