如何使用 systemd-run 设置 ReadOnlyDirectories?

如何使用 systemd-run 设置 ReadOnlyDirectories?

我试图阻止 Juniper Network Connect(VPN 客户端)修改/etc/resovl.conf,我希望通过 systemd-run 来实现这一点。我试过:

systemd-run --property=ReadOnlyDirectories=/etc ./ncsvc -h <redacted> -u <redacted> -p <redacted> -f <redacted>.der -L 2

我收到以下错误消息:

Unknown assignment ReadOnlyDirectories=/etc.
Failed to create bus message: No such device or address

运行一个简单的示例我也收到相同的消息:

systemd-run --property=ReadOnlyDirectories=/etc env 

如何使用 systemd-run 运行进程并设置 ReadOnlyDirectories?

答案1

目前还不能,并非所有属性都是可设置的,但它在 TODO 列表中可以解决此问题。

这里:

* allow implementation of InaccessibleDirectories=/ plus
  ReadOnlyDirectories=... for whitelisting files for a service.

和这里:

* document:

...

  - document in wiki how to map ical recurrence events to systemd timer
    unit calendar specifications
  - add a man page containing packaging guidelines and recommending 
    usage of things like Documentation=, PrivateTmp=, PrivateNetwork= 
    and ReadOnlyDirectories=/etc /usr.
  - document systemd-journal-flush.service properly

...

参考

答案2

您可以运行一个进程systemd-runReadOnlyDirectories自此设置v228:

以前只能在单元文件中设置的许多属性现在也可以作为通过总线以编程方式创建瞬态单元时设置的属性,因为它是通过systemd-run's --property=设置公开的。具体来说,这些是:SyslogIdentifier=SyslogLevelPrefix=TimerSlackNSec=OOMScoreAdjust=EnvironmentFile=ReadWriteDirectories=ReadOnlyDirectories=InaccessibleDirectories=ProtectSystem=ProtectHome=RuntimeDirectory=

答案3

不确定这是否是适合您的解决方案,但chattr +i /etc/resolv.conf使文件不可变,从而防止任何人修改它 - 甚至 root。

相关内容