シェルスクリプトを使用してユーザーログインする方法

シェルスクリプトを使用してユーザーログインする方法

私のコンピュータには2人のユーザー(tiger、jenk)があり、
「tiger」ユーザーのログインユーザー「jenk」のシェルスクリプトを作成しようとしています。次のコードを試してみましょう。

[tiger@pagaltiger mytask]$ echo -e "IncorrectPassword\n" | su jenk
Password: su: Authentication failure
echo -e "CorrectPassword" | su jenk
[tiger@pagaltiger mytask]$

その後、Tigerユーザーとして再度ログインしました。なぜですか?

期待を使いたくない

答え1

最善のアプローチは、システムにセキュリティシェルデーモンを設定し(まだ実行されていない場合)、パスワードのないキーペア認証を使用することです。これが適切であると仮定すると、sshdログインtigerして次のコマンドを実行できます。

ssh-keygen
ssh-copy-id jenk@localhost

その後、次の構文を使用してコマンドを実行tigerできます。jenk

ssh jenk@localhost '(some command here)'

たとえば、

tiger@hostname $ ssh jenk@localhost 'whoami'
jenk
tiger@hostname $

答え2

このコマンドを実行するとパイプラインから、現在のシェルでコマンドを実行する代わりに、新しいプロセスを作成します。新しいシェルはユーザーに切り替えられますが、シェルが終了するjenkと(他の操作がないため)、作成した元のシェルはまだユーザーとしてログインしています。

スクリプトでコマンドを実行すると、パイプラインにあるかどうかに関係なくサブシェルで実行されます。

(私の提案は、まずパスワードを入力しsu jenkてからパスワードを入力することです。そうする方が簡単です。)

関連情報