(이 예에서는 명령 : ) /var/lib/pgsql/data/pg_hba.conf
과 같이 다른 곳에 위치한 실제 파일을 가리키는 심볼릭 링크(Fedora의 기본 경로)를 생성 하려고 합니다 ./var/lib/pgsql/data/pg_hba.conf -> /home/pg_hba.conf
sudo 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.conf
chmod 777
postgres
cat /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
나는 또한 chcon
및 semanage
(문서) 그러나 아무런 성공도 거두지 못했습니다.
chcon -R -t postgresql_db_t /home
semanage fcontext -a -t postgresql_db_t /home
SELinux를 완전히 비활성화하지 않고 이 작업을 수행하는 방법을 아는 사람이 있다면 꼭 알고 싶습니다.
분명히 SELinux와 싸우는 것은 좋은 방법이 아니었기 때문에 달성하려는 것을 포기했지만 배우는 것은 매우 흥미로웠습니다(SELinux에 대해 들어본 적이 없었습니다). 내 대답이 해결책을 제시하지 않고 근본 원인만 설명한다고 해도,"날 믿어 형, 이러지 마"...