Ich experimentiere mit Fähigkeiten unter Debian Gnu / Linux.
Ich habe / bin / ping in mein aktuelles Arbeitsverzeichnis kopiert. Wie erwartet funktioniert es nicht, es war ursprünglich setuid root.
Ich gebe dann meinem Ping die minimalen Fähigkeiten (nicht root) durch sudo /sbin/setcap cap_net_raw=ep ./ping
, und mein Ping funktioniert wie erwartet.
Dann sudo /sbin/setcap -r ./ping
diese Fähigkeit zu widerrufen. Es funktioniert jetzt nicht wie erwartet.
Ich versuche jetzt, Ping zum Arbeiten zu bringen capsh
.
capsh
hat keine Privilegien, also muss ich es als root ausführen, dann aber root und damit alle anderen Privilegien löschen.
Ich denke ich brauche auch secure-keep-caps
, das ist nicht dokumentiert capsh
, steht aber im Capability Manual. Ich habe die Bitnummern von /usr/include/linux/securebits.h
. Sie scheinen korrekt zu sein, da die Ausgabe von --print
zeigt, dass diese Bits korrekt sind.
Ich habe stundenlang herumgespielt, bis jetzt habe ich das.
sudo /sbin/capsh --keep=1 --secbits=0x10 --caps="cap_net_raw+epi" == --secbits=0x10 --user=${USER} --print -- -c "./ping localhost"
Jedoch ping
Fehler mit ping: icmp open socket: Operation not permitted
, das ist , was passiert , wenn es nicht die Fähigkeit hat. Auch die --print
Shows Current: =p cap_net_raw+i
, das reicht uns nicht e
.
sudo /sbin/capsh --caps="cap_net_raw+epi" --print -- -c "./ping localhost"
wird die Fähigkeit dazu Current: = cap_net_raw+eip
richtig einstellen , lässt uns aber als root
.
Bearbeiten-1
Ich habe es jetzt versucht sudo /sbin/capsh --keep=1 --secbits=0x11 --caps=cap_net_raw+epi --print -- -c "touch zz; ./ping -c1 localhost;"
Dies erzeugt:
touch: cannot touch `zz': Permission denied
ping: icmp open socket: Operation not permitted
Der erste Fehler wird als erwartet, secure-noroot: yes
der zweite jedoch nichtCurrent: = cap_net_raw+eip
Bearbeiten-2
Wenn ich das ==
vorstelle --print
, zeigt es jetzt Current: = cap_net_raw+i
, so dass der vorherige Fehler erklärt wird, aber nicht, warum wir beim Wechseln von root die Fähigkeit verlieren, ich dachte, das secure-keep-caps
sollte das beheben.
Bearbeiten-3
Nach allem, was ich sehen kann, verliere ich Effective (e) und Permitted (p), wenn exec aufgerufen wird. Dies wird erwartet, aber ich dachte, dass Secure-Keep-Caps verhindern sollten, dass sie verloren gehen. Vermisse ich etwas?
Bearbeiten-4
Ich habe mehr recherchiert und das Handbuch erneut gelesen. Es scheint, dass normalerweise e
und p
Fähigkeiten verloren gehen, wenn: Sie vom Benutzer wechseln root
(oder anwenden secure-noroot
, um root zu einem normalen Benutzer zu machen), dies mit überschrieben werden kann secure-keep-caps
; Wenn Sie anrufen exec
, ist dies, soweit ich das beurteilen kann, eine Invariante.
Soweit ich das beurteilen kann, funktioniert es laut Handbuch. Soweit ich das beurteilen kann, gibt es keine Möglichkeit, etwas Nützliches damit anzufangen capsh
. Soweit ich das beurteilen kann, müssen Sie für die Nutzung von Funktionen: Dateifunktionen verwenden oder über ein funktionsbewusstes Programm verfügen, das keine Funktionen verwendet exec
. Daher kein privilegierter Wrapper.
Nun ist meine Frage, was ich vermisse, wofür capsh
.
Bearbeiten-5
Ich habe eine Antwort bezüglich der Umgebungsfunktionen hinzugefügt. Möglicherweise capsh
kann es auch mit vererbten Funktionen verwendet werden, aber um nützlich zu sein, müssen diese in der ausführbaren Datei festgelegt werden. Ich kann nicht sehen, wie capsh etwas Nützliches tun kann, ohne Umgebungsfähigkeiten oder geerbte Fähigkeiten zuzulassen.
Versionen:
capsh
von Paket -libcap2-bin
Version1:2.22-1.2
- vor edit-3 habe ich mir das neueste
capsh
von geholtgit://git.debian.org/collab-maint/libcap2.git
und angefangen es zu benutzen. uname -a
Linux richard-laptop 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64 GNU/Linux
User-Land ist 32bit.
capsh
, in Abwesenheit von Umgebungs (wie es ursprünglich war). Was vermisse ich. Es muss einen Nutzen haben.
capsh
vom Collab-Maint-Repo kommen, hätten Sie nicht das "Neueste" erhaltencapsh
, das Debian-Paket unterstützt immer noch keine Umgebungsfunktionen. Upstream 2.27 funktioniert.