Wie können Dateifunktionen mit Python gelesen werden?

8

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?

    
Helmut Grohne 04.02.2014, 18:48
quelle

1 Antwort

6

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 :

%Vor%

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:

%Vor%

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

aufzuheben

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 .

    
Ricardo Cárdenes 04.02.2014, 19:31
quelle