シェル スクリプト内で別のユーザーとしてログインし、一連のコマンドを実行するにはどうすればよいでしょうか?

シェル スクリプト内で別のユーザーとしてログインし、一連のコマンドを実行するにはどうすればよいでしょうか?

私の要件は、パスワード認証を必要とする別のユーザーとしてログインし、自分のユーザー アカウントから実行するシェル スクリプト内でそのユーザーとしていくつかのコマンドを実行することです。

例: user1 がスクリプトを実行しています。要件は、パスワードを使用して user2 としてログインし、単一のシェル スクリプトを使用して一連のコマンドを実行することです。

答え1

いくつかの方法があります:

  1. . suを使用するとsu、次のようにコマンドを実行できます。

su user -c "command"

または

su - user -c "command"

違いは、ダッシュを使用するとターゲットユーザーの環境が取得されることです。このコマンドでは、ターゲットユーザーのパスワードが求められます。

  1. 使用方法sudo:

sudo -u user "command"

このコマンドはパスワード(あなたのパスワード)の有無にかかわらず実行できます。

  1. 使用方法ssh:

sshを使用すると、ユーザーのパスワード、キーのパスワード(ある場合)を使用してコマンドを実行できます。

ssh user@localhost "command"

PS rshのような、めったに使用できない他の方法もあります。

答え2

コマンドを使用するとsu [username]、現在の場所からそのユーザーのコンテキストでコマンドを実行できます。次のコマンドを使用すると、su - [username]そのユーザーのホーム ディレクトリに切り替わります。ユーザー名を省略すると、root に切り替わります。

関連情報