首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在服务启动之前,我应该如何处理系统动态用户不存在的循环依赖关系?

在服务启动之前,我应该如何处理系统动态用户不存在的循环依赖关系?
EN

Unix & Linux用户
提问于 2018-01-16 13:39:38
回答 1查看 190关注 0票数 0

我希望dnscrypt作为动态用户运行,而不是作为root运行。但是,我也希望在nftable中使用防火墙规则,在其中指定用户dnscrypt-proxy,以允许它连接到上游dns提供程序。

现在的问题是,nftables希望在网络运行之前运行,这是好的和需要的,但是它抱怨dnscrypt-proxy用户不存在。

dnscrypt-proxy服务只在网络启动后运行,因此用户只能在网络运行后才创建。处理这一问题的标准/最佳方法是什么?

  • 我是否应该尝试为dnscrypt-proxy而不是动态用户指定一个固定用户,并手动设置这里提到的其他安全选项?
  • 我是否应该通过nftable中的用户名以外的其他方法来检测服务?
  • 我是否可以在我的系统上手动创建dnscrypt-proxy用户,系统会不会因为它已经存在而直接使用它而不删除它呢?
  • 我是否应该在每次引导时创建一个在nftable之前运行的服务,并创建该用户,然后在dnscrypt服务停止时由systemd删除该用户?

如果防火墙已经在运行并且dnscrypt服务停止了,会发生什么情况?防火墙会因为它的规则集中提到的用户id不再存在而崩溃或陷入某种麻烦吗?

EN

回答 1

Unix & Linux用户

发布于 2018-01-16 14:37:33

我想我在man 5 systemd.exec找到了答案。DynamicUser=设置很乐意与系统上已有的静态用户一起运行:

如果已配置名称的静态分配的用户或组已经存在,则将使用该用户或组,而不分配动态用户/组。

这似乎允许一次性设置DynamicUser所隐含的所有安全设置,并使用户持久。因为我想在nftable中引用这个用户,这似乎是有意义的。

所以我所做的:

代码语言:javascript
复制
# systemctl stop dnscrypt-proxy.socket
# systemctl stop dnscrypt-proxy.service
# useradd --user-group --system dnscrypt-proxy
# systemctl edit dnscrypt-proxy.service

并增加:

代码语言:javascript
复制
[Service]

   DynamicUser   = yes
   User          = dnscrypt-proxy
   Group         = dnscrypt-proxy

保存配置文件并重新启动服务和套接字。

代码语言:javascript
复制
# systemctl daemon-reload 
# systemctl start dnscrypt-proxy.service
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/417511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档