sudoのdebianstretchでHostapd_cliを動作させる方法は?

sudoのdebianstretchでHostapd_cliを動作させる方法は?

bashスクリプトが実行されており、hostapd_cli all_stajessieとStretchの下のコマンドラインでスクリプトが正常に実行されます。スクリプトはjessieのsudoで実行しても機能しますが、拡張すると機能しません。ストレッチ中にエラーが発生し、コマンドがタイムアウトします'STA-FIRST' command timed out。 straceでhostapd_cliを呼び出すと、次の場所でソケットファイルが開くことがわかります/tmp

bind(3, {sa_family=AF_UNIX, sun_path="/tmp/wpa_ctrl_13552-1"}, 110) = 0
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/hostapd/wlan1"}, 110) = 0

テストとしてスクリプトを一時的に修正し、次の行を追加しました。

echo "this is a test" >/tmp/test 2>/root/error

修正されたスクリプトをsudoで実行すると、ファイルは生成されず、エラーは記録されませ/tmp/tmp/error

私のシステムでは/tmptmpfsではなく、/ext3ファイルシステムの下にある普通の古いディレクトリです。したがって、ルートは以下のファイルを生成できず、十分なスペースがあり/tmpます。

# df -h /tmp
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb2       6.7G  5.1G  1.4G  80% /

そしてls -ld /tmp以下を提供します:

# ls -ld /tmp
drwxrwxrwt 9 root root 4096 Jul 27 23:50 /tmp/

私が書くことができない理由を見つけることができれば/tmp、hostapd_cliコマンドが機能すると確信しています。ここで何が起こりますか?

ベストアンサー1

これが期待どおりに機能しない理由は、/tmpsystemdによって次のように再マッピングされるためです。/tmp/systemd-private-67fcab218d3d46bcb5092dd8a6d4789b-nagios-nrpe-server.service-lN2L1e/tmp

問題はsudoには関係ありませんが、実際にはsudoはnrpeデーモンで実行されるプラグインとして実行され/tmpます。

この問題を解決するために、以下を設定しました。

systemctl stop nagios-nrpe-server
set PrivateTmp=false in /etc/systemd/system/multi-user.target.wants/nagios-nrpe-server.service
systemctl daemon-reload
systemctl start nagios-nrpe-server

おすすめ記事