ความสามารถของไฟล์ (setcap) ไม่ได้ถูกนำไปใช้ใน Linux Mint 17.1


2

ฉันพยายามทำให้แอปพลิเคชันทำงานได้อย่างถูกต้อง แต่ดูเหมือนว่าไม่พบอินเทอร์เฟซเครือข่ายใด ๆ มันถูกออกแบบมาให้ทำงานโดยไม่มีสิทธิ์ของผู้ดูแลระบบดังนั้นจึงต้องใช้ความสามารถของไฟล์ที่เฉพาะเจาะจง อย่างไรก็ตามมันยังคงไม่สามารถค้นหาอินเทอร์เฟซเครือข่ายผ่าน 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- ทั่วไปรวมถึงเวอร์ชั่นก่อนหน้า) แต่ฉันไม่สามารถใช้งานได้ภายใต้ Mint 17 หรือ 17.1 (พร้อมเคอร์เนลเวอร์ชัน 3.13.0-24 ทั่วไป)

มีการเปลี่ยนแปลงใด ๆ กับเคอร์เนลที่มีผลต่อความสามารถของไฟล์หรือไม่? สิ่งที่เกี่ยวข้องที่ฉันพบทางออนไลน์มีอายุหลายปีและอ้างอิงถึงเคอร์เนลที่ล้าสมัย ขอบคุณ!

คำตอบ:


0

ปัญหากลับกลายเป็นเพราะฉันกำลังทำงานบนพาร์ติชันบ้านที่ติดตั้งด้วยnosuidตัวเลือก ฉันไม่ได้ตระหนักว่าตัวเลือกนี้จะ จำกัด สิทธิ์ของรูทผ่านความสามารถของไฟล์

การใช้ความสามารถของไฟล์และเรียกใช้จากพาร์ทิชันรากของฉัน (ติดตั้งโดยไม่มีnosuidตัวเลือก) ทำงานตามที่ต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.