以下を使用して、ユーザーを作成したドッカーイメージにリンクします。
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
。