經過一番努力,找出幾個解決方案 (越後面的方法越好)。
方案一:
最簡單的作法是安裝完 Wireshark 之後執行 "sudo chmod u+s /usr/bin/dumpcap"。這樣子就可以一般使用者的身份抓封包了。關鍵在於 "dumpcap" 就是那個需要 root 權限的部份,上述指令讓一般使用者也可以 root 的身份執行 "dumpcap"。
這種方法雖然簡單,但對講求安全的人來說卻不太妙。因為所有人都可以執行這隻需要 root 權限的程式。方案二是一個改進的方法。
方案二:
改進的方式就是只開放給特定 group 的人以 root 身份執行 "dumpcap":
- 執行 "sudo vi /etc/group" 並新增一個 group (建議叫做 "wireshark"),然後將自己加入此 group
- 執行 "sudo chgrp wireshark /usr/bin/dumpcap",將 dumpcap 改為 wireshark group
- 執行 "sudo chmod 4754 /usr/bin/dumpcap",只讓屬於 wireshark group 的人可以 root 身份執行 dumpcap
方案三:
方案二雖然已經限縮有執行權限的人,但終究還是以 root 身份執行 dumpcap。更嚴謹的方法是:利用 Linux Capabilities 只授權 dumpcap 有抓封包的權限。方法如下:
- 同方案二的步驟 1 和 2
- 執行 "sudo chmod 750 /usr/bin/dumpcap",只讓屬於 wireshark group 的人可以執行 dumpcap (以一般身份)
- 執行 "sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap",授予 dumpcap 有抓封包所需的權限 (若沒有 setcap,請自己安裝 "sudo apt-get install libcap2-bin")