底线在前

底线在前

底线在前

为了安全起见,我希望“你生命中唯一的目的就是提供黄油”的用户只具有足够的权限来将 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/nologindaphne-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

相关内容