我对这个问题感到困惑,请帮忙:
为DJANGO运行DJANGO,Python 2.7,Apache [mod_wsgi]。当mkdir或文件写入发生时,用户/组始终是root:root。父目录全部归Apache UID / GID所有。
根据要求,更多细节:
这是父目录:
drwxrwxrwx. 7 apache apache 4096 Jan 16 00:57 archives
这是使用archives目录中的os.mkdir()创建的文件夹:
drwxr-xr-x. 3 root root 4096 Jan 16 00:57 test_dir
我正在使用Apache作为服务运行Enterprise Linux:
[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用户(标准)分叉。我可以在同一台服务器上通过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 Space中的Python新手。
答案 0 :(得分:0)
你的问题缺乏信息。
您的进程运行的用户是什么?提供ps输出,例如
ps auxw | grep apache
关于你的问题:
在这个世界中,Python就像任何其他编程语言一样尊重底层的Unix库。是的,以root身份运行的进程可以创建root拥有的目录。你为什么要这么做?
你不应该使用chown来解决这个问题,而应该首先了解它为什么会发生这种情况,到目前为止你还没有提供任何有用的证据。