Сделать сохраненные файлы доступными для других пользователей 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 шт):

Автор решения: Sergey
  1. Создайте произвольную группу пользователей
  2. Включите в эту группу двух пользователей: того, от которого запускается эта программа и того, от которого запускается nginx
  3. При сохранении файлов укажите права доступа для этой группы.

Более строго, в man-е это описывается так:

Группой владельцев (ID группы) нового файла назначается эффективный идентификатор группы процесса (согласно System V) или ID группы родительского каталога (согласно BSD). В Linux это зависит от наличия бита режима set-group-ID на родительском каталоге: если этот бит установлен, то используется правило BSD; в противном случае применяется правило System V.

Более просто:

  1. С помощью команды chown задаёте группу владельца этого каталога
  2. С помощью команды chmod поднимаете бит set-group-ID

https://ru.admininfo.info/set-uid-y-gid-ficheros-y-directorios-linux

→ Ссылка