当前位置: 首页 > 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”),有同样需求的,需要把密码修改为对应账号的密码。

http://www.lryc.cn/news/403084.html

相关文章:

  • Mongodb多键索引中索引边界的混合
  • 如何利用windows本机调用Linux服务器,以及如何调用jupyter界面远程操控
  • 如何定位Milvus性能瓶颈并优化
  • 阿里云服务器 篇三:提交搜索引擎收录
  • powe bi界面认识及矩阵表基本操作 - 1
  • SpringBoot 项目 pom.xml 中 设置 Docker Maven 插件
  • k8s二次开发-kubebuiler一键式生成deployment,svc,ingress
  • Flutter 状态管理新境界:多Provider并行驱动UI
  • 标识符和关键字的区别是什么,常用的关键字有哪些?自增自减运算符,移位运算符continue、break、return的区别是什么?
  • 在VS Code上搭建Vue项目教程(Vue-cli 脚手架)
  • AGI 之 【Hugging Face】 的【零样本和少样本学习】之三 [无标注数据] 的简单整理
  • Docker 和 k8s 之间是什么关系?
  • 敲详细的springframework-amqp-rabbit源码解析
  • Telegram Bot、小程序开发(三)Mini Apps小程序
  • Django F()函数
  • GraphRAG的实践
  • 自动驾驶三维车道线检测系列—LATR: 3D Lane Detection from Monocular Images with Transformer
  • 守护动物乐园:视频AI智能监管方案助力动物园安全与秩序管理
  • FairGuard游戏加固入选《嘶吼2024网络安全产业图谱》
  • 数据仓库事实表
  • LeetCode题练习与总结:两数之和Ⅱ-输入有序数组--167
  • 在 Java 中,怎样设计一个可扩展且易于维护的微服务架构?
  • 零基础入门鸿蒙开发 HarmonyOS NEXT星河版开发学习
  • Chromium CI/CD 之Jenkins实用指南2024-在Windows节点上创建任务(九)
  • ceph进程网卡绑定逻辑
  • 学习opencv
  • 利用双端队列 实现二叉树的非递归的中序遍历
  • 昇思25天学习打卡营第18天 | 基于MindSpore的GPT2文本摘要
  • 科研绘图系列:R语言circos图(circos plot)
  • 追踪Conda包的踪迹:深入探索依赖关系与管理