Risposte:
Che ne dici di usare il su
comando?
$ whoami
user1
$ su - user2
Password:
$ whoami
user2
$ exit
logout
Se si desidera accedere come root, non è necessario specificare il nome utente:
$ whoami
user1
$ su -
Password:
$ whoami
root
$ exit
logout
In generale, è possibile utilizzare sudo
per avviare una nuova shell come l'utente desiderato; il -u
flag ti consente di specificare il nome utente che desideri:
$ whoami
user1
$ sudo -u user2 zsh
$ whoami
user2
Ci sono modi più tortuosi se non si dispone dell'accesso sudo, come ssh username @ localhost, ma sudo
è probabilmente il più semplice, a condizione che sia installato e si disponga dell'autorizzazione per usarlo.
su - [user]
può essere utile: il trattino aggiuntivo ti dà una shell di accesso.
echo >>/dev/stderr
su un login con su --login ...
qualche suggerimento? Ho trovato questo tra unix.stackexchange.com/questions/38538/…
env
ha visto che tutto era in ordine, così come un controllo visivo può andare; E una cosa era sbagliato: XAUTHORITY=/home/user1/.Xauthority'. Not sure _why_? So X-window doesn't work by default because the protection on
il file ~ / .Xauthority` è: -rw-------
. Ne ho fatto una copia e questo mi ha permesso di eseguire gedit come esperimento.
Generalmente si usa sudo
per lanciare una nuova shell come l'utente desiderato; il -u
flag ti consente di specificare il nome utente che desideri:
[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % sudo -u nobody zsh
[nobody@etudes-1 ~] % whoami
nobody
Ci sono modi più tortuosi se non si dispone di accesso sudo, ad esempio ssh username@localhost
, ma penso che sudo
sia probabilmente più semplice se è installato e si dispone dell'autorizzazione per usarlo
sudo -s
ti dà una shell simile su
, sudo -i
simula l'accesso come su -
. Può essere combinato con -u $user
, ovviamente.
$ whoami
Questo comando stampa l'utente corrente. Per cambiare utente, dovremo usare questo comando (seguito dalla password dell'utente):
$ su secondUser
Password:
Dopo aver inserito la password corretta, si accederà come utente specificato (che è possibile verificare eseguendo nuovamente whoami
.
Se stai eseguendo Ubuntu e se l'utente a cui desideri accedere non ha una password impostata:
sudo su - username
Inserisci la tua password e dovresti essere impostato. Naturalmente, ciò richiede che l'utente disponga dei diritti per ottenere i privilegi di root sudo
.
Per passare la sessione del terminale a un altro utente, in cui l'utente non può tornare all'utente originale, utilizzare exec:
$ | # exec su - [nome utente]
Ciò accederà tecnicamente al nuovo utente in un nuovo processo e chiuderà quello attuale. In questo modo quando l'utente tenta di uscire o Ctrl-D, il terminale si chiuderà come se l'utente fosse quello che lo ha istanziato, cioè l'utente non può tornare al termine dell'utente originale. Un po 'inutile, considerando che possono ancora solo iniziare una nuova sessione terminale e trovarsi automaticamente nel termine utente originale login, ma è così.
EDIT: per quello che vale, puoi usare il comando linux vlock nel tuo ~ / .bashrc per bloccare le sessioni terminali di default, richiedendo la password del termine sessione utente da sbloccare. Ciò impedirebbe in qualche modo il riavvio del suddetto termine nel contesto dell'utente originale, dato che il termine non è istanziato utilizzando il non predefinito ~ / .bashrc dell'utente, come configurato.
Ancora un'altra strada è lanciare una nuova shell come utente diverso (non root) per eseguire comandi come quell'utente.
ubuntu@aws-ip:~$ sudo -u mongodb bash #<-- or zsh, etc...
mongodb@aws-ip:~$ mongod --configsvr --dbpath /data/configdb --fork
Un esempio di questo è l' mongodb
utente. Quando si distribuisce un cluster MongoDB frammentato, devono essere eseguiti tutti i processi necessari mongodb
e non è necessario (o del tutto conveniente) demonizzare i processi utilizzando gli script di inizializzazione per decine di nodi.
Cerchiamo di farlo bene: hai effettuato l'accesso come UtenteA e vuoi "accedere" come Utente B per eseguire alcuni comandi, ma al termine vorrai tornare a Utente A. Per semplicità, suppongo che tu voglia eseguire ls -l / tmp come UserB. Se non si desidera abbandonare la shell corrente di UserA ma si esegue piuttosto un comando come UserB e si rimane ancora connessi come UserA, è necessario eseguire questa operazione:
su - UserB -c "ls -l /tmp" <-- Just an example
Ciò presuppone che tu conosca la password per UserB. Tuttavia, se non si conosce la password di UserB, è necessario conoscere la password di root. Poi:
sudo su - UserB -c "ls -l /tmp" <-- UserB's pw not needed here
Se preferisci accedere temporaneamente come UtenteB per eseguire molti comandi, fai semplicemente:
sudo su - UserB
Questo ti darà una nuova shell per UserB (verifica digitando id). Al termine, puoi fare ctrl-d e tornare al tuo login.
Se devi eseguire un solo comando, puoi usare sudo:
sudo -u username command
$XDG_RUNTIME_DIR
in particolare) che mi stavano facendo impazzire. -> unix.stackexchange.com/questions/354826/…