Utiliser setcap
pour 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 lsof
en l'état ne fonctionne pas car le processus disparaît trop rapidement.
capabilities
setcap
Zulgrib
la source
la source
/usr/bin/sleep
et donnez-lui les capacités.Réponses:
Les autorisations étendues telles que les listes de contrôle d'accès définies par
setfacl
et les indicateurs de capacité définis parsetcap
sont stockées au même endroit que les autorisations traditionnelles et définissent les indicateurs d'ID [ug] définis parchmod
: 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
setcap
pourraient manquer d'espace disque. Mais mêmechmod
pourraient 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 avecgetfattr -d -m -
; l'attribut setcap est appelésecurity.capability
et il est encodé dans un format binaire quigetcap
décode pour vous.la source
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
: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.la source