Linux 来自服务器的身份验证错误:SASL(-13):未找到用户:无法规范化

Linux 来自服务器的身份验证错误:SASL(-13):未找到用户:无法规范化,linux,svn,ubuntu,tortoisesvn,sasl,Linux,Svn,Ubuntu,Tortoisesvn,Sasl,好的,我正试图在我的Ubuntu服务器上配置并安装svnserve。到目前为止还不错,直到我尝试配置sasl(以防止纯文本密码)为止 所以,;我安装了svnserve并使其作为守护进程运行(还使用命令svnserve-d-r/var/svn将其作为启动脚本安装) 我的存储库位于/var/svn中,具有以下配置(可在/var/svn/myrepo/conf/svnserve.conf中找到)(我省略了注释): 关于sasl,我在/usr/lib/sasl2/中创建了一个svn.conf文件: pw

好的,我正试图在我的Ubuntu服务器上配置并安装svnserve。到目前为止还不错,直到我尝试配置sasl(以防止纯文本密码)为止

所以,;我安装了svnserve并使其作为守护进程运行(还使用命令
svnserve-d-r/var/svn
将其作为启动脚本安装)

我的存储库位于
/var/svn
中,具有以下配置(可在
/var/svn/myrepo/conf/svnserve.conf中找到)
(我省略了注释):

关于sasl,我在
/usr/lib/sasl2/
中创建了一个svn.conf文件:

pwcheck_method: auxprop
auxprop_plugin: sasldb
sasldb_path: /etc/my_sasldb
mech_list: DIGEST-MD5
我在该文件夹中创建了它,正如本文所建议的:(也是因为它存在,并且在我执行
locate sasl
时被列为结果)

紧接着我执行了这个命令:

saslpasswd2 -c -f /etc/my_sasldb -u my_repo USERNAME
它还两次要求我输入密码,我提供了密码。一切都很顺利。 发出以下命令时:

sasldblistusers2 -f /etc/my_sasldb
据我所知,我得到了正确的结果:

USERNAME@my_repo: userPassword
重新启动了SVN服务,也重新启动了整个服务器,并尝试连接。 这是我的陆龟客户的结果:

Authentication error from server: SASL(-13): user not found: unable to canonify  
user and get auxprops
我根本不知道我做错了什么。在过去的几个小时里,我一直在搜索web,但除了可能需要将svn.conf文件移动到另一个位置(例如subversion本身的安装位置)之外,没有发现任何其他内容
哪个svn
导致了
/usr/bin/svn
,因此我将svn.conf移到了
/usr/bin
(尽管我觉得这样做不对)

即使重新启动,仍然无法工作

我的点子快用完了。还有其他人吗


编辑

我试着改变这个(根据互联网上其他一些论坛告诉我的):在文件
/etc/default/saslauthd
中,我改变了

START=no
MECHANISMS="pam"


(实际上我以前已经把
START=no
改为
START=yes
,但我忘了提到它)。但是仍然没有成功(我确实重新启动了整个服务器)。

我在/var/log/messages中查找并发现

localhost svnserve:无法打开Berkeley db/etc/sasldb2:没有这样的文件或目录

当我为上面的文件创建sasldb并获得正确的权限时,它工作了。看起来它忽略或不使用sasl数据库路径


另一个建议是重新启动解决了问题,但该选项对我不可用。

看起来SVN服务使用SASL的默认值

选中/etc/sasl2/svn.conf以使svn服务器进程所有者能够读取。 如果/etc/sasl2/svn.conf由用户root、组root和--rw-----拥有,则svnserve使用默认值。 任何日志文件条目都不会警告您

见第4节:

此文件必须命名为svn.conf,并且必须能够被svnserve进程读取。 (我花了3天多的时间才同时理解svnserve sasl ldap和这个陷阱……)

我建议安装cyrus-sasl2-doc软件包,并仔细阅读cyrus-SASL一节以供系统管理员使用

我认为这是由调用的saslapi引起的

  result = sasl_server_new(SVN_RA_SVN_SASL_NAME,
                       hostname, b->realm,
                       localaddrport, remoteaddrport,
                       NULL, SASL_SUCCESS_DATA,
                       &sasl_ctx);
  if (result != SASL_OK)
  {
    svn_error_t *err = svn_error_create(SVN_ERR_RA_NOT_AUTHORIZED, NULL,
                                      sasl_errstring(result, NULL, NULL));
    SVN_ERR(write_failure(conn, pool, &err));
    return svn_ra_svn__flush(conn, pool);
  }

正如您所看到的,SVN服务无法处理访问故障,只有Ok(正常)或error(错误)…

这可能是一个延迟的答案,但这一个为我解决了它。谢谢
START=yes
MECHANISMS="sasldb"
  result = sasl_server_new(SVN_RA_SVN_SASL_NAME,
                       hostname, b->realm,
                       localaddrport, remoteaddrport,
                       NULL, SASL_SUCCESS_DATA,
                       &sasl_ctx);
  if (result != SASL_OK)
  {
    svn_error_t *err = svn_error_create(SVN_ERR_RA_NOT_AUTHORIZED, NULL,
                                      sasl_errstring(result, NULL, NULL));
    SVN_ERR(write_failure(conn, pool, &err));
    return svn_ra_svn__flush(conn, pool);
  }