私はシェルスクリプトを書いていますが、複数のUnixサーバーでサービスの再起動プロセスを自動化したいと思います。私は通常のユーザーとしてサービス再起動コマンドを実行する権限がありません。ただs_user実行する権限があります。
サービスを再起動する手順:
- 私のユーザー名とパスワードを使用してサーバーにログインします。
再起動サービスを実行するには、次のようにユーザーを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で読み込まれます。