apache2 和 ftp 访问的 /var/www 所有者

apache2 和 ftp 访问的 /var/www 所有者

我在一台旧笔记本电脑上安装了 Ubuntu Server 12.04 LTS 上的 apache2。它在我的本地网络上充当网络服务器,帮助我学习 PHP(和 Linux)。

/var/www 文件夹(apache 的网页存储于此)的默认所有者是 www-data。将所有者设置为 www-data 后,我无法通过 ftp 将文件/文件夹复制到该文件夹​​。如果我将 /var/www 文件夹的所有者更改为 james(我的 ftp 用户),那么我可以通过 ftp 移动文件,但 apache 无权显示任何页面或子文件夹。

允许 ftp 用户 james 和 apache 访问的正确所有者应该是谁?

答案1

我建议将其设置为 所拥有james:james

或者,您可以将其保留原样root:rootsudo以便任何人都可以部署其中的文件,但如果您直接在 /var/www 目录中工作(而不是在其他地方工作并将文件推送到那里),这可能不方便,并且它也不适用于 FTP。

您可以将 /var/www 的所有者设置为任意名称,只要用户www-data具有读取权限即可。您可以通过设置权限以允许所有人读取(默认设置)来实现此目的。

默认情况下,它归root:root(不是 www-data正如您在问题中所述)。

  • 为了安全起见,不是最好将其设置为所有者www-datawww-data旨在成为一个非特权帐户,不能写入任何文件,并且只能读取它们。

    是的,有时您可能需要授予www-data对给定文件的写入权限,但为了安全起见,这应该严格限制在那些特定文件上,并且应采取预防措施,例如确保这些文件不能被 Web 服务器作为脚本执行(即,它们不在可能被解释为 PHP 或 CGI 文件的位置)等。

  • 为了安全起见,这甚至更差将文件权限设置为全球可写(例如 777)是个www-data不错的主意。非特权用户(例如不是能够写入此目录中的文件。唯一需要写入权限的人是实际在其中写入文件的人。

  • /var/www 目录旨在供您随意使用。将所有权设置为将编辑文件的帐户是有意义的。如果您有多个人,您可以为此创建一个组,但在这种情况下只有您自己。

    注意:如果要创建组,请创建一个新组。不是重新使用该www-data组,因为该组是一个没有特权的组,对任何文件都没有写权限(正如我上面解释的那样)。


我经常看到人们建议采用非常坏的安全实践,例如将 /var/www 设置为 所拥有www-data,或将人员添加到www-data组以赋予该组编辑权限,或将 /var/www 设置为全球可写(例如 777)。通过执行任何这些操作,您都可能面临严重的安全问题。

答案2

理想的权限是将自己设为所有者,将 www-data 设为组,将自己设为文件所有者,sudo chown -R yourname:www-data /var/www/public_html/sudo chmod -R g+w /var/www/public_html/确保适当更改目录和用户名。您将能够写入文件,并且 apache 进程不会受到阻碍。我建议这样做是因为 OP 正在运行 APACHE 的本地实例以进行练习,并且将使用大量脚本或开源脚本(如 wordpress 等),这些脚本将需要写入权限。这里安全性不是主要问题,因为本地服务器不会使用公共 IP,并且安装、复制和运行脚本的便利性至关重要。OP 可以专注于学习 PHP,而不是管理服务器。

相关内容