Ergebnis 1 bis 8 von 8

Thema: pg_hba.conf und pam/password/md5

  1. #1
    Wolfgang ist offline Neuer Benutzer
    Registriert seit
    16.08.2011
    Beiträge
    3

    Standard pg_hba.conf und pam/password/md5

    Hallo,
    Ich habe Postgresql 9.04 bei mir unter Ubuntu 10.04.3 LTS installiert mittels
    ./configure --with-openssl --with-pam --with-tcl --enable-nls
    make
    sudo make install

    und dann im wesentlichen das Post-Installation Setup der Datei
    postgres-9.0.4/INSTALL
    abgearbeitet.

    Der Server startet, ich kann die Testdatenbank anlegen und mich auch als User postgres anmelden.

    Dann habe ich versucht, die Datei
    /usr/local/pgsql/data/pg_hba.conf
    anzupassen, wobei ich trust durch pam ersetzt habe; die relevanten Zeilen lauten:
    # TYPE DATABASE USER CIDR-ADDRESS METHOD

    # "local" is for Unix domain socket connections only
    local all all pam
    # IPv4 local connections:
    host all all 127.0.0.1/32 pam
    # IPv6 local connections:
    host all all ::1/128 pam

    Die Folge war, dass ich mich zwar als user postgres anmelden kann, aber kein weiterer user Zugriff auf die
    Datenbank hat. (Insbesondere auch user, die ich mittels createuser angelegt habe.)

    Die Ersetzung von pam durch md5 oder passwort führte dazu, dass ich mich nun nicht einmal mehr als user postgres anmelden konnte. Nach einigem Hin und Her bin ich schließlich bei der folgenden Version gelandet:

    # TYPE DATABASE USER CIDR-ADDRESS METHOD

    # "local" is for Unix domain socket connections only
    local all postgres pam
    local all all trust
    # IPv4 local connections:
    host all postgres 127.0.0.1/32 pam
    host all all 127.0.0.1/32 trust
    # IPv6 local connections:
    host all postgres ::1/128 pam
    host all all ::1/128 trust


    Dies hat dazu geführt, dass sich postgres (als einziger Superuser) nur mittels pam anmelden kann,
    jeder andere Nutzer kann sich ohne weitere Authentifizierung anmelden. Ich kann mir aber nicht
    erklären, warum ich nach Änderung von pam in md5 oder passwort nicht mehr auf den Datenbankserver zugreifen kann
    - und zwar nicht mittels Terminal, ssh und phppgadmin (hierbei habe ich die Konfiguration so geändert, dass ich mich als user
    postgres über phppgadmin anmelden kann, aber eben nur mittels pam).


    Offenbar verstehe ich das Konzept der pg_hba.conf nicht richtig. Kann mir jemand einen Tipp geben, wo mein Fehler liegt?

    Danke für alle Hinweise
    Wolfgang

  2. #2
    Wolfgang ist offline Neuer Benutzer
    Registriert seit
    16.08.2011
    Beiträge
    3

    Standard Bin einen Schritt weiter gekommen

    So, nachdem ich nun dem User postgres ein Passwort verpasst habe, kann ich mich auch als User postgres mittels Authentifizierungsmethode md5 anmelden. Das gleiche gilt für alle anderen User. Bleibt für mich die Frage: Wie arbeitet die Authentifizierungsmethode pam, insbesondere warum funktionierte sie beim User postgres, versagte aber bei allen anderen Usern.

    Nächste Frage: Welche Authentifizierungsmethode wird als sinnvoll angesehen, wenn die Datenbank ein Webinterface bedienen soll?

    Viele Grüße
    Wolfgang

  3. #3
    Gisman ist offline Erfahrener Benutzer
    Registriert seit
    20.01.2006
    Ort
    Pfalz
    Beiträge
    791

    Standard

    Also: pam ist eine Authentifizierungs Methode unter Linux, die mehrere Login-Verfahren zusmmenfassen kann. Z.B. mehrere LDAP-Server, Publickey-Authentifizierung und lokel per username/Passwort. So können halt verschidene Möglichkeiten des Login kombiniert werden. Das Ding ist aber eine Welf für sich

    Für eine Webanwendung würde ich die die Auslagerung des Login in die Applikation empfehlen. Diese stellt dann einen zentralen Pool an Verbindungen bereit, die über einen internen Nutzer und die Applikation gemanaget werden. Gängige Webframeworks arbeite alle auf diese Weise. Vorteil: man hat die einzelnen User aus der Datenbank (viel Arbeit...) und kann in der Applikation komplexere Berechtigungsmodelle (z.B. CMS o.ä.) entwickeln als die in der Datenbank möglich wäre. AFAIR müssen die Nutzer die sich einloggen können sollen alle in der Datenbank angelegt sein.
    Um das genau zu verstehen kann ich dir dem ads sein Buch und oder die Postgres-Doku empfehlen. Und viel Rumprobieren

    Gruß Uwe
    Have a lot of fun!

  4. #4
    Wolfgang ist offline Neuer Benutzer
    Registriert seit
    16.08.2011
    Beiträge
    3

    Standard

    Hallo Gisman,
    Zitat Zitat von Gisman Beitrag anzeigen
    Also: pam ist eine Authentifizierungs Methode unter Linux, die mehrere Login-Verfahren zusmmenfassen kann. Z.B. mehrere LDAP-Server, Publickey-Authentifizierung und lokel per username/Passwort. So können halt verschidene Möglichkeiten des Login kombiniert werden. Das Ding ist aber eine Welf für sich
    Ok. Soweit ich das verstehe, sind Datenbankuser und Betriebssystemaccounts nicht das gleiche. Wenn ich einen Betriebssystemaccount mit Namen "wolfgang" habe und einen Datenbankuser mit Namen "wolfgang", sind das also zwei unterschiedliche Sachen. Verwende ich als Authentifizierungsmethode "trust", dann kann sich jeder, der Zugriff auf den Server erlangt als jeder Datenbankuser anmelden - keine Sicherheit.

    Verwende ich als Authentifizierungsmethode "md5" oder "passwort", dann muss jeder sich mit einem Passwort legitimieren um auf die Datenbank zugreifen zu können. Das Passwort ist das Passwort des Datenbankusers und ist im Datenbereich von postgres gespeichert. Der Unterschied besteht darin, dass "md5" verschlüsselte Passwortübertragung macht und "Passwort" unverschlüsselte. So habe ich das verstanden.

    Verwende ich "pam" als Authentifizierungsmethode, dann wird eben das PAM-Modul des Betriebssystems zur Authentifizierung verwendet. Mir ist allerdings nicht klar, wie das funktioniert. Wähle ich pam als einzige Authentifizierungsmethode aus und der Superuser (postgres) hat in der Datenbank _kein_ Passwort, dann kann er sich doch anmelden. Lege ich weitere Datenbankuser an -egal, ob mit oder ohne Passwort- so können sich diese aber _nicht_ anmelden. Da würde ich einen Konfigurationsfehler vermuten. Ich finde aber nicht heraus, wo der liegt. Wenn das PAM-Modul des Betriebssystems nicht für postgres konfiguriert ist, warum kann sich der User postgres dann mit seinen _Betriebssystempasswort_ anmelden? Wenn es konfiguriert ist, warum können sich dann andere Nutzer nicht anmelden -egal, ob mit Betriebssystempasswort oder datenbankspezifischem Passwort-

    Grundsätzlich würde ich erwarten, wenn PAM die Authentifizierung übernimmt, dass dann die Passwörter nicht im Datenbereich von postgres abgespeichert werden. Das passt dazu, wie die Anmeldung des Superusers funktioniert. Aber wie funktioniert dann die Anmeldung von Datenbankusern, die keinen Betriebssystemaccount haben? Ich finde das Kapitel 19.3.10 des postgresql Handbuchs in dieser Hinsicht überhaupt nicht erhellend. Auch der Hinweis auf die Linux-PAM-Page hat mir da nicht wirklich weitergeholfen. Deshalb hatte ich gehofft, hier hätte irgendjemand schon einmal diese Authentifizierungsmethode erfolgreich angewendet.


    Zitat Zitat von Gisman Beitrag anzeigen
    Für eine Webanwendung würde ich die die Auslagerung des Login in die Applikation empfehlen. Diese stellt dann einen zentralen Pool an Verbindungen bereit, die über einen internen Nutzer und die Applikation gemanaget werden. Gängige Webframeworks arbeite alle auf diese Weise. Vorteil: man hat die einzelnen User aus der Datenbank (viel Arbeit...) und kann in der Applikation komplexere Berechtigungsmodelle (z.B. CMS o.ä.) entwickeln als die in der Datenbank möglich wäre. AFAIR müssen die Nutzer die sich einloggen können sollen alle in der Datenbank angelegt sein.
    Um das genau zu verstehen kann ich dir dem ads sein Buch und oder die Postgres-Doku empfehlen. Und viel Rumprobieren

    Gruß Uwe
    Gut. Nehmen wir an, ich möchte Wordpress mit einer Postgresql-Datenbank betreiben. Dann hätte ich z.B. einen Betriebssystemnutzer wordpress, der auf die Daten im html-Bereich zugreifen darf (bei mir /var/www/wordpress) und der auf die Datenbank zugreifen darf. Jeder Datentransfer zwischen wordpress und der Datenbank wird über diesen User abgewickelt. Datenbankpasswort und Passwort des Useraccounts unterscheiden sich, weil das Datenbankpasswort im Quelltext in irgendeiner php-Datei auftaucht.

    Viele Grüße
    Wolfgang

  5. #5
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.055

    Standard

    Zitat Zitat von Wolfgang Beitrag anzeigen
    Soweit ich das verstehe, sind Datenbankuser und Betriebssystemaccounts nicht das gleiche.
    Das ist richtig.



    Verwende ich "pam" als Authentifizierungsmethode, dann wird eben das PAM-Modul des Betriebssystems zur Authentifizierung verwendet. Mir ist allerdings nicht klar, wie das funktioniert. Wähle ich pam als einzige Authentifizierungsmethode aus und der Superuser (postgres) hat in der Datenbank _kein_ Passwort, dann kann er sich doch anmelden. Lege ich weitere Datenbankuser an -egal, ob mit oder ohne Passwort- so können sich diese aber _nicht_ anmelden. Da würde ich einen Konfigurationsfehler vermuten. Ich finde aber nicht heraus, wo der liegt. Wenn das PAM-Modul des Betriebssystems nicht für postgres konfiguriert ist, warum kann sich der User postgres dann mit seinen _Betriebssystempasswort_ anmelden? Wenn es konfiguriert ist, warum können sich dann andere Nutzer nicht anmelden -egal, ob mit Betriebssystempasswort oder datenbankspezifischem Passwort-
    Per Default gibt es am Anfang der pg_hba.conf zwei Zeilen, die den Unix User "postgres" mittels "ident" Verfahren in die Datenbank lassen.


    Nehmen wir an, ich möchte Wordpress mit einer Postgresql-Datenbank betreiben.
    Geht das überhaupt?
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  6. #6
    SierraX ist offline Neuer Benutzer
    Registriert seit
    26.08.2011
    Ort
    Munich
    Beiträge
    5

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Geht das überhaupt?
    Es gibt ein PlugIn für

  7. #7
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.055

    Standard

    Jetzt sagt mir nicht, ich müsste langsam mein Blog umstellen ...
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  8. #8
    SierraX ist offline Neuer Benutzer
    Registriert seit
    26.08.2011
    Ort
    Munich
    Beiträge
    5

    Standard

    Nuja... wie es nunmal so ist... Einfach mal in ner Sandbox ausporbieren... und wenns Stabil und den Aufwand wert ist, kann man es auch umstellen.
    Der Elefant ist mir schon seit Jahren sympathischer als der Delfin...
    Der Delfin hat aber immer noch die größere Base... ändert sich hoffentlich mit der Ernennung des Elefanten zum "Hoflieferant" ;-)

Ähnliche Themen

  1. Problem Problem mit pg_hba.conf
    Von Karl der Heinz im Forum Konfiguration
    Antworten: 1
    Letzter Beitrag: 07.04.2012, 15:19
  2. Konfiguration der pg_hba.conf
    Von burkhard im Forum Allgemeines
    Antworten: 1
    Letzter Beitrag: 22.03.2011, 15:38
  3. Konfiguration der pg_hba.conf
    Von burkhard im Forum Konfiguration
    Antworten: 3
    Letzter Beitrag: 10.03.2011, 15:14
  4. Fehler in der pg_hba.conf
    Von Metzgers Witwe im Forum Konfiguration
    Antworten: 2
    Letzter Beitrag: 19.02.2008, 15:35
  5. IP-Adressbereich in pg_hba.conf ?
    Von larrry im Forum Konfiguration
    Antworten: 20
    Letzter Beitrag: 07.02.2008, 21:55

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum