底线在前
为了安全起见,我希望“你生命中唯一的目的就是提供黄油”的用户只具有足够的权限来将 Daphne 和我的 Django 应用程序作为 systemd 服务执行。如何让我的单一目的用户可执行 Daphne?
背景
我正准备部署我创建的 Django 应用。该应用安装在我ssh
使用的远程无头 Ubuntu 20.04 LTS 服务器上。我可以以我登录的用户身份顺利运行该应用,但我想创建一个守护进程,在专门为我的 Django 应用创建的不同用户和组下在后台运行。
daphne-service-user
我使用以下命令创建了一个名为的用户:
sudo useradd -d /srv/my-django-app -rU daphne-service-user
然后我去进行编辑,/etc/passwd
以便条目/usr/sbin/nologin
以daphne-service-user
无法登录结束。
我systemd
为我的应用程序创建了一个服务文件,并将用户和组设置为daphne-service-user
。当我尝试运行我的服务时,它失败了。systemctl status
显示:
Aug 23 06:06:25 tiny-server systemd[1]: daphne.service: Scheduled restart job, restart counter is at 5.
Aug 23 06:06:25 tiny-server systemd[1]: Stopped Daphne server for MyApp.
Aug 23 06:06:25 tiny-server systemd[1]: daphne.service: Start request repeated too quickly.
Aug 23 06:06:25 tiny-server systemd[1]: daphne.service: Failed with result 'exit-code'.
Aug 23 06:06:25 tiny-server systemd[1]: Failed to start Daphne server for MyApp.
经过一些故障排除后,我发现如果我将服务文件中的用户和组切换为常规登录用户,服务就可以正常运行,不会出现任何问题。我试过:
- 使用
sudo chown daphne-service-user:daphne-service-user /home/myaccount/.local/bin/daphne
- 在中创建符号链接
/usr/bin
- 更改我复制到的符号链接的所有权
/usr/bin