TL arbeiten; DR: Warum sind cap_net_raw
, cap_net_admin
Fähigkeiten nur in /usr/bin
(oder /usr/sbin
) arbeiten, aber nicht andere Plätze? Kann dies irgendwo konfiguriert werden?Raw-Capture-Fähigkeiten (CAP_NET_RAW, CAP_NET_ADMIN) nicht außerhalb/usr/bin und Freunde für die Paketerfassung Programm mit libpcap
Ich habe Probleme beim Zuweisen von Fähigkeiten zu meinem C-Programm mit libpcap in Ubuntu 14.04. Auch nach dem Zuweisen von Funktionen unter Verwendung von setcap(8)
und Überprüfen über getcap(8)
erhalte ich immer noch einen Berechtigungsfehler. Es scheint, Fähigkeiten funktionieren nur für ausführbare Dateien in \usr\bin
und Freunde.
Mein Programm test.c
sieht wie folgt aus:
#include <stdio.h>
#include <pcap.h>
int main(int argc, char **argv) {
if (argc != 2) {
printf("Specify interface \n");
return -1;
}
char errbuf[PCAP_ERRBUF_SIZE];
struct pcap* pcap = pcap_open_live(argv[1], BUFSIZ, 1, 0, errbuf);
if (pcap == NULL) {
printf("%s\n", errbuf);
return -1;
}
return 0;
}
und ist mit
gcc test.c -lpcap
zusammengestellt
a.out
ausführbar zu erzeugen. Ich habe Fähigkeiten:
sudo setcap cap_net_raw,cap_net_admin=eip ./a.out
Und überprüfen, um zu sehen, dass es gut aussieht:
getcap a.out
die mich a.out
gibt
a.out = cap_net_admin,cap_net_raw+eip
Laufen gibt mir:
./a.out eth0
eth0: You don't have permission to capture on that device (socket: Operation not permitted)
Lauf mit sudo
funktioniert wie erwartet (Programm druckt nichts und beendet).
Hier ist der interessante Teil: Wenn ich a.out
zu /usr/bin
verschiebe (und die Funktionen erneut anwenden), funktioniert es. Umgekehrt: nimmt die Fähigkeit fähige /usr/bin/dumpcap
von wireshark
(die für die Benutzer in der Gruppe wireshark
funktioniert gut) und es aus von /usr/bin
, sagen zu mir nach Hause dir zu bewegen, die gleichen Fähigkeiten erneute Anwendung, es nicht Arbeit. Bewegt man es zurück, funktioniert es.
SO: Warum funktionieren diese Funktionen nur in /usr/bin
(und /usr/sbin
), aber nicht an anderen Orten? Kann dies irgendwo konfiguriert werden?
Das Testprog (mit den Fähigkeiten wie oben) funktioniert AOK auf meinem ziemlich out of the box Fedora-21. Im Dunkeln geschossen: Sicherheitsberechtigungen verwandt?(Ich weiß nichts speziell im Zusammenhang mit Ubuntu aber ich sammle, es ist etwas namens AppArmor auf Ubuntu, der SELinux auf Fedora ähnlich sein könnte). – willyo
Du hast wahrscheinlich recht, @willyo ... Ich habe versucht AppArmor und Entladen Profile zu deaktivieren (ohne Erfolg), aber nicht viel weiter – dirkhas