假设我的项目文件夹为www,环境:centos+nginx+php
我的设想是www设置744
然后把nginx(php)操作文件的时候使用第一个权限组(7),而不是第三个权限组(4).
就像win03环境下为文件夹添加一个用户(iis),然后PHP就可以具有权限(7).
我试着把www所有者改为nginx一样无效 chown -R nginx:nginx www
PHP操作文件的时候到底属于那个用户组?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
你这样设置是错误的,如此一来,php脚本将有权限向整个网站任何目录写入、删除文件。这完全不符合最小化权限原则,也容易造成网站被恶意入侵、篡改之问题。
要设置安全的权限系统,你要先弄清楚以下几个问题:
1. 网站的文件所有者帐号是什么?
3. 网站哪些目录需要有写入权限(如日志生成、附件上传等)
针对这个问题,建议的设置如下:
1. 网站所有者,可设置为ftp, www帐号
2. nginx/php-fpm/apache,建议以nobody帐号运行,反正不能使用网站文件所有者帐号。
3. 需要可写权限的目录,手工设置权限为777即可
4. php生成的日志、附件文件的所有者会是nobody, 这时www,ftp帐号却无法修改、删除这些文件。那么在php生成文件时,可调用chmod($filename, 0777)。即解钤还需系钤人。
这样,php脚本只能向指定的目录中写入文件,一方面规范了程序代码的行为,另一方面,也一定程度上提高了网站的安装性。