文档根目录中的 php 文件,所有者和组作为根目录被浏览器访问

Posted

技术标签:

【中文标题】文档根目录中的 php 文件,所有者和组作为根目录被浏览器访问【英文标题】:php file in document root with owner and group as root getting accessed by browser 【发布时间】:2017-07-20 12:25:53 【问题描述】:

我对 Linux 的文件权限及其使用感到困惑。

网络服务器:Apache, 操作系统:Ubuntu 16.04 LTS

我在 /var/www/html/ 文件夹中有一个文件 test.php,权限为 644,所有者和组为 root。现在,这个文件做了一些与数据库相关的内部日常工作,即它与数据库交互,这个文件是通过 cron 作业执行的。现在,当我通过浏览器通过输入 www.example.com/test.php 请求该文件时,令我惊讶的是,该文件被执行并完成了数据库的所有工作。

现在,我有一些困惑。

    test.php文件编译执行了,执行需要在权限中设置execute位,实际没有设置。

    当浏览器请求该文件时,它会将请求发送给 apache,即 www-data 用户,该用户执行了该文件。但是文件的所有者和组是root。另外,除了文件所有者和组之外的其他用户只有读取权限,那么它是如何执行的。

注意:即使我将权限设置为 000,并以 root 作为所有者和组,当通过浏览器请求时,文件也会被执行。

【问题讨论】:

授予完全权限Chmod -R 0777 /var/www/html/ 但是我需要限制test.php的权限,使其无法通过浏览器执行。 【参考方案1】:

文件 664 和文件夹 755 以及用户和组 www-data。

$ sudo chown -R www-data:www-data /var/www  
$ sudo chmod -R 755 /var/www

并测试到http://localhost/test.php

我使用我的个人用户,然后将我的用户添加到组 www-data 并更改文件夹 775 和文件管理器 664 的权限。以及所有者个人用户:www-data

$ sudo usermod -aG www-data personaluser
$ sudo chown -R personaluser:www-data /var/www  
$ sudo chmod -R 775 /var/www

www-data 是运行 apache 的用户/组。所以 www-data 执行(解释器)代码。

对于使用域“example.dev”或其他您已使用虚拟主机的访问。检查这个:https://www.digitalocean.com/community/tutorials/como-configurar-virtual-hosts-de-apache-en-ubuntu-16-04-es

【讨论】:

以上是关于文档根目录中的 php 文件,所有者和组作为根目录被浏览器访问的主要内容,如果未能解决你的问题,请参考以下文章

PHP如何修改上级目录中的文件?

PHP脚本循环遍历目录中的所有文件?

如何以编程方式确定 PHP 中的文档根目录?

第三周 用户和组的权限管理

LINUX运维——文件管理命令及用户和组管理

Linux04(组管理和组权限管理权限操作)