# getcap ./some_bin ./some_bin =ep
Ce binaire a TOUTES les capacités autorisées (p) et effectives (e) depuis le début.
Dans la représentation textuelle des capacités, un =
de tête est équivalent à all=
.A partir du cap_to_text(3)
page de manuel :
Dans le cas où l'opérateur principal est
=
, et qu'aucune liste de fonctionnalités n'est fournie, la liste d'actions est supposée faire référence à tous capacités. Par exemple, les trois clauses suivantes sont équivalentes (et indiquent un ensemble de capacités complètement vide) :all=
;=
;cap_chown,<every-other-capability>=
.
Un tel binaire peut faire ce qu'il veut, limité uniquement par l'ensemble de limites de capacité, qui sur un système de bureau typique inclut tout (sinon les binaires setuid comme su
ne fonctionnerait pas comme prévu).
Notez qu'il ne s'agit que d'un "gotcha" de la représentation textuelle utilisée par libpcap
:dans le security.capability
attribut étendu du fichier pour lequel getcap
imprimera /file/path =ep
, tous les bits significatifs sont effectivement activés; pour un vide security.capability
, /file/path =
(avec le =
suivi de rien) sera imprimé à la place.
Si quelqu'un n'est toujours pas convaincu de tout cela, voici une petite expérience :
# cp /bin/ping /tmp/ping # will wipe setuid bits and extented attributes
# su user -c '/tmp/ping localhost'
ping: socket: Operation not permitted
# setcap =ep /tmp/ping
# su user -c '/tmp/ping localhost' # will work because of cap_net_raw
PING localhost(localhost (::1)) 56 data bytes
64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.073 ms
^C
# setcap = /tmp/ping
# su user -c '/tmp/ping localhost'
ping: socket: Operation not permitted
Ce n'est pas une capacité.
Cela signifie ensemble effectif et ensemble autorisé.
Cela signifie que les capacités seront placées dans l'ensemble autorisé (p
), et toutes les capacités autorisées seront copiées dans l'ensemble effectif (e
).
Le e
est utilisé pour les programmes hérités (probablement la plupart des programmes à l'heure actuelle), c'est-à-dire les programmes qui ne connaissent pas les capacités, et ne peuvent donc pas eux-mêmes copier les capacités d'autorisées à effectives.
Quant à savoir pourquoi il y a ce qui ressemble à un ensemble vide (comme @mosvy l'a souligné), les auteurs de la bibliothèque ont confondu tout avec aucun (l'infini et zéro sont deux des nombres les plus confus).