pkexecを使用すると、sshにコマンドを渡すことができず、エラーが発生します。

pkexecを使用すると、sshにコマンドを渡すことができず、エラーが発生します。

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_commandtype コマンドを実行すると、$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ことを意味します。pkexecservice

したがって、指定してください/sbin/service...たとえば

ssh [email protected] "pkexec /sbin/service iptables restart"

おすすめ記事