我已经安装了svnserve SASLauthentication和encryptionencryptionstream量。 应该允许匿名访问。 我的configuration文件conf/svnserve.conf (注释掉了)看起来像这样:
[general] anon-access = read auth-access = write realm = realm-of-repo [sasl] use-sasl = true min-encryption = 128 max-encryption = 256
相关的saslconfiguration文件:
pwcheck_method: auxprop auxprop_plugin: sasldb sasldb_path: /path/to/sasldb mech_list: DIGEST-MD5
提供用户名和密码时,一切都按预期工作:我可以签出并进行更改。 但是,匿名访问(无用户名或密码)失败,并显示下一条错误消息:
svn: SASL(-1): generic failure: All-whitespace username.
如何使用svnserve和SASL启用匿名SVN读取访问? 我不想用Apache的解决scheme。
use-sasl = true强制authentication(通知SVN禁止匿名访问)。
您可以创build具有只读权限的用户,并将其用于匿名访问,或使用http进行只读访问,使用sasl进行读写。
我最近正在寻找这个信息,并且认为我会分享我发现的。 使用SASL进行身份validation时,可以允许匿名访问,但您应该知道,任何匿名访问都不会被encryption或完整性保护。
根据需要,您已经在svnserve.conf有anon-access = read 。
接下来,你必须设置min-encryption = 0 ,因为匿名访问机制既不支持encryption,也不支持完整性保护。 跳过这一步将使匿名访问在协商身份validation机制时不可用。
最后一步是在svn.conf (您的Subversion的SASLconfiguration文件)中设置SASLauthentication机制。 改行:
mech_list: DIGEST-MD5
至
mech_list: DIGEST-MD5 ANONYMOUS
这将使匿名机制可用。 重新启动svnserve ,你应该能够在没有authentication提示的情况下执行检出。 如果您使用的是每个目录的访问控制,则可能需要确认用户$anonymous已被授予适当的访问权限。
有几件事情要考虑。 如前所述,所有匿名访问将以明文forms进行,如果您通过公共networking处理机密代码,则您可能不需要这些访问。 此外,所有用户都将通过匿名访问来执行读取访问(检出等),因此您的日志可能没有用于跟踪。 此外,如果您允许匿名写入,则所有代码都可能会匿名提交,这意味着您不知道哪些更改是由谁执行的。
正如在注释中提到的,一种select是创build一个名为匿名的实际用户,使用一个简单的密码(它将失败,没有密码),并使用每个目录的访问控制,以确保只读访问被授予,只有你select的目录。 这可以让你保持encryption/完整性检查,同时提供的访问几乎与真正的匿名访问一样方便。