TL; DR: Warum funktionieren cap_net_raw
, cap_net_admin
nur in /usr/bin
(oder /usr/sbin
), aber nicht an anderen Stellen? Kann dies irgendwo konfiguriert werden?
Ich habe Probleme, meinem c-Programm mit libpcap in Ubuntu 14.04 Funktionen zuzuweisen. Auch nachdem ich Funktionen mit setcap(8)
zugewiesen und mit getcap(8)
überprüft habe, erhalte ich immer noch einen Berechtigungsfehler. Es scheint, dass Fähigkeiten nur für ausführbare Dateien in \usr\bin
und Freunden funktionieren.
Mein Programm test.c
sieht folgendermaßen aus:
und ist mit
kompiliert %Vor% generiert a.out
ausführbar. Ich stelle Fähigkeiten ein:
Und überprüfen Sie, ob es richtig aussieht:
%Vor%das gibt mir
%Vor% Running a.out
gibt mir:
Das Ausführen mit sudo
funktioniert wie erwartet (das Programm gibt nichts aus und wird beendet).
Hier ist der interessante Teil: Wenn ich a.out
nach /usr/bin
verschiebe (und die Fähigkeiten wieder anwende), funktioniert es. Umgekehrt: das capability-enabled /usr/bin/dumpcap
von wireshark
(was für Benutzer in der wireshark
-Gruppe funktioniert) und das out von /usr/bin
, sagen wir zu meinem Home-Verzeichnis, Wenn Sie dieselben Funktionen erneut anwenden, funktioniert nicht . Es zurück zu bewegen, es funktioniert.
SO: Warum funktionieren diese Funktionen nur in /usr/bin
(und /usr/sbin
), aber nicht an anderen Stellen? Kann dies irgendwo konfiguriert werden?
Dies liegt möglicherweise daran, dass Ihr Home-Verzeichnis mit nosuid
gemountet ist, wodurch die Funktionen nicht funktionieren. Ubuntu verschlüsselt das Home-Verzeichnis und mountet das mit ecryptfs als nosuid.
Binärdateien mit Fähigkeiten funktionieren für mich in /usr/
und /home/
, aber nicht in meinem Home-Verzeichnis.
Die einzige Referenz, die ich finden könnte, um nosuid
Fähigkeiten zu besiegen, ist dieser Link: Ссылка . Ich würde gerne eine autoritative Quelle finden.
Tags und Links wireshark linux ubuntu libpcap linux-capabilities