Auf Linux-Systemen können Root-Berechtigungen selektiver erteilt werden als das Setuid-Bit unter Verwendung von Dateifunktionen hinzuzufügen. Einzelheiten finden Sie unter capabilities(7)
. Dies sind Attribute von Dateien und können mit dem Programm getcap
gelesen werden. Wie können diese Attribute in Python abgerufen werden?
Auch wenn das Programm getcap
mit z. subprocess
für die Beantwortung einer solchen Frage ist möglich, ist es nicht wünschenswert, wenn sehr viele Fähigkeiten abgerufen werden.
Es sollte möglich sein, mit ctypes
eine Lösung zu finden. Gibt es Alternativen zu diesem Ansatz oder sogar Bibliotheken, die diese Aufgabe übernehmen?
Python 3.3 kommt mit os.getxattr
. Wenn nicht, yeah ... ein Weg wäre ctypes
zu benutzen, zumindest um das rohe Zeug zu bekommen, oder vielleicht pyxattr
Für pyxattr
:
Für die Version von Python 3.3 ist es im Wesentlichen das Gleiche, indem Sie nur os
anstelle von xattr
importieren. ctypes
ist jedoch etwas komplizierter.
Nun erhalten wir das rohe Ergebnis, was bedeutet, dass diese beiden am nützlichsten sind, nur Textattribute abzurufen. Aber ... wir können den gleichen Ansatz von getcap
bis libcap
selbst verwenden:
Das gibt mir:
%Vor%wahrscheinlich nützlicher für Sie.
PS : Beachten Sie, dass cap_to_text
eine malloc
ed-Zeichenfolge zurückgibt. Es ist Ihre Aufgabe, die Zuordnung mit cap_free
Hinweis zum "binären Kauderwelsch":
%Vor% In diesem 8192
ist das einzige aktive Bit der 13.. Wenn Sie zu linux/capability.h
gehen, sehen Sie, dass CAP_NET_RAW
unter 13
definiert ist.
Wenn Sie jetzt ein Modul mit all diesen Konstanten schreiben wollen, können Sie die Informationen dekodieren. Aber ich würde sagen, es ist viel mühsamer als nur die Verwendung von ctypes
+ libcap
.
Tags und Links python linux linux-capabilities