Permissions

SVN 日誌文件不可讀權限被拒絕

  • October 11, 2013

我在伺服器上安裝了 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 recover命令時,一切都很好,並且可以成功執行失敗的 svn 操作。我的假設是,每次創建日誌文件時,都會發生此錯誤!恢復命令不會更新任何文件權限,但會修改新的日誌文件。此外,通過 SSH 連接的每個使用者都可以打開和讀取日誌文件。

每個日誌文件都是使用權限*-rw-r–r– 1 root mygroup創建的,這表明它應該是可讀的!我不確定它是否也應該是可寫的,所以我包裝了 svn 腳本以強制權限-rw-rw-r–*:

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

不幸的是,這不會改變權限 =(

誰能告訴我發生了什麼事?

現在我找到了解決我的問題的方法!我必須使用 ACL 功能重新掛載*/local/Storage*並為我的組設置預設權限。

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

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

如果你想在不重啟的情況下測試它,你也可以使用mount -o remount,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

引用自:https://serverfault.com/questions/544507