パスワードプロンプトなしで自動suログイン

パスワードプロンプトなしで自動suログイン

私はシェルスクリプトを書いていますが、複数のUnixサーバーでサービスの再起動プロセスを自動化したいと思います。私は通常のユーザーとしてサービス再起動コマンドを実行する権限がありません。ただs_user実行する権限があります。

サービスを再起動する手順:

  1. 私のユーザー名とパスワードを使用してサーバーにログインします。
  2. 再起動サービスを実行するには、次のようにユーザーをs_userに切り替える必要があります。(パスワードを要求せずにこのコマンドが必要です)

    sudo su - s_user 
    

上記のコマンドは、サービスを再起動するために提供するパスワードの入力を求めます。すべてのサーバーでこのプロセスを実行する必要があります。標準入力を介してsuにパスワードを提供して、パスワードプロンプトをスキップしたいと思います。

これまで、次のコマンドを試しました。

1.   echo 'password'|sudo -S su -c " .../bin/services stop" 
Output:
[sudo]password for abc.xyz: Sorry, user abc.xyz is not allowed to execute '/bin/su - s_user' -c /bin/services stop' as root on [Servername]                        

上記のコマンドでパスワードを入力しました。 s_userパスワードも提供しようとしましたが、次のような結果が表示されます。

[sudo]password for abc.xyz: Sorry,try again.
[sudo]password for abc.xyz:
sudo:pam_authenticate:Conversation error

以下のコマンドで「su」を「u」に変更しましたが、まだ最初のコマンドと同じ出力エラーが発生します。

2.  echo 'password'|sudo -S u -c " .../bin/services stop" 

以下のコマンドにs_userを指定しましたが、まだ最初のコマンドと同じ出力エラーが発生しました。

3.  echo 'password'|sudo -S su - s_user -c ".../bin/service stop" 

次に、次のコマンドを試しました。

4.  echo 'my password'|su -c ".../bin/services stop" -s /bin/sh abc.xyz
Output:
Standard in must be a tty

私も次のコマンドを試しました。

5.  su -c "command_to_restart_the_services" -s /bin/sh abc.xyz 

コマンドを正常に実行できます。

6.  echo password|sudo -S su - user-to-switch
    sudo -S su - user-to-switch

上記のコマンドにはまだパスワードが必要です。

限界:

•使用できません「予想される」、私のコンピュータにインストールされていません。

• 変更できません。「スダエル」文書。私は権利を持っていません。

ベストアンサー1

sudoあなたはルートになった次のものをsu使用しているようですs_user。これには(のsudo)パスワードを使用します。パスワードは必要ありませんs_user

アカウントにSSHキーを追加することでこれを行うことができますが、s_userこの場合、ソリューションは次善策だと思います。

一番最初に指摘したいのは必ずしもそうする必要もなくsu、使わない方が良いという点だ。だからしないsudo su - s_user -c commandでくださいsudo -u s_user command。それでもパスワードを入力するように求められます。ただし、今すぐ設定できます。/etc/sudoers

次のファイルを追加します/etc/sudoers.d/s_commands(ただし確認済み/usr/bin/visudo)。

Cmnd_Alias S_COMMAND=/usr/bin/command, /usr/bin/anotherCommand
%s_group ALL = (s_user) NOPASSWD : S_COMMAND

これにより、s_userとしてこれらのコマンドをパスワードなしで使用できますが、s_groupグループ(追加する必要がある)のユーザーのみが使用できます。

次に、シェルエイリアスを設定します(例:)alias s_command="sudo -u s_user command"


メモ:

  • su切り替えたいユーザーのパスワードを取得します。
  • sudoデフォルトでは、切り替えたいユーザーのパスワードが使用されます。
  • sudoパスワードはstdinで読み込まず、ttyで読み込まれます。

おすすめ記事