permission denied bei Ausführung als Dienst

Ich habe hier eine PostgreSQL 8.0.4 Installation unter NetBSD 3. Der Datenbankserver soll beim Boot-Vorgang automatisch gestartet werden. Die entsprechende Datei (pgsql) wurde nach /etc/rc.d kopiert und die /etc/rc.conf enthält den Eintrag: “pgsql=YES”

Der Benutzer postgres ist in der Gruppe users angelegt.
Er ist Besitzer der Verzeichnisse /usr/pkg/pgsql und /usr/pkg/pgsql/data.

Die Datei /usr/pkg/pgsql/data/postgresql.conf enthält den Eintrag:

listen_addresses = ‘*’
port = 5432

Die Datei /usr/pkg/pgsql/data/pg_hba.conf enthält den Eintrag:

“local” is for Unix domain socket connections only

local all all trust

IPv4 local connections:

host all all 127.0.0.1/32 trust
host all all 192.168.1.0/24 password

IPv6 local connections:

#host all all ::1/128 trust

Dennoch erhalte ich auf zwei verschiedenen Systemen zwei unterschiedliche Fehlermeldungen beim Boot-Vorgang:

could not open PID file pg_ctl: “/usr/pkg/pgsql/data/postmaster.pid”: Permission denied

bzw.

could not start postmaster

Im zweiten Fall enthält die Datei /usr/pkg/pgsql/errlog der Eintrag:

FATAL: could not open configuration file “/usr/pkg/pgsql/data/pg_hba.conf”: Permission denied

Ich gehe fast davon aus, dass der “Dienst” beim Starten nicht die Selben Rechte wie der User postgres hat und daher einfach keinen Zugriff auf die Verzeichnisse. Wenn ich jedoch die Rechte auf die Verzeichnisse zu grosszügig gestalte bekomme ich eine Fehlermeldung die besagt, dass das nicht erlaubt sei.
Der manuelle Start als User postgres ist immer von Erfolg gekrönt.

Die Frage ist also:
Wie bekomme ich es hin, dass der PosgreSQL-Server erfolgreich beim booten startet?

Hoffentlich ist die Frage nicht zu Betriebssystem-spezifisch.

Dennoch vorab schon mal vielen Dank für jeden Versuch der Unterstützung.

hi,

buuh, ich hab scho ewig nichts mehr mit netbsd gemacht. kann es sein, das dein netbsd den postgresql server als root starten will und das nicht geht? ich erinnere mich daran, das es da bei bsd probleme gab bin mir aber nicht mehr sicher. im inet hab ich jetzt nichts genaueres gefunden…

cu tb.

Hi,

Problem gelöst.

Die Ursache war in den Werten der Variablen im Script /etc/rc.d/pgsql zu finden.
Ich hatte übersehen, dass hier der User pgsql definiert ist. Da ich einen anderen User berechtigt hatte, war der User pgsql natürlich nicht berechtigt den start zu initialisieren.
Jetzt wo das angepasst ist, funktioniert es wie es soll.

Sollte also jemand mal NetBSD verwenden wollen (ökonomische Alternative, insbesondere mit Xen), sollte man darauf achten, dass entweder der Benutzer pgsql erstellt wird oder das Startscript anpassen. Letzteres insbesondere wenn man die DB nicht im home-Verzeichnis des user anlegen möchte.

@Xandrian:
Danke für deine Bemühungen.