gpt4 book ai didi

apache - Python mkdir 错误所有者

转载 作者:行者123 更新时间:2023-12-02 03:52:42 24 4
gpt4 key购买 nike

我对这个问题感到困惑,请帮忙:

运行 DJANGO、Python 2.7、Apache [mod_wsgi] for DJANGO。当 mkdir 或文件写入发生时,用户/组始终是 root:root。父目录均由 Apache UID/GID 拥有。

  1. Python 到底是如何通过 Apache 做如此危险的事情而不直接编码 root:root 来拥有该目录?
  2. 我不介意通过 os.chown() 显式强制所有者,但为了更好的安全实践,我宁愿它获取正确的权限。关于为什么会发生这种情况有什么想法吗?
<小时/>

根据要求,更多详细信息:

这是父目录:

drwxrwxrwx.  7 apache apache 4096 Jan 16 00:57 archives

这是使用 os.mkdir() 在文件目录中创建的文件夹:

drwxr-xr-x. 3 root   root   4096 Jan 16 00:57 test_dir

我正在运行 Enterprise Linux,Apache 作为服务运行:

 [root@s2 archives]# ps wwwwwwwwwwwwwaux | grep httpd
apache 21634 0.7 5.2 1321760 101400 ? Sl Jan12 52:04 /usr/sbin/httpd
apache 21657 0.0 0.5 329104 10724 ? S Jan12 0:05 /usr/sbin/httpd
apache 21658 0.0 0.5 329248 10740 ? S Jan12 0:05 /usr/sbin/httpd
apache 21659 0.0 0.5 329264 10756 ? S Jan12 0:05 /usr/sbin/httpd
apache 21660 0.0 0.5 329280 10796 ? S Jan12 0:05 /usr/sbin/httpd
apache 21661 0.0 0.5 329104 10684 ? S Jan12 0:05 /usr/sbin/httpd
apache 21662 0.0 0.5 329280 10796 ? S Jan12 0:05 /usr/sbin/httpd
apache 21663 0.0 0.5 329248 10740 ? S Jan12 0:05 /usr/sbin/httpd
apache 21664 0.0 0.5 329104 10664 ? S Jan12 0:05 /usr/sbin/httpd
apache 21665 0.0 0.5 329104 10684 ? S Jan12 0:05 /usr/sbin/httpd
apache 21666 0.0 0.5 329248 10760 ? S Jan12 0:05 /usr/sbin/httpd
apache 22705 0.0 0.5 329256 10756 ? S Jan13 0:05 /usr/sbin/httpd
apache 22711 0.0 0.5 329240 10696 ? S Jan13 0:05 /usr/sbin/httpd
apache 22752 0.0 0.5 329280 10776 ? S Jan13 0:03 /usr/sbin/httpd
apache 22806 0.0 0.5 329104 10648 ? S Jan13 0:02 /usr/sbin/httpd
root 25238 0.0 0.0 103236 864 pts/0 S+ 17:19 0:00 grep httpd
root 25893 0.0 0.6 326980 13092 ? Ss 2013 3:52 /usr/sbin/httpd

如您所见,主服务以 root(标准)身份运行,子进程以 apache 用户(标准)身份 fork 。我可以通过 Apache 在同一台服务器上的同一目录中执行 PHP 或 Perl,并且获得正确的权限:

 drwxr-xr-x. 3 apache apache 4096 Jul 19 23:39 sqa-test1-php
drwxr-xr-x. 3 apache apache 4096 Jul 22 19:22 sqa-test2-perl
drwxr-xr-x. 3 apache apache 4096 Dec 4 21:31 sqa-test3-ruby

这是我用于测试的 WSGI 配置:

  WSGIScriptAlias / "apache/conf/Extra/django_nix.wsgi"

-=====-

我无法向 Ardin 发表评论,因为我使用的是工作帐户,而不是个人帐户。我明白你在说什么,但这又回到了我上面提到的第一点。允许这样做会带来巨大的安全风险。本质上,有人可以轻松破解文件上传并以 root 身份执行 - 只需几分钟,我就可以删除所有备份、下载所有数据库、清除文件系统、更改 root 用户密码、清除内核并重新启动服务器。 Apache 用户没有 shell 访问权限,因此通过该用户传送和执行文件是保护 Web 服务器的最佳方法之一。我只是通过十多年来与脚本小子的斗争才知道这一点,这些脚本小子一直对我的服务器执行此操作。附带说明:我是 Web 空间中的 Python 新手。

最佳答案

您的问题缺乏信息。

  • 向我们显示父目录的统计信息(不是全部,只是直接父目录)
  • 您的进程以什么用户身份运行?提供ps输出,例如

    ps auxw | grep apache

至于你的问题:

  1. 在这个世界上,Python 就像任何其他编程语言一样尊重底层 Unix 库。是的,以 root 身份运行的进程可以创建 root 拥有的目录。为什么你想要其他方式?

  2. 您不应该使用 chown 来解决此问题,而应该首先了解为什么会发生这种情况,并且到目前为止您还没有提供任何有用的证据。

关于apache - Python mkdir 错误所有者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21168144/

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