当前位置: 首页 > news >正文

解决:Linux上SVN 1.12版本以上无法直接存储明文密码

问题:今天在Linux机器上安装了SVN,作为客户端使用,首次执行SVN相关操作,输入账号密码信息后,后面再执行SVN相关操作(比如"svn update")还是每次都需要输入密码。

回想以前在首次输入账号密码后都还会弹一个类似是否记住密码的选项,这次也没有了。对比了下版本,以前用的版本是1.10.2版本,当前系统默认安装的是1.13.0版本,于是到官网查了相关资料,最终发现官方文档(链接:Apache Subversion 1.12 Release Notes)有提到:

从1.12版本开始,默认情况下禁用客户端明文密码存储了

虽然如果把版本手动安装回1.12版本以前其实就可以了,但我还是想先试试把“默认情况下禁用客户端明文密码存储”手动修改为“打开明文密码存储”,毕竟人还是需要往前看,SVN新版本一直在迭代,总不能以后一直用老版本吧。

通过“svn auth”对比我前后安装的两个版本可以看出,更早版本(1.10.2)的输出的密码缓存方式为:“Password cache: simple”,最近版本(1.13.0)输出的为:“Password cache: gpg-agent”。

我查看了下“~/.subversion/auth/svn.simple/xxxxxxxxxxxxx”文件,"1.13.0"版本的文件内容为:

K 8
passtype
V 9
gpg-agent
K 15

svn:realmstring
V 63
<svn://xxx.xx.xx.xxx:3690> 7cd5695d-cf1b-4713-b810-aae05645121b
K 8
username
V 4
test
END

 "1.10.2"版本的文件内容为:

K 8
passtype
V 6
simple
K 8
password
V 12
testPassword

K 15
svn:realmstring
V 63
<svn://xxx.xx.xx.xxx:3690> 8073fbc3-e331-4fcb-bade-84c2faefd342
K 8
username
V 4
test
END

 SVN客户端首次登入时会把登入相关信息记录在“~/.subversion/auth/svn.simple/xxxxxxxxxxxxx”里,从上面我标出的蓝色字体可以看出来两个版本的区别。在“1.10.2”版本中“passtype”为“simple”意味着就是“明文密码存储”方式,因为在它下面就存放这密码(“K 8 password  V12 testPassword”)信息。

只需要把“1.13.0”版本中“passtype”相关信息修正为和“1.10.2”版本的一样即可。

这个文件“~/.subversion/auth/svn.simple/xxxxxxxxxxxxx”内容的语法规则很简单,里面的“K”或者“V”变量后跟着的数字代表着下一行字符串值的字符个数,了解这个后就可进行修改了。

比如我就把我的“1.13.0”版本“~/.subversion/auth/svn.simple/xxxxxxxxxxxxx”文件修改内容修改如下后就相当于把密码缓存方式改成了“明文存储”了:

K 8
passtype
V 6
simple
K 8
password
V 12
testPassword
K 15

svn:realmstring
V 63
<svn://xxx.xx.xx.xxx:3690> 7cd5695d-cf1b-4713-b810-aae05645121b
K 8
username
V 4
test
END

上面红色字体部分就是我修改的了。修改完了后,保存退出,再执行SVN相关操作(比如“svn update”)就不再需要输入密码了。

注意:上面红色字体部分的“V 12 testPassword”是我这边的svn账号“test”的密码(“testPassword”字符串长度为12个字符,所以“V”后面的数组我填的是“12”),有同样需求的,需要把密码修改为对应账号的密码。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于ffmepg的视频剪辑
  • Python Linux环境(Centos8)安装minicoda3+jupyterlab
  • vue 字符串格式“[a,b]“转数组
  • Cookies和session区别
  • pdf转换器哪个好?PDF转word工具分享
  • UniApp__微信小程序项目实战 实现长列表分页,通过 onReachBottom 方法上划分次加载数据
  • Hive理论讲解
  • 如何恢复 Excel 文件 [未保存/覆盖/删除]
  • 云手机结合自主ADB命令接口 提升海外营销效率
  • 使用VuePress-Reco快速搭建博客(保姆级)
  • linux进程——状态——linux与一般操作系统的状态
  • GraphRAG的实践
  • django实现用户的注册、登录、注销功能
  • jenkins+gitlab+harbor+maven自动化容器部署
  • Eureka基本概念
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【技术性】Search知识
  • 2017-09-12 前端日报
  • angular2 简述
  • co模块的前端实现
  • Django 博客开发教程 8 - 博客文章详情页
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 分布式熔断降级平台aegis
  • 浮现式设计
  • 模型微调
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 深度学习入门:10门免费线上课程推荐
  • 推荐一个React的管理后台框架
  • 物联网链路协议
  • 一、python与pycharm的安装
  • 自动记录MySQL慢查询快照脚本
  • Spring第一个helloWorld
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (0)Nginx 功能特性
  • (30)数组元素和与数字和的绝对差
  • (done) 两个矩阵 “相似” 是什么意思?
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (差分)胡桃爱原石
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (三十五)大数据实战——Superset可视化平台搭建
  • (四)stm32之通信协议
  • (四)汇编语言——简单程序
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)h264中avc和flv数据的解析
  • .bat批处理(六):替换字符串中匹配的子串
  • .bat文件调用java类的main方法
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET 反射的使用
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .net6+aspose.words导出word并转pdf
  • .net操作Excel出错解决
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET序列化 serializable,反序列化