apache - linux(ubuntu)下php开发,htdocs/wwwroot(目录及其子目录/文件)权限该如何设置

查看:754
本文介绍了apache - linux(ubuntu)下php开发,htdocs/wwwroot(目录及其子目录/文件)权限该如何设置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

环境

本地php开发,lamp环境由ubuntu16.04+xampp搭建而成
个人用户nono:nono,umask022
apache运行用户daemon:daemon(这是xampp配置文件里指定的默认用户和用户组)
网站根目录路径/home/nono/Web/wwwroot

需求

假设wwwroot目录下有个文件index.php,其作用是在wwwroot目录下创建一个目录a,然后在a目录中创建文件index.html。同时用户nono要有权限直接编辑wwwroot下的所有目录/文件。

问题

该如何设置wwwroot及其子目录/文件的权限,既能保证apache即daemon用户对该目录/文件的访问/写入权限,又能保证个人用户nono对该目录/文件的访问/写入权限?
(不考虑将权限设置成777或者apache以nono用户运行)

尝试

  1. 将wwwroot及其子目录/文件所有者和用户组改成daemon:daemon,访问该站点时能够创建a/index.html,但是普通用户不具有写入的权限。

  2. 将wwwroot及其子目录/文件所有者和用户组改成nono:daemon(需要以root身份才能设置),病把wwwroot下的目录/文件给用户组添加上写入权限,访问该站点时能够创建a/index.html。但是用户nono先创建了a目录,此时a的所有者用户组为nono:nono,就不能创建index.html文件了。如何让wwwroot目录下所有新创建的文件所有者和用户组都是nono:daemon,但是其他用户目录(如/home/nono)下创建的目录文件所有者用户组还是nono:nono

参考

linux下对Laravel框架的目录如何修改文件权限
ubuntu下lnmp开发关于权限的问题

麻烦各位大神给个解答,谢谢。

解决方案

保证apache即daemon用户对该目录/文件的访问/写入权限

apache 用户不能对它所执行代码的目录拥有写入权限,否则网站等着被挂马吧。上传目录可写,所以一定要是不可执行的(HTTP 服务器不配置执行此目录中的任何脚本,不管它 PHP 还是别的什么)。

apache 不应该使用 daemon 用户(实际上不应该使用 daemon 的用户,因为它的语义不明确,容易造成安全隐患)。apache 所使用的用户应当叫 apache 或者 www 或者 http 或者 www-data。

你把 wwwroot 目录给 nono:apache,并且设置 4750 权限,这样新建的目录 apache 组就可读了。或者你也可以利用 POSIX ACL 的 default 规则来做。

如果你的 PHP 程序需要写日志或者数据文件,请为其准备另外的目录(无法通过 Web 访问的)。

其实为了安全,建议使用 FastCGI 模式运行 PHP 代码,这样 HTTP 服务就不需要与 PHP 共用权限了。

这篇关于apache - linux(ubuntu)下php开发,htdocs/wwwroot(目录及其子目录/文件)权限该如何设置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆