laforge submitted this change.

View Change


Approvals: osmith: Looks good to me, but someone else must approve Jenkins Builder: Verified laforge: Looks good to me, approved
ttcn3-tcpdump-start.sh: Avoid using dumpcap if it has no access to pcap parent dir

dumpcap seems to be opening the pcap file it writes to *after* dropping
privileges, which means even if running it as root, it will fail to
create the pcap file inside a directory where that same user (even if
root) doesn't have write+execute permissions.

This is exactly what happens when one tries to run the
ttcn3-tcmpdump-start.sh script inside docker with "--cap-add=NET_ADMIN
--cap-add=SYS_RESOURCE" and root user, where it then tells dumpcap to
write to a volume mounted inside docker which was created by the user
outside user, hence with UID=1000 instead of UID=0 inside docker.

Since tcpdump works fine in this setup, simply skip using dumpcap if it
would fail to create the pcap file.

Related: OS#6455
Change-Id: If8ea5bb62f4866042761d3e08fe83179bf10c75a
---
M ttcn3-tcpdump-start.sh
1 file changed, 30 insertions(+), 1 deletion(-)

diff --git a/ttcn3-tcpdump-start.sh b/ttcn3-tcpdump-start.sh
index 8b75d0e..4068b26 100755
--- a/ttcn3-tcpdump-start.sh
+++ b/ttcn3-tcpdump-start.sh
@@ -62,7 +62,12 @@
fi

if [ -u $DUMPCAP -o "$CAP_ERR" = "0" ]; then
- CMD="$DUMPCAP -q"
+ # dumpcap, *after dropping permissions*, needs to be able to write to the directory to create the pcap file:
+ if [ "$(stat -L -c "%u" "$TTCN3_PCAP_PATH")" = "$(id -u)" ] && [ "$(stat -L -c "%A" "$TTCN3_PCAP_PATH" | head -c 4)" = "drwx" ]; then
+ CMD="$DUMPCAP -q"
+ else
+ echo "NOTE: unable to use dumpcap due to missing permissions in $TTCN3_PCAP_PATH"
+ fi
else
echo "NOTE: unable to use dumpcap due to missing capabilities or suid bit"
fi

To view, visit change 36867. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: If8ea5bb62f4866042761d3e08fe83179bf10c75a
Gerrit-Change-Number: 36867
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin@sysmocom.de>
Gerrit-Reviewer: Hoernchen <ewild@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: osmith <osmith@sysmocom.de>
Gerrit-MessageType: merged