NOPASSWD オプションを/etc/sudoers
ファイルに追加できます。しかし、セキュリティ上の理由から、それはあなたにとって良いことではないかもしれません.
user user2 = NOPASSWD: /usr/local/bin/script.sh
あなたが持っている別のオプション:使用しますがsudo
、スクリプトから直接ではなく、pexpect
またはを使用expect
して実行します。これにより、パスワードが入力されます。スクリプトにパスワードを保存する必要があるため、これはセキュリティの観点からも理想的ではない可能性があります。
あなたexpect
は次のようなことができます:
#!/usr/bin/expect
set password "megapassword"
spawn /bin/sudo -u user1 /usr/local/bin/script.sh
expect "password for user:"
send "$password\r"
expect eof
そのファイルに 500 パーミッションを設定することを忘れないでください。
(これpexpect
は python モジュールです) を使用すると、次のようになります。
import pexpect
password = "megapassword"
p = pexpect.spawn("sudo -u user1 /usr/local/bin/script.sh")
i = p.expect([".ssword:*", pexpect.EOF])
p.sendline(password)
コマンドを実行してcron
、user1 の crontab にコマンドを追加できる場合は、それも実行できます。それが最善の解決策かもしれません。
user1$ crontab -e