Dav*_* R. 3 ldap sudo authentication
我在 Ubuntu 11.10 服务器上使用 LDAP 身份验证。我安装了 libpam-ldap,并相应地进行了配置。它工作得很好,除了当我尝试 sudo 时,我每隔一段时间都会收到此错误:
sudo: setreuid(ROOT_UID, user_uid): Operation not permitted
Run Code Online (Sandbox Code Playgroud)
我知道我已经正确设置了 sudoers,因为它大部分时间都可以工作。也不仅仅是我的登录,其他人在我登录时也有同样的问题。发生此错误时,我根本无法与常规系统用户进行 ssh 连接。当我直接登录时,我无法启动任何 gnome-terminal。
一旦我重新启动服务器,问题就会消失。“当然,这不是解决方案,如果是生产服务器,我会遇到麻烦。
我该如何解决?
2012 年 3 月 1 日编辑:我刚刚发现如果停止并启动 nscd 服务,问题就会消失。
service nscd stop
service nscd start
Run Code Online (Sandbox Code Playgroud)
没有多少解决方案,因为我必须直接登录服务器,而不是通过 ssh。
这是一个已知的错误时的Debian(因此Ubuntu的)从使用开关的是被引入的OpenSSL到的GnuTLS与OpenLDAP的,因为发牌困难OpenSSL的。问题在于libgcrypt(当前GnuTLS 的加密后端)初始化的方式。这个问题从Ubuntu 9.10 开始就一直存在,并没有真正得到解决,因为上游GnuTLS正在从libgcrypt(显然还有其他问题)切换到libnettle。在此更改使其下游之前,有三种可能的解决方法,所有这些都在错误报告中列出 以上。
libgnutls26从源代码编译以使用 libnettle而不是libgcryptlibldap从源代码编译以使用 openssl而不是gnutls26libnss-ldapd代替libnss-ldap。这有几个变化。首先使用libpam-ldap它libnns-ldap作为依赖项引入,这使配置变得复杂。其次,使用libpam-ldapd不完全。它尤其缺少所有允许限制用户子集的pam_*配置。为了克服这个缺陷,您可以将 nssov 覆盖与 slapd 一起使用,但这不包含在 slapd 与 Ubuntu 中(因此您需要从源代码编译)。libpam-ldapd使用nslcd守护进程处理 ldap 查找;因此它使用/etc/nslcd.conf
而不是/etc/ldap用于配置。特别值得注意的是,您可以使用pam_authz_search来限制授权。详情请参阅man nslcd.conf。还有一个相当不错的HOWTO这里,这里如果你需要配置 startTLS。更新:截至 2012 年 5 月 29 日,建议的Lucid、Natty和Oneiric存储库中提供了一个错误修复。这修复了 LDAP 登录的问题;然而,截至 2012 年 9 月 6 日,这个新补丁已被证明会破坏其他软件包1,并已被删除。此外,如该 bug 中所述,使用 nscd 的解决方法根本不再有效。这是一个不幸的回归,更糟糕的是,这个问题在Precise和Quantal中并没有真正解决。最终,唯一真正的解决方法是放弃libgcrypt11支持libnettle4。较新libgnutls28的Precise和Quantal已经这样做了,但是libldap仍然使用libgnutls26.
该指令编译 libgnutls26来自源在评论解释22,23和24在这个错误报告。但这些说明似乎只适用于Precise。
| 归档时间: |
|
| 查看次数: |
9418 次 |
| 最近记录: |