pg_hba.conf 파일에 심볼릭 링크를 생성한 후 PostgreSQL이 작동하지 않습니다.

pg_hba.conf 파일에 심볼릭 링크를 생성한 후 PostgreSQL이 작동하지 않습니다.

(이 예에서는 명령 : ) /var/lib/pgsql/data/pg_hba.conf과 같이 다른 곳에 위치한 실제 파일을 가리키는 심볼릭 링크(Fedora의 기본 경로)를 생성 하려고 합니다 ./var/lib/pgsql/data/pg_hba.conf -> /home/pg_hba.confsudo ln -sf /home/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf

원본 파일과 동일하게 /home/pg_hba.conf권한( -rw-------), 소유자( postgres), 그룹( )을 설정 하고 시도해 보기도 했습니다 . 사용자 와 나 (현재는 심볼릭 링크) 로 전환하면 파일의 내용이 성공적으로 인쇄됩니다 .postgres/var/lib/pgsql/data/pg_hba.confchmod 777postgrescat /var/lib/pgsql/data/pg_hba.conf/home/pg_hba.conf

그런데 변경사항을 실행하여 적용하려고 하면 sudo systemctl restart postgresql다음과 같은 오류가 발생합니다.

제어 프로세스가 오류 코드와 함께 종료되었기 때문에 postgresql.service 작업이 실패했습니다.

자세한 내용은 "systemctl status postgresql.service" 및 "journalctl -xeu postgresql.service"를 참조하세요.

로그를 확인했지만 다른 유용한 정보는 없습니다.

동일한 디렉토리( )에 있는 파일에 대한 심볼릭 링크를 가리키는 경우에만 작동합니다. /var/lib/pgsql/data/이는 전혀 쓸모가 없습니다(예: /var/lib/pgsql/data/pg_hba.conf -> /var/lib/pgsql/data/pg_hba.conf.bak).

다른 곳을 가리키면 그것이 /var/lib/pgsql실제로 사용자의 홈 디렉터리 인 경우에도 작동하지 않습니다 postgres!

저는 Linux를 처음 접했기 때문에 시도하기 위해 내 파일로 심볼릭 링크를 만들려고 했습니다 ~/.bashrc(예: ~./bashrc -> /home/.bashrc:) echo "TEST!"이 파일 안에 심볼릭 링크를 작성하고 새 구성을 적용했는데 . ~/.bashrc제대로 작동했고 TEST!성공이 인쇄되었습니다.

그렇다면 PostgreSQL에서는 무슨 일이 벌어지고 있는 걸까요? 이 오류를 수정하고 pg_hba.conf파일에 심볼릭 링크를 유지하려면 어떻게 해야 합니까 ?

답변해주셔서 감사합니다

답변1

글쎄, 이 문제에 대해 더 많은 연구를 한 결과 근본 원인은 다음에서 비롯된 것으로 나타났습니다.SELinux.

SELinux를 완전히 비활성화하여 작동하게 했습니다(분명히 권장되지 않음).

/usr/bin/setenforce Permissive

나는 또한 chconsemanage(문서) 그러나 아무런 성공도 거두지 못했습니다.

chcon -R -t postgresql_db_t /home
semanage fcontext -a -t postgresql_db_t /home

SELinux를 완전히 비활성화하지 않고 이 작업을 수행하는 방법을 아는 사람이 있다면 꼭 알고 싶습니다.

분명히 SELinux와 싸우는 것은 좋은 방법이 아니었기 때문에 달성하려는 것을 포기했지만 배우는 것은 매우 흥미로웠습니다(SELinux에 대해 들어본 적이 없었습니다). 내 대답이 해결책을 제시하지 않고 근본 원인만 설명한다고 해도,"날 믿어 형, 이러지 마"...

관련 정보