python makedirs许可否认

时间:2012-07-23 05:42:25

标签: python apache mkdir

我有一个使用django框架和mod_wsgi运行python代码的apache httpd服务器。 我的view.py我需要进行一个子进程调用来执行另一个python文件,该文件在这个过程中需要创建一些目录。

但是,我得到OSERROR 13:无论我在哪里尝试创建目录,都会拒绝权限。

仅在/ tmp中创建目录是成功的。

有人可以指导我如何解决这个问题吗?

提前致谢!!!

修改 我在serverfault.com找到了答案。这里仅供参考 apache2在root下运行,但是它会在“www-data”组下运行进程。 因此,创建一个您要创建文件/目录的目录

sudo mkdir /srv/www/writable

更改群组

sudo chgrp www-data /srv/www/writable

授予群组写入权限

sudo chmod g+w /srv/www/writable

你完成了。现在,您可以使用apache2运行的脚本

在此目录中创建任何文件/目录

2 个答案:

答案 0 :(得分:3)

可能值得补充的是,这也可以在Python中实现

import os
import pwd

path = '/var/www/myapp/foo/'
if not os.path.exists(path):
        os.makedirs(path) # creates with default perms 0777
        uid, gid =  pwd.getpwnam('root').pw_uid, pwd.getpwnam('www-data').pw_uid
        os.chown(path, uid, gid) # set user:group as root:www-data

答案 1 :(得分:0)

我在serverfault.com找到了答案。这里仅供参考

apache2在root下运行,但它会在“www-data”组下运行进程。因此,创建一个您要创建文件/目录的目录

sudo mkdir / srv / www / writable 更改组

sudo chgrp www-data / srv / www / writable 授予组写访问权限

sudo chmod g + w / srv / www / writable 你完成了。现在,您可以使用apache2运行的脚本

在此目录中创建任何文件/目录