Сделать сохраненные файлы доступными для других пользователей Python
Debian 10, Python 3.7
У меня есть python скрипт, который сохраняет файлы с помощью NamedTemporaryFile:
from tempfile import NamedTemporaryFile
with NamedTemporaryFile(delete=False) as f:
f.write('some text')
Сохранённые файлы должны раздаваться с помощью nginx для этого nginx должен иметь доступ к этим файлам. Но у него его нет :(
Я делаю chmod для папки с файлами, файлы в ней становятся доступны для nginx, но последующие сохранённые файлы с помощью python опять недоступны и ошибка permissions denied
Не делать же chmod после каждого сохранения. Или...
Пока что делаю chmod после каждого сохранения, но может быть будут варианты лучше
Ответы (1 шт):
- Создайте произвольную группу пользователей
- Включите в эту группу двух пользователей: того, от которого запускается эта программа и того, от которого запускается nginx
- При сохранении файлов укажите права доступа для этой группы.
Более строго, в man-е это описывается так:
Группой владельцев (ID группы) нового файла назначается эффективный идентификатор группы процесса (согласно System V) или ID группы родительского каталога (согласно BSD). В Linux это зависит от наличия бита режима set-group-ID на родительском каталоге: если этот бит установлен, то используется правило BSD; в противном случае применяется правило System V.
Более просто:
- С помощью команды chown задаёте группу владельца этого каталога
- С помощью команды chmod поднимаете бит set-group-ID
https://ru.admininfo.info/set-uid-y-gid-ficheros-y-directorios-linux