端末を使用してシェルスクリプトを実行しています userA
。このシェルスクリプトの途中でユーザーuserB
に切り替えを使用します。su
この場合はパスワードを入力し、端末を介してuserB
手動でパスワードを入力する必要があります。デバイスの横に立って手動で入力する必要なく、自動的にパスワードを入力する方法はありますか?このスクリプトにはループがあるため、パスワードuserB
を入力する端末を見つめたくありません。または、端末が手動で入力するのを待たないように、シェルスクリプトにパスワードを入力する方法はありますか?誰でもこれを行う方法を提案できますか?
答え1
sudo
またNOPASSWD
、/etc/sudoers 構成の特定の項目を許可します (該当する項目へのアクセス権がある場合)。良い:
userA ALL = (userB) NOPASSWD: ALL
これにより、ユーザーAはパスワードなしでユーザーBへのフルアクセスを許可します。おそらく、ユーザーAが画面から離れているときに画面をロックできると信頼できる場合にのみ使用する必要があります。
あるいは、userAに特定のスクリプトにのみアクセス権を付与することもできます。たとえば、
userA ALL = (userB) NOPASSWD: /home/userB/scripts-for-userA/
これにより、ユーザーAはユーザーBとして/home/userB/scripts-for-userA/ディレクトリ内のすべてのコマンドを実行できます。しかし、セキュリティは依然としてこれらのコマンドによって異なります。
答え2
sudo
〜する隠れ家パスワード。しかし、これが正しいことであることを諮問する必要があります。あなたとユーザーBが同じファイルにアクセスできるように権限を変更する方が良いですか?
答え3
UserBとして発生する必要があるタスクを、UserBに適した別々のスクリプトに移動できます。これにより、包括的な権限が必要ない場合は、ユーザーAからユーザーBにsuを開く必要がなくなります。