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

chcon私もsemanage文書) しかし、何の成功も収められなかった。

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

SELinuxを完全に無効にせずにこれを行う方法を知っている人がいる場合は、ぜひ知りたいです。

明らかにSELinuxと戦うのは良い方法ではなかったので、達成したいことをあきらめましたが、学ぶことは非常に興味深かったです(SELinuxについて聞いたことがありませんでした)。私の答えが解決策を提示せず、根本的な原因だけを説明しても、「私を信じてお兄さん、こんなことはない」...

おすすめ記事