pkexec
強化されたマシンに依存して機能しないsudo
スクリプトを作成しています。pkexec
これで、ユーザーにパスワードの入力を求められないため、すべてのコマンドを直接実行できます。
手動でSSHにログインし、セッションを開き、次のコマンドを実行するとpkexec service iptables restart
機能しますが、このような操作を試みると次のエラーが発生します。ssh [email protected] "pkexec service iptables restart"
Cannot run program service: no such file or directory
pkexec
したがって、これはパラメータとして渡すことに関連しています。
ベストアンサー1
ssh remotehost some_command
type コマンドを実行すると、$PATH
予期した値に設定されないことがあります。
たとえば、同じシステムにログインしているにもかかわらず、現在のログインシェルのPATHがリモートPATHと一致しないことがわかります。
$ echo $PATH
/home/sweh/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/u/bin:/usr/local/bin:/usr/bin/X11:/etc:/usr/local/sbin:/sbin:/usr/sbin
$ ssh localhost 'echo $PATH'
/usr/local/bin:/usr/bin
したがって、コマンドのフルパス名を指定するのが一般的です。
この場合、エラーメッセージはコマンドが見つかりましたが(デフォルトパスで)コマンドが見つからないCannot run program service: no such file or directory
ことを意味します。pkexec
service
したがって、指定してください/sbin/service
...たとえば
ssh [email protected] "pkexec /sbin/service iptables restart"