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

限制PHP';s根据登录用户访问文件';用户的访问权限,php,security,web-applications,filesystems,Php,Security,Web Applications,Filesystems,我有一个PHP web应用程序(在Apache/Linux上运行),它允许在web服务器上浏览一些本地文件。由于Apache是作为一个特殊的“www”用户运行的,PHP可以访问“www”可以访问的所有内容,无论哪个用户登录到应用程序 根据登录用户的Unix文件系统权限限制文件访问的最佳方法是什么?理想情况下,我可以生成一个新进程,用户ID为登录用户,但我不确定这是否可行。或者,是否有一个标准的PHP库可以执行权限检查和访问文件 这可以通过三个步骤完成: 创建一个重写规则(通过.htaccess或

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


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

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

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

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

    您可能希望在应用程序顶部实现ACL以管理此权限

    当然,Zend有一个解决方案:

    您可以查看一下它,它应该做您需要的事情,而不需要在您的应用程序中保留单独的用户和权限lsit

    据我所知,这个扩展是在一些(如果不是全部的话)共享主机服务上实现的,以控制资源在用户之间的分配方式


    这将导致脚本不能由www数据执行(而是由系统用户执行),PHP不能作为模块运行(通过CGI/fastCGI机制)。

    运行Apache服务器进程的用户是一些通用的“www”用户,具有访问所有本地文件的权限。用户“bob”登录到应用程序,并请求查看本地文件。Apache调用PHP脚本来检索文件,由于运行脚本的用户是“www”,它将文件显示给“bob”,无论“bob”是否有权访问该文件。这有意义吗?步骤1似乎是确保应用程序中没有意外创建访问孔的好方法,但步骤2仍然是我不清楚的部分。访问本地文件时,如何检查用户的身份验证状态?那么,我是如何为不同的用户模拟PHP的各种权限检查功能(如可写、可执行等)的呢?谢谢,我想这正是我想要的。