¿Cómo otorgar acceso a /var/run a postgres en CentOS?

¿Cómo otorgar acceso a /var/run a postgres en CentOS?

Después de instalar postgres-9.3via yumin my CentOS 7, su configuración predeterminada coloca el socket en /tmpel directorio. Lo tengo httpd( yumtambién lo instalé a través de), que se administra de forma predeterminada system.dcon PrivateTmpla opción habilitada. Esto significa que cualquier aplicación web que se ejecute httpdno puede acceder, /tmpasí que conéctese a postgres. Cambié la configuración de Postgres por lo que debería colocar su socket /var/run/postgrescomo en Ubuntu.

Ahora el problema es que postgresno tiene suficientes privilegios para escribir /var/run. Mi primer pensamiento fue hacer simplemente:

chown postgres:postgres /var/run/postgres

Pero /var/runel directorio se limpia después del reinicio, por lo que esto no funcionará. Mi pregunta es:

¿Cómo otorgar acceso al /var/run/postgresusuario postgresde tal manera que persistan los reinicios?No quiero cambiar la ubicación del socket y no quiero cambiar httpdla system.dconfiguración. Sólo quiero postgrespoder escribir a /var/run/postgres. Cualquier ayuda es muy apreciada.

Respuesta1

¿Estás seguro de que el socket solo está en /tmpCentOS 7?

Las versiones recientes de Fedora tienen dos copias del socket, una en /run/postgresql(que es donde /var/run/postgresqlrealmente se ubica después de que se resuelven los enlaces), que es la versión preferida en los sistemas modernos, y otra /tmppara los clientes heredados que esperan encontrarla allí.

En cualquier caso, si necesita asegurarse de que el directorio se cree en el arranque, utilice un tmpfiles.darchivo, como /usr/lib/tmpfiles.d/postgresql.confel que se incluye en Fedora y que contiene:

d /var/run/postgresql 0755 postgres postgres -

Respuesta2

El directorio /var/runes un enlace simbólico /runen CentOS 7. El directorio de socket para PostgreSQL es /run/postgresql. Es un directorio temporal, creado en el momento del arranque.

Con la llegada de systemd, un nuevo mecanismo llamadoarchivos systemd-tmpSe ha introducido para gestionar archivos y directorios temporales.

Systemd-tmpfiles crea directorios temporales durante el arranque y establece su propietario, grupo y permisos. CentOS 7 tiene la configuración systemd-tmpfiles para PostgreSQL en formato /usr/lib/tmpfiles.d/postgresql-96.conf. De forma predeterminada, el archivo contiene la siguiente línea:

d /run/postgresql 0755 postgres postgres -

Puede cambiar los permisos, el propietario y el grupo editando esa línea. Sin embargo, la forma recomendada de realizar dichos cambios no es editar directamente los archivos en /usr/lib/tmpfiles.d/, sino copiar los archivos de configuración en y /etc/tmpfiles.d/, en su lugar, realizar los cambios necesarios en esa copia.

Respuesta3

Simplemente coloque los comandos que desee en el archivo /etc/rc.local y se ejecutarán al final de cada proceso de arranque.

información relacionada