ZipArchive php 类以 root 身份提取文件。为什么?

发布于 2024-09-11 23:41:21 字数 562 浏览 5 评论 0原文

我有一个 php 脚本:

$extract_dir = "./";
$extract_file = "extractME.zip";

$zip = new ZipArchive;
$res = $zip->open($extract_file);
if ($res === TRUE) {
    $zip->extractTo($extract_dir);
    $zip->close();
    echo "ok";
} else {
    echo "failed";
}

但是当我执行此脚本时,通过 http://www.mywebsite.com/ extract.php

FTP 上的所有文件都显示所有者为“root”,但不显示用户 ex 。 “新”,因为它应该是。因此用户无法编辑/重命名/删除这些文件。

是否可以无论如何解决此问题(我拥有服务器),该文件将使用 'USERNAME' OWNERSHIP 提取?

I have a php script:

$extract_dir = "./";
$extract_file = "extractME.zip";

$zip = new ZipArchive;
$res = $zip->open($extract_file);
if ($res === TRUE) {
    $zip->extractTo($extract_dir);
    $zip->close();
    echo "ok";
} else {
    echo "failed";
}

But when I execute this script, via http://www.mywebsite.com/extract.php

All the files on FTP are show with OWNER 'root', but not the user ex . 'neo' as it should be. So the user cant edit/rename/delete these files.

Is it possible to fix this anyhow (I own the server), that files will be extracted with 'USERNAME' OWNERSHIP ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

橙味迷妹 2024-09-18 23:41:21

ozzwanted,由于某种原因,您的 Web 服务器(apache)以 root 身份运行,因此它生成的任何文件都将作为 root 生成。永远不应该出现这种情况。 apache 通常以“www-data”或“httpd”或“nobody”或“god”运行,具体取决于 Linux 发行版。

我建议您从系统管理员的角度来调查这个问题,并在您最终被利用之前让某人为您解决这个问题。 (假设这是一个实时服务器)

您可以使用 www.php.net/chown 函数,也可以在命令行上运行“chown”命令,或者使用 system() 或 exec() 函数等 PHP 函数来执行此操作。

祝你好运。

ozzwanted, for some reason your web server (apache) is running as root so any file it makes will be made as root. This should never be the case. apache usually runs as 'www-data' or 'httpd', or 'nobody' or 'god' depending on the linux distro.

I suggest you look into this from a sysadmin point of view and have someone sort it out for you before you end up getting exploited. (assuming this is a live server)

You can use www.php.net/chown function or your can run a 'chown' command on the command line or do it from PHP with something like system() or exec() functions.

Good luck.

时光匆匆的小流年 2024-09-18 23:41:21

它以运行网络服务器的用户身份提取(注意:您不应该以 root 身份运行它)。尝试使用 chown

It extract as the user running the webserver (note: you should not be running it as root). Try using chown.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文