我在apache上使用以下目录进行php.ini照片上传 - redhat / AWS
drwxrwxr-x 2 user2 user2 4096 Mar 4 08:10 datingPhotoUploads
Apache以用户'apache'的形式运行。
如何授予此文件夹权限,以便用户'apache'可以写入,但其他方式尽可能安全?
三江源
答案 0 :(得分:2)
上传图片(创建文件)文件夹应具有-wx
权限。
写作只需要--x
(与阅读和执行相同)。 要检查用户php正在运行的用途:<?php echo exec('whoami'); ?>
。
答案 1 :(得分:2)
通常upload_tmp_dir是/ tmp。这个/ tmp目录作为一些特殊权限(chmod 1777
),其中真正特殊的权利是1
。这是一个棘手的问题。这意味着,对于目录,只有文件所有者才能删除在此目录中创建的文件,即使任何其他rwx
权限似乎适用于文件。
因此,上传存储在apache用户上传的 1777 权限的临时文件夹中的文件意味着只有apache可以删除这些文件。一个很好的起点。
您可以在 datingPhotoUploads 目录中使用此权限。但您也可以尝试使用目录的组所有权(chmod user2:apache; chmod 2770 datingPhotoUploads;
)来管理它。这里chmod的770部分意味着对chmod部分的用户和组所有者进行读写和删除。 2
表示在此目录中创建的每个文件都与目录具有相同的所有权,因此user2:apache
。
upload_tmp_dir的主要问题是:
/tmp
但/some/where/datingPhotoUpload
,则apache必须能够读取{{1}的目录内容}和/some
。因此,对于其他路径,必须为其他人(或者如果apache是组所有者的群组)设置x右部分。/some/where
的主要问题,此目录可用于主机上运行的所有PHP应用程序。基于每个应用程序更改upload_tmp_dir可以限制对其他应用程序的访问,特别是如果您对所有php应用程序设置 open_basedir 限制,并且只有当前应用程序允许/tmp
/some/where/datingPhotoUpload
设置。