パスワードなしで通常のユーザーとして su するにはどうすればいいですか?

パスワードなしで通常のユーザーとして su するにはどうすればいいですか?

誰かが私のスクリプトを手伝ってくれるかどうか知りたいです。

サーバーが 2 台あります。サーバー A とサーバー B と呼びます。サーバー B には、サーバー A から実行したいソフトウェアがインストールされています。サーバー A にソフトウェアをインストールできません。

ユーザーがサーバー A で別のソフトウェアを実行できるようにし、そのソフトウェアがスクリプトを呼び出してサーバー B のソフトウェアを呼び出してコマンドを実行できるようにする必要があります。

そこで、サーバー A とサーバー B に transfer というユーザーを作成しました。認証キーを使用して、transfer がパスワードを必要とせずにサーバー B に ssh で接続できるようにしました。

そこで、サーバー A から su として転送し、サーバー B に ssh してコマンドを実行しようとしています。

これは、root としてはまったく問題なく動作します。ただし、私自身または他のユーザーの場合、サーバー B の「転送」ユーザーのパスワードを求められます。

コマンドシーケンスは次のとおりです。

 #!/bin/bash
 su transfer -c 'ssh transfer@ServerB script $1 $2' 

答え1

リモート コマンドを実行するシェル スクリプトを作成します。

% cat > /home/transfer/exec-remote-sw <<EOF
#!/bin/bash
ssh transfer@ServerB script $1 $2
EOF
% chmod 755 /home/transfer/exec-remote-sw

ユーザーとしてこのスクリプトを実行してテストしますtransfer

% /home/transfer/exec-remote-sw  arg1  arg2

次に、root として Linux グループ (例transfer) を作成し、この機能にアクセスする必要があるすべてのユーザーを Unix グループに追加します。

% groupadd transfer
% usermod -a -G transfer login1
% usermod -a -G transfer login2
...
% usermod -a -G transfer loginN

root として、次の/etc/sudoersコマンドを実行してファイルに以下を追加しますvisudo

%transfer   serverA = (transfer) NOPASSWD: /home/transfer/exec-remote-sw

転送グループのユーザーの 1 人としてログインし、次のコマンドを実行してテストします。

% sudo -u transfer /home/transfer/exec-remote-sw  arg1  arg2

これをユーザーにとって簡単にするには、次の内容を .profile ファイルに追加してもらいます (または、すべてのユーザーに対して /etc/profile に追加します)。

alias svrbexec="sudo -u transfer /home/transfer/exec-remote-sw"

次に、ユーザーは次のように入力できます。

% svrbexec  arg1  arg2

リモート プロセスは、渡された 2 つのパラメータを使用して実行される必要があります。

関連情報