Я установил Wireshark с помощью yum
( RUN yum install -y wireshark wireshark-qt
) - и не могу запустить его, когда подключаюсь к контейнеру по 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
Пожалуйста попробуйте.