Wo wird bei Verwendung von setcap die Berechtigung gespeichert?

11

Wenn Sie verwenden setcap, um einer Binärdatei zusätzliche Berechtigungen zu erteilen, sollte die neue Berechtigung irgendwo im Speicher oder im Speicher geschrieben werden. Wo wird sie gespeichert?

Die Verwendung von lsofas is funktioniert nicht, da der Prozess zu schnell verschwindet.

Zulgrib
quelle
Verwenden Sie einen anderen Prozess. Erstellen Sie eine Kopie von /usr/bin/sleepund geben Sie die Funktionen für diese Kopie an.
Hauke ​​Laging

Antworten:

9

Erweiterte Berechtigungen wie Zugriffssteuerungslisten, die von setfaclund Fähigkeitsflags festgelegt setcapsind, werden an derselben Stelle gespeichert wie herkömmliche Berechtigungen und setzen [ug] -ID-Flags, die von chmod: im Inode der Datei festgelegt werden.

(Sie können tatsächlich in einem separaten Block auf der Festplatte gespeichert werden, da ein Inode eine feste Größe hat, die Platz für die herkömmlichen Berechtigungsbits bietet, jedoch nicht für die möglicherweise unbegrenzten erweiterten Berechtigungen. Dies ist jedoch nur in seltenen Fällen von Bedeutung, z Pflege, setcapbei der möglicherweise chmodnicht genügend Speicherplatz zur Verfügung steht. Auf einem System, das Deduplizierung verwendet, kann sogar der Speicherplatz knapp werden!)

GNU ls zeigt die Setcap-Attribute einer Datei nicht an. Sie können sie mit anzeigen getcap. Sie können alle erweiterten Attribute mit getfattr -d -m -auflisten. Das Attribut setcap wird aufgerufen security.capabilityund in einem Binärformat codiert, das getcapfür Sie decodiert.

Gilles 'SO - hör auf böse zu sein'
quelle
4

setcap legt Dateifunktionen fest, die im erweiterten Attribut des Dateisystems gespeichert sind. Diese werden erklärt in man 7 capabilities:

Die Dateifähigkeitssätze werden in einem erweiterten Attribut (siehe setxattr (2)) mit dem Namen security.capability gespeichert.

Sie können die Funktionen eines laufenden Prozesses überprüfen, indem Sie die Felder CapInh / CapPrm / CapEff in untersuchen /proc/PID/status. In meiner Antwort auf " Festlegen von Funktionen mit dem Befehl setcap? " Finden Sie Erläuterungen dazu, wie die Funktionen auf die Verarbeitung bei exec angewendet werden.

sebasth
quelle
capsh --decode = könnte nützlich sein, um lesbare Daten zu erhalten.
Zulgrib