psql:致命:用户的 PAM 身份验证失败

Posted

技术标签:

【中文标题】psql:致命:用户的 PAM 身份验证失败【英文标题】:psql: FATAL: PAM authentication failed for user 【发布时间】:2015-02-17 02:32:59 【问题描述】:

PostgreSQL 9.2.4

我无法再使用过去工作过的用户登录。我假设一个配置问题。因此,为了进行测试,我创建了一个测试用户角色“testing”,其选项与相关角色相同(作为仍然可以登录的“postgres”用户!):

CREATE ROLE testing WITH SUPERUSER NOCREATEDB NOCREATEROLE LOGIN PASSWORD 'pw';

角色创建成功:

角色列表 角色名称 |属性 |成员 -------------+-------------------------- ------------+----------- 后勤 |超级用户、创建角色、创建数据库、复制 | 测试 |超级用户 | ...

但是,登录会导致此消息:

# psql -h 127.0.0.1 -p 5434 -U 测试 用户测试密码: psql:致命:用户“测试”的 PAM 身份验证失败 致命:用户“测试”的 PAM 身份验证失败

当我尝试使用原始角色时,我也会收到此错误。

pg_hba.conf:

# "local" 仅适用于 Unix 域套接字连接 本地所有所有 pam # IPv4 本地连接: 托管所有所有 0.0.0.0/0 pam

有人知道问题出在哪里吗?

【问题讨论】:

事实证明,对于 PAM 身份验证,必须存在具有该名称的 linux 用户。所以我为现有的 linux 用户创建了一个数据库角色并且能够登录。但是我仍然无法使用原始用户登录... 你试过相反的吗?为现有的数据库用户创建一个 linux 用户 【参考方案1】:

主要问题是尝试登录的数据库角色不存在 linux 用户。还有一些其他小的配置问题(Linux 组、权限)需要修复。然后可以再次登录。

【讨论】:

您能否详细说明除了创建 unix 用户外,您还做了哪些工作来解决问题?我正在努力解决同样的问题并试图弄清楚发生了什么。 对不起,这是前段时间了。检查以下事项:用户存在、用户在正确的组中、文件权限、文件夹访问权限。所有这些事情都必须是正确的,否则你会得到描述的错误。如果您使用的是.pgpass 文件,则它必须具有文件权限 600。 谢谢,最终它有所帮助:) 我发现当我几天前执行useraddgpasswd 时,它重置了/etc/shadow 的ACL,它被配置为允许postgres阅读。恢复这个许可解决了这个问题。

以上是关于psql:致命:用户的 PAM 身份验证失败的主要内容,如果未能解决你的问题,请参考以下文章

PAM“pam_unix.so”身份验证有时会失败

对等身份验证失败,使用 psql 和使用 ansible postgresql_user 创建的用户和数据库

PostgreSQL - 致命:用户的身份验证失败

Linux服务器安全策略配置-PAM身份验证模块

pam_tally2身份验证模块

远程:无效的用户名或密码。致命:身份验证失败