docker exec 명령이 nologin 사용자를 사용하여 셸을 시작할 수 있는 이유는 무엇입니까?

docker exec 명령이 nologin 사용자를 사용하여 셸을 시작할 수 있는 이유는 무엇입니까?

예를 들어, 내 파일 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를 읽으며 로그인이 세션을 시작하지 못합니다.

관련 정보