systemd-run을 사용하여 ReadOnlyDirectories를 설정하는 방법은 무엇입니까?

systemd-run을 사용하여 ReadOnlyDirectories를 설정하는 방법은 무엇입니까?

Juniper Network Connect(VPN 클라이언트)가 수정되는 것을 방지하려고 하며 /etc/resovl.confsystemd-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의 --setting 을 통해 property=노출 되기 때문입니다. 구체적으로 , SyslogIdentifier=, SyslogLevelPrefix=, TimerSlackNSec=, OOMScoreAdjust=, EnvironmentFile=, ReadWriteDirectories=, ReadOnlyDirectories=, , InaccessibleDirectories=, 입니다 ProtectSystem=.ProtectHome=RuntimeDirectory=

답변3

이것이 귀하에게 적합한 솔루션인지는 확실하지 않지만 chattr +i /etc/resolv.conf파일을 변경 불가능하게 만들어서 누구도 파일을 수정하지 못하도록 방지합니다. 심지어 루트도 마찬가지입니다.

관련 정보