我有一个django网站在Ubuntu上运行,configuration了mod_wsgi的apache2。 media (用户上传文件所在的文件夹)由ubuntu用户拥有(使用sudo访问), media文件夹组为www-data 。 当apache在媒体文件夹中创build一个或多个新文件夹时,某个外部Python进程(例如subprocess.popen )无法写入该文件夹,因为该特定文件夹由www-data拥有。 这个问题的解决scheme是什么?
我到目前为止所做的( django是系统用户):
sudo chown django:django -R mysite/media/ sudo chgrp -R www-data mysite/media/ sudo chmod -R g+w mysite/media/
ls -la media文件夹的结果(媒体文件夹包含一些以整数命名的其他文件夹):
drwxr-sr-x 2 www-data www-data 4096 Jun 8 02:20 11 drwxrwsr-x 6 django www-data 4096 Jun 7 18:15 10 drwxrwsr-x 5 django www-data 4096 Jun 7 18:13 9 drwxrwsr-x 5 django www-data 4096 Jun 7 18:11 8
正如你所看到的,新创build的文件夹11由www-data拥有,而不是由django用户拥有。
还有什么我曾经试过:
django的www-data组,但没有任何帮助 请帮忙!
更新
不幸的是Daniel解决scheme也不适合我(仍然IOError: [Errno 13] Permission denied )。 这里是命令的结果getfacl mysite/site_media/ :
之前
# file: mysite/site_media/ # owner: django # group: www-data user::rwx group::rwx other::rx
( sudo setfacl -d -R -mg:www-data:rwx mysite/site_media/ )
# file: mysite/site_media/ # owner: django # group: www-data user::rwx group::rwx other::rx default:user::rwx default:group::rwx default:group:www-data:rwx default:mask::rwx default:other::rx
您可以使用文件访问控制列表,在这种情况下setfacl设置默认文件权限以允许对该组执行写入操作。 如果您已将django添加到www-data组,则使用以下命令,django用户将拥有www-data用户拥有的任何文件的写权限。
setfacl -d -R -mg:www-data:rwx mysite/media/
注意:如果未安装,则需要使用apt-get install acl安装acl软件包。 确保为分区启用ACL – 此链接可能会有所帮助 。
问题是共享内存。 这个答案帮助它解决了这个问题。
在/etc/fstab添加none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0修正了它。
通过查看你的目录输出,在目录11权限是准确的,我发现,Apache创build它与组可读,但没有组可写的权限。 由于您可能希望组www-data所有用户对这些文件/目录拥有写入权限,因此您需要告诉apache创build具有组写入权限的文件/目录,这些权限可以通过将umask选项设置为WSGIDaemonProcess来实现 。 由于文件说:
通常,inheritance的umask将是
0022
您将始终没有设置组可写的权限。 在这种情况下,只需将umask值设置为0002然后重新启动apache即可。 你可以通过指定相关的用户名,以用户django的身份运行WSGIDaemon来解决这个问题。
我不完全理解你对这个问题的描述,但是认为问题在于他的位置,即:
drwxr-sr-x
看看: http : //en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories描述写得比我可以给它更好的描述。 chmod手册页也一样。 基本上在setgud中查找信息。 它在目录上的行为与在文件上的行为不同。
在媒体目录上尝试chmod gs ,然后在媒体中创build一个子目录,看看是否已经阻止它inheritance错误的烫发。 如果是这样,您只需要从其他所有子窗口中提取setgid位。
对于这个find是你的朋友(它可以search业主团体和烫发)