Keine Passwort-Abfrage für postgresql-superuser
Installiert, nachdem ich PostgreSQL 9.1 unter Ubuntu 12.04 habe ich das Passwort für die "postgres" superuser-account. Ich möchte, dass alle Benutzer müssen Ihr Kennwort eingeben, wenn die Anmeldung in. Dies ist der Grund, warum ich so konfiguriert pg_hba.conf etwa so:
#Database administrative login by Unix domain socket
local all postgres md5
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
Habe ich neu gestartet postgresql nachdem Sie die änderungen. Wenn ich dies tun psql -U testuser
bekomme ich nach einem Passwort gefragt, aber wenn ich mich einlogge mit der "postgres" - Konto, wie so psql -U postgres
ich bekomme keine Passwortabfrage und eingeloggt bin.
Wenn ich Kraft die Passwort-Abfrage mit psql -U postgres -W
ich kann mich anmelden, indem Sie das richtige Kennwort eingeben oder durch Eingabe gar nichts. Die Eingabe eines falschen Kennworts wird abgelehnt.
Kann jemand mir bitte erklären, warum dies passiert ist?
Auf ein zugehöriger Hinweis: ich sehe eine Menge von Beispiel, wo die Menschen verwenden ident als Authentifizierungsmethode für die "postgres" - Benutzer, mit dem argument, dass der "postgres" - Benutzer braucht man das root-Passwort der Maschine. Ich gehe davon aus, dass die Begründung ist, dass, wenn ein Angreifer erhält root-Zugriff, die Sie fertig sind, sowieso. Ich würde lieber mit einem Kennwort anmelden, obwohl, das ist nicht das gleiche wie das root-Passwort. Ich prefere dass Sie verschiedene Passwörter für verschiedene Dinge. Ist das vernünftig?
Ausgabe von grep '^[^#]' pg_hba.conf
local all postgres md5
local all all md5
host all all 127.0.0.1/32 md5
InformationsquelleAutor der Frage Basil | 2012-08-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre
pg_hba.conf
sollte in der Tat benötigen Sie ein Passwort für den unix-socket-verbindungen, aber es gibt immer noch Möglichkeiten, um ihn herum, sollten Sie überprüfen, ob:einen
.pgpass
Datei in die postgres-home-Verzeichnis mit dem Passwort (auch überprüfen Sie die PGPASSFILE environment variable für ein nicht-standard-Pfad).den PGPASSWORD Umgebungsvariable gesetzt werden konnte.
Und es gibt auch die Möglichkeit, die Sie Bearbeiten gerade die falsche pg_hba.conf-Datei.
Wenn verbunden, wie postgres, der korrekte Pfad kann erhalten werden für die überprüfung mit den
SHOW hba_file
SQL-Befehl.Vielleicht möchten Sie auch zu überprüfen Sie die Protokolldatei
/var/log/postgresql/postgresql-9.1-main.log
für die Bestätigung, dass die Konfigurationsdateien neu geladen werden, wenn Sie danach Fragen, und suchen Sie nach einem Verdacht Meldung bei der Authentifizierung.Als für der Grund, warum ohne Passwort-verbindungen mit dem postgres-Nutzer sind Häufig, die debian-PG-9.1
pg_hba.conf
hat dieser Kommentar über das Verbot Sie:Da Debian und Ubuntu verwenden den gleichen postgres-Pakete, dies gilt für Ubuntu als gut.
InformationsquelleAutor der Antwort Daniel Vérité
Wieder Ihr merkwürdiges Verhalten, ich denke, Sie vermisst habe, eine Linie von
pg_hba.conf
die für diepostgres
Benutzer. Zeig bitte die Ausgabe von:Als für ident-vs-md5; ich persönlich bevorzuge ident für eine interaktive Nutzung in der Entwicklung, und es ist in Ordnung für den normalen Benutzer, aber ich glaube nicht, dass Zugang zu den
postgres
Benutzer übersudo
ist eine tolle Idee. Beidesudo -u postgres psql
undpsql -U postgres -W
gewähren Sie Zugriff auf die postgres-superuser-Rolle und damit Zugriff auf das Dateisystem als Datenbank-Benutzer. Erfordern weder ein root-Passwort, undsudo
leicht eingeschränkt übersudoers
zu begrenzen, die dem aufrufenden Benutzer gerade läuftpsql
. Jedoch, mitsudo -u postgres psql
die client code läuftpostgres
zu, so dass es eine größere Angriffsfläche, und es gibt immer die chance, dem Benutzer einen Weg zu finden, Sie zu umgehen, Ihresudoer
Grenzen.Benutze ich
ident
im devmd5
in der Produktion.InformationsquelleAutor der Antwort Craig Ringer