我正在尝试在我的 Slackware 13.1 服务器上设置svnserve
SASL 支持,经过反复试验后,我能够让它使用下面列出的配置:
svnserve.conf
[general]
anon-access = read
auth-access = write
realm = myrepo
[sasl]
use-sasl = true
min-encryption = 128
max-encryption = 256
/etc/sasl2/svn.conf
pwcheck_method: auxprop
auxprop_plugin: sasldb
sasldb_path: /etc/sasl2/my_sasldb
mech_list: DIGEST-MD5
sasldb 用户
$ sasldblistusers2 -f /etc/sasl2/my_sasldb
test@myrepo: cmusaslsecretOTP
test@myrepo: userPassword
你会注意到输出sasldblistusers2
显示了我的测试用户同时拥有加密cmusaslsecretOTP密码以及纯文本 用户密码passwd。也就是说,如果我运行,strings /etc/sasl2/my_sasldb
我会看到测试以明文形式显示用户的密码。这两个密码条目是使用以下命令创建的:
saslpasswd2 -c -f /etc/sasl2/my_sasldb -u myrepo test
阅读后man saslpasswd2
我看到以下选项:
-n 不要为用户设置明文 userPassword 属性。仅会设置特定于机制的秘密(例如 OTP、SRP)
这正是我想要做的,隐藏纯文本密码并仅使用特定于机制的秘密(在我的情况下是 OTP)。因此我清除/etc/sasl2/my_sasldb
并重新运行saslpasswd2
:
saslpasswd2 -n -c -f /etc/sasl2/my_sasldb -u myrepo test
然后我继续跟进sasldblistusers2
,看到:
$ sasldblistusers2 -f /etc/sasl2/my_sasldb
test@myrepo: cmusaslsecretOTP
完美的!我想,现在我只有加密的密码了……只是 Linuxsvn
客户端和 WindowsTortoiseSVN
客户端都无法再连接到我的存储库。它们都向我提供了用户/密码挑战,但我只能做到这些。
结论
那么,如果我的 sasldb必须以纯文本形式存储密码可以工作吗?
答案1
这几乎不是一个答案,但我想指出,有些消息来源明确指出,DIGEST-MD5 不(并且永远不会)支持散列密码,因为它需要纯文本密码来执行质询/响应,例如:
- http://cyrusimap.org/docs/cyrus-sasl/2.1.25/sysadmin.php
- http://www.openldap.org/doc/admin24/sasl.html#DIGEST-MD5
其他消息来源则表示: