명령어/Linux

[RHEL] podmansh 로그인 셸을 컨테이너에 가두기

jykim23 2026. 8. 7. 21:45
반응형

부제: 사용자가 로그인하면 컨테이너 안으로 떨어지는 셸

# 관리자가 Quadlet으로 podmansh 컨테이너를 정의한 뒤
usermod --shell /usr/bin/podmansh alice   # 이 사용자의 로그인 셸로 지정
# 이후 alice가 ssh/콘솔로 로그인하면 자동으로 컨테이너 안 셸이 뜬다

podmansh는 사용자의 로그인 셸을 컨테이너 안으로 밀어 넣는 명령이다. 관리자가 /etc/containers/systemd/userspodmansh라는 이름의 Quadlet 파일을 두면, systemd가 로그인 시 그 컨테이너를 띄우고 사용자의 셸을 그 안에서 실행한다. 사용자는 Quadlet에 정의된 볼륨과 capability만 만질 수 있다. 일반 셸을 chroot나 restricted shell로 가두는 고전적 방식보다 격리가 훨씬 강하다. 데몬리스 podman 위에서 동작하므로 별도 서비스 없이 systemd만으로 완결된다.

빈손으로 podmansh만 실행하면 대상 컨테이너가 준비돼 있어야 하므로, Quadlet 설정 없이는 timed out waiting for container 오류가 난다. 설정이 전제인 명령이다.

이렇게도 쓴다

사용자별로 다른 컨테이너를 주려면 UID 디렉터리에 Quadlet을 둔다.

# /etc/containers/systemd/users/1001/ 에 컨테이너 정의를 배치

 

로그인 셸 지정을 chsh로 한다.

chsh -s /usr/bin/podmansh

 

Quadlet 컨테이너가 제대로 뜨는지 systemd 사용자 인스턴스로 확인한다. (podmansh + systemctl)

systemctl --user status podmansh

 

컨테이너에 물릴 홈 볼륨을 Quadlet에서 지정하고, 로그인 후 마운트를 검증한다.

podmansh   # 진입 후 mount | grep home
반응형