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

该文章介绍了如何在Apache服务器中通过修改php.ini和配置每个虚拟主机来实现多个站点间的目录隔离,以增强安全性。主要措施包括设置php的open_basedir限制,确保每个站点只能访问其自身的目录,并避免全局影响。同时,建议为每个站点配置独立的open_basedir,以防止未配置的站点成为安全隐患。
摘要由CSDN通过智能技术生成

如果一个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,只配置其中一台虚拟主机,那么其它站点还是不安全的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值