这是一个错误吗?
https://github.com/systemd/systemd/blob/v234/src/core/execute.c#L1126
/* Drop privileges - we don't need any to pam_close_session
* and this will make PR_SET_PDEATHSIG work in most cases.
* If this fails, ignore the error - but expect sd-pam threads
* to fail to exit normally */
比较http://jdebp.eu./FGA/dont-abuse-su-for-dropping-privileges.html
新的实现称为 fork(),并且仅删除子进程中的特权,保留特权帐户父进程,一旦子进程退出,该父进程可以调用 PAM“用户会话”清理函数。 (参见 Ben Collins 的当代描述。)PAM“用户会话”在父进程中打开并在子进程中关闭的最初实现被发现是有缺陷的,存在诸如 Debian Bug #195048、Debian 等错误。 Bug #580434 和 Debian Bug #599731 又名 Gentoo Bug #246813因为非特权子级没有访问权限来撤消在特权父级中打开会话时所做的所有会话设置。
在接下来的十年里,与 PAM 和 su 相关的零碎内容不断涌现。例如,2004 年,SELinux 可插入身份验证模块就出现了问题。
答案1
是的。事实上,这是一个 systemd 错误,(在撰写本文时)已经公开了两年,但根据错误报告,systemd 人员完全忽略了该错误。
根据 Ben Collins 在 2000 年的分析和 David Z Mazepam_close_session()
在 2001 年对 GDM 登录出错的分析,systemd 中可能存在一个安全漏洞,等待好奇的人去发现。
进一步阅读
- 大卫·赫尔曼 (2015-09-25)。PAMName= 和非特权 pam_close_session()。系统错误#1350。 GitHub。