解决SVN Can’t open file ‘/XXX/xxx/db/txn-current-lock’错误

本文介绍了在Linux环境下安装SVN服务器后,Windows客户端提交时出现权限不足的问题及解决方法。通过调整服务器上的文件权限,使得Windows客户端能够正常检出和提交。

今天用非root账号,用sudo 命令 添加了两个账号,然后重启服务···

       可以正常取出东西,但是不能提交···

       报的错就是 :  不能打开文件“/var/svn/svnrepos/db/txn-current-lock”: 权限不够


查了半天 找到了解决办法,原文链接:http://blog.sina.com.cn/s/blog_7139569d0100woar.html

 

       在Linux环境下安装好SVN服务器后,在Linux环境下可以正常地检出、提交,在Windows PC上把已有的Repository检出后,结果在提交的时候出现以下错误:
svn: Can’t open file ‘/home/svn/db/txn-current-lock’: Permission denied

      出现这种问题的原因在于搭建SVN服务器,包括创建Repository目录/home/svn目录下的一切子目录和文件都是在root用户下进行的,所以在root用户下检出、提交都没有问题。可在Windows PC上从客户端访问就有问题了,因为是只有拥有管理器权限的人才能对Repository目录进行完全控制,而在Windows从客户端访问的话,因为是Users用户组的,对Repository没有修改权限,所以不能提交。

解决办法: 在服务器上把Users对Repository的完全控制权限加上就可以了,执行如下命令对/home/svn目录下的所有文件和子目录添加Users的读写权限

      执行下面的命令:

     
chmod -R o+rw /home/svn    

#这里的路径是你项目库的根目录


     现在可以正常地从Windows客户端下面进行检出和提交了。


     我也尝试了其他的方法,但是失败了:

     直接 $:cd  /home/svn/ishare/           ishare为你的项目名称

     sudo chmod -r 777 db    但是提示找不到777 可能是linux 发行版本不同吧...

<think>首先,我正在处理来自用户的消息。他们询问如何解决“无法打开文件 '/opt/svn/repos/db/txn-current-lock' 权限被拒绝”的错误。 这类似于他们在参考资料中提到的SVN错误。 用户提供了三个参考: 1. 参考[1]:讨论权限被拒绝问题,并建议使用 chown 和 chmod 命令更改所有权和权限。 2. 参考[2]:关于Yum错误,但可能不相关。 3. 参考[3]:权限不足错误,涉及 U-Boot,但上下文不同。 用户明确指出,这些参考资料仅供参考,我应该关注他们最近的问题和我的回答。 但在这个对话中,这是第一次互动,所以没有之前的回复。 我应该专注于用户的核心问题:权限被拒绝错误。 关键错误是:“Can't open file '/opt/svn/repos/db/txn-current-lock': Permission denied”。 这发生在SVN环境中,表明用户或进程没有权限访问该文件。 来自参考[1]的解决方案包括: - 使用 ls -la 或 ls -dl 检查权限。 - 运行 sudo chown -R www-data:subversion myproject 更改所有权。 - 运行 sudo chmod -R g+rws myproject 更改权限。 但我需要根据用户的路径进行适配。用户的路径是 /opt/svn/repos/db/txn-current-lock。 所以,我应该指导他们检查并修复该目录的权限。 通用解决方案: 1. 检查权限:使用 ls -ld /opt/svn/repos 和 ls -l /opt/svn/repos/db 查看所有权和权限。 2. 更改所有权:如果用户权限不足,使用 sudo chown -R <user>:<group> /opt/svn/repos,其中 <user> 和 <group> 应为运行 SVN 服务的用户(通常是 www-data 或类似的)。 3. 更改权限:使用 sudo chmod -R ug+rwxs /opt/svn/repos/db 确保目录可写入。 4. 确保 SELinux 未阻止访问:如果启用,可能需要调整上下文。 用户提到“参考站内引用”,但我应该确保我的回答基于标准实践。 组织我的回答: - 由于系统指令要求使用中文,我会用中文回复。 - 结构清晰:逐步引导用户解决问题。 - 包括相关命令和解释。 - 最后,生成相关问题(这是强制性的)。 - 在引用末尾添加引用标识,如 [^1]。 引用处理: - 参考[1] 直接相关,所以我可以在提到权限更改时引用它。 - 其他参考可能不相关,但如果需要,我可以忽略或提及。 生成相关问题: - 在回答结束时,添加“相关问题”部分,如示例所示。 最终回答结构: 1. 介绍问题和原因。 2. 逐步解决方案: a. 检查当前权限。 b. 更改所有权。 c. 更改权限。 d. 其他考虑(如 SELinux)。 3. 验证解决方案。 4. 添加引用到参考[1]。 5. 生成相关问题。 </think>### 解决 "无法打开文件 '/opt/svn/repos/db/txn-current-lock': 权限被拒绝" 的方案 该错误通常发生在 Apache SVN 目录的文件所有权或权限设置不当时,导致 SVN 服务器进程(如 `www-data` 用户)无法访问或写入文件。以下是基于标准 Linux 权限管理实践的分步解决方案。请确保您有管理员权限(使用 `sudo`),并在执行命令前备份数据。 #### 分步解决方案: 1. **检查当前权限和所有权** 使用命令行查看 `/opt/svn/repos` 目录的权限和所有者: ```bash # 检查目录所有者、组和权限 ls -ld /opt/svn/repos # 检查 db 目录权限 ls -ld /opt/svn/repos/db # 检查 txn-current-lock 文件权限 ls -l /opt/svn/repos/db/txn-current-lock ``` 输出示例: ``` drwxr-xr-x 7 root root 4096 Jun 10 10:00 /opt/svn/repos ``` 如果所有者是 `root` 或非 SVN 用户(如 `www-data`),将导致权限错误。 2. **更改目录所有权** 将 `/opt/svn/repos` 的所有权更改为运行 SVN 服务的用户(通常在 Apache 中为 `www-data`,请根据您的系统确认): ```bash sudo chown -R www-data:www-data /opt/svn/repos ``` - `-R`:递归应用更改到所有子目录和文件。 - `www-data:www-data`:用户和组(如使用其他用户,请替换为实际值,例如 `svn:svn`)。 - **注意**:路径必须精确匹配错误中的 `/opt/svn/repos`。 3. **设置权限以允许组写入** 确保目录权限允许组内用户读写(SGID 位可保持后续文件的组一致性): ```bash sudo chmod -R g+rws /opt/svn/repos ``` - `g+rws`:为组用户添加读、写、执行权限,并设置 SGID 位。 - 可选:如果需更严格权限,使用 `sudo chmod -R ug+rw /opt/svn/repos/db` 仅授予用户和组读写权限。 4. **验证修复** 重启 Apache 服务并测试 SVN 操作: ```bash sudo systemctl restart apache2 # 适用于 Apache svn ls file:///opt/svn/repos # 测试本地访问 ``` 如果错误消失,表示权限修复成功。 5. **其他考虑**: - **SELinux 影响**:如果系统启用了 SELinux(常见于 CentOS/RHEL),运行: ```bash sudo restorecon -Rv /opt/svn/repos # 修复上下文 ``` - **用户组匹配**:确保操作 SVN 的用户属于 `www-data` 组: ```bash sudo usermod -aG www-data your_username # 添加用户到组 ``` #### 原因分析 错误源于 `/opt/svn/repos` 的文件所有权或权限不足,导致 SVN 服务器进程无法创建或访问 `txn-current-lock` 文件。这通常在手动创建仓库或迁移后发生,必须确保目录所有者与 SVN 服务用户一致[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值