我使用yum
( RUN yum install -y wireshark wireshark-qt
) 安装了 wireshark - 但当我通过 ssh 进入容器时无法运行它。
# tshark
tshark: Couldn't run /usr/sbin/dumpcap in child process: Operation not permitted
Are you a member of the 'wireshark' group? Try running
'usermod -a -G wireshark _your_username_' as root.
我尝试运行usermod -a -G wireshark root
(当我通过 ssh 进入机器时,它是以 root 身份运行的)。但这没有帮助。
也尝试过su -c '/usr/sbin/tshark'
没有成功。
我应该怎么办?
答案1
dumpcap
需要NET_RAW
(使用 RAW 和 PACKET 套接字)NET_ADMIN
(执行与网络相关的操作)功能
$ getcap $(which dumpcap)
/usr/sbin/dumpcap = cap_net_admin,cap_net_raw+ep
它们不会默认授予非特权容器,必须在--cap-add=NET_RAW --cap-add=NET_ADMIN
启动容器时明确添加
$ docker build -t tshark - <<EOF
FROM ubuntu:18.04
RUN apt-get update && apt-get install -y tshark && rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["tshark"]
EOF
$ docker run --rm -it \
--net=[container:<name|id> | host] \
--cap-add=NET_RAW --cap-add=NET_ADMIN tshark
答案2
我使用了这个命令并且它运行:
usermod -a -G wireshark _your_username_
newgrp wireshark
sudo chgrp wireshark /usr/sbin/dumpcap
tshark -i eth0 -w outfile
请尝试。