只有python文件可以读取特定文件

问题描述 投票:0回答:1

对于高中项目,我必须使用私钥来加密文件。我更改了 pk 的权限,只有 root 用户可以读取此文件。我更改所有者(为root)并将uid放在这个python文件的右边,但是当我执行这个python文件时,我无法访问我的pk,对我来说我必须更改python的权限,但我没有不想,(安全问题)。 您是否知道仅通过 python 文件来访问文件?

python文件包含在django项目(view.py)中,我也有使用进程的pid的想法,但这并没有改变我的问题。

我在 view.py 上使用了 chown root 和 chmod 0777,但它说我无法读取此文件(具有所有者 root 的读取权限)。

我的回溯错误:

Traceback (most recent call last):
  File "/home/mora/anaconda3/lib/python3.8/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
  File "/home/mora/anaconda3/lib/python3.8/site-packages/django/core/handlers/base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/mora/Bureau/secProject/computer_project_54740/secuServer/accounts/views.py", line 65, in home_view
    with open("certificats/pkeyRSA.key", "r") as fd:

Exception Type: PermissionError at /home/
Exception Value: [Errno 13] Permission denied: 'certificats/pkeyRSA.key'```


I added the uid right to python file with:
```sudo chown root view.py
sudo chmod 0777 view.py```
for the pkeyRSA.key:
```sudo chown root pkeyRSA.key
sudo chmod u+r pkeyRSA.key```
python django linux openssl chmod
1个回答
0
投票

这是在保持安全性的同时实现这一目标的潜在方法:

访问控制: 将私钥文件的所有权保留为 root 并限制其权限,以便只有 root 用户可以读取它。这对于维护安全至关重要。

关注点分离: 不要更改 Python 脚本 (view.py) 的权限或所有权,而是考虑保持脚本的权限不变。通常不建议更改可执行文件的权限以允许每个人读取它们,因为这可能会引入安全漏洞。

作为服务运行: 如果您尝试从 Django 项目访问私钥,您可以考虑使用 Web 服务器(如 Apache 或 Nginx)和 WSGI 服务器(如 Gunicorn)将 Django 项目作为服务运行。这些服务通常在它们自己的用户帐户下运行,这些帐户可以与您的用户帐户分开。通过正确配置服务,您可以允许服务访问私钥,同时保持文件的受限权限。

环境变量: 您可以将私钥的路径存储在环境变量中。在运行 Django 应用程序的上下文中设置环境变量(例如,在启动应用程序之前使用 shell 脚本)。然后,访问 Python 脚本 (view.py) 中的环境变量以获取私钥文件的路径。这样,您不需要在脚本中对路径进行硬编码,并且可以保持脚本的权限不变。

这是在类 Unix shell 中使用环境变量的基本示例:

bash 复制代码 导出 PRIVATE_KEY_PATH=/path/to/private/key.pem python 管理.py runserver 在你的 Python 脚本中:

蟒蛇 复制代码 导入操作系统

private_key_path = os.environ.get('PRIVATE_KEY_PATH')

使用private_key_path访问私钥文件

请记住,在处理私钥等敏感文件时,安全性至关重要。始终遵循最佳实践,以最大程度地减少暴露并保护您的敏感信息。

© www.soinside.com 2019 - 2024. All rights reserved.