私の会社独自のデータレコーダーの自動検出とリモートコントロールを可能にするためにbashスクリプトを作成しています。レコーダーはLinuxのカスタムバージョンを実行し、本質的に強力なpisまたはarduinosです。
デバイスのイーサネットポートは、ネットワークに接続したときにDHCPリースが与えられるように設定されています。デバイスを検出するために、私は自分のローカルマシンで/var/lib/dhcp/dhcpd.leasesを監視しています。それぞれのユニークなエントリに対して、私はsshサーバの状態をテストするためにportscanを使います。 nmap
。このスクリプトの自動起動を有効にするために、/ etc / rc3.d / rc.localから呼び出されているため、起動時にrootによって実行されます。これは物事が奇妙になるところです。
常に新しい接続を検出できるようにするため、dhcpd.leasesファイルは無限ループでチェックされます。また、各ループの反復時間を短縮するために、システムのフットプリントを小さくしたいと考えています。 nmap
。これは使用中の正確な行です。
nmap --max-retries=1 -p 22 --host-timeout=50ms $ip_address
普通のユーザーとして走ったときこのラインは信じられないほど一貫して動作します、しかしrootとして、私は一貫して肯定的な結果を得るために600msまでタイムアウトまで増加しなければなりません。私はそれを使ってそれをテストしました time
これは通常の結果です(600msのタイムアウトで行われます)。
Starting Nmap 6.40 ( http://nmap.org ) at 2014-12-19 09:41 EST
Nmap scan report for 192.168.53.101
Host is up (0.00039s latency).
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
real 0m0.059s
user 0m0.043s
sys 0m0.004s
これは同じことの出力ですが、rootとしてログインしています。
Starting Nmap 6.40 ( http://nmap.org ) at 2014-12-19 09:48 EST
Nmap scan report for 192.168.53.101
Host is up (0.00035s latency).
PORT STATE SERVICE
22/tcp open ssh
MAC Address: 00:04:D1:0B:03:EC
Nmap done: 1 IP address (1 host up) scanned in 0.55 seconds
real 0m0.580s
user 0m0.056s
sys 0m0.008s
この余分な時間を何が引き起こす可能性があるのか、そしてそれをどのように防ぐのか、という考えはありますか?いくつかの予備調査から、rootは他のユーザーがアクセスできないいくつかのデフォルト設定で実行されることがわかります。どのように私はの条件を複製しに行くことができますか nmap
通常のユーザーによって実行されている?
追加の注意として、これはUbuntu 14.04 LTSマシンで実行されています。