Docker 를 사용하면 매우 쉽게 할 수 있습니다.
docker pull ubuntu
docker run -t -i ubuntu /bin/bash
# make your changes and then log out
docker commit $(docker ps -a -q | head -n 1) sandbox
cat > /usr/local/bin/sandbox <<EOF
#!/bin/sh
exec docker run -t -i --rm=true sandbox /bin/bash
EOF
chmod a+x /usr/local/bin/sandbox
echo /usr/local/bin/sandbox >> /etc/shells
useradd testuser -g docker -s /usr/local/bin/sandbox
passwd testuser
testuser
로그인 할 때마다 다른 사용자의 컨테이너뿐만 아니라 외부의 아무것도 볼 수없는 격리 된 컨테이너에 배치됩니다.
그런 다음 컨테이너는 로그 아웃 할 때 자동으로 제거됩니다.
설명:
docker pull ubuntu
여기서 작업 할 기본 이미지를 가져옵니다. Docker는 표준 이미지를 제공하며 우분투는 그중 하나입니다.
docker run -t -i ubuntu /bin/bash
# make your changes and then log out
우분투 이미지에서 쉘을 시작합니다. 변경 사항은 사용자에게 유지됩니다. Dockerfile 을 사용하여 이미지를 만들
수도 있지만 한 번은 이것이 더 간단하다고 생각합니다.
docker commit $(docker ps -a -q | head -n 1) sandbox
여기에서 마지막으로 실행 된 컨테이너를이라는 새 이미지로 변환합니다 sandbox
.
cat > /usr/local/bin/sandbox <<EOF
#!/bin/sh
exec docker run -t -i --rm=true sandbox /bin/bash
EOF
이것은 사용자가 로그인 할 때 강제로 실행되는 가짜 셸입니다. 스크립트는이를 도커 컨테이너로 시작하여 로그 아웃하자마자 자동으로 정리됩니다.
chmod a+x /usr/local/bin/sandbox
나는 이것이 명백한 희망 :-)
echo /usr/local/bin/sandbox >> /etc/shells
이것은 시스템에서 필요하지 않을 수도 있지만, 쉘에 로그인 쉘이 없으면 쉘이 로그인 쉘이 될 수 없습니다 /etc/shells
.
useradd testuser -g docker -s /usr/local/bin/sandbox
우리는 쉘이 우리가 만들 스크립트로 설정된 새로운 사용자를 만듭니다. 스크립트는 샌드 박스 컨테이너를 강제로 시작합니다. docker
사용자가 새 컨테이너를 시작할 수 있도록 그룹 의 구성원입니다 .
docker 그룹에 사용자를 배치하는 대안은 단일 명령에 sudo 권한을 부여하는 것입니다.
passwd testuser
나는 이것이 명백하기를 바랍니다.