我正在使用以下目录在 apache - redhat/AWS 上上传 php.ini 照片
drwxrwxr-x 2 user2 user2 4096 Mar 4 08:10 datingPhotoUploads
Apache 以用户 'apache' 的身份运行。
如何授予此文件夹权限,以便用户“apache”可以对其进行写入,但要尽可能安全?
谢谢你
我正在使用以下目录在 apache - redhat/AWS 上上传 php.ini 照片
drwxrwxr-x 2 user2 user2 4096 Mar 4 08:10 datingPhotoUploads
Apache 以用户 'apache' 的身份运行。
如何授予此文件夹权限,以便用户“apache”可以对其进行写入,但要尽可能安全?
谢谢你
通常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
but /some/where/datingPhotoUpload
,则 apache 必须能够读取/some
and的目录内容/some/where
。因此,对于所有这些前面的路径,必须为其他人(或者如果 apache 是组所有者,则为组)设置 x 右侧部分。/tmp
,该目录可用于您主机上运行的所有 PHP 应用程序。在每个应用程序的基础上更改 upload_tmp_dir 可以限制对其他应用程序的访问,特别是如果您对所有 php 应用程序设置open_basedir限制并且只有当前应用程序允许设置/some/where/datingPhotoUpload
。open_basedir
上传图片(创建文件)的文件夹应该有-wx
权限。只写需要--x
(与阅读和执行相同)。
要检查正在运行的用户 php,请使用:<?php echo exec('whoami'); ?>
.