PostgreSQL-Benutzer führen standardmäßig eine Peer-Authentifizierung auf Unix-Sockets durch, wobei der Unix-Benutzer mit dem PostgreSQL-Benutzer identisch sein muss. So nutzen su
oder sudo
werden Menschen häufig zum postgres
Superuser.
Ich sehe oft Leute, die Konstrukte verwenden wie:
sudo su - postgres
eher, als
sudo -u postgres -i
und ich frage mich warum. Ebenso habe ich gesehen:
sudo su - postgres -c psql
anstatt
sudo -u postgres psql
Ohne die Führung würden sudo
die su
Versionen einen Sinn ergeben, wenn Sie auf einer alten Plattform ohne wären sudo
. Aber warum würden Sie auf einem weniger als prähisorischen UNIX oder Linux verwenden sudo su
?
postgresql
shell
sudo
su
Craig Ringer
quelle
quelle
Antworten:
Vergessen
sudo su
Der Gebrauch
sudo su
hat keinen Vorteil , er ist eine anachronistische Angewohnheit aus der Zeit, als die Menschen an den Gebrauch gewöhnt warensu
. Die Leute gingensudo
voran, als Linux-Distributionen aufhörten, ein Root-Passwort festzulegen, undsudo
nur so auf das Root-Konto zugreifen konnten. Anstatt ihre Gewohnheiten zu ändern, benutzten sie nursudo su
. (Ich war einer von ihnen bis vor relativ kurzer Zeit, alssudoers
ich Boxen mit Configs verwendete, die mich dazu zwangen, meine Gewohnheit zu ändern).Verwenden
sudo -u
Für eine Login-Shell
sudo -u postgres -i
ist vorzuziehensudo su - postgres
. Es ist nicht erforderlich, dass der Benutzer über Root-Zugriff verfügt/etc/sudoers
, sondern nur das Recht, Benutzer zu werdenpostgres
. Sie können damit auch bessere Zugriffskontrollen erzwingen.Zur Befehlsausführung
ist der Alternative überlegen:
Sie müssen Anführungszeichen und andere Shell-Metazeichen sowie die anderen Sicherheitsvorteile, die sich daraus ergeben, dass Sie keinen Root benötigen, nicht doppelt maskieren. Sie werden wahrscheinlich versehentlich beim Schreiben landen:
manchmal, was nicht richtig funktioniert.
Schließlich ist es viel einfacher, Umgebungsvariablen festzulegen
sudo
, zals über
su
. (Hier ist diePATH
Einstellung erforderlich, damitinitdb
die richtigepostgres
ausführbare Datei gefunden werden kann).So. Vergiss, dass der
su
Befehl existiert. Du brauchst es nicht mehr. Um die Gewohnheit zu brechen, geben Sie einen Alias an, der einen Fehler ausgibt. (Einige Init- und Package-Setup-Skripte werden weiterhin verwendet,su
sodass Sie sie jedoch nicht entfernen können.)Siehe auch:
quelle