1行にsuユーザー名にユーザーを切り替えるときにパスワードを渡す方法

1行にsuユーザー名にユーザーを切り替えるときにパスワードを渡す方法

EC2インスタンスがあり、ここに接続して次のようにします。

[userA@ip-abcd ~]$ ssh my_ec2_instance 
[userA@ip-abcd ~]$ whoami  
userA   
[userA@ip-abcd ~]$pwd   
/home/userA  
[userA@ip-abcd ~]$ cd ~  
[userA@ip-abcd ~]$ pwd  
/home/userA  
[userA@ip-abcd ~]$ ls   
(shows nothing)  
[userA@ip-abcd ~]$ su userB  
Password:  
(I enter the password and the prompt changes to)    

bash-4.2$ pwd  
/home/UserA  

bash-4.2$ cd ~   
bash-4.2$ ls   
A B C D  

非対話式にsu - userBを使用し、1行にパスワードを入力する方法は?

上記のタスクを実行する理由:上記のフォルダBにはgitで更新する必要があるコードがあり、jenkinsシェルスクリプトから呼び出そうとします。

  • SSH経由でインスタンスに接続する
  • suuserB
  • パスワード自動入力
  • git pull オリジンマスター
  • Python wsgi.py

私が試したこと:

1) echo actual_password | su userB  
2) su userB -p actual_password 

3) echo userBPassword | su -c whoami userB  
  1. ^はターミナルで最も近いです。 userBPasswordが入力されていることがわかりますが、何も起こりません。つまり、userB はアクティブではありません。

~/.bash_profileパスワードを追加して実行時にプロンプ​​トが表示されたら、自動的に使用する方法はありますかsu - userB?パスワードを公開するのは悪い習慣なので?

ベストアンサー1

sudoオプションを使用しますか?これにより、次のことができます。

echo userBPassword | sudo -S -u userB whoami  

エマルジョン:https://stackoverflow.com/questions/233217/how-to-pass-the-password-to-su-sudo-ssh-without-overriding-the-tty

おすすめ記事