我们有一个内部服务器,可供 3 位用户使用。它运行的是 ubuntu 和 apache mysql proftpd
我们经常遇到权限错误。有时我们无法覆盖文件,但可以删除它们等。设置此权限的好方法是什么?谁应该是文件的所有者?(当前为 www-data:www-data)。
这 3 个用户需要能够从 webfolders 中删除、写入和读取文件。Apache 需要拥有运行 Joomla 的所有权限。
答案1
您可以创建一个组并将所有 3 个用户添加到该组。然后,您将组所有者更改为这个新组并授予该组完全权限chmod g+rwx
。
对于 apache 用户,大多数情况下只需要对文件具有读取权限,对文件夹具有读取+执行权限。您可以将www-data:www-data
某些文件夹(例如上传文件夹)的所有者设置为需要 apache 用户写入的文件夹。
答案2
谁应该是这些文件的所有者?
不是 Web 服务器 UID!!!!
网络服务器只需要对大多数文件具有读取权限。根据 Joomla 的配置方式,特定目录中可能有可更新的文件,但现在我们不必担心这一点。
为需要写权限的用户设置一个组,例如 webdev。然后(以 root 身份):
cd $WEBROOT
find . -type d -exec chmod a+rx,o-w,g+ws {} \;
find . -type f -exec chmod a+r-x,o+r-w,g+ws {} \;
find . -exec chgrp webdev \;
然后,Web 服务器可以通过“其他”读取文件,Webdev 可以通过“组”权限写入文件,并且将创建由 Webdev 拥有的新文件/目录。
如果您需要使特定目录可由 Web 服务器 uid 写入,则请 chmod o+w 它们(并添加 .htaccess 文件/修改 Web 服务器配置以防止 Web 服务器直接访问(如果它们位于文档根目录中)。
请停止使用 FTP。这是一场即将发生的事故。