开发者社区 问答 正文

关于linux下php权限问题

假设我的项目文件夹为www,环境:centos+nginx+php

我的设想是www设置744
然后把nginx(php)操作文件的时候使用第一个权限组(7),而不是第三个权限组(4).
就像win03环境下为文件夹添加一个用户(iis),然后PHP就可以具有权限(7).

我试着把www所有者改为nginx一样无效 chown -R nginx:nginx www

PHP操作文件的时候到底属于那个用户组?

展开
收起
a123456678 2016-06-14 11:32:53 2775 分享 版权
1 条回答
写回答
取消 提交回答
  • 你这样设置是错误的,如此一来,php脚本将有权限向整个网站任何目录写入、删除文件。这完全不符合最小化权限原则,也容易造成网站被恶意入侵、篡改之问题。

    要设置安全的权限系统,你要先弄清楚以下几个问题:

    1. 网站的文件所有者帐号是什么?

    1. apache/php-fpm以什么帐号身份运行?

    3. 网站哪些目录需要有写入权限(如日志生成、附件上传等)

    针对这个问题,建议的设置如下:

    1. 网站所有者,可设置为ftp, www帐号

    2. nginx/php-fpm/apache,建议以nobody帐号运行,反正不能使用网站文件所有者帐号。

    3. 需要可写权限的目录,手工设置权限为777即可

    4. php生成的日志、附件文件的所有者会是nobody, 这时www,ftp帐号却无法修改、删除这些文件。那么在php生成文件时,可调用chmod($filename, 0777)。即解钤还需系钤人。

    这样,php脚本只能向指定的目录中写入文件,一方面规范了程序代码的行为,另一方面,也一定程度上提高了网站的安装性。

    2019-07-17 19:37:06
    赞同 展开评论