1

我正在使用带有 Apache 的 Subversion,并希望普通用户(即非 root)能够创建新的存储库。我认为这很容易使用带有组 www-data 和组粘性位设置的父目录。不幸的是,“svnadmin create ...”只留下了它的 db 目录,没有设置粘性组。我怎样才能解决这个问题?这会在尝试通过 Apache 提交时导致“权限被拒绝”错误。

我已经将它与“只有 root 可以创建存储库”策略一起使用,因为 root 可以在完成后更改文件。但这不是我想要的。

这是我的测试的痕迹:

ctndocs@beta:~$ ll -d svn
drwsrwsr-x 6 ctndocs www-data 4096 2009-11-14 18:27 svn
ctndocs@beta:~$ cd svn
ctndocs@beta:~/svn$ umask
0002
ctndocs@beta:~/svn$ mkdir test
ctndocs@beta:~/svn$ svnadmin create test
ctndocs@beta:~/svn$ ls -l test
total 24
drwxrwsr-x 2 ctndocs www-data 4096 2009-11-14 18:31 conf
drwxrwxr-x 6 ctndocs www-data 4096 2009-11-14 18:31 db
-r--r--r-- 1 ctndocs www-data    2 2009-11-14 18:31 format
drwxrwsr-x 2 ctndocs www-data 4096 2009-11-14 18:31 hooks
drwxrwsr-x 2 ctndocs www-data 4096 2009-11-14 18:31 locks
-rw-rw-r-- 1 ctndocs www-data  229 2009-11-14 18:31 README.txt

请注意 db 目录上缺少“s”。其他都还好。

4

1 回答 1

3

如果您可以获得 root 权限并且您的文件系统支持文件访问控制列表(对于任何现代 fs 都是如此),您可以在文件系统上启用 FACL,然后为以下设置默认组权限www-data

mount /fs/root -o remount,acl
setfacl -Rdm g:www-data:rwx /fs/root/path/to/svndir
setfacl -Rm g:www-data:rwx /fs/root/path/to/svndir

之后,svndir默认情况下,在 下创建的所有内容都可以由 组写www-data,您可以使用 进行验证getfacl

不要忘记为文件系统附加acl选项,/etc/fstab以便在下次启动后也启用 FACL。

于 2009-11-14T17:00:54.797 回答