tcpdump permission denied問題解決 原

tcpdump是一個Sniffer工具,實際上就是一個網絡上的抓包工具,同時還可以對抓到的包進行分析。一般系統都默認安裝。

tcpdump命令說明:
tcpdump採用命令行方式,它的命令格式爲:
tcpdump [ -adeflnNOpqStvx ] [ -c 數量 ] [ -F 文件名 ]
[ -i 網絡接口 ] [ -r 文件名] [ -s snaplen ]
[ -T 類型 ] [ -w 文件名 ] [表達式 ]

tcpdump的選項介紹:
-a    將網絡地址和廣播地址轉變成名字;
-d    將匹配信息包的代碼以人們能夠理解的彙編格式給出;
-dd    將匹配信息包的代碼以c語言程序段的格式給出;
-ddd    將匹配信息包的代碼以十進制的形式給出;
-e    在輸出行打印出數據鏈路層的頭部信息;
-f    將外部的Internet地址以數字的形式打印出來;
-l    使標準輸出變爲緩衝行形式;
-n    不把網絡地址轉換成名字;
-t    在輸出的每一行不打印時間戳;
-v    輸出一個稍微詳細的信息,例如在ip包中可以包括ttl和服務類型的信息;
-vv    輸出詳細的報文信息;
-c    在收到指定的包的數目後,tcpdump就會停止;
-F    從指定的文件中讀取表達式,忽略其它的表達式;
-i    指定監聽的網絡接口;
-r    從指定的文件中讀取包(這些包一般通過-w選項產生);
-w    直接將包寫入文件中,並不分析和打印出來;
-T    將監聽到的包直接解釋爲指定的類型的報文,常見的類型有rpc (遠程過程 調用)和snmp(簡單       網絡管理協議;)
      -s      設置抓包大小限制,默認抓包大小限制在96個BYTE(包括以太網幀)。修改參數爲:-s 0。0 則忽略包的大小限制,按包的長度實際長度抓取。
    例:tcpdump -vv tcp port 5270 -c 100 -s 1500 -w /opt/sniffer.pack

ubuntu下tcpdump報錯:Permission denied
在ubuntu10.10下執行腳本,當使用了tcpdump進行抓包的時候,報了下面的錯誤;
sudo tcpdump -w test1.log
tcpdump: test1.log: Permission denied
開始以爲是用戶權限的問題,後來換用root賬戶還是不行,經搜索,是AppArmor的問題。
解決方案如下:
先查看當前的tcpdump的模式:
grep tcpdump /sys/kernel/security/apparmor/profiles
/usr/sbin/tcpdump (enforce)
上面顯示是enforce模式,所以有這個問題,把它改成complain模式:
aa-complain /usr/sbin/tcpdump                        ------ This will change it to complain
再次使用tcpdump 並寫文件的時候就沒問題了。
想在轉換成enforce模式時:
aa-enforce /usr/sbin/tcpdump             ----- This will renable the AppArmor profile for tcpdump

【注】 通過命令aa-complain或aa-enforce可以切換profile文件的狀態。這需要先安裝對應的utils工具: sudo apt-get install apparmor-utils 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章