gpt4 book ai didi

php - 如何设置从 PHP 创建文件的最低权限

转载 作者:太空宇宙 更新时间:2023-11-04 12:50:32 26 4
gpt4 key购买 nike

我正在使用 PHP 从上传的图像创建文件,如下所示:

$in = imagecreatefromjpeg($tempFile);
imagejpeg($in, "images/", 100);

只有当我设置 images 时才能完美运行具有world write权限的目录:

drwxrwxrwx 2 foo foogroup images

我的 /etc/group包含:

foogroup:5134:www-data

当我运行 <?php echo exec('whoami'); ?> 时在网页上我得到 www-data .

那么为什么 775 (group write) 权限无效?

最佳答案

扩展我之前的评论:您的服务器正在使用用户 www-data 和组 www-data 运行。我们知道这一点,因为创建文件时,它属于该用户和组。

根据权利,在 Unix 中,这意味着如果该目录属于包含 www-data 的组,并且该目录是组可写的,那么该目录可以由该组的任何用户写入www-data.

现在我们更改权限

775    www-data   foogroup

775    www-data   www-data

我们可能有两种情况:有效,或者无效。

如果它不起作用,那么我们可以清楚地证明重要的不是组,而是用户。因此,对于我们的意图和目的而言,它必须与 www-data foogroup 不同

如果有效,它可能意味着仅仅属于组是不够的——看起来实际执行的检查更像是一个精确匹配 的组。

我怀疑您的设置与我的设置不同(我相信是 Ubuntu 14.04-LTS,在 Apache 下使用 mod_php5),并且您有一些“安全功能”它补充,在某些情况下实质上取代了 Unix 文件系统权限检查,并对其进行了一些更严格的检查。 然后如果此测试通过,操作将像用户 www-data 一样正常执行。

因此,您可以运行的另一个测试是,使用您当前的非工作权限和工作 777 权限,执行

shell_exec("touch images/test.jpg 2>&1");

输出可能会产生一些有用的信息。例如,我们可能会发现 shell 实际上是由另一个用户运行的(775 不起作用,777 起作用,但现在文件归其他人所有),或者 PHP 无法创建的文件从由同一个 PHP 调用的 shell 创建(这将最终证明在 PHP 内部有效的某种限制)。

其他有用的信息:您是否正在运行 FastCGI、CGI、Apache 模块、nginx 以及其他...?

关于php - 如何设置从 PHP 创建文件的最低权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37330387/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com