Toh*_*huw 6 security webdav apache-2.2
当用户通过 WebDAV 创建文件时,默认行为是该文件归运行 Apache 进程的用户和组所有,umask 为 022。
不幸的是,这使得非特权用户无法通过其他方式写入文件而不是 Apache 运行的组的成员(这在我看来是一个特别糟糕的主意)。
我当前的解决方案是umask 000
在 Apache 的 envvars 中设置并从用户的 webdav 父目录中删除所有世界权限。所以,如果WebDAV共享为/home/foo/www
,然后/家/富/ www是由拥有www-data:foo
与权限770
。这或多或少地将其他无特权的用户拒之门外,但这充其量是骗人的,最糟糕的是等待的安全灾难。
从我的研究和对 mod_dav 和 Apache 的探索来看,除了将所有权限翻转回来的 cron 作业之外,我找不到合理的解决方案(我宁愿没有服务器上的负载和增加的复杂性)。SuExec 也不会工作,因为 WebDAV 操作不会以不同的用户身份执行。
对此有何想法?谢谢你。
我通过使用 Posix ACL 规避了 Apache 缺乏用户切换功能的问题。这些允许您在每个文件上添加更多组和用户条目,还允许在目录上设置默认权限,这些目录会自动添加到其中创建的每个文件中。
如果我猜对了并且您正在运行 Linux,则可以启用 Posix ACL,您需要使用该acl
选项重新挂载文件系统。然后您可以使用setfacl
和getfacl
管理其他权限。在基于 Debian 的系统上,这些工具可以在 package 中找到acl
。您可以在man acl
和中进一步阅读有关 Posix ACL 的内容man setfacl
。Posix ACL 在某些 BSD 系统和 MacOS 上也可用,但我从未在那里使用过它们。
例如,您可以设置一个文件夹,其中组fileserver
始终具有对其中所有文件的读写访问权限:
setfacl -Rm default:group:fileserver:rw,group:fileserver:rx /srv/fileserver
Run Code Online (Sandbox Code Playgroud)
这将导致getfacl /srv/fileserver
报告如下内容:
# file: /srv/fileserver
# owner: aef
# group: aef
user::rwx
group::rwx
group:fileserver:r-x
mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:fileserver:rw-
default:mask::rwx
default:other::r-x
Run Code Online (Sandbox Code Playgroud)
但警告:您可能需要一些时间来习惯 Posix ACL,它们增加了相当多的复杂性,即使一开始看起来并非如此。
归档时间: |
|
查看次数: |
1432 次 |
最近记录: |