
Ich versuche, diesen Befehl auszuführen:
echo hello | sudo su - dp-postgres
Aber ich verstehe Folgendes:
-bash: line 1: hello: command not found
Ich habe auch Folgendes versucht:
sudo su - dp-postgres -c 'echo hello'
Dabei werde ich jedoch nach dem Passwort des aktuellen Benutzers gefragt.
Ich muss wechseln dp-postgres
und anschließend einen beliebigen Befehl als dp-postgres
Benutzer ausführen.
Antwort1
sudo
Der Befehl ermöglicht die Ausführung eines Befehls als anderer Benutzer. Standardmäßig wird nach dem aktuellen Benutzerkennwort gefragt. Dies ist das normale Verhalten (der Benutzer muss natürlich auch über die sudo
Nutzungsberechtigung verfügen). Wenn Sie die Kennwortabfrage verhindern möchten, müssen Sie Ihre /etc/sudoers
Datei ändern und eine Option verwenden NOPASSWD
, mit der Sie sudo ausführen können, ohne nach einem Kennwort gefragt zu werden.
Für Ihren Befehl können Sie Folgendes tun:
sudo su - dp-postgres <<-EOF
echo hello
EOF
Ihr zweiter Befehl sollte auch funktionieren:
sudo su - dp-postgres -c 'echo hello'
Hier ist ein Beispiel :
$ sudo su - -c 'echo hello; id'
hello
uid=0(root) gid=0(root) groups=0(root)
Auf meiner Seite ist kein Passwort erforderlich, da der ursprüngliche Benutzer in der sudo
Gruppe ist und ungefähr Folgendes hat:
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
In der /etc/sudoers
Datei.
Antwort2
Wie bereits an anderer Stelle beschrieben, sudo
ermöglicht dieser Befehl einem entsprechend autorisierten Benutzer, einen Befehl als jemand anderes auszuführen. Standardmäßigjemand anderesist root, kann aber (vorbehaltlich Autorisierung) jeder beliebige Benutzer sein. Außerdem sudo
wird standardmäßig nach dem Passwort des aktuellen Benutzers gefragt.
echo hello
Wenn Sie den Befehl als Benutzer ausführen möchten dp-postgres
, können Sie Folgendes tun:
sudo -u dp-postgres echo hello
Wenn Sie die Anmeldeumgebung einrichten müssen, geben Sie Folgendes ein -i
:
sudo -iu dp-postgres echo hello
root
Beachten Sie, dass diese beiden Beispiele nicht zuerst auf den Benutzer und dann auf den Benutzer ändern dp-postgres
. Sie können also einen benutzerdefinierten Eintrag einrichten, sudoers
um diesem dp-postgres
Benutzer Zugriff zu gewähren, aber nicht auf root
. Dies ist eine gute Lösung für eine Mehrbenutzerumgebung, in der der Zugriff auf root
eingeschränkt und/oder verwaltet werden soll. (Ich stelle jedoch fest, dass Sie bereits Zugriff auf haben root
, sodass Sie durch einen zweiten, restriktiveren Eintrag nichts gewinnen.)