tcpdumpパーミッションの問題


13

tcpdumpの実行に問題があります。非rootユーザーでtcpdumpを実行する必要があります。私の問題をウェブで検索し、私がすべきことを見つけました:

sudo setcap cap_net_admin=eip /usr/sbin/tcpdump

これにより、ユーザーでtcpdumpを実行できましたが、次のようになりました。

you don't have permission to capture on that device

キャプチャしようとしたデバイスで。

また、少し力ずくで行った:

sudo chmod +s /usr/sbin/tcpdump

それもしませんでした。


Tcpdumpにはroot権限が必要です。特定のLinux機能をバイナリに設定する必要があります。$ sudo setcap cap_net_raw、cap_net_admin = eip / usr / sbin / tcpdump
14年

あまりにもそれをやったが、私は得続ける:tcpdump: eth0: You don't have permission to capture on that device (socket: Operation not permitted
シヴァンシーガル

こちらをご覧ください。askubuntu.com/questions/39281/...
g_p

また、実行中のソースコードを変更したくないため、これも問題です。また、DreamCoderが提案したものは動作するはずですが、奇妙なことに、動作しません。誰か他のオファーがありますか?
シヴァンシガル14年

回答:


28

少し遅れましたが、同じ問題がありました。生のパケットキャプチャネットワークインターフェイス操作tcpdumpを許可する権限と機能を与える必要があります

キャプチャグループを追加して、自分自身を追加します。

sudo groupadd pcap
sudo usermod -a -G pcap $USER

次に、グループを変更してtcpdump権限を設定します。

sudo chgrp pcap /usr/sbin/tcpdump
sudo chmod 750 /usr/sbin/tcpdump

最後に、必要な権限setcapを付与tcpdumpするために使用します。

sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

これにより、グループpcapの全員がネットワークインターフェイスを操作し、生のパケットを読み取ることができるようになります。

ここで見つけました:非ルートとして動作するようにtcpdumpを構成します


これを少し制限して使うことができましたcap_net_raw,cap_setpcap=ep。削除したのiは、私のプログラムがフォークする必要がなかったからです。これはカスタムバイナリ用であるため、ymmvです。
ダン

これはまたのために働いていたiftopIPアドレス/ DNS名でプログラムすることを示しているネットワークの使用率
HeatfanJohn

0

おそらくこれでうまくいくかもしれません。すでに投稿されたものに似ています。ubuntuではテストされていません。

(ユーザーがメンバーになっているグループを使用)chgrp wireshark / usr / sbin / tcpdump

setcap 'CAP_NET_RAW + eip CAP_NET_ADMIN + eip' / usr / sbin / tcpdump

getcap / usr / sbin / tcpdumpを使用すると、/ usr / sbin / tcpdump = cap_net_admin、cap_net_raw + eipが表示されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.