Ubuntu 搭建 SASL+SVN 服务
本文摘自qaq卟言博客。Ubuntu 搭建 SASLSVN 服务前言前天直播写代码完事了后向我的svn仓库提交完代码后闲得无聊就看了一下仓库日志发现有很多非法错误请求于是直播的时候就把这个日志监控拦截也补充到我之前的监控中了也就是在 卟言更新日志 页面中的2026-01-04中提到的实现拦截SVN非法请求做完了这个功能后于是乎我就去研究了一下官方的文档说明选择服务器配置 - 《使用 Subversion 进行版本控制》发现以下的内容如果您试图为您的团队设置最简单的服务器使用普通的 svnserve 安装是最简单、最快的途径。但是请注意您的存储库数据将通过网络以明文形式传输。如果您的部署完全在您公司的局域网或 VPN 内这不成问题。如果存储库暴露于开放的互联网您可能需要确保存储库的内容不敏感例如它只包含开源代码或者您需要付出额外努力来配置 SASL 以加密网络通信。好家伙根本就没有加密数据内容好家伙合着我一直都在裸奔当然只是存储库数据用户密码是不会传输的参考svnserve自定义服务器 - 《使用 Subversion 进行版本控制》默认情况下svnserve 服务器只知道如何发送 CRAM-MD5[61] 身份验证质询。本质上服务器向客户端发送少量数据。客户端使用 MD5 哈希算法对数据和密码的组合创建指纹然后将指纹作为响应发送。服务器使用存储的密码执行相同的计算以验证结果是否相同。实际密码不会在网络上传输。然后我就按照官方的要求进行配置加密官方的文档中有两种方法实现第一种是通过代理比如通过apache或nginx等web服务器连接svn架构为svnapacheldap的集成第二种是通过svnsaslldap的集成第一种的话checkout地址都需要从svn://改成https://那我全部拉仓库的客户端都要换太麻烦了毕竟svn客户端在1.5版本后都支持sasl功能了所以这里直接用第二个方法就够了SASL安装SASLsudo apt install libsasl2-2 libsasl2-modules sasl2-bin配置sasl修改配置sudo nano /etc/default/saslauthd配置内容STARTyesMECHANISMSsaslsb配置介绍START: 是否在系统启动时自动启动yes启用no禁用MECHANISMS: 认证机制sasldb直接用自带的数据库文件/etc/sasldb2来存储和验证用户密码pam用系统的 PAMPluggable Authentication Modules进行认证比如系统的用户密码ldap使用 LDAP 目录服务验证用户shadow直接读取 /etc/shadow 文件验证系统用户需要 root 权限kerberos5使用 Kerberos 进行认证重启服务/etc/init.d/saslauthd restart创建用户添加sudo saslpasswd2 -c -u 卟言SVN版本库 buyan删除sudo saslpasswd2 -d -u 卟言SVN版本库 buyan测试testsaslauthd -u buyan -p 123456789 -r 卟言SVN版本库联动svn创建配置文件sudo touch /usr/lib/sasl2/svn.conf编辑配置文件sudo nano /usr/lib/sasl2/svn.conf配置内容pwcheck_method: saslauthdmech_list: CRAM-MD5 DIGEST-MD5 PLAIN配置说明pwcheck_method: 指定 SASL 验证密码的方式auxprop使用 辅助属性插件Auxiliary Property Plugin 获取来用户密码插件由 auxprop_plugin 指定比如说 sasldbsaslauthd直接使用 saslauthd 服务验证在默认配置中/etc/default/saslauthd修改。pwcheck使用 pwcheck 守护进程已过时。shadow直接读取系统 /etc/shadow 文件需 root 权限。auxprop_plugin: 指定 auxprop 方式使用的具体插件sasldb使用 SASL 自带的数据库文件通常是 /etc/sasldb2存储用户密码sql使用 SQL 数据库如 MySQL、PostgreSQL来获取密码ldapdb使用 LDAP 目录服务来获取密码mech_list: 指定 SASL 服务端支持的 认证机制列表PLAIN: 明文传输用户名和密码Base64 编码本质仍是明文CRAM-MD5: 基于挑战 - 响应Challenge-Response机制不传输明文密码DIGEST-MD5: 类似 CRAM-MD5但更复杂支持会话安全Session Security设置权限sudo chown buyan:buyan /etc/sasldb2sudo chmod 600 /etc/sasldb2不设置可能会出现这种问题SVN配置SVN安装步骤这里不再啰嗦了可以查看ubuntu svn版本库搭建修改配置sudo nano /media/buyan/1/版本库/conf/svnserve.conf内容[sasl]use-sasl truemin-encryption 0max-encryption 256注意# password-db passwd这行保持注释掉的状态不使用passwd文件min-encryption因为sasl已经加密了如果像网上配置125可能会报Could not obtain the list of SASL mechanisms或者乱码realm要跟sasl创建用户的仓库一致并且不能有空格参考svnserve自定义服务器 - 《使用 Subversion 进行版本控制》一些警告首先确保saslpasswd2的“realm”参数与您在存储库的svnserve.conf文件中定义的 realm 相匹配 如果它们不匹配身份验证将失败。此外由于 SASL 的缺陷公共 realm 必须是一个不包含空格的字符串。 最后如果您决定使用标准的 SASL 密码数据库 请确保svnserve程序对该文件具有读取权限如果使用 OTP 等机制可能还需要写入权限。重启killall svnserve以用户身份运行不要使用sudo或管理员这样子限制对用户文件的读访问权限svnserve –d –r /media/buyan/1/版本库测试额外其实如果是很多人开发比如公司内部可以配LDAP来配合SASLLDAP协议的好处就是你公司的所有员工在所有这些工具里共享同一套用户名和密码来人的时候新增一个用户就能自动访问所有系统走人的时候一键删除就取消了他对所有系统的访问权限不过我自己一个人的SVN就不搞这些花里胡哨的了因为就我一个用户参考选择服务器配置 - 《使用 Subversion 进行版本控制》svnserve自定义服务器 - 《使用 Subversion 进行版本控制》相关SVN无法编辑日志信息的解决方法ubuntu svn版本库搭建

相关新闻

Hydra RDP爆破实战:避开五大常见错误,提升渗透测试效率

Hydra RDP爆破实战:避开五大常见错误,提升渗透测试效率

1. 项目概述:为什么你的Hydra RDP爆破总是失败?如果你正在用Kali Linux里的Hydra工具尝试对RDP(远程桌面协议)服务进行密码爆破,但结果要么是“0 valid passwords found”,要么是莫名其妙被锁定&#xff0c…

2026/7/4 5:12:27 阅读更多 →
5分钟用AI+Selenium打造智能Web自动化测试工具,降低脚本编写门槛

5分钟用AI+Selenium打造智能Web自动化测试工具,降低脚本编写门槛

1. 项目概述:当AI遇上自动化测试最近在团队里搞自动化测试,发现一个挺普遍的问题:写Selenium脚本,尤其是那些复杂的业务流和元素定位,对很多刚入门的测试同学或者开发同学来说,门槛不低。你得懂点Python&am…

2026/7/4 5:10:27 阅读更多 →
macOS深度输入法配置解决方案:鼠须管Rime引擎实战指南

macOS深度输入法配置解决方案:鼠须管Rime引擎实战指南

macOS深度输入法配置解决方案:鼠须管Rime引擎实战指南 【免费下载链接】squirrel 【鼠鬚管】Rime for macOS 项目地址: https://gitcode.com/gh_mirrors/squ/squirrel 鼠须管输入法作为基于Rime输入法引擎的开源项目,为macOS用户提供了高度可定制…

2026/7/4 5:04:25 阅读更多 →

最新新闻

如何快速掌握微信聊天记录永久保存:终极免费备份指南

如何快速掌握微信聊天记录永久保存:终极免费备份指南

如何快速掌握微信聊天记录永久保存:终极免费备份指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChat…

2026/7/4 6:10:43 阅读更多 →
微信聊天记录永久保存的终极解决方案:WeChatMsg完整数据留痕指南

微信聊天记录永久保存的终极解决方案:WeChatMsg完整数据留痕指南

微信聊天记录永久保存的终极解决方案:WeChatMsg完整数据留痕指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trendin…

2026/7/4 6:08:42 阅读更多 →
tchMaterial-parser:3步掌握智慧教育平台电子课本免费下载终极方案

tchMaterial-parser:3步掌握智慧教育平台电子课本免费下载终极方案

tchMaterial-parser:3步掌握智慧教育平台电子课本免费下载终极方案 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。…

2026/7/4 6:06:42 阅读更多 →
GPT-4o与GPT-4核心差异:架构、延迟、多模态与成本实战对比

GPT-4o与GPT-4核心差异:架构、延迟、多模态与成本实战对比

1. 这不是参数表对比,而是真实场景下的能力分水岭“GPT-4o和GPT-4有什么区别?”——这个问题我每天在技术社群、产品团队会议、甚至客户现场演示后都会被问到至少三遍。但绝大多数人点开的所谓“对比文章”,只是把官网参数截图拼在一起&#…

2026/7/4 6:04:42 阅读更多 →
KlakSpout完全指南:如何在Unity中实现零延迟跨应用视频流共享

KlakSpout完全指南:如何在Unity中实现零延迟跨应用视频流共享

KlakSpout完全指南:如何在Unity中实现零延迟跨应用视频流共享 【免费下载链接】KlakSpout Spout plugin for Unity 项目地址: https://gitcode.com/gh_mirrors/kl/KlakSpout 想要在Unity中实现零延迟的视频流共享吗?KlakSpout正是您需要的终极解决…

2026/7/4 5:58:40 阅读更多 →
Tidy.js:JavaScript数据清洗革命!用dplyr思维轻松处理数组数据

Tidy.js:JavaScript数据清洗革命!用dplyr思维轻松处理数组数据

Tidy.js:JavaScript数据清洗革命!用dplyr思维轻松处理数组数据 【免费下载链接】tidy Tidy up your data with JavaScript, inspired by dplyr and the tidyverse 项目地址: https://gitcode.com/gh_mirrors/ti/tidy 还在为JavaScript中复杂的数据…

2026/7/4 5:56:40 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻