我试图阻止 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-run
并ReadOnlyDirectories
自此设置v228
:
以前只能在单元文件中设置的许多属性现在也可以作为通过总线以编程方式创建瞬态单元时设置的属性,因为它是通过
systemd-run
's --property=
设置公开的。具体来说,这些是:SyslogIdentifier=
、SyslogLevelPrefix=
、TimerSlackNSec=
、OOMScoreAdjust=
、EnvironmentFile=
、ReadWriteDirectories=
、ReadOnlyDirectories=
、InaccessibleDirectories=
、ProtectSystem=
、ProtectHome=
、RuntimeDirectory=
。
答案3
不确定这是否是适合您的解决方案,但chattr +i /etc/resolv.conf
使文件不可变,从而防止任何人修改它 - 甚至 root。