たとえば、私のファイル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を読み取り、ログインはセッションを開始できません。