systemd 259: Musl 지원, run0 강화, 그리고 System V와의 작별

키 포인트:
  • Musl libc에 대한 부분적인 지원 (Meson에서 수동 구성 필요).
  • `run0 --empower`는 사용자 UID를 변경하지 않고도 권한이 필요한 작업을 수행할 수 있도록 합니다.
  • System V 스크립트의 사용 중단 및 요구 사항 증가(커널 5.10 이상)가 확인되었습니다.
  • libsystemd는 이제 종속성을 줄이기 위해 dlopen()을 사용하여 외부 라이브러리를 로드합니다.
  • 저널 저장소는 이제 기본적으로 '영구적'입니다.

시스템

3개월 남짓한 개발 기간을 거쳐, 출시 새로운 버전 259. 이번 업데이트는 시스템 아키텍처 변경 사항을 도입하여 대체 표준 라이브러리에 대한 개방성, 더욱 엄격한 권한 관리, 그리고 향후 버전에 대한 더욱 까다로운 기술 요구 사항을 강조합니다.

이번 주기에서 가장 많이 논의되는 움직임 중 하나는 모듈화 강화와 기존 레거시 종속성 제거로의 전환이며, 이는 지난 수십 년간의 표준에서 확실히 벗어난 리눅스 생태계를 위한 길을 열어주고 있습니다.

systemd 259의 주요 새로운 기능

새로운 systemd 버전 259는 다음과 같은 점에서 두드러집니다. Musl과의 부분적인 호환성을 추가하는 첫 번째 버전입니다.이는 경량 배포판 및 임베디드 환경에서 널리 사용되는 C 표준 라이브러리입니다. 이 통합은 이는 Meson 빌드 시스템의 libc 옵션을 통해 관리됩니다. 하지만 Musl은 NSS(Name Service Switch) 기능을 구현하지 않기 때문에 이 구성에서는 여러 systemd 구성 요소가 비활성화된 상태로 유지됩니다.

그중에서Musl과 함께 컴파일할 때 눈에 띄는 누락 사항 발견 nss-systemd, nss-resolve, systemd-homed, systemd-userdbd 및 DynamicUser 매개변수또한, 이 라이브러리에서는 관리자 권한 없이 systemd-nspawn을 실행할 수 없습니다. 개발자들은 향후 버전에서 이러한 지원을 유지할지 여부는 커뮤니티의 요구와 개발될 추가 호환성 계층의 안정성에 달려 있다고 경고했습니다.

새 버전의 또 다른 새로운 기능은 다음과 같습니다. run0 유틸리티에서sudo 명령어의 현대적이고 안전한 대안으로 설계되었으며, 다음과 같은 평가를 받았습니다. 새로운 옵션 – 권한 부여. 이 기능 이를 통해 관리자 권한으로 로그인할 수 있습니다. 사용자 식별자(UID)를 root로 변경할 필요 없이.

그 외에도 완전한 통제권을 위임하는 대신에 사용자 전환을 통해 –empower는 CAP_SYS_ADMIN과 같은 커널 기능 표시기를 사용합니다. 꼭 필요한 허가를 부여하다 특권 시스템 호출을 수행할 수 있도록 합니다. 또한, 생성된 프로세스는 특정 그룹에 통합되어 Polkit 액션에 대한 접근 권한을 부여받으므로 기존의 sudo 모델보다 더욱 강력한 권한 분리를 유지합니다.

한 시대의 종말: 시스템 V와 새로운 요구사항에 작별을 고하며

systemd 259는 종말의 시작을 알립니다. 호환성 System V 서비스 스크립트차기 버전에서는 systemd-sysv-generator, systemd-rc-local-generator, systemd-sysv-install과 같은 기존 구성 요소들이 영구적으로 제거될 예정이라고 발표되었습니다.

오래된 코드 정리와 더불어 systemd 생태계의 최소 소프트웨어 요구 사항이 크게 상향 조정되었습니다.

  • 리눅스 커널: 최소 버전 5.10.
  • Glibc: 2.34.
  • OpenSSL: 3.0.0.
  • 유틸리티 리눅스: 2.37.
  • 기타: Python 3.9.0, cryptsetup 2.4.0 및 libseccomp 2.4.0.

libsystemd의 모듈성 및 동적 로딩

코모 의존성을 줄이기 위한 계획의 일환 창업 초기부터 직접 참여 libsystemd는 이제 dlopen()을 통해 동적 로딩을 사용합니다. libacl, libblkid, libseccomp, libselinux, libmount와 같은 라이브러리의 경우, 시스템은 프로세스에서 특정 기능이 필요할 때만 해당 라이브러리를 메모리에 로드하여 리소스 사용을 최적화합니다. 또한, libcap 기능이 libsystemd에 직접 통합되어 의존성 관리 체계가 간소화되었습니다.

El 로그 처리 방식의 기본 설정이 변경되었습니다. 저널 저장 모드(Journal) "자동"에서 "지속적"으로 변경/var/log/journal 디렉터리가 이전에 존재했는지 여부와 관계없이.

네트워크 및 가상화 분야에서:

  • systemd-networkd 및 systemd-nspawn: iptables를 사용한 NAT 규칙 지원이 제거되었으며, nftables만이 유일하게 호환되는 옵션입니다.
  • systemd-resolved: 이제 /run/systemd/resolve.hook/에 있는 로컬 후크(hook)를 사용하여 이름 확인 요청에 개입할 수 있습니다.
  • systemd-importd: TAR 파일 작업을 위한 로직이 기본적으로 통합되었습니다. 또한, `importd`와 `machined` 명령어를 사용자 수준에서 실행할 수 있게 되어 사용자의 로컬 디렉터리(`~/.local/state/machines/`)에서 이미지 관리가 가능해졌습니다.

기타 혁신

프로토콜 기반 API Varlink는 서비스 설정에 접근하고 IPC 통화를 할 수 있도록 기능이 향상되었습니다. Reload() 및 Reexecute()와 같은 함수들이 그 예입니다. 시스템 관리자에게 OOMKills 속성이 서비스에 포함되면 시스템d 도구를 통해 메모리 부족으로 인해 프로세스가 종료된 횟수를 직접 추적할 수 있으므로 매우 유용할 것입니다.

마지막으로, systemd-boot에서 TPM 1.2 지원이 제거됨으로써 시스템 부팅 프로세스가 더욱 현대화되었으며, 모든 보안 노력은 TPM 2.0 표준에 집중되었습니다.

그것에 대해 더 알고 싶다면, 당신이 그것에 대해 상담할 수 있습니다 다음 링크에서 세부 사항.