systemd - "DynamicUser" 옵션이 사용자 단위에서 작동합니까? 그렇다면 어떻게?

systemd - "DynamicUser" 옵션이 사용자 단위에서 작동합니까? 그렇다면 어떻게?

systemd의 시스템 장치(사용자가 작동하는 장치(기본값))의 경우 systemd가 사용자와 그룹을 서비스에 동적으로 할당하여 샌드박싱을 구현하도록 systemctl --system지정할 수 있습니다 .DynamicUser=yes

그러나 읽을 때수동사용자 단위( )에서 작동하는지 여부와 방법에 대한 언급을 찾을 수 없습니다 systemctl --user. 그래서 내 질문은 다음과 같습니다

  • DynamicUser사용자 단위로 사용할 수 있나요 ?
  • 그렇다면 정확히 어떻게 처리됩니까(즉, 시스템 장치에서 사용하는 것과 비교하여 차이점/특이점은 무엇입니까)?

공식적이거나 평판이 좋은 출처의 문서가 바람직하지만, 사용할 수 없는 경우도 이해할 수 있습니다. 미리 감사드립니다.

답변1

DynamicUser=yes나는 사용자 단위에 별 의미가 없다는 점에서 @Iarsks의 의견에 동의합니다 .

분명히 사용자를 생성하거나 전환할 수는 없습니다. 귀하의 조직이 사용자 조직이어야 하는 경우에도 이를 원하지 않습니다.

그렇다면 왜 단위 DynamicUser=에 추가합니까 --user? 당연한 대답은 "보안에 좋다고 들었기 때문이다"일 것이다. 이런 경우에는 무엇인지 생각해보고 DynamicUser=의미가 있는 부분을 선택하세요.

결정하는 데 도움이 되는 두 가지 리소스는 다음과 같습니다.

DynamicUser=--user버스에 적합한 다양한 기능을 활성화합니다 . 다음 기능을 켜는 것을 고려할 수 있습니다.

  • RemoveIPC=yes. 장치가 정지되면 해당 사용자/그룹에 속한 모든 IPC가 파기되므로 주의하세요. --user해당 버스에서 다른 서비스를 실행하지 않는 한 이는 아마도 좋은 일입니다 .
  • NoNewPrivileges=yes비밀번호 없는 구성이나 기능을 RestrictSUIDSGID=yes악용하는 스크립트를 방지합니다 . 이 설정은 sudo사용자 모드나 시스템 모드에서 실행될 때 암시적으로 적용됩니다 .User=RestrictSUIDSGID=yesNoNewPrivileges=yes
  • ProtectSystem=strictProtectHome=read-only서비스가 임의의 파일 시스템 위치에 쓰는 것을 방지 합니다 . 서비스가 특정 콘텐츠에 액세스할 수 있도록 하려면 에서 해당 경로를 지정합니다 ReadWritePaths=. 또는 다음 몇 가지 옵션을 사용하여 이와 같은 임시 경로를 만듭니다. 이 기능 은 ProjectHome=권한이 없는 사용자 네임스페이스를 사용할 수 있는 경우에만 사용자 버스에 사용할 수 있습니다.
  • PrivateTmp=yes: /tmp다른 서비스에서 쓸 수 없는 비공개 계정을 만듭니다. 임시 파일도 자동으로 정리됩니다. 이는 권한이 없는 사용자 네임스페이스를 사용할 수 있는 경우 사용자 버스에만 사용할 수 있습니다.
  • RuntimeDirectory=:사용자/그룹이 소유하고 장치가 종료되면 자동으로 삭제되는 쓰기 가능한 런타임 디렉터리를 생성합니다.
  • StateDirectory=, CacheDirectory= LogsDirectory=이러한 특정 목적을 위해 쓰기 가능한 디렉토리를 할당하십시오.

관련 정보