apache 配置php目录权限,apache+php虚拟机目录权限管理

如果一个apache服务器中存在多个虚拟主机,想在站点目录之间进行隔离,提高安全性,个人总结最完善的方法如下:

一、修改php.ini添加所有php要涉及到的目录白名单

二、apache虚拟机再单独配置每个站点php程序需要涉及到的目录

例:对以下三个站点进行隔离

/data/webroot/web1 t1.com

/data/webroot/web2 t2.com

/data/webroot/web3 t3.com

一、修改php.ini

open_basedir = "/tmp:/data/webroot/web1:/data/webroot/web2:/data/webroot/web3"

注:

1、如果不想对某个站点进行权限限制,也必须存在此目录,否则php文件无法访问

2、如果只配置了此参数,apache中不对虚拟机做任何配置,则会影响全局

3、如果真的想只配置php.ini,不对apache中的每个站点进行配置,可以使用"目录+多位随机码"格式这种不易被猜到的同级站点目录名,如:

open_basedir = "/tmp:/data/webroot/web1_8DS932:/data/webroot/web2_SF3SKG:/data/webroot/web3_90DLFD"

这种方法可能对存在很多虚拟机的服务器中比较简便。不推荐……

二、修改apache虚拟机配置文件

ServerAdmin webmaster@m.cn

DocumentRoot "/data/webroot/web1"

ServerName t1.com

php_admin_value open_basedir "/tmp:/data/webroot/web1"

ServerAdmin webmaster@m.cn

DocumentRoot "/data/webroot/web2"

ServerName t2.com

php_admin_value open_basedir "/tmp:/data/webroot/web2"

ServerAdmin webmaster@m.cn

DocumentRoot "/data/webroot/web3"

ServerName t3.com

php_admin_value open_basedir "/tmp:/data/webroot/web3"

(完成)

注:

1、如果只配置了php.ini则会影响“全局没有使用php_admin_value配置的站点”,但所有含有php程序的站点目录必须存在于php.ini白名单中。

2、如果不配置php.ini,只配置其中一台虚拟主机,那么其它站点还是不安全的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值