在 CentOS 7 上运行 LAMP 堆栈的用户权限

在 CentOS 7 上运行 LAMP 堆栈的用户权限

我目前在 CentOS 7 上运行 Apache、MySQL 和 PHP 7.2。

我的网页目录是/var/www/html

现在的问题是,有一个 SFTP 帐户是 root,可以访问所有目录。当将文件上传到网站目录时,用户是 root,组是 apache。

因此我需要使用以下命令将用户更改为 apache:

sudo chown -R apache /var/www/html/

然后用户就是 Apache,我可以使用采用 PHP 的 Web 软件编辑该文件。

有人告诉我,当文件通过 SFTP 由 root 上传时,用户将始终是 root。

有没有办法使得当我的 SFTP 帐户上传文件时无需执行 sudo chown 即可编辑它们?

答案1

在 Linux 上无法自动更改用户 - 这可能会导致“文件赠品“问题在于,创建文件的用户无法编辑该文件,因为它被自动更改为由其他用户拥有。

最简单的解决方案是使用setgid(通过chmod g+s)在父目录上使上传的文件属于用户apache所属的组,并设置umask(通过umask 0002或类似方法)确保新文件始终具有组写入权限。这样 Apache(和 PHP)将能够修改它们。

(请注意,您的文件已经与apache组一起上传,这表明您已经完成一半 - 即您已经setgid设置好了位。)

有关这些命令的更多信息,您可以参阅 SuperUser 博客文章揭秘 Linux 权限

相关内容