Ich möchte wpa_supplicant und openvpn so einrichten , dass sie als Nicht-Root-Benutzer ausgeführt werden, wie das empfohlene Setup für wireshark . Ich kann keine Dokumentation finden für das, was +eip
in diesem Beispiel bedeutet:
sudo setcap cap_net_raw,cap_net_admin,cap_dac_override+eip /usr/bin/dumpcap
capabilities
setcap
T0m4t0s4uc3
quelle
quelle
Antworten:
Wie Funktionen unter Linux funktionieren, ist in dokumentiert
man 7 capabilities
.Die Prozessfunktionen in der effektiven Gruppe beziehen sich auf die Berechtigungsprüfungen . Datei - Funktionen werden während verwendet execv Anruf (was passiert , wenn Sie ein anderes Programm ausführen möchten 1 ) , um die neue Funktion Sätze für den Prozess zu berechnen.
Dateien haben zwei Sätze für Funktionen, zulässiges und vererbbares und effektives Bit .
Prozesse haben drei Funktionssätze: effektiv , zulässig und vererbbar . Es gibt auch einen Begrenzungssatz, der begrenzt, welche Funktionen später hinzugefügt werden können, um den geerbten Satz zu verarbeiten, und die Berechnung der Funktionen während der Ausführung beeinflusst . Funktionen können nur aus dem Begrenzungssatz entfernt und nicht hinzugefügt werden.
Berechtigungsprüfungen für den Prozess werden mit dem effektiven Satz des Prozesses verglichen . Der Prozess kann seine Funktionen vom zulässigen zum effektiven Satz erhöhen (unter Verwendung von Capget- und Capset- Systemaufrufen lautet die empfohlene API cap_get_proc bzw. cap_set_proc ).
Vererbbar und begrenzende Sätze und Datei Fähigkeiten ins Spiel kommen , während execv syscall. Während der Ausführung werden neue effektive und zulässige Mengen berechnet und geerbte Mengen und Begrenzungsmengen bleiben unverändert. Der Algorithmus wird in der
capabilities
Manpage beschrieben:Wenn eine Fähigkeit in beiden Verfahren ist vererbbar Satz und Datei vererbbar Satz (Kreuzung / logische AND) wird hinzugefügt zugelassenen Satz . Die zulässige Dateigruppe wird hinzugefügt (Vereinigung / logisches ODER) (wenn sie sich innerhalb der Begrenzungsmenge befindet).
Wenn das effektive Bit in den Dateifunktionen gesetzt ist, werden alle zulässigen Funktionen nach der Ausführung auf wirksam gesetzt .
Die Funktionen im Kernel sind eigentlich für Threads festgelegt. In Bezug auf die Dateifunktionen ist diese Unterscheidung jedoch normalerweise nur relevant, wenn der Prozess seine eigenen Funktionen ändert.
In Ihrem Beispiel Fähigkeiten
cap_net_raw
,cap_net_admin
undcap_dac_override
werden zu geerbt und erlaubt Sätze und effektive Bit gesetzt. Wenn Ihre Binärdatei ausgeführt wird, verfügt der Prozess über diese Funktionen in effektiven und zulässigen Mengen, wenn sie nicht durch eine Begrenzungsmenge begrenzt sind.[1] Bei Fork Syscall werden alle Funktionen und der Begrenzungssatz vom übergeordneten Prozess kopiert. Änderungen in der UID haben auch ihre eigene Semantik, wie Funktionen in effektiven und zulässigen Mengen festgelegt werden.
quelle
+ep
den Prozess hat, werden diese Funktionen erhalten. Normalerweise ist der Begrenzungssatz standardmäßig voll. Es werden keine Funktionen maskiert, da sonst kein Prozess jemals Funktionen erhalten könnte.+i
diese Funktionen verfügt.