如何在 CentOS 上授予 postgres 對 /var/run 的存取權限?

如何在 CentOS 上授予 postgres 對 /var/run 的存取權限?

在 my 中安裝postgres-9.3via後,其預設配置將套接字放在目錄中。我已經(也透過安裝)預設由啟用選項管理。這意味著運行在其上的任何 Web 應用程式都無法訪問,因此無法連接到.我已經更改了 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為希望在那裡找到它的舊客戶端提供。

無論如何,如果您確實需要確保在啟動時創建目錄,請使用一個tmpfiles.d文件,例如/usr/lib/tmpfiles.d/postgresql.confFedora 中附帶的文件,其中包含:

d /var/run/postgresql 0755 postgres postgres -

答案2

目錄是/var/runCentOS 7 中的符號連結。它是一個臨時目錄,在啟動時創建。/run/run/postgresql

隨著 systemd 的出現,一種新的機制稱為systemd-tmp 文件已被引入來管理暫存檔案和目錄。

Systemd-tmpfiles 在啟動期間建立臨時目錄並設定其擁有者、群組和權限。 CentOS 7 在/usr/lib/tmpfiles.d/postgresql-96.conf.預設情況下,該檔案包含以下行:

d /run/postgresql 0755 postgres postgres -

您可以透過編輯該行來變更權限、擁有者和群組。但是,進行此類更改的建議方法不是直接編輯 下的文件/usr/lib/tmpfiles.d/,而是將設定檔複製到/etc/tmpfiles.d/,並在該副本中進行必要的更改。

答案3

只需將所需的命令放入 /etc/rc.local 檔案中,它們就會在每次啟動過程結束時執行。

相關內容