“无法创建/删除指定会话的条目”是什么意思?

“无法创建/删除指定会话的条目”是什么意思?

没有让我登录,而是PAM用消息向我打招呼“无法创建/删除指定会话的条目“输入密码后。它谈论的是哪个条目(以及哪个会话)?

包含错误消息的字符串可在libpam.so.0(.83.1) 中找到。

我的系统基于 Fedora 版本 20 (Heisenburg) 的二进制文件。

如何对 PAM 进行故障排除以找出成功登录所需的条件?我没有系统日志(也没有永久磁盘,只有 initramfs)。

更新:

SELinux 已禁用。

我非常愿意将整个 PAM 配置替换为仅允许在虚拟控制台上登录(普通用户和 root)的简单配置。

来自Linux-PAM-1.1.8的源代码libpam/pam_strerror.c显示,该消息来自错误代码PAM_SESSION_ERR,该错误代码可能是由各种内部问题引起的,例如内存分配错误或无法定位用户主目录。尝试解释错误消息就这么多。 :-(


/etc/pam.d/login以下是我的配置文件,以指示为起点的注释为基础:

(我也尝试删除所有包含的行pam_loginuid.so,没有任何明显的差异)


/etc/pam.d/登录:

auth [user_unknown=忽略成功=ok 忽略=忽略默认=bad] pam_securetty.so
auth 子栈系统-auth
授权包括登录后
需要帐户 pam_nologin.so
帐户包括系统身份验证
密码包含系统验证
需要会话 pam_selinux.so 关闭
需要会话 pam_loginuid.so
会话可选 pam_console.so
需要会话 pam_selinux.so 打开
需要会话 pam_namespace.so
会话可选 pam_keyinit.so 强制撤销
会话包括系统身份验证
会话包括登录后
-会话可选 pam_ck_connector.so

/etc/pam.d/postlogin:

会话 [成功 = 1 默认 = 忽略] pam_succeed_if.so 服务 !~ gdm* 服务 !~ su* 安静
会话 [default=1] pam_lastlog.so nowtmp showfailed
会话可选 pam_lastlog.so 无提示 noupdate showfailed

/etc/pam.d/system-auth:

需要身份验证 pam_env.so
验证足够的 pam_fprintd.so
验证足够 pam_unix.so nullok try_first_pass
身份验证必需条件 pam_succeed_if.so uid >= 1000 Quiet_success
需要身份验证 pam_deny.so
需要帐户 pam_unix.so
帐号足够 pam_localuser.so
帐户足够 pam_succeed_if.so uid < 1000 安静
需要帐户 pam_permit.so
密码必需 pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
密码足够 pam_unix.so sha512 Shadow nullok try_first_pass use_authtok
需要密码 pam_deny.so
会话可选 pam_keyinit.so 撤销
需要会话 pam_limits.so
-会话可选 pam_systemd.so
会话 [success=1 default=ignore] crond 中的 pam_succeed_if.so 服务安静 use_uid
需要会话 pam_unix.so

我有这些共享的 PAM 相关库:

libpam_misc.so.0
libpam.so.0
pam_access.so
pam_console.so
pam_deny.so
pam_env.so
pam_fprintd.so
pam_gnome_keyring.so
pam_keyinit.so
pam_lastlog.so
pam_limits.so
pam_localuser.so
pam_loginuid.so
pam_命名空间.so
pam_nologin.so
pam_permit.so
pam_pkcs11.so
pam_pwquality.so
pam_rootok.so
pam_securetty.so
pam_selinux_permit.so
pam_selinux.so
pam_sepermit.so
pam_succeed_if.so
pam_systemd.so
pam_timestamp.so
pam_unix_acct.so
pam_unix_auth.so
pam_unix.so
pam_xauth.so

以及上面共享库引用的这些(根据ldd:

libattr.so.1
libaudit.so.1
libcap.so.2
libcrack.so.2
libcrypt.so.1
libc.so.6
libdbus-1.so.3
libdbus-glib-1.so.2
libdl.so.2
libffi.so.6
libfreebl3.so
libgcc_s.so.1
libgio-2.0.so.0
libglib-2.0.so.0
libgmodule-2.0.so.0
libgobject-2.0.so.0
liblzma.so.5
libnsl.so.1
libnspr4.so
libnss3.so
libnssutil3.so
libpcre.so.1
libpcre.so.3
libplc4.so
libplds4.so
libpthread.so.0
libpwquality.so.1
libresolv.so.2
库.so.1
libselinux.so.1
libsmime3.so
libssl3.so
libutil.so.1
libz.so.1

答案1

就我而言,我使用的是 Centos 6,并在 /var/log/secure 中找到了以下内容:

Mar 13 10:13:02 server sudo(pam_google_authenticator)[24911]: Unrecognized option "user=root"
Mar 13 10:13:02 server sudo:    ralph : pam_authenticate: Cannot make/remove an entry for the specified session ; TTY=pts/2 ; PWD=/home/ralph ; USER=root ; COMMAND=/usr/local/bin/become root

最终,是 GA PAM 模块呕吐,然后 PAM 不知道如何处理,因此出错。我确信不同 PAM 模块的许多其他问题也会导致相同的行为(不仅仅是 Google Authenticator)。某种日志可能是了解正在发生的情况的唯一方法。

答案2

这可能意味着 pam.d 文件存在问题,或者需要 pam 访问的内容存在问题。

一种调试技术是在整个 pam 文件中散布 pam_echo 语句:

例如

auth       [default=ignore] pam_echo.so "sshd: calling faillock" 
auth       requisite    pam_faillock.so preauth even_deny_root
auth       [default=ignore] pam_echo.so "sshd: faillock did not fail"
auth       [default=ignore] pam_echo.so "calling password-auth substack"
auth       substack     password-auth
auth       [default=ignore] pam_echo.so "back from password-auth substack"
auth       [default=ignore] pam_echo.so "calling postlogin"
auth       include      postlogin
auth       [default=ignore] pam_echo.so "back from postlogin"

添加 pam_echo 时要小心 - 不要将其放在可以“跳过”后续行的行之后,或者如果必须,请更新要跳过的行数。

提醒:在更改 pam 文件时始终保持以 root 身份登录 - 更改会立即生效,任何错误都可能导致您无法登录或 sudo...

答案3

我使用该工具在自己的系统上解决了这个问题审核2允许。查看我的帖子

相关内容