Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache Python mkdir错误的所有者_Apache_Python 2.7_Mod Wsgi - Fatal编程技术网

Apache Python mkdir错误的所有者

Apache Python mkdir错误的所有者,apache,python-2.7,mod-wsgi,Apache,Python 2.7,Mod Wsgi,我对这个问题感到困惑,请帮助: 为DJANGO运行DJANGO、Python 2.7和Apache[mod_wsgi]。当mkdir或文件写入发生时,用户/组总是root:root。父目录都由apacheuid/GID拥有 Python如何能够通过Apache做如此危险的事情,而不直接将root:root编码为拥有dir 我不介意通过os.chown()显式强制所有者,但是为了更好的安全实践,我宁愿它选择正确的权限。你知道为什么会这样吗 根据要求,更多详情: 以下是父目录: drwxrwxrw

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

为DJANGO运行DJANGO、Python 2.7和Apache[mod_wsgi]。当mkdir或文件写入发生时,用户/组总是root:root。父目录都由apacheuid/GID拥有

  • Python如何能够通过Apache做如此危险的事情,而不直接将root:root编码为拥有dir
  • 我不介意通过os.chown()显式强制所有者,但是为了更好的安全实践,我宁愿它选择正确的权限。你知道为什么会这样吗

  • 根据要求,更多详情:

    以下是父目录:

    drwxrwxrwx.  7 apache apache 4096 Jan 16 00:57 archives
    
    drwxr-xr-x. 3 root   root   4096 Jan 16 00:57 test_dir
    
    以下是使用存档目录中的os.mkdir()创建的文件夹:

    drwxrwxrwx.  7 apache apache 4096 Jan 16 00:57 archives
    
    drwxr-xr-x. 3 root   root   4096 Jan 16 00:57 test_dir
    
    我正在运行企业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
    
    如您所见,主服务作为根(标准)运行,子进程作为apache用户(标准)分叉。我可以通过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"
    
    -=====-


    我不能对阿丁发表评论,因为我使用的是我的工作账户,而不是我的个人账户。我理解你的意思,但这将回到我上面提到的第1点。允许这样做是一个巨大的安全风险。从本质上说,有人可以很容易地破解文件上传并让它以root用户身份执行-几分钟后,我可以删除所有备份,下载所有数据库,删除文件系统,更改root用户密码,删除内核并重新启动服务器。Apache用户没有shell访问权限,因此通过该用户发送和执行文件是保护web服务器的最佳方法之一。我只是从十多年来一直在我的服务器上做这件事的脚本小子那里知道这一点。顺便说一句:我对网络领域的Python还不熟悉。

    你的问题缺乏信息

    • 向我们显示父目录的统计信息(不是所有目录,只是直接父目录)
    • 您的进程作为哪个用户运行?例如,提供ps输出

      ps auxw | grep apache

    关于你的问题:

  • 在这个世界上,Python尊重底层Unix库,就像其他编程语言一样。是的,以root身份运行的进程可以创建root所拥有的目录。你为什么要那样做

  • 您不应该使用chown来解决这个问题,而是应该首先理解为什么会发生这种情况,到目前为止,您还没有提供任何有用的证据


  • 这不是因为Python进程是由appache运行的,而appache本身是在根目录下运行的吗?在这种情况下,所有者当然应该是root:root鉴于问题的性质,你能直接通过我的Gmail地址Graham.Dumpleton联系我吗,以便进一步调查。谢谢。我也有同样的问题,使用一个普通的老python脚本。作为一个普通用户,我在Suse 13.1下运行。这个问题与我是从Spyder运行还是从控制台运行无关,甚至与我只是在控制台上启动Python并使用os.mkdir()无关——结果总是归root所有@扎克,你们找到解决办法了吗?我是作为一个朋友遇到的well@AndrewLngdn字体不,我真的没有。在发生这种情况的某些情况下,磁盘是一个NTFS分区,与同一台计算机上的Windows安装共享,对于这些情况,Linux文件权限的东西确实有效。在所有其他情况下,我找到的唯一解决办法就是上面的问题:事后更换所有者或离开它