Antworten:
Wie wäre es mit dem su
Befehl?
$ whoami
user1
$ su - user2
Password:
$ whoami
user2
$ exit
logout
Wenn Sie sich als root anmelden möchten, müssen Sie keinen Benutzernamen angeben:
$ whoami
user1
$ su -
Password:
$ whoami
root
$ exit
logout
Im Allgemeinen können Sie sudo
eine neue Shell als gewünschten Benutzer starten. Mit der -u
Flagge können Sie den gewünschten Benutzernamen angeben:
$ whoami
user1
$ sudo -u user2 zsh
$ whoami
user2
Es gibt weitere Umwege, wenn Sie keinen sudo-Zugriff haben, wie ssh username @ localhost, dies sudo
ist jedoch wahrscheinlich der einfachste, vorausgesetzt, dass es installiert ist und Sie die Berechtigung haben, es zu verwenden.
su - [user]
kann nützlich sein - das extra Strich gibt Ihnen ein Login - Shell.
echo >>/dev/stderr
bei einem Login mit ausgeführt su --login ...
habe. Ich fand diese übrigens unix.stackexchange.com/questions/38538/…
env
, sah es, dass alles in Ordnung war sowie eine Sichtprüfung gehen kann; Und eine Sache falsch war: XAUTHORITY=/home/user1/.Xauthority'. Not sure _why_? So X-window doesn't work by default because the protection on
~ / .Xauthority` Datei ist: -rw-------
. Ich habe eine Kopie angefertigt und so konnte ich gedit als Experiment ausführen.
Im Allgemeinen verwenden Sie sudo
, um eine neue Shell als der Benutzer zu starten, den Sie möchten. Mit der -u
Flagge können Sie den gewünschten Benutzernamen angeben:
[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % sudo -u nobody zsh
[nobody@etudes-1 ~] % whoami
nobody
Es gibt mehr Umwege, wenn Sie keinen sudo-Zugang haben ssh username@localhost
, aber ich denke, es sudo
ist wahrscheinlich am einfachsten, wenn es installiert ist und Sie die Erlaubnis haben, es zu benutzen
sudo -s
Gibt Ihnen eine Shell wie su
, sudo -i
simuliert Login wie su -
. Kann -u $user
natürlich mit kombiniert werden .
$ whoami
Dieser Befehl gibt den aktuellen Benutzer aus. Um Benutzer zu ändern, müssen wir diesen Befehl verwenden (gefolgt vom Passwort des Benutzers):
$ su secondUser
Password:
Nachdem Sie das richtige Passwort eingegeben haben, werden Sie als der angegebene Benutzer angemeldet (was Sie durch erneutes Ausführen überprüfen können whoami
.
Wenn Sie Ubuntu ausführen und für den Benutzer, unter dem Sie sich anmelden möchten, kein Kennwort festgelegt ist:
sudo su - username
Geben Sie Ihr eigenes Passwort ein und Sie sollten eingestellt sein. Dies setzt natürlich voraus, dass Ihr Benutzer Rechte besitzt, um Root-Rechte zu erlangen sudo
.
Verwenden Sie exec, um die Terminalsitzung auf einen anderen Benutzer umzustellen, bei dem dieser Benutzer nicht zum ursprünglichen Benutzer zurückkehren kann:
$ | # exec su - [Benutzername]
Dadurch wird der neue Benutzer in einem neuen Begriffsprozess technisch angemeldet und der aktuelle geschlossen. Auf diese Weise wird das Terminal geschlossen, wenn der Benutzer versucht, das Programm zu beenden, oder Strg + D, als wäre es derjenige, der es instanziiert hat, dh der Benutzer kann nicht in den ursprünglichen Benutzerbegriff zurückkehren. Irgendwie sinnlos, wenn man bedenkt, dass sie immer noch eine neue Terminalsitzung starten und sich automatisch im ursprünglichen Benutzerbegriff anmelden können, aber da ist es.
BEARBEITEN: Sie können den Befehl linux vlock in Ihrem ~ / .bashrc verwenden, um Terminalsitzungen standardmäßig zu sperren, wobei zum Entsperren das Kennwort des Termins Sitzungsbenutzer erforderlich ist. Dies würde einen Neustart des oben genannten Begriffs unter dem ursprünglichen Benutzerkontext etwas verhindern, da der Begriff nicht mit dem nicht standardmäßigen ~ / .bashrc des Benutzers wie konfiguriert instanziiert wird.
Eine weitere Möglichkeit besteht darin, eine neue Shell als anderer Benutzer (ohne Rootberechtigung) zu starten, um Befehle als dieser Benutzer auszuführen.
ubuntu@aws-ip:~$ sudo -u mongodb bash #<-- or zsh, etc...
mongodb@aws-ip:~$ mongod --configsvr --dbpath /data/configdb --fork
Ein Beispiel hierfür ist der mongodb
Benutzer. Bei der Bereitstellung eines Sharded-MongoDB-Clusters müssen alle erforderlichen Prozesse als ausgeführt werden, mongodb
und es ist nicht erforderlich (oder ganz praktisch), die Prozesse mithilfe von Init-Skripten für Dutzende von Knoten zu dämonisieren.
Lassen Sie uns das richtig machen: Sie sind als BenutzerA angemeldet und möchten sich als BenutzerB "anmelden", um einige Befehle auszuführen, möchten aber nach Abschluss wieder zu BenutzerA zurückkehren. Der Einfachheit halber gehe ich davon aus, dass Sie ls -l / tmp als UserB ausführen möchten. Wenn Sie die aktuelle Shell von UserA nicht verlassen, sondern einen Befehl als UserB ausführen und dennoch als UserA angemeldet bleiben möchten, sollten Sie dies tun:
su - UserB -c "ls -l /tmp" <-- Just an example
Dies setzt voraus, dass Sie das Kennwort für UserB kennen. Wenn Sie jedoch das Kennwort von UserB nicht kennen, müssen Sie das Root-Kennwort kennen. Dann:
sudo su - UserB -c "ls -l /tmp" <-- UserB's pw not needed here
Wenn Sie sich lieber vorübergehend als Benutzer B anmelden möchten, um viele Befehle auszuführen, tun Sie einfach Folgendes:
sudo su - UserB
Dadurch erhalten Sie eine neue Shell für UserB (überprüfen Sie dies, indem Sie id eingeben). Wenn Sie fertig sind, können Sie Strg-D ausführen und zu Ihrem Login zurückkehren.
Wenn Sie nur einen einzigen Befehl ausführen müssen, können Sie sudo verwenden:
sudo -u username command
~$ sudo login
Dann werden Sie zur Eingabe des sudo-Passworts aufgefordert (des Passworts des aktuell angemeldeten Benutzers).
Außerdem: Stellen Sie sicher, dass sich der aktuelle Benutzer in der sudoers-Datei befindet!
$XDG_RUNTIME_DIR
, die mich verrückt gemacht haben. -> unix.stackexchange.com/questions/354826/…