根据登录用户的访问权限限制PHP的文件访问

时间:2011-06-02 13:39:53

标签: php security web-applications filesystems

我有一个PHP Web应用程序(在Apache / Linux上运行),除其他外,它允许浏览Web服务器上的本地文件。由于Apache作为一个特殊的“www”用户运行,因此PHP可以访问“www”可以访问的所有内容,无论用户登录到应用程序。

根据登录用户的Unix文件系统权限限制文件访问的最佳方法是什么?理想情况下,我可以生成一个新进程,用户ID是登录用户,但我不确定这是否可行。或者,是否有一个标准的PHP库,它将执行权限检查和访问文件?

3 个答案:

答案 0 :(得分:2)

我不明白你的意思,因为访问文件的用户是PHP用户,而不是请求你的页面的普通用户(你没有用SSH连接到你的服务器)

您可能希望在应用程序之上实现ACL以管理此权限。

当然,Zend有解决方案:http://framework.zend.com/manual/en/zend.acl.html

答案 1 :(得分:0)

这可以通过三个步骤完成:

  1. 创建重写规则(通过.htaccess或Apache配置文件),将“本地文件”的所有请求重定向到PHP脚本。
  2. 在脚本中检查用户的身份验证状态。
  3. 如果用户已通过身份验证,请使用该脚本加载和输出文件。

答案 2 :(得分:0)

您可以查看http://httpd.apache.org/docs/2.0/suexec.html它应该执行您需要的操作,而无需在应用程序中保留单独的用户和权限。

据我所知,此扩展是在一些(如果不是全部)共享主机服务上实现的,用于控制如何在用户之间划分资源。

这将导致脚本无法由www-data(但由系统用户)执行,并且PHP不作为模块运行(通过CGI / fastCGI机制)。