ログインシェルユーザーで/ bin / falseでコマンドを実行できないのはなぜですか?

ログインシェルユーザーで/ bin / falseでコマンドを実行できないのはなぜですか?

以下を使用して、ユーザーを作成したドッカーイメージにリンクします。

RUN useradd -r -u 200 -m -c "nexus role account" -d /nexus-data -s /bin/false nexus

そのユーザーとしてコマンドを実行したいのですが、何も起こりません。この問題を解決しようとすると、ログインしたユーザーとして/ bin / falseを使用して何も実行できないことがわかりました。

# useradd xxx
# su xxx -c 'ls >>/t/t1'
# ls /t
t1
# useradd -s /bin/false
# su xxx1 -c 'ls >>/t/t2'
# ls /t
t1

-Google検索で追加するとコマンドを実行できることがわかりましたが-s /bin/bash、なぜこれが起こりますか? su オプションは-「ログインシェルの使用」を意味します。ログインシェルは関連していますが、なぜそうではありませんか-

答え1

指定しない場合、または-s次の--preserve-environment場合ターゲットユーザーのシェルを使用します。あなたの例ではこれが実行されますが、/bin/false -c 'ls >> /t/t2'もちろん便利なものは実行されません。

「ログインシェル」は特定の意味を持ち、通常のシェル(例:またはsh)がbashログインスクリプト(例:.profile

関連情報