
Nach der Installation postgres-9.3
über yum
in meinem CentOS 7
legt die Standardkonfiguration den Socket in /tmp
das Verzeichnis. Ich habe httpd
( yum
ebenfalls über installiert), das standardmäßig von system.d
mit PrivateTmp
aktivierter Option verwaltet wird. Dies bedeutet, dass keine auf ausgeführte Webanwendung auf httpd
zugreifen kann, also keine /tmp
Verbindung zu herstellen kann postgres
. Ich habe die Postgres-Konfiguration geändert, sodass es seinen Socket /var/run/postgres
genauso wie in platzieren sollte Ubuntu
.
Das Problem ist nun, dass postgres
es 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/run
das Verzeichnis wird nach dem Neustart bereinigt, also funktioniert das nicht. Meine Frage ist:
/var/run/postgres
Wie kann man einem postgres
Benutzer so Zugriff gewähren , dass Neustarts bestehen bleiben?Ich möchte weder den Socket-Speicherort noch die Konfiguration httpd
von ändern system.d
. Ich möchte nur postgres
in schreiben können /var/run/postgres
. Jede Hilfe ist sehr willkommen.
Antwort1
Sind Sie sicher, dass der Socket nur /tmp
bei CentOS 7 vorhanden ist?
Neuere Versionen von Fedora verfügen über zwei Kopien des Sockets: Eine in /run/postgresql
(das ist /var/run/postgresql
der tatsächliche Speicherort nach der Auflösung der Links), was die bevorzugte Version auf modernen Systemen ist, und eine in /tmp
fü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.d
Datei wie /usr/lib/tmpfiles.d/postgresql.conf
die, die in Fedora mitgeliefert wird und Folgendes enthält:
d /var/run/postgresql 0755 postgres postgres -
Antwort2
Das Verzeichnis /var/run
ist ein symbolischer Link zu /run
in 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.