CentOS에서 postgres에/var/run에 대한 액세스 권한을 부여하는 방법은 무엇입니까?

CentOS에서 postgres에/var/run에 대한 액세스 권한을 부여하는 방법은 무엇입니까?

my 를 postgres-9.3통해 설치한 후 기본 구성은 소켓을 디렉토리에 넣습니다. 기본적으로 옵션이 활성화되어 관리되는 (설치도 포함 ) 있습니다 . 즉, 에서 실행 중인 모든 웹 애플리케이션은 액세스할 수 없으므로 에 연결해야 합니다 . Postgres 구성을 변경 하여 .yumCentOS 7/tmphttpdyumsystem.dPrivateTmphttpd/tmppostgres/var/run/postgresUbuntu

이제 문제는 postgres에 쓸 수 있는 권한이 충분하지 않다는 것 입니다 /var/run. 내 첫 번째 작업은 다음과 같습니다.

chown postgres:postgres /var/run/postgres

그러나 /var/run재부팅 후 디렉토리가 정리되므로 작동하지 않습니다. 내 질문은 다음과 같습니다

재부팅을 지속하는 방식으로 사용자 /var/run/postgres에게 액세스 권한을 부여하는 방법은 무엇입니까 ?postgres소켓 위치를 변경하고 싶지 않고 httpdsystem.d구성도 변경하고 싶지 않습니다. 나는 단지 postgres에 글을 쓸 수 있기를 원합니다 /var/run/postgres. 어떤 도움이라도 대단히 감사하겠습니다.

답변1

/tmp소켓이 CentOS 7에만 있는 것이 확실합니까 ?

최신 버전의 Fedora에는 두 개의 소켓 복사본이 있습니다. 하나는 최신 시스템에서 선호되는 버전인 (링크가 확인된 후 실제로 위치하는 /run/postgresql위치 )에 있고 다른 하나는 그곳에서 찾을 것으로 예상되는 레거시 클라이언트용입니다./var/run/postgresql/tmp

어떤 경우든 부팅 시 디렉터리가 생성되었는지 확인해야 하는 경우 Fedora에 제공되고 다음을 포함하는 tmpfiles.d파일을 사용하십시오./usr/lib/tmpfiles.d/postgresql.conf

d /var/run/postgresql 0755 postgres postgres -

답변2

디렉터리는 CentOS 7의 /var/run심볼릭 링크입니다 /run. PostgreSQL의 소켓 디렉터리는 입니다 /run/postgresql. 부팅 시 생성되는 임시 디렉터리입니다.

systemd의 출현으로 새로운 메커니즘이 등장했습니다.systemd-tmp파일임시 파일과 디렉터리를 관리하기 위해 도입되었습니다.

Systemd-tmpfiles는 부팅 중에 임시 디렉터리를 생성하고 소유자, 그룹 및 권한을 설정합니다. CentOS 7에는 PostgreSQL에 대한 systemd-tmpfiles 구성이 있습니다 /usr/lib/tmpfiles.d/postgresql-96.conf. 기본적으로 파일에는 다음 줄이 포함됩니다.

d /run/postgresql 0755 postgres postgres -

해당 줄을 편집하여 권한, 소유자 및 그룹을 변경할 수 있습니다. 그러나 이러한 변경을 수행하는 권장 방법은 에서 파일을 직접 편집하는 것이 아니라 /usr/lib/tmpfiles.d/구성 파일을 로 복사하고 /etc/tmpfiles.d/대신 해당 복사본에서 필요한 변경을 수행하는 것입니다.

답변3

원하는 명령을 /etc/rc.local 파일에 넣으면 각 부팅 프로세스가 끝날 때 실행됩니다.

관련 정보