Django: Когда пользователь загружает мультимедиа на мой сайт, он принадлежит корневому пользователю сервера.Как мне это изменить? - PullRequest
0 голосов
/ 24 сентября 2019

Я не уверен в том, какой код вы, ребята, хотели бы, чтобы я загружал, но, пожалуйста, спросите, нужен ли он вам, и я его загрузлю!

Когда пользователь загружает медиа / файлы на мой сайт, rootПользователь становится владельцем файла.Это лишает пользователя возможности открывать и просматривать загруженный носитель, поскольку он не принадлежит нужному пользователю на моем сервере.

У меня есть пользователь, который запускает мое приложение Django вместо пользователя root.Лицо, загрузившее мультимедиа, может получить к нему доступ, как только я вручную зайду на сервер и перейду в право собственности на этот мультимедийный файл, который был загружен, на пользователя сервера, который запускает мое приложение Django.

Как я могу получить этопо умолчанию загружать файл в собственность пользователя сервера, на котором запущен Django ??

Я думал о настройке задания cron для запуска время от времени (это было бы ужасно для масштабирования), поэтому яМожно изменить владельца носителя без необходимости физического входа на сервер и сделать это самостоятельно.

Редактировать

Я хочу уточнить.

Пользователь - это тот, кто создал профиль на моем сайте.Они заходят в свой профиль и загружают файл или изображение на мой сервер, и они сохраняются под media_root с помощью отправки формы.

Мой сервер работает под управлением Django, а django_user является владельцем Django и его файлов.Однако когда пользователь загружает файл / фотографию, используя отправленную форму, он передается в собственность моих пользователей root .

Мне нужно, чтобы право владения было ниже django_user , чтобы пользователи сайта могли видеть свои загрузки без необходимости вручную менять владельца файла на django_user .Прямо сейчас они получают ошибку разрешения, потому что root - это не тот, кто обслуживает Django.

ПРИМЕЧАНИЕ : django_user - это та, на которой работает Django.Это не казалось ясным.

Временное решение :

Временное решение приходит в форме ответа ErikR.Это не то, что я искал, но это немного помогает мне.Его решение позволяет пользователям просматривать свои фото / файлы, которые они загрузили, не дожидаясь, пока я поменяю владельца / разрешения.

Тем не менее, он по-прежнему приводит к загрузке файлов в качестве пользователя root.Но это временное решение проблемы с разрешениями, а НЕ проблема владельца.

Его ответ (место в базовых настройках): FILE_UPLOAD_PERMISSIONS = 0o644

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Мой сервер работает под управлением Django, а django_user является владельцем Django и его файлов.Однако когда пользователь загружает файл / фотографию, используя отправленную форму, он передается в собственность моего пользователя root на моем сервере.

Если Django действительно работает как django_user, он не может создавать файлы, принадлежащие root, и не может изменять владельца или права доступа к файлам, принадлежащим пользователю root.

Поэтому мы должны предположить, что ваша «отправка формы» должна быть реализована чем-то другим, кроме Django.Возможно, это хост-сервер ... хотя не должен работать как root.

Есть два способа решить эту проблему:

  • Вы можете изменить код, который реализует форму (как root), чтобы изменить владельца файлов после их загрузки.

  • Вы изменяете архитектуру вашей системы так, чтобы форма, которую мы запускаем как пользователь django_user.


Если форма действительнореализованный в Django, то это свидетельствует о том, что Django не работает как django_user.

0 голосов
/ 24 сентября 2019

Вы можете установить разрешения в settings.py:

Назначает чтение и запись для пользователя и только для чтения для группы:

FILE_UPLOAD_PERMISSIONS = 0o644

Загрузка файлов Nginx / Djangoправа доступа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...