Ich habe eine ähnliche Frage gestellt, weil ich auf Probleme mit XDG-Umgebungsvariablen gestoßen bin $XDG_RUNTIME_DIR, die mich verrückt gemacht haben. -> unix.stackexchange.com/questions/354826/…
Im Allgemeinen können Sie sudoeine neue Shell als gewünschten Benutzer starten. Mit der -uFlagge 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 sudoist jedoch wahrscheinlich der einfachste, vorausgesetzt, dass es installiert ist und Sie die Berechtigung haben, es zu verwenden.
Auch su - [user]kann nützlich sein - das extra Strich gibt Ihnen ein Login - Shell.
Ephemient
Ich erhalte die Fehlermeldung "-su: / dev / stderr: Berechtigung verweigert", nachdem ich diesen Befehl echo >>/dev/stderrbei einem Login mit ausgeführt su --login ...habe. Ich fand diese übrigens unix.stackexchange.com/questions/38538/…
Aquarius Power
Ermöglicht dies jedem neuen Benutzer, andere, überschreibende Werte für Umgebungsvariablen zu haben? zB git config für die Arbeit, Open Source, etc.
Kevin Suttle
Eine Feststellung, als ich das auflistete 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.
wird
1
wenn Sie "Dieses Konto ist derzeit nicht verfügbar" erhalten: su -s / bin / bash - www-Daten
max4ever
46
Im Allgemeinen verwenden Sie sudo, um eine neue Shell als der Benutzer zu starten, den Sie möchten. Mit der -uFlagge können Sie den gewünschten Benutzernamen angeben:
Es gibt mehr Umwege, wenn Sie keinen sudo-Zugang haben ssh username@localhost, aber ich denke, es sudoist wahrscheinlich am einfachsten, wenn es installiert ist und Sie die Erlaubnis haben, es zu benutzen
Was ist, wenn mein System weder ssh-Server noch sudo hat? Können Sie diesen Teil in der Antwort erwähnen?
Tshepang
ok, Pratt antwortete, dass man
Tshepang
4
sudo -sGibt Ihnen eine Shell wie su, sudo -isimuliert Login wie su -. Kann -u $usernatürlich mit kombiniert werden .
Ephemient
viel effizienter. Sich als Benutzer "einloggen" zu können, der sich normalerweise nicht einloggen kann, ist ein großer Vorteil.! Ich durfte eine Datenbankinstanz ausführen, ohne mich mit Berechtigungen oder Selinux herumzuschlagen
Félix Gagnon-Grenier
20
$ 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.
Ein Beispiel hierfür ist der mongodbBenutzer. Bei der Bereitstellung eines Sharded-MongoDB-Clusters müssen alle erforderlichen Prozesse als ausgeführt werden, mongodbund 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.
$XDG_RUNTIME_DIR
, die mich verrückt gemacht haben. -> unix.stackexchange.com/questions/354826/…Antworten:
Wie wäre es mit dem
su
Befehl?Wenn Sie sich als root anmelden möchten, müssen Sie keinen Benutzernamen angeben:
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: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.quelle
su - [user]
kann nützlich sein - das extra Strich gibt Ihnen ein Login - Shell.echo >>/dev/stderr
bei einem Login mit ausgeführtsu --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:Es gibt mehr Umwege, wenn Sie keinen sudo-Zugang haben
ssh username@localhost
, aber ich denke, essudo
ist wahrscheinlich am einfachsten, wenn es installiert ist und Sie die Erlaubnis haben, es zu benutzenquelle
sudo -s
Gibt Ihnen eine Shell wiesu
,sudo -i
simuliert Login wiesu -
. Kann-u $user
natürlich mit kombiniert werden .Dieser Befehl gibt den aktuellen Benutzer aus. Um Benutzer zu ändern, müssen wir diesen Befehl verwenden (gefolgt vom Passwort des Benutzers):
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
.quelle
Wenn Sie Ubuntu ausführen und für den Benutzer, unter dem Sie sich anmelden möchten, kein Kennwort festgelegt ist:
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
.quelle
Verwenden Sie exec, um die Terminalsitzung auf einen anderen Benutzer umzustellen, bei dem dieser Benutzer nicht zum ursprünglichen Benutzer zurückkehren kann:
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.
quelle
sudo -iu <your_username>
für mich den Trick machenquelle
Eine weitere Möglichkeit besteht darin, eine neue Shell als anderer Benutzer (ohne Rootberechtigung) zu starten, um Befehle als dieser Benutzer auszuführen.
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.quelle
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:
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:
Wenn Sie sich lieber vorübergehend als Benutzer B anmelden möchten, um viele Befehle auszuführen, tun Sie einfach Folgendes:
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.
quelle
Wenn Sie nur einen einzigen Befehl ausführen müssen, können Sie sudo verwenden:
sudo -u username command
quelle
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!
quelle