Я решил это сам в конце.
Когда я работаю на машинах разработчика, я на самом деле использую права текущего пользователя. Однако при работе на сервере развертывания я фактически запускаю wsgi
, что означает, что он работает с привилегиями www-data
.
www-data
не является ни владельцем, ни группой пользователей, которым принадлежит /var/www
. Это означает, что www-data
рассматривается как other
и имеет права доступа, установленные для других.
ПЛОХОЙ решение этой проблемы заключается в следующем:
sudo chmod -R 777 /var/www/
Это даст всем полный доступ ко всему в /var/www/
, , что очень плохая идея .
Другое ПЛОХОЕ решение будет делать:
sudo chown -R www-data /var/www/
Это изменит владельца на www-data
, , что открывает уязвимости безопасности .
ХОРОШЕЕ решение будет:
sudo groupadd varwwwusers
sudo adduser www-data varwwwusers
sudo chgrp -R varwwwusers /var/www/
sudo chmod -R 760 /var/www/
Это добавляет www-data
к группе varwwwusers
, которая затем устанавливается в качестве группы для /var/www/
и всех ее подпапок. chmod
предоставит владельцу права на чтение, запись и выполнение, но группа не сможет выполнить какой-либо сценарий, потенциально загруженный туда, если, например, веб-сервер был взломан.
Вы можете установить его на 740
, чтобы сделать его более безопасным, но тогда вы не сможете использовать функциональность Django's
collectstatic
, поэтому придерживайтесь 760
, если вы не очень уверены в том, что вы делает.