为上传的图像提供适当的 Linux 权限,以允许删除和重新上传

为上传的图像提供适当的 Linux 权限,以允许删除和重新上传

我应该设置什么权限以及如何设置,以允许 apache 覆盖已上传的图像、删除它们并重新上传,以及允许将底层文件夹的权限传递给新上传的文件(如果这是正确的方法)?

我的图像直接是,例如:/images/subset1/ /images/subset2/ /images/subset3/

相当标准,图像已上传到每个子集文件夹。

答案1

为了使 Apache 能够读取和写入目录,该目录必须是:

  • 由用户 apache 拥有,模式为 7xy(文件为 6xy);x 和 y 可能都为零;

或者

  • 由另一个用户拥有,但组所有权与 Apache 相同,模式为 x7y 或 x6y(x 通常是 2 = 文件写入和 4 = 文件读取的总和,因此为 6,1 = 目录扫描,因此对于目录为 7)

或者

  • 所有者为不同于 Apache 的用户、不同于 Apache 的组,模式为 xy6 或 xy7。这意味着该文件绝对可由任何人写入,因此一个坏主意. 尝试让文件所有权改为属于上述更合理的情况之一。

改变权限,您需要拥有该文件/目录的所有权。然后您可以通过 shell(chmod 命令)或通过 FTP 更改权限。要更改所有权您必须是超级用户 root,并且不能通过 FTP 执行此操作,需要某种 shell 访问权限才能运行 chown 实用程序或其某些 GUI 变体。

我认为,最好的选择是让非 Apache 用户拥有文件和目录,并且除了目录的 4(读取)+ 1(=5)之外没有其他访问权限。然后在一组有限的特殊目录中,拥有 Apache 所有权和权限 600(文件)和 700(子目录)。如果可能的话,请将 Web 服务器(PHP、python 等)配置为不解释可写区域的文件。这样,Apache 将能够写入所有内容,但不能执行它。

这是因为,如果所有文件都可由 Apache 写入,则可能会允许某人上传可执行代码,从而“命令”服务器执行您不​​希望执行的操作(发送垃圾邮件、提升权限、运行端口扫描和僵尸网络……)。如果希望写入文件,则应阻止运行这些文件。

相关内容