背景:我正在使用 Debian 7 系统,该系统已与 LDAP+Kerberos 系统集成,使用libnss-ldap
,libpam-krb5
和nscd
. 我已修改sudoers
为允许 LDAP 组有权sudo
并获得超级用户权限。因此,我可以作为 LDAP 组登录来管理机器。这一切都很好,并且ssh
登录适用于 LDAP 用户。
我只是.k5login
在我的用户帐户的主目录中试验一个文件,Cosmic Ossifrage
. 在文件中,我列出了:
[email protected]
这是一个有效的 Kerberos 身份。SSH 登录,因为该用户继续正确使用.k5login
文件。
但是,有了这个.k5login
文件在我的主目录中,我不再能够使用它sudo -i
来获得超级用户权限。这似乎没有任何意义,因为 .k5login 在我的主目录中,而不是在我的主目录中root
,所以在我看来,root
用户和sudo
命令都不应受到比sudoers
文件中存在的内容更进一步的限制。
但是,有了.k5login
上面的文件,它们既sudo -i
不能sudo su
工作也不能像以前那样工作。一旦.k5login
文件被删除,这个功能就恢复了,我又能恢复sudo
了。
在日志文件/var/log/auth.log
中,此时报告的许多错误消息中有一条来自 sudo,说明:
[pam:sudo] krb5_kuserok failed for user cosmic_ossifrage
我是否错过了定义 a.k5login
应该做什么的基本内容?这是预期的行为,如果是,为什么?
根据Mark 的 评论,该
.k5login
文件必须满足以下要求:根据 Kerberos源代码中的注释。
在这种情况下,
.k5login
除了用户之外,任何人都无法读取该文件Cosmic Ossifrage
。存储用户主目录的 NFS 挂载也强制执行 root 压缩,甚至禁止 root 用户访问。通过使文件世界可读,sudo
返回到根功能。(标记社区 wiki,因为答案最初来自评论。)