在systemd中使用CAP_NET_RAW运行nobody(或动态用户)

时间:2017-12-18 15:22:05

标签: networking systemd linux-capabilities

我想使用cap_net_raw功能运行服务,但不与文件系统和/或其他进程进行任何交互。我的程序将使用原始套接字和普通套接字(用于API),stdout / err用于日志记录以及所有这些。

我想编写systemd.service文件来执行此操作,但我无法为DynamicUserUserCapabilityBoundingSet生成正确的组合。

我的(非工作)单位看起来像这样:

[Unit]
Description=my daemon (%I)
ConditionFileNotEmpty=/etc/daemon/%i.conf
Wants=network-online.target
BindsTo=daemon.target

[Service]
Type=simple
WorkingDirectory=/etc/daemon
EnvironmentFile=/etc/daemon/%i.conf
ExecStart=/usr/bin/daemon ${OPTIONS}
CapabilityBoundingSet=CAP_NET_RAW
ProtectSystem=true
ProtectHome=true
RestartSec=5s
Restart=on-failure
User=daemon-%i
Group=nobody
DynamicUser=true
[Install]
WantedBy=rttgod.target

如何配置动态用户' nobody'和CAP_NET_RAW一起?

1 个答案:

答案 0 :(得分:1)

您还需要:

Data <- c("NELIG_Q1_1_C1_A", "NELIG_N1_1_EG1_B", "NELIG_V2_1_NTH_C", "NELIG_Q2_1_C5_Q",
          "NELIG_N1_1_C1_RA", "NELIG_Q1_1_EG1_QR", "NELIG_V2_1_NTH_PQ", "NELIG_N2_1_C5_PRQ")

有关AmbientCapabilities和CapabilityBoundingSet以及this question之间的区别,请参见documentation