验证文件夹是否可由 PHP 中的特定用户写入


Verify if a folder is writable by a specific user in PHP

我制作了一个包含几个文件夹的列表的内部网,以便允许用户下载文件。

但我定义了对文件夹的安全访问权限。每个用户都可以在特定文件夹中访问。

在我的内部网中,我想验证文件夹是否可由特定用户(Windows 会话的用户)写入。我使用了函数 is_writable(),但这个函数验证的是全局 chmod 而不是用户的。

你知道一个允许它在PHP中的函数吗?

谢谢 !

全局用户是指运行网络服务器/fastcgi包装器的用户。

由于所有用户访问相同的脚本但访问不同的文件夹,因此不应在文件系统级别实现。

唯一合适的解决方案是在数据库表中指定权限并检查访问权限。

实体用户

实体文件夹

关系实体User_Has_Permission_On_Folder

User     Has_Permission      Folder
X        read                A
Y        read+write          A
Z        read+write          B
X        read                B
...

我不知道你的能力和代码,但是PHP,特别是在Windows上,具有良好的功能来访问域/LDAP/Active Directory,某些浏览器还允许使用NTLM(http://kb.mozillazine.org/Network.automatic-ntlm-auth.trusted-uris)进行单点登录。这可以通过域控制器组策略激活。(我在以前的公司也一直在内联网中使用它)。

如果你真的想使用文件系统函数获得权限,你必须为每个用户创建一个个人脚本,分别chown它,让它以 fast-cgi 运行,将脚本所有者用户作为活动用户。这更复杂,管理起来也不舒服。