Ubuntu 更新 10.04 -> 12.04 后,Svn 通过 sasl+ldap 授权失败

Ubuntu 更新 10.04 -> 12.04 后,Svn 通过 sasl+ldap 授权失败

我在 Ubuntu 10.04 上有一个有效的 svnserve 解决方案,用于通过 SASL 授权 svn 用户访问 Active Directory(LDAP,而不是 LDAPDB)。配置文件位于底部。

将服务器升级到 12.04 版本后,此功能不再起作用。我可以通过 SASL 向 LDAP 授权用户

 testsaslauthd -u ldap_username -p his_password
 => 0: OK "Success."

但是当我尝试在同一台服务器上的文件夹上“svn update”时,它会三次要求我输入凭据并结束

 svn: Authentication error from server: SASL(-4): no mechanism available:

我不知道如何跟踪 svn 和 sasl 之间的通信。

情况:

  • Ubuntu 10.04 + subversion 1.6.6 (支持 Cirrus SASL) => 正常运行
  • Ubuntu 12.04 + subversion 1.6.17(支持 Cirrus SASL)=> 不起作用(使用相同配置)

文件 /usr/lib/sasl2/svn.conf

 pwcheck_method: saslauthd
 auxprop_plugin: ldap
 mech_list: PLAIN

文件 /usr/lib/sasl2/subversion.conf -> 符号链接到 /usr/lib/sasl2/svn.conf

文件 /opt/svn/repos/conf/svnserve.conf

 [general]
 anon-access = none
 auth-access = write
 #password-db = passwd
 authz-db = authz
 realm = smartsvn

 [sasl]
 use-sasl = true
 min-encryption = 0
 max-encryption = 256

有什么想法吗,如何修复或追踪该问题?

答案1

只有在 dist-upgrade 之后,debian squeeze 才会出现上述问题。经过几个小时的配置、重启和重新安装后,我尝试了以下“svn.conf”:

pwcheck_method: saslauthd
#auxprop_plugin: ldap
mech_list: plain login cram-md5 digest-md5

在我看来,“mech_list:plain”就足够了。其他机甲是以前试用时留下的。

这是我的 /etc/saslauthd.conf

ldap_servers: ldap://xxx.xxx.xxx.xxx
ldap_use_sasl:no
ldap_search_base: DC=domain,DC=tdl
ldap_bind_dn: [email protected]
ldap_bind_pw: magic_word:)
ldap_mech: PLAIN
ldap_auth_method: bind
ldap_filter: (sAMAccountName=%U)
log_level: 7

这是我的 /etc/default/saslauthd

START=yes
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECHANISMS="ldap"
MECH_OPTIONS=""
THREADS=5

12 月 14 日更新:

今天我在 svnserve 升级(r1615264)后再次遇到了同样的问题:

我必须将以下内容添加到 svn.conf 中:

ldapdb_uri: ldap://myldadphost.tld

不要问我为什么,我只是尝试了一下,因为三四年前这个参数已经(与其他 ldap 参数一起)在 svn.conf 中了...

答案2

(1)在 /etc/sasl2/svn.conf 中,您可以为 saslauthd 设置日志级别,例如:

log_level: 7

在 sasl.h 中我发现:

#define SASL_LOG_NONE  0    /* don't log anything */
#define SASL_LOG_ERR   1    /* log unusual errors (default) */
#define SASL_LOG_FAIL  2    /* log all authentication failures */
#define SASL_LOG_WARN  3    /* log non-fatal warnings */
#define SASL_LOG_NOTE  4    /* more verbose than LOG_WARN */
#define SASL_LOG_DEBUG 5    /* more verbose than LOG_NOTE */
#define SASL_LOG_TRACE 6    /* traces of internal protocols */
#define SASL_LOG_PASS  7    /* traces of internal protocols, including passwords */

看来它记录到 /var/log/auth.log。

我遇到了几乎同样的问题(从 Ubuntu 11.04 迁移到 12.04)并在 auth.log 中出现:

svnserve: could not find auxprop plugin, was searching for 'ldap'

有趣的是,日志中显示的是“svnserve”,而不是 saslauthd。这让我想到...

(2)你可以尝试

ldd /usr/bin/svnserve

对我来说,工作服务器(Ubuntu 11.04)显示:

libldap_r-2.4.so.2 => /usr/lib/libldap_r-2.4.so.2

但故障的服务器(12.04)却没有。

答案3

尝试将配置更改为您的 /usr/lib/sasl2/svn.conf 配置文件(SVN sasl 配置):

auxprop_plugin: ldapdb
mech_list: PLAIN
ldapdb_mech: PLAIN
saslauthd_path: /var/run/saslauthd/mux
ldapdb_uri: <address of your ldap server (ldap://hostname)>

相关内容