1

我正在使用以下目录在 apache - redhat/AWS 上上传 php.ini 照片

drwxrwxr-x  2 user2 user2 4096 Mar  4 08:10 datingPhotoUploads

Apache 以用户 'apache' 的身份运行。

如何授予此文件夹权限,以便用户“apache”可以对其进行写入,但要尽可能安全?

谢谢你

4

2 回答 2

3

通常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 的主要问题是:

  • apache 用户是否可以访问此 apache 可写目录?如果您不使用/tmpbut /some/where/datingPhotoUpload,则 apache 必须能够读取/someand的目录内容/some/where。因此,对于所有这些前面的路径,必须为其他人(或者如果 apache 是组所有者,则为组)设置 x 右侧部分。
  • 此路径可用于我的所有 php 应用程序还是仅适用于正在运行的应用程序?这是 的主要问题/tmp,该目录可用于您主机上运行的所有 PHP 应用程序。在每个应用程序的基础上更改 upload_tmp_dir 可以限制对其他应用程序的访问,特别是如果您对所有 php 应用程序设置open_basedir限制并且只有当前应用程序允许设置/some/where/datingPhotoUploadopen_basedir
  • 这个目录是否足够大?小心上传或大量上传。当这个目录被恶意用户填充时会发生什么?
  • 我确定没有办法在这个目录中执行任何代码吗?在 exim 数据中上传包含 php 代码的图像是代码包含攻击的一个示例,您确定此目录在 Web 服务器目录根目录之外吗?您确定针对此目录的任何特殊路径都不允许执行 php(可能删除此目录上的 php 处理程序)吗?
于 2013-03-04T09:24:26.630 回答
2

上传图片(创建文件)的文件夹应该有-wx权限。只写需要--x(与阅读和执行相同)。

要检查正在运行的用户 php,请使用:<?php echo exec('whoami'); ?>.

于 2013-03-04T08:59:57.203 回答