![在 CentOS 7 上运行 LAMP 堆栈的用户权限](https://linux22.com/image/1589086/%E5%9C%A8%20CentOS%207%20%E4%B8%8A%E8%BF%90%E8%A1%8C%20LAMP%20%E5%A0%86%E6%A0%88%E7%9A%84%E7%94%A8%E6%88%B7%E6%9D%83%E9%99%90.png)
我目前在 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 权限。