Ubuntu 和 Web 服务器权限

Ubuntu 和 Web 服务器权限

我要问一个已经发布过很多次的问题,但即使我阅读了很多指南和帖子,我仍然心存疑虑。

我有一台 ubuntu 14.04 的服务器,其中有一个具有 sudo 权限的用户(辅助组“sudo”)和一个只想用于“Web 服务器”的用户。

我会详细解释...

  • 我的网络服务器用户是“jack”,这是 www-data 组的一部分(作为主要组)

  • 虚拟主机指向 Jack 的主目录,我在其中创建了一个名为“alias”的子文件夹,其中包含带有各种子域的子文件夹

es.

/home/jack/public_html <-- main site
/home/jack/alias/forum <-- subdomain
/home/jack/alias/wiki  <-- subdomain
/home/jack/alias/cloud <-- subdomain

我想知道的是:

  • 第一个问题-

jack 属于主要组 www-data 而不是属于 users 组,并且作为次要组 www-data ,这是正确的吗?

  • 第二个问题-

一位朋友建议我这样设置网络服务器文件夹的权限

chgrp www-data /home/jack/public_html
chmod g+rwxs /home/jack/public_html

别名文件夹也是如此。现在看起来可以了,但是有一个问题......

  • 如果我在网络服务器中加载文件,则根权限是

杰克:www-数据0644

  • 如果文件是由 www-data 生成的(例如通过 cms)

www-数据:www-数据 0666

现在,如果我手动编辑文件,例如通过 ftp,这会更改权限并给各种“网络应用程序”带来问题

我该如何修复它?

答案1

第一个问题:随便。有很多不同的方法可以实现这项工作。 Linux 标准的做法与您的做法不同,但您的方式也有效。事实上,您没有像 Linux 标准那样在 apache 帐户下运行 Web 服务器,这一事实至少表明可能存在一些其他问题,但第一个问题的结尾没有指出任何问题。

第二个问题:正如 the_velour_fog 所建议的,您需要为所有网络文件设置权限,尽管我不同意这样做的方法。

chgrp -R www-data /home/jack/public_html

很好,不会造成任何问题。但我建议不要只是将 -R 添加到其他命令中

chmod -R g+rwXs,o-w /home/jack/public_html

使用此变体,它不会对尚未标记为可执行文件的文件设置执行权限。它还会删除所有文件的其他写入权限,因为您不太可能真正想要这样做。

当然,该 chmod 只是解决 Web 服务器创建具有权限 0666 的文件的问题的创可贴。我不确定您的 Web 服务器的问题到底出在哪里,但我怀疑在某些时候您的 Web 服务器用户执行了类似的操作umask 0并且应该将其更改为umask 02.

至于您 ftp 的文件具有错误的权限,我不确定这是否是 ftp 服务器中的问题,或者是否是文件在传输之前创建方式的问题。这些文件还应该在已设置的会话上创建umask 02,但它们可能会umask 022在生效时创建。 (也可能是umask 22;从技术上讲,前导 0 只是提醒读者该数字是八进制的。无论如何,Umask 都会将其解析为八进制,但很容易忘记这一点。)

如果您的权限问题与您的 ftp 服务器有关...而不是修复这些问题,我建议切换到scpsftp,因为 ftp 是一种高度不安全的协议。在 2019 年,它的主要价值是它允许匿名传输,但您可以使用 Web 服务器匿名拉取文件,并且您可能不希望匿名拉取或推送到您的 Web 服务器帐户。只要您已安装并且进程正在运行,两者scp都应该在您的 Ubuntu 服务器上可用。sftpsshsshd

相关内容