在 Linux 目录中自动创建的文件的默认权限
Default permissions for files that are automatically created in a Linux directory
我在 python 中使用 django 框架开发的应用程序有问题,它使用 FPDF 库导出文件,然后应用程序使用该文件将其附加到自动电子邮件。
当此应用程序导出 PDF 并将其保存到 media
目录时,该文件不继承其父目录的权限,只有 read/write 权限,这不允许 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
能不能检查下访问的路径是否正确。根据媒体文件夹中文件的权限,每个用户都有读取权限,而您正在尝试读取文件(二进制格式)。
此错误(FileNotFoundError:[Errno 2] 没有这样的文件或目录:'media/PaySuppiler--27022022142925.pdf')表明路径不正确。尝试使用基于文件的相对路径
例如 os.path.join(os.path.realpath(file), "../media/PaySuppiler--27022022142925.pdf")
Why am I getting a FileNotFoundError?
我在 python 中使用 django 框架开发的应用程序有问题,它使用 FPDF 库导出文件,然后应用程序使用该文件将其附加到自动电子邮件。
当此应用程序导出 PDF 并将其保存到 media
目录时,该文件不继承其父目录的权限,只有 read/write 权限,这不允许 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
能不能检查下访问的路径是否正确。根据媒体文件夹中文件的权限,每个用户都有读取权限,而您正在尝试读取文件(二进制格式)。
此错误(FileNotFoundError:[Errno 2] 没有这样的文件或目录:'media/PaySuppiler--27022022142925.pdf')表明路径不正确。尝试使用基于文件的相对路径 例如 os.path.join(os.path.realpath(file), "../media/PaySuppiler--27022022142925.pdf")
Why am I getting a FileNotFoundError?