Watch at Ease세상을 읽고, 일상의 답을 찾다.

기술 · 실용 가이드

systemd status=218/CAPABILITIES인가요? 관리자·커널·capability 집합을 먼저 증명하세요

프로그램이 아직 실행되지 않았을 수 있습니다. 첫 journal과 실제 unit을 보존하고 system, user, container 경계를 구분한 뒤 증거가 무효라고 보인 전환만 수정하세요.

systemd status=218/CAPABILITIES인가요? 관리자·커널·capability 집합을 먼저 증명하세요
원본 일러스트: 첫 status와 journal에서 drop, ambient, namespace 실패를 구분하고 systemctl인지 --user인지 기록합니다. Watch at Ease

218/CAPABILITIES는 systemd가 실행 전에 capability를 내리거나 ambient capability를 적용하지 못했다는 뜻입니다.

모든 강화 옵션 삭제, root 실행, CAP_SYS_ADMIN 부여로 시작하지 말고 실패 단계와 실행 경계를 먼저 찾으세요.

첫 capability 단계 증거 보존

첫 status와 journal에서 drop, ambient, namespace 실패를 구분하고 systemctl인지 --user인지 기록합니다.

빠른 재시작을 멈추고 FragmentPath, DropInPaths, 관리자를 보존해 상속 설정을 놓치지 않습니다.

실제 unit의 모든 능력 제어 읽기

BoundingSet, Ambient, NoNewPrivileges, SecureBits, PrivateUsers, User=를 합쳐진 unit에서 읽습니다.

ambient는 permitted와 inheritable에 의존하고 bounding set도 요청을 차단할 수 있습니다.

관리자·커널·컨테이너 경계 찾기

PID 1, 사용자 관리자, 컨테이너, 구버전 조합을 분류하고 같은 경계에서만 재현합니다.

사용자 관리자는 namespace, 컨테이너는 외부 정책과 bounding set을 확인합니다.

권한 확대 없이 입증된 모순 하나만 수정

관리자, 상속 지시문, 집합 멤버, 입증된 호환성, 컨테이너 정책 중 하나만 고칩니다.

모든 능력이나 CAP_SYS_ADMIN으로 대체하지 말고 불필요하면 요청을 제거하고 이유를 기록합니다.

한 번 시작하고 실능력과 작업 확인

unit 변경 뒤에만 같은 관리자를 reload하고 한 번 시작해 새 journal을 봅니다.

PID의 네 집합을 확인한 뒤 실제 bind나 tun/tap 작업 하나를 수행하고 불필요한 권한이 없음을 확인합니다.

systemd status=218/CAPABILITIES인가요? 관리자·커널·capability 집합을 먼저 증명하세요
원본 일러스트: PID의 네 집합을 확인한 뒤 실제 bind나 tun/tap 작업 하나를 수행하고 불필요한 권한이 없음을 확인합니다. Watch at Ease