예를 들어, 내 파일 foo
에 nologin 사용자가 있습니다 ./etc/passwd
foo:x:1010:1010::/home/foo:/usr/sbin/nologin
이 Docker 컨테이너를 실행한 후 다음 명령을 실행합니다.
docker exec -it --user foo <container name> bash
실제로는 으로 로그인할 수 있습니다 foo
. 제가 올바르게 이해하고 있습니까? nologin 매뉴얼 페이지에는 다음과 같이 나와 있습니다.
nologin displays a message that an account is not available and exits
non-zero. It is intended as a replacement shell field to deny login
access to an account.
docker exec 및 사용자 foo는 여기서 어떻게 작동합니까?
답변1
docker exec
방금 기존 네임스페이스에서 프로세스를 시작했습니다. 컨테이너에 로그인하지 않고 특정 사용자가 소유한 명령을 호출할 뿐입니다. Docker에게 실행을 지시하면 로그인 프로세스가 시작되지 않습니다 bash
.
docker에서 완전히 작동하는 로그인 프로세스를 얻으려면 ssh, mgetty, gdm 또는 일반 old와 같은 일종의 로그인 서비스를 실행해야 합니다 login foo
. 대부분의 경우 PAM 스택을 통해 실행되고 pam_unix는 pwent를 읽으며 로그인이 세션을 시작하지 못합니다.