为了在特定用户下运行 gunicorn,systemd 是否需要单元文件中的密码?

为了在特定用户下运行 gunicorn,systemd 是否需要单元文件中的密码?

我想在生产服务器上运行 gunicorn 作为服务,并查看了许多与此类似的 systemd 单元文件示例

Description=Gunicorn instance to serve application
After=network.target

[Service]
User=backend
Group=backend
WorkingDirectory=/path/to/your/app
Environment="PATH=/path/to/venv/bin"
ExecStart=/path/to/venv/bin/gunicorn --workers 3 --bind 0.0.0.0:5003 web_dynamic.2-hbnb:app
ExecReload=/bin/kill -s HUP $MAINPID
KillMode=mixed
TimeoutStopSec=5
PrivateTmp=true

[Install]
WantedBy=multi-user.target

但我注意到他们没有为用户指定密码。

首先,systemd 是否需要密码才能将 gunicorn 作为服务运行?如果不需要,它如何以该用户身份运行该服务?

我还应该为用户创建密码吗?

答案1

systemd以特权用户身份运行root,因此它可以使用以下方式切换到任何用户 (UID) 和组 (GID)setuidsetgid呼叫。

一个好的做法是为服务创建一个单独的用户,并设置一个锁定的密码(passwd -l user请参阅密码有关详细信息),将 home 设置为服务工作目录,并将 shell 设置为,nologin以便用户帐户不能用于其他任何用途,例如交互式会话。

还有许多其他选项可用于加强单元文件本身的安全性,例如ProtectSystem=,,,并参见ProtectHome=PrivateTmp=NoNewPrivileges=系统管理员指南

相关内容