2016-09-22 12 views
1

私はpgAdminでサーバーにリモートアクセスし、PAMでローカル(サーバー)認証を使用できるように、Red HatサーバーでPAMを使用してpostgresqlを構成しようとしています。PAM認証+ pgAdminはリモートで失敗しますが、ローカルで動作します

Iは、pg_hba.confファイルを編集し、適切な行に変更された:私は使用するようにまた、私は同じユーザ名を持つデータベースユーザーを作成

host pam_testing  all 0.0.0.0/0 pam pamservice=postgresql95 

host postgres all 0.0.0.0/0 md5 

およびこれを添加

pgAdminを使用してリモートでログインしようとすると(md5を使用して)、データベースユーザー全員でwoを実行するとスムーズに。

しかし、私は(pgAdminでで、またリモートで)接続してみてください(パテを使用してssh経由でIをログイン先の)私のサーバーのユーザー名でデータベースをpam_testingへとパスワードを与え、私は次のエラーを取得する:

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

BUT!私がpam_testingにローカルでログインしているときにパテを介して接続しています!私のシステムユーザはログインして問題なく認証されます。そして、それはユーザーのためにのみ発生し、私はcreate userを使用してデータベースに追加しました。

私はそれが何らかの認証の問題であることが予想されています(サーバーにはおそらくそれが会社に属していますが、他の認証方法は何かわかりません)。何か案は?

システム:Red Hatの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の下で実行されるため、ルートでない場合(一般的なケースでは/etc/shadowが使用されます)、その仕事はできません。

関連する問題