我希望dnscrypt作为动态用户运行,而不是作为root运行。但是,我也希望在nftable中使用防火墙规则,在其中指定用户dnscrypt-proxy,以允许它连接到上游dns提供程序。
现在的问题是,nftables希望在网络运行之前运行,这是好的和需要的,但是它抱怨dnscrypt-proxy用户不存在。
dnscrypt-proxy服务只在网络启动后运行,因此用户只能在网络运行后才创建。处理这一问题的标准/最佳方法是什么?
dnscrypt-proxy而不是动态用户指定一个固定用户,并手动设置这里提到的其他安全选项?dnscrypt-proxy用户,系统会不会因为它已经存在而直接使用它而不删除它呢?如果防火墙已经在运行并且dnscrypt服务停止了,会发生什么情况?防火墙会因为它的规则集中提到的用户id不再存在而崩溃或陷入某种麻烦吗?
发布于 2018-01-16 14:37:33
我想我在man 5 systemd.exec找到了答案。DynamicUser=设置很乐意与系统上已有的静态用户一起运行:
如果已配置名称的静态分配的用户或组已经存在,则将使用该用户或组,而不分配动态用户/组。
这似乎允许一次性设置DynamicUser所隐含的所有安全设置,并使用户持久。因为我想在nftable中引用这个用户,这似乎是有意义的。
所以我所做的:
# systemctl stop dnscrypt-proxy.socket
# systemctl stop dnscrypt-proxy.service
# useradd --user-group --system dnscrypt-proxy
# systemctl edit dnscrypt-proxy.service并增加:
[Service]
DynamicUser = yes
User = dnscrypt-proxy
Group = dnscrypt-proxy保存配置文件并重新启动服务和套接字。
# systemctl daemon-reload
# systemctl start dnscrypt-proxy.servicehttps://unix.stackexchange.com/questions/417511
复制相似问题