Разрешения по умолчанию для файлов, которые автоматически создаются в каталоге Linux

У меня проблема с приложением, разработанным на python с использованием фреймворка django, оно использует библиотеку FPDF для экспорта файла, который затем используется приложением для вложения в автоматическое электронное письмо.

Когда это приложение экспортирует PDF и сохраняет его в каталог media, файл не наследует права от родительского каталога и имеет только права на чтение/запись, что не позволяет Django найти файл, чтобы его можно было прикрепить к письму.

Я искал в интернете и нашел людей с такой же проблемой, им рекомендовали использовать конфигурацию ACL для управления разрешениями по умолчанию, я пробовал много раз разными методами, но это не сработало. Я не знаю, что я мог сделать неправильно (у меня постоянно возникала одна и та же ошибка). После внесения конфигурации ACL файлы продолжали экспортироваться с теми же разрешениями, а при применении команды chmod 777 -R * разрешения не менялись, мне пришлось отключить конфигурацию ACL, чтобы она позволила мне применить эту команду.

Вот какая ошибка появляется:

Internal Server Error: /treasury/sendMailsSupplierView/SBOJOZF
Traceback (most recent call last):
  File "/var/www/johannasenvironment/venvjoh/lib/python3.6/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/var/www/johannasenvironment/venvjoh/lib/python3.6/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/var/www/johannasenvironment/JohannasEnviroment/treasuryEmails/views.py", line 33, in sendMailsSupplierView
    sendEmailSupplier('narvaezsebas8@gmail.com', report) #sendEmailSupplier(emailSupplier, report)
  File "/var/www/johannasenvironment/JohannasEnviroment/treasuryEmails/mails/mailsFunctions.py", line 50, in sendEmailSupplier
    email_traslado.attach_file(report)
  File "/var/www/johannasenvironment/venvjoh/lib/python3.6/site-packages/django/core/mail/message.py", line 330, in attach_file
    with path.open('rb') as file:
  File "/usr/lib/python3.6/pathlib.py", line 1183, in open
    opener=self._opener)
  File "/usr/lib/python3.6/pathlib.py", line 1037, in _opener
    return self._accessor.open(self, flags, mode)
  File "/usr/lib/python3.6/pathlib.py", line 387, in wrapped
    return strfunc(str(pathobj), *args)
FileNotFoundError: [Errno 2] No such file or directory: 'media/PaySuppiler--27022022142925.pdf'

Вот как выглядят последние непримененные файлы sudo chmod 777 *:

administrador@WEB-APPLICATION:/var/www/johannasenvironment/JohannasEnviroment/media$ ls -l
total 396
-rw-r--r-- 1 www-data www-data 133492 feb 27 09:17 PaySuppiler--27022022141734.pdf
-rw-r--r-- 1 www-data www-data 133492 feb 27 09:28 PaySuppiler--27022022142833.pdf
-rw-r--r-- 1 www-data www-data 133492 feb 27 09:29 PaySuppiler--27022022142925.pdf
administrador@WEB-APPLICATION:/var/www/johannasenvironment/JohannasEnviroment/media$

Вот права доступа к каталогу media:

drwxrwxrwx  2 administrador administrador  16384 feb 27 09:29 media

Возможно, попробуйте выполнить команду от имени root?

Можете ли вы проверить правильность пути, к которому осуществляется доступ. Согласно разрешениям на файлы внутри папки media, каждый пользователь имеет право на чтение, а вы пытаетесь прочитать файл (в двоичной форме).

Эта ошибка (FileNotFoundError: [Errno 2] No such file or directory: 'media/PaySuppiler--27022022142925.pdf') показывает, что путь не верен. Попробуйте использовать относительный путь, основанный на файле например os.path.join(os.path.realpath(file), "../media/PaySuppiler--27022022142925.pdf")

Почему я получаю ошибку FileNotFoundError?

Вернуться на верх