我正在为一个项目编写一个php文件上传脚本 - 我已经看到了所有优秀的开源脚本,但是我决定自己做,因为我有一定程度的用户访问权限,我不能似乎找到了任何地方。
所以这就是我要做的事情:
最初我决定制作一个mysql解决方案,其中每个文件夹都有一个ID,当你创建一个文件夹时,你指定了允许查看该文件夹的组 - 但这似乎不是最优雅的解决方案。
有人能提出理论上的方法来做到这一点吗?我很高兴用PHP编写代码,但我无法理解最好的方法。
是否有某种方式(缺少以特定方式命名文件夹),文件夹和文件是否具有我可以在此处利用的属性?
答案 0 :(得分:2)
由于您具有严格的权限要求,因此可以实现类似于UNIX的文件权限的精细方法的结构。每个文件或文件夹都应具有所有者,组和权限字符串,其类似于“755”。
权限字符串的第一个位置属于文件或目录的所有者。数字4表示读取权限,2表示写入权限,1表示执行权限。权限是累积的,因此第一列(4 + 2 + 1)中的权限7表示所有者具有读取,写入和执行权限。
第二栏属于该组。在这种情况下,组成员可以读取(4)并执行(1)(4 + 1 = 5)。
第三栏适用于非集团所有者或成员的每个人。这个位置被称为“世界”或“其他”。在此示例中,“其他”用户还具有read(4)和execute(1)权限。
在为每个文件/目录创建所有者,组和权限列之后,您需要创建一个“组”表和一个用于将用户映射到组('user_groups')的表。然后将每个用户分配给一个或多个组,并为每个文件夹(以及文件,如果需要)分配所有者,组和“其他”权限。
有关Unix文件系统的更多信息,请参阅this tutorial。
答案 1 :(得分:1)
如何在每个文件上设置某种类似unix的基本权限。我假设当用户上传文件时,他们将文件存储在数据库中,而不是只是自由上传到文件夹,让人们直接导航到它下载。添加以下数据库表:
然后,每个用户都可以添加到您指定的任何组中,因此具有相应访问文件的权限。您也可以通过将组权限设置为0来使任何人都无法查看文件。