【问题标题】:Drop tcpdump permissions删除 tcpdump 权限
【发布时间】:2016-01-05 16:07:53
【问题描述】:

即使将 tcpdump 的组和所有权更改为用户模式后,我仍然收到以下错误:

tcpdump -i eth0
tcpdump: eth0: You don't have permission to capture on that device
(socket: Operation not permitted)

ls -la /usr/sbin/tcpdump
-rwxr-x--- 1 user1 user1 830920 Apr 24 21:28 /usr/sbin/tcpdump

我知道将 tcpdump 的权限从 root 用户删除是不好的,但在我的情况下,为了便于使用,我希望能够从用户级别使用它。

我的提示来自: "tcpdump -w 1.pcap" works, but "tcpdump -C 100 -w 1.pcap" - permission denied

并在我使用 Ubuntu 12.04 LTS 时安装了 AppArmor。

并且做到了:

sudo aa-complain /usr/sbin/tcpdump

我仍然收到相同的错误消息。如果我在 tcpdump 命令中使用“-Z”,我可以放弃特权并运行 tcpdump,但不能以其他方式运行。 有出路吗?

谢谢

【问题讨论】:

    标签: pcap tcpdump


    【解决方案1】:

    libpcaptcpdump 的基础)需要管理员权限才能将您的界面设置为混杂模式。您对此无能为力,内核不会让您/tcpdump/libpcap 这样做,期间。

    可以做的是在没有混杂模式的情况下使用tcpdump,但这会严重限制它的功能:你只会看到明确地指向/来自你的机器的流量,而不是在线上看到的所有内容,这通常是您想要的(这也是为什么默认使用 promisc 模式的原因)。为此,请使用此tcpdump 选项:

       --no-promiscuous-mode
              Don't  put  the  interface into promiscuous mode.  Note that the
              interface might be in promiscuous mode for  some  other  reason;
              hence,  `-p'  cannot  be used as an abbreviation for `ether host
              {local-hw-addr} or ether broadcast'.
    

    有关混杂模式的更多信息:

    http://en.wikipedia.org/wiki/Promiscuous_mode

    我引用:

    许多操作系统需要超级用户权限才能启用 混杂模式。

    在 Linux 中,在底层,这是通过SIOCSIFFLAGS(“设置标志”)ioctl 在网络设备上设置IFF_PROMISC 标志来完成的。正如你在这里看到的:

    http://man7.org/linux/man-pages/man7/netdevice.7.html

    ...“设置活动标志字是一项特权操作”,以及“使用它需要有效的用户 ID 0 或 CAP_NET_ADMIN 能力。如果不是这种情况,将返回 EPERM。”

    因此,另一个方向可能是为您的“userjoe”帐户提供CAP_NET_ADMIN 权限,但我建议不要这样做。安全方面,即使不是最糟糕的,也不会比成为 sudo'ers 的一部分更好,并且在需要时明确地 sudo

    【讨论】:

    • 对最后一段的更正:CAP_NET_ADMIN 功能是在二进制而不是用户上设置的,并且比以root 运行二进制要好得多,因为它不会拥有所有权限@ 987654337@有。
    猜你喜欢
    • 2011-03-22
    • 2011-12-11
    • 1970-01-01
    • 2020-10-23
    • 2018-11-05
    • 2017-06-27
    • 2016-08-10
    • 2015-08-10
    • 1970-01-01
    相关资源
    最近更新 更多