脚本宝典收集整理的这篇文章主要介绍了

LNMP环境下php项目目录权限配置

脚本宝典小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助你少写一行代码,多一份安全和惬意。

说明

nginx仅能处理静态文件,当遇到php文件时须转发给php-fpm处理,因此项目中的php文件须同时具有给nginx和php-fpm执行的权限,必要时还要加上的权限。nginx和php-fpm的权限来源于它们的执行用户的权限,这里使这两者设置为同一执行用户来统一权限是比较方便的做法。
示范环境:

  • CentOS7.4
  • Nginx1.12.2
  • php7.2
  • 项目根目录是sorgo/
  • 项目管理员的用户名是uu,umask值是0002

操作

设置nginx和php-fpm为同一执行用户

新建执行用户www并自带用户组www,且不可登录.

useradd www -s /usr/sbin/nologin

将已有的项目管理人员账号(如:uu,当然你也可以再创建一个专用的)加入www

usermod -G www uu

修改nginx配置文件,变更执行用户为www,我的环境中该文件路径是:/etc/nginx/nginx.conf
LNMP环境下php项目目录权限配置-脚本宝典
修改php-fpm配置文件,变更执行用户为www,我的环境中该文件路径是:/etc/php-fpm.d/www.conf
修改php-fpm配置文件

修改完后重启nginx和php-fpm.

设置项目目录权限

下面以laravel项目目录为例,只给相关用户必要的权限,又不会像设置777那样权限过大而存在可能的安全问题。

chown -R uu:www sorgo/       #设置归属
chmod -Rf g+s sorgo/         #SGID,新生成文件或文件夹保持与父目录同一权限组
chmod -R 750 sorgo/          #设置具体权限
chmod -R 770 sorgo/storage/  #程序需要写入和创建新文件的加`写`权限

SGID属性对于像laravel框架这种有tinker让开发者在交互式命令行界面调试代码的特别有用。比如你使用tinker新建了一个日志文件,如果没有SGID那这个新日志文件的所有者和所有组会是uu:uu,这时www用户执行下的程序要写入东西到这个新日志的话就会因权限受阻而报错;而父目录有SGID属性的则会是uu:www,同时保证了两个相关的用户都能正常读写。

后言

曾经有过各种因权限问题而报错的,基本办法也都是设置777权限了事,直到后来一次在我一怒之下将整个项目文件都设了777权限但还报错,真见鬼了,简直要疯掉了。。。
于是才下决心正面解决这个问题,就在网络上找了各种解决方案,有靠谱的也有不靠谱的,以上方案是经我整理实践后确认可靠的方案,希望对你有用。
如果你还知道更好的方案,也请留言分享出来,谢谢~

总结

以上是脚本宝典为你收集整理的

LNMP环境下php项目目录权限配置

全部内容,希望文章能够帮你解决

LNMP环境下php项目目录权限配置

所遇到的程序开发问题,欢迎加入QQ群277859234一起讨论学习。如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典网站推荐给程序员好友。 本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。

80%的人都看过