svnadmin创建忽略目录上的粘性组位

时间:2009-11-14 16:42:46

标签: linux svn apache file-permissions

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

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

以下是我的测试记录:

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”。所有其他人都没问题。

1 个答案:

答案 0 :(得分: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。