SVN日志文件无法读取权限被拒绝

SVN日志文件无法读取权限被拒绝

我在服务器上安装了 subversion 1.6.17,客户端使用 SSH+SVN 连接变体。自从安装了新操作系统 (SLES 11) 以来,我经常遇到 svn 操作问题,最终导致以下权限被拒绝错误:

svn: Berkeley DB error for filesystem '/local/Storage/svn/myproject-src.rep/db' while checkpointing after Berkeley DB transaction:
DB_RUNRECOVERY: Fatal error, run database recovery
svn: bdb: /local/Storage/svn/myproject-src.rep/db/log.0000007722: log file unreadable: Permission denied
svn: bdb: PANIC: Permission denied
svn: bdb: DB_ENV->log_newfh: 7722: DB_RUNRECOVERY: Fatal error, run database recovery
svn: bdb: txn_checkpoint: log failed at LSN [7722 196676]: DB_RUNRECOVERY: Fatal error, run database recovery

当我运行svnadmin 恢复命令一切又恢复正常,失败的 svn 操作可以成功执行。我的假设是每次创建日志文件时都会发生此错误!recover 命令不会更新任何文件权限,但会修改新的日志文件。此外,每个通过 SSH 连接的用户都可以打开和读取日志文件。

每个日志文件都具有权限-rw-r--r-- 1 根 mygroup这表明它应该是可读的!我不确定它是否也应该是可写的,所以我包装了 svn 脚本以强制权限-rw-rw-r--

#!/bin/sh
umask 002
/usr/bin/svn_orig "$@"

不幸的是,这并没有改变权限=(

谁能告诉我发生了什么事?

答案1

现在我找到了解决问题的方法!我不得不重新安装/本地/存储具有 ACL 功能并为我的组设置默认权限。

我修改了/etc/fstab如下(添加了acl):

/dev/xvdd            /local/Storage   ext3       defaults,acl          1 2

如果你想在不重启的情况下进行测试,你也可以使用mount -o 重新挂载,acl /dev/xvdd。然后我更改了我的存储库的权限并为该组设置了 ACL 默认权限。

$> find /local/Storage/svn/myproject-src.rep -type d -exec chmod 2770 {} \;
$> find /local/Storage/svn/myproject-src.rep -type f -exec chmod 660 {} \;
$> setfacl -R -d -m group::rwx /local/Storage/svn/myproject-src.rep
$> chgrp -R mygroup /local/Storage/svn/myproject-src.rep

相关内容