Lorsque vous utilisez setcap, où est stockée l'autorisation?

11

Utiliser setcappour donner des autorisations supplémentaires à un binaire devrait écrire la nouvelle autorisation quelque part, sur le stockage ou en mémoire, où est-elle stockée?

L'utilisation lsofen l'état ne fonctionne pas car le processus disparaît trop rapidement.

Zulgrib
la source
Utilisez un autre processus. Faites une copie de cette copie /usr/bin/sleepet donnez-lui les capacités.
Hauke ​​Laging du

Réponses:

9

Les autorisations étendues telles que les listes de contrôle d'accès définies par setfaclet les indicateurs de capacité définis par setcapsont stockées au même endroit que les autorisations traditionnelles et définissent les indicateurs d'ID [ug] définis par chmod: dans l'inode du fichier.

(Ils peuvent en fait être stockés dans un bloc séparé sur le disque, car un inode a une taille fixe qui a de la place pour les bits d'autorisation traditionnels mais pas pour les autorisations étendues potentiellement illimitées. Mais cela n'a d'importance que dans de rares cas, comme des soins qui setcappourraient manquer d'espace disque. Mais même chmodpourraient manquer d'espace disque sur un système qui utilise la déduplication!)

GNU ls n'affiche pas les attributs setcap d'un fichier. Vous pouvez les afficher avec getcap. Vous pouvez répertorier tous les attributs étendus avec getfattr -d -m -; l'attribut setcap est appelé security.capabilityet il est encodé dans un format binaire qui getcapdécode pour vous.

Gilles 'SO- arrête d'être méchant'
la source
4

setcap définit les capacités des fichiers qui sont stockées dans l'attribut étendu du système de fichiers. Ceux-ci sont expliqués dans man 7 capabilities:

Les ensembles de capacités de fichier sont stockés dans un attribut étendu (voir setxattr (2)) nommé security.capability.

Vous pouvez inspecter les capacités d'un processus en cours d'exécution en examinant les champs CapInh / CapPrm / CapEff dans /proc/PID/status. Voir ma réponse à " Comment définir les capacités avec la commande setcap? " Pour une explication sur la façon dont les capacités sont appliquées au processus lors de l'exécution.

sebasth
la source
capsh --decode = pourrait être utile pour obtenir des données lisibles par l'homme.
Zulgrib