当前位置: 首页 > 知识库问答 >
问题:

python - gunicorn使用非root用户时的权限问题怎么破?

司徒焕
2023-07-11

使用gunicorn部署flask项目时,使用root不安全,但是不使用root就会有各种权限问题,怎么破?

上图左边为报错信息,右边为gunicorn配置信息。

其中/var/log/gunicorn_access.log/var/log/gunicorn_error.log日志文件,我通过自己创建,然后执行chown修改了文件所有者可以通过,但是这个临时文件怎么办?名称又不固定。
求大神不吝赐教。

共有2个答案

蓝宜
2023-07-11

当使用gunicorn作为Python Web服务器时,如果您想以非root用户的身份运行应用程序,可能会遇到文件系统和权限的问题。以下是一些解决这个问题的建议:

  1. 设置用户和组:确保您的系统上有一个专门用于运行gunicorn的非root用户。可以使用useradd命令创建该用户。创建后,使用chown命令将gunicorn的配置文件、应用程序代码和其他相关文件的所有者更改为该用户。例如:

    sudo useradd myuser  
    sudo chown -R myuser:myuser /path/to/config/files  
    sudo chown -R myuser:myuser /path/to/application/code
  2. 设置文件权限:为了确保非root用户可以访问和写入某些文件或目录,您可以使用chmod命令更改文件权限。例如,如果您想让myuser能够读写/path/to/config/files目录中的文件,可以使用以下命令:
sudo chmod 755 /path/to/config/files

这将为该目录及其文件设置适当的权限。

  1. 使用setcap命令:如果您的系统支持setcap命令,您可以使用它来授予非root用户访问某些系统功能的权限。例如,如果您的应用程序需要读取和写入网络套接字,可以使用以下命令授予cap_net_bind_service能力:
sudo setcap cap_net_bind_service=+ep /path/to/gunicorn/binary

这将授予gunicorn二进制文件访问网络套接字的能力。

请注意,使用非root用户运行敏感操作可以降低系统的安全性。在进行任何更改之前,请确保您完全理解并测试这些更改的影响。此外,建议在更改权限和用户设置之前备份相关文件和目录。

姜俊逸
2023-07-11

那你将需要用到的目录和文件都设置为非root用户呗。比如临时文件的,你虽然不知道临时文件的名称,但父级目录总该是固定的吧,将父级目录 chown non-root /path,然后该目录下的所有新文件或者目录都不会再被root权限所限制了。

 类似资料:
  • 我找了很多,但都不适合我。 我有一个全新的LAMP服务器安装,通过任务命令安装。我的系统运行的是 7.4 和 MySql 8 出于某种原因,root用户(在我的例子中默认称为phpmyadmin)对DB没有权限。 我可以登录,所以我确信密码是正确的,但我无法创建数据库。 编辑 如建议,这是 新编辑 我试图在没有密码的情况下访问,按照这里报告的指南:... 我没有结果:( 停止MySQL服务器:su

  • 问题内容: 我不断收到此错误。 我正在使用mySQL Workbench,从中发现根的架构特权为空。根本没有特权。 我在使用服务器的平台上遇到了麻烦,这是一个突然的问题。 root@127.0.0.1 显然具有很多访问权限,但我已以此身份登录,但无论如何它只是分配给localhost-本地主机没有特权。 我做了一些类似,,等等的事情,但是从那儿或互联网上都没有找到成功。 如何获得根对其访问的权限?

  • 问题内容: 我只是试图处理一个上传的文件,并将其写入一个工作目录中,该目录的名称是系统时间戳。问题是我想创建具有完全许可权的目录(777),但我做不到!使用以下代码段,创建的目录具有755权限。 有人可以帮助我吗?非常感谢。 问题答案: 根据python的官方文档,在某些系统上可以忽略该函数的mode参数,而在不忽略该函数的系统上,当前umask值会被屏蔽掉。 无论哪种方式,您都可以使用函数将模式

  • 我有一个基本的Dockerfile: 对于这个Dockerfile,我希望能够创建一个没有密码的用户,并且在运行Docker容器时,我希望使用该用户而不是root。当我尝试运行容器时,,我得到这个错误: 当容器以交互方式运行时,如何在Dockerfile中创建用户并使该用户成为默认用户?

  • 问题内容: 我已经在GitHub上建立了一个Git存储库,并从Windows计算机上进行了一些更改。 但是明天我将不得不在一台运行Ubuntu的计算机上以有限的权限(即,没有sudo)在该存储库中工作。 有适用于Linux的Git便携式版本吗?还是某些允许我仅为当前用户编译和安装Git的资源? 问题答案: 您可以下载git源,并执行git到您的主目录安装,只要您有构建工具。如果您没有安装build

  • 问题内容: 尝试去 并再次发生同样臭名昭著的错误/警告(无济于事): 似乎发生的是,尽管是我计算机上的当前节点版本,但在同一安装过程中一次又一次地下载并重建它: 问题: 实际上缺少目录“ /Users/dmitrizaitsev/.node-gyp/0.12.0”!为什么会有这样的误导性消息? 为什么在和之前成功重建期间都没有创建此目录? (显然)如何防止这种情况发生? 如果这很重要,我可以运行M