2016-09-22 65 views
1

我一直在嘗試在Red hat服務器上配置PAM的postgresql,以便通過pgAdmin獲得對服務器的遠程訪問權限並對PAM使用本地(服務器)身份驗證。PAM身份驗證+ pgAdmin遠程失敗,但本地工作

我已經編輯pg_hba.conf文件和改變相應的行:

host postgres all 0.0.0.0/0 md5 

並且這增加了一個:

host pam_testing  all 0.0.0.0/0 pam pamservice=postgresql95 

此外我創建的數據庫用戶使用相同的用戶名作爲我使用使用putty登錄(無密碼,只需創建用戶xxx)

當我嘗試使用pgAdmin以postgres數據庫(使用md5)與我的數據庫用戶進行遠程登錄時, rks順利。

但是當我嘗試連接(也遠程,使用pgAdmin的)到我的服務器的用戶名pam_testing數據庫(而我通過使用膩子SSH登錄),並授予密碼我收到以下錯誤:

Error connecting to the server: FATAL: PAM authentication failed for user XXX

但是!當我通過putty連接時在本地登錄到pam_testing時,它可以工作!我的系統用戶登錄並進行身份驗證沒有任何問題。它只發生在用戶,我使用create user添加到數據庫中。

我猜它必須是某種身份驗證問題(服務器可能?它屬於公司,我不知道它使用了什麼其他身份驗證方法),但我不確定。有任何想法嗎?

系統:紅帽6.8, PostgreSQL的:9.5

提前感謝!

回答

0

systemctl | grep unix_chkpwd如果你看到這樣的

unix_chkpwd[13081]: check pass; user unknown 
unix_chkpwd[13081]: password check failed for user (<username>) 

線,那麼你已經遇到了我也做了同樣的問題。

要解決它,您需要將postgres用戶讀取權限給/etc/shadow文件。您可以通過acl:setfacl -m g:postgres:r /etc/shadow或通過創建某個組來完成此操作,然後向其添加postgres。然後做systemctl restart postgresql.service

使用pam進行身份驗證的基本機制在this post中描述。關鍵時刻如下:unix_chkpwd在想要驗證某個人的進程的uid下運行,因此如果它不是root(並且使用/etc/shadow,我認爲這是常見的情況),它無法完成其工作。