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

기술 · 실용 가이드

systemd status=226/NAMESPACE? 보안 강화를 끄기 전에 실패한 네임스페이스 작업을 증명하세요

첫 상세 journal 오류를 보존하고 각 네임스페이스 지시문을 실제 자원에 연결해 증명된 경계 하나만 수정합니다.

원본 일러스트: systemd 유효 설정, 첫 journal errno, 자원과 호스트 제약을 연결합니다.
원본 일러스트: systemd 유효 설정, 첫 journal errno, 자원과 호스트 제약을 연결합니다. Watch at Ease

status=226/NAMESPACE는 systemd가 mount, UTS 또는 IPC 네임스페이스를 준비하는 단계에서 실패했다는 뜻입니다. 서비스 프로그램은 정상 실행을 시작하지 않았으므로 애플리케이션 인수나 로그부터 바꾸면 계층이 어긋납니다.

병합된 unit, 첫 상세 journal errno, 지시문-자원 지도, 호스트 또는 컨테이너 경계라는 네 가지 증거를 연결합니다. 처음 끊어진 연결만 고치고 관련 없는 sandbox는 유지합니다.

유효 unit과 첫 실패를 고정합니다

systemctl cat과 systemctl show를 저장하고 drop-in, systemd와 kernel 버전, manager 종류, 컨테이너 여부를 기록합니다.

실패한 시작의 처음부터 journal을 읽어 “Failed to set up … namespacing” 원문, 경로, errno를 226 요약보다 먼저 보존합니다.

지시문을 네임스페이스 작업에 연결합니다

PrivateTmp, ProtectHome, ProtectSystem, path list, bind mount, 임시 filesystem, root directory/image, PrivateIPC, ProtectHostname을 모두 나열합니다.

각 항목의 source, destination, 예상 형식, symlink, 공급 mount, 선택적 “-” 접두사 의미를 기록합니다.

정책을 약화하지 않고 자원을 검증합니다

manager의 host view에서 모든 source와 destination의 존재와 형식을 확인하고 findmnt와 경로 해석으로 typo, node type, missing mount, permission을 구분합니다.

EACCES/EPERM은 상위 디렉터리와 mount flag, MAC denial을 확인하고 EINVAL은 실패 객체와 환경을 먼저 보존합니다.

호스트와 컨테이너 제약을 분리합니다

Docker, LXC, user manager, user namespace는 필요한 소유권이나 capability가 없을 수 있습니다. production을 privileged로 바꾸지 말고 테스트 환경의 최소 unit으로 비교합니다.

user namespace, kernel 지원, container 정책, AppArmor/SELinux 증거를 기록합니다. 거부 로그 부재는 모든 작업 허용의 증거가 아닙니다.

한 번의 제한된 수리로 닫습니다

증명된 typo, path, mount 순서, node type, policy 또는 환경 제약만 고칩니다. sandbox 완화가 필요하면 좁은 bind path나 writable path를 우선합니다.

daemon-reload 후 다시 시작해 원래 오류와 226이 사라지고 다른 강화가 유지되는지 확인하며 전후 증거를 저장합니다.

원본 일러스트: 결정 트리로 경로/마운트 실패와 커널, 컨테이너, MAC 제약을 분리합니다.
원본 일러스트: 결정 트리로 경로/마운트 실패와 커널, 컨테이너, MAC 제약을 분리합니다. Watch at Ease