我设置了一个 WebDAV 用户,该用户当前从我的 MySQL 数据库中获取用户名和密码。我为用户提供了使用 WebDAV 上传大文件的选项(这是我目前正在开发的文件共享服务),但我遇到了一个我似乎无法弄清楚的小问题。
首先 - 我将如何处理每个拥有自己的 WebDAV 根的用户,以便他们无法查看其他用户的文件?我已经运行了一个 cronjob,它检查启用了 WebDAV 的所有用户并自动创建具有适当权限的目录。我只需要一些告诉 apache 的方法。
感谢您的帮助,我真的很感激。
我也知道我可以每分钟运行一次 cronjob 来生成我的 apache 配置并重新加载 apache 配置,但这只是有点太多的开销,我想要更多的灵活性。
符号链接是 Linux 上的一种普遍做法,它可以使资源(例如目录)在另一个位置可用,而无需维护它的多个副本。这在许多应用程序中实现,例如具有资源树和用户目录树:每当用户打算使用某个资源时,符号链接被放置到他或她有权访问的目录中。给定足够的权限,他或她可以使用资源(在其中创建文件),该资源可以物理地写入不同的位置,例如在具有足够空间的设备上。如果用户使用 Samba 访问他的主目录,这可以正常工作。
但是,有充分的理由改用 WebDAV,端口问题就是其中之一。将此类应用程序移植到 WebDAV 时的问题:Apache 的 mod_dav 是以一种不会公开符号链接的方式编写的,无论是否设置了 FollowSymLinks。这种行为是社区有意的,因此从未解决过错误报告。
但是,如何将所需的行为移植到 WebDAV?我尝试改用硬链接,但硬链接目录似乎根本不起作用。使用mount可能有效,但我无法估计数百个坐骑的副作用。有没有我现在没有过来的选项?是否有已知的“最佳实践”?或者 WebDAV 根本不适合作为 Samba 的替代品?
目的是使用 svnserve 和 apache/webdav 访问来设置 subversion。
当用户通过 http/apache 提交时,文件被写入文件系统并属于 apache 用户。
当用户通过 svn/svnserve 提交时,文件被写入文件系统并属于 root 用户。
我尝试将 apache 设置为 svnserve 用户而没有改进:
cat /pathto/repo/conf/passwd
[users]
apache = XxXxXxX
cat /pathto/repo/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
[sasl]
use-sasl = false
svn: Commit failed (details follow):
svn: Can't move '/pathto/repo/db/txn-protorevs/1091-ux.rev'
to '/pathto/repo/db/revs/1/1092': Permission denied
Run Code Online (Sandbox Code Playgroud)
确实,root 是目录的所有者,我想要 apache。
ls -ld /pathto/repo/db/revs/1/
drwxr-s--- 2 root svn 4096 Jul 17 15:25 /pathto/repo/db/revs/1/
Run Code Online (Sandbox Code Playgroud)
现在我使用以下解决方法:
chown -R apache /pathto/repo/db/
Run Code Online (Sandbox Code Playgroud)
有没有人有一个干净的解决方案来运行 svnserve? …