Linux Mint 17.1 中未应用文件功能(setcap)

Linux Mint 17.1 中未应用文件功能(setcap)

我一直在尝试让一个应用程序正常运行,但它似乎无法找到任何网络接口。它设计为无需管理权限即可运行,因此需要特定的文件功能。但是,它仍然无法通过 libpcap 找到任何网络接口。

我尝试了一个简单的脚本来复制使用 libpcap 列出网络接口的行为,以便测试出问题:

#include <stdio.h>
#include <pcap.h>

int main(int argc, char *argv[]) {
    char *dev, errbuf[PCAP_ERRBUF_SIZE];

    dev = pcap_lookupdev(errbuf);
    if(dev == NULL) {
        printf("Error: %s\n", errbuf);
        return(2);
    }

    printf("Device: %s\n", dev);
    return(0);
}

应用文件功能并验证其是否已应用,

$ sudo setcap cap_net_raw,cap_net_admin=eip pcap_test
$ getcap pcap_test
pcap_test = cap_net_admin,cap_net_raw+eip

尽管它声称拥有正确的权限,但它仍然无法找到任何网络接口。当然,以超级用户身份运行是没有问题的。

$ ./pcap_test
Error: no suitable device found
$ sudo ./pcap_test
Device: eth0

按照这个相同的顺序在 Ubuntu 14.04(内核版本 3.13.0-35-generic 以及以前的版本)下可以按预期工作,但我无法让它在 Mint 17 或 17.1(内核版本 3.13.0-24-generic)下工作。

内核是否有任何影响文件功能的更改?我在网上找到的任何相关信息都是几年前的,并且与过时的内核有关。谢谢!

答案1

问题是由于我当时正在使用该nosuid选项挂载的主分区上工作。我没有意识到该选项通过文件功能限制了 root 权限。

应用文件功能并从我的根分区(不带选项安装nosuid)运行,工作正常。

相关内容