我一直在尝试在Red Hat服务器上使用PAM配置postgresql,以便我可以通过pgAdmin远程访问服务器并使用PAM进行本地(服务器)身份验证 .
我编辑了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)和我的数据库用户时,一切运行顺利 .
但是当我尝试使用我的服务器用户名(我使用putty通过ssh登录)连接(也是远程,使用pgAdmin)到pam_testing数据库并给出密码时,我收到以下错误:
连接到服务器时出错:FATAL:用户XXX的PAM身份验证失败
但!当我通过putty连接到本地登录到pam_testing时,它可以工作!我的系统用户登录并进行身份验证,没有任何问题 . 它只发生在用户身上,我使用create user添加到数据库中 .
我猜它一定是某种身份验证问题(可能是服务器?它属于公司,我不知道它使用的是什么其他身份验证方法),但我不确定 . 有任何想法吗?
系统:Red hat 6.8,Postgresql:9.5
提前致谢!
1 回答
做
systemctl | grep unix_chkpwd
如果你看到这样的线条然后你遇到了同样的问题 .
要解决此问题,您需要为
/etc/shadow
文件提供postgres
用户读取权限 . 您可以通过acl:setfacl -m g:postgres:r /etc/shadow
执行此操作,或者通过创建某个组,为其授予权限,然后向其添加postgres
. 然后做systemctl restart postgresql.service
.使用pam进行身份验证的基本机制在this post中描述 . 关键时刻如下:
unix_chkpwd
在想要对某人进行身份验证的进程的uid下运行,因此如果它不是root用户(并且使用/etc/shadow
,我相信这是常见情况),则无法完成其工作 .