全新 Ubuntu 安装中的 Apache2 权限

全新 Ubuntu 安装中的 Apache2 权限

在全新安装 Ubuntu 后,我试图弄清楚如何为 Apache2 执行权限。我使用我的设置对 CraftCMS 网站进行本地开发。这意味着 Apache 需要能够提供文件,我需要能够编辑文件,并且 CraftCMS php 命令行工具必须能够从终端运行。这必须适用于多个虚拟主机。

我已经建立了工作流程,但我不确定这是否是实现我想要的一切的正确方法。

所以我做了以下事情;

安装完所有内容后,我运行以下命令来设置权限:

sudo adduser $USER www-data
sudo chown $USER:www-data -R /var/www
sudo chmod 0774 -R /var/www
sudo chmod g+s -R /var/www
  • 第一个命令将我添加到组 www-data(apache2 组)。
  • 第二行将子文件夹的所有者和组更改/var/www/为我作为所有者,www-data 作为组。
  • 第三行添加权限,以便所有者和组可以读写和执行。其他人只能读取。
  • 第四行确保其中的任何新文件和文件夹/var/www都具有相同的权限。

到目前为止,一切都按计划进行。我可以编辑文件,apache 可以在本地运行网站。现在无法使用的一件事是命令行工具,./craft因为它没有在那里运行的权限。为了解决这个问题,我想出了以下解决方案:

alias craft="sudo -u www-data php ./craft"

使用此别名,我可以./craft以 www-data 的身份运行命令,使其始终运行,因为该组具有在文件/var/www夹内执行所需的所有权限。 (我不确定这是否是解决这个问题的好方法。)

就是这样,一切都“正常”,但感觉像是一种“黑客”式的工作方式。我不确定这是否是它应该的工作方式。我很想听到改进。

答案1

sudo chmod 0774 -R /var/www

您应该将其设置为 2 个命令。1 表示文件。1 表示目录。对于其他命令,使用 0 更为安全:通常,您只希望用户和组能够对文件执行任何操作。最低限度的权限应设置为:

find . -type f -exec chmod 640 {} \
find . -type d -exec chmod 750 {} \

并不是说你必须这样做!644、755 或 774 稍微宽松一些,但也可以。低于 640/750 也是可能的:600 和 700 不需要组,但这种情况很少发生。我倾向于使用这两个命令,如果某些命令不起作用(即来自网络服务器的禁止通知),我会“提升”权限并重试。如果我最终得到一个正常运行的网站,而我需要“提升”其他网站,我知道有一个文件的所有者或权限不正确。

别名 craft="sudo -u www-data php ./craft"

这可行,但有必要吗?您说您使用了 774 作为权限,因此您的组应该能够执行它。使用以下命令检查用户

groups

你确实在群组里www-data

相关内容