Wie gewähre ich Postgres unter CentOS Zugriff auf /var/run?

Wie gewähre ich Postgres unter CentOS Zugriff auf /var/run?

Nach der Installation postgres-9.3über yumin meinem CentOS 7legt die Standardkonfiguration den Socket in /tmpdas Verzeichnis. Ich habe httpd( yumebenfalls über installiert), das standardmäßig von system.dmit PrivateTmpaktivierter Option verwaltet wird. Dies bedeutet, dass keine auf ausgeführte Webanwendung auf httpdzugreifen kann, also keine /tmpVerbindung zu herstellen kann postgres. Ich habe die Postgres-Konfiguration geändert, sodass es seinen Socket /var/run/postgresgenauso wie in platzieren sollte Ubuntu.

Das Problem ist nun, dass postgreses nicht genügend Berechtigungen zum Schreiben hat /var/run. Mein erster Gedanke war, einfach Folgendes zu tun:

chown postgres:postgres /var/run/postgres

Aber /var/rundas Verzeichnis wird nach dem Neustart bereinigt, also funktioniert das nicht. Meine Frage ist:

/var/run/postgresWie kann man einem postgresBenutzer so Zugriff gewähren , dass Neustarts bestehen bleiben?Ich möchte weder den Socket-Speicherort noch die Konfiguration httpdvon ändern system.d. Ich möchte nur postgresin schreiben können /var/run/postgres. Jede Hilfe ist sehr willkommen.

Antwort1

Sind Sie sicher, dass der Socket nur /tmpbei CentOS 7 vorhanden ist?

Neuere Versionen von Fedora verfügen über zwei Kopien des Sockets: Eine in /run/postgresql(das ist /var/run/postgresqlder tatsächliche Speicherort nach der Auflösung der Links), was die bevorzugte Version auf modernen Systemen ist, und eine in /tmpfür ältere Clients, die ihn dort erwarten.

Wenn Sie auf jeden Fall sicherstellen müssen, dass das Verzeichnis beim Booten erstellt wird, verwenden Sie eine tmpfiles.dDatei wie /usr/lib/tmpfiles.d/postgresql.confdie, die in Fedora mitgeliefert wird und Folgendes enthält:

d /var/run/postgresql 0755 postgres postgres -

Antwort2

Das Verzeichnis /var/runist ein symbolischer Link zu /runin CentOS 7. Das Socket-Verzeichnis für PostgreSQL ist /run/postgresql. Es ist ein temporäres Verzeichnis, das beim Booten erstellt wird.

Mit der Einführung von systemd wurde ein neuer Mechanismus namenssystemd-tmp-Dateienwurde eingeführt, um temporäre Dateien und Verzeichnisse zu verwalten.

Systemd-tmpfiles erstellt beim Booten temporäre Verzeichnisse und legt deren Besitzer, Gruppe und Berechtigungen fest. CentOS 7 hat die systemd-tmpfiles-Konfiguration für PostgreSQL in /usr/lib/tmpfiles.d/postgresql-96.conf. Standardmäßig enthält die Datei die folgende Zeile:

d /run/postgresql 0755 postgres postgres -

Sie können Berechtigungen, Eigentümer und Gruppe ändern, indem Sie diese Zeile bearbeiten. Die empfohlene Vorgehensweise zum Vornehmen solcher Änderungen besteht jedoch nicht darin, Dateien unter direkt zu bearbeiten /usr/lib/tmpfiles.d/, sondern Konfigurationsdateien nach zu kopieren /etc/tmpfiles.d/und die erforderlichen Änderungen stattdessen in dieser Kopie vorzunehmen.

Antwort3

Geben Sie die gewünschten Befehle einfach in die Datei /etc/rc.local ein und sie werden am Ende jedes Bootvorgangs ausgeführt.

verwandte Informationen