GNU/Linux >> Tutoriels Linux >  >> Linux

Que signifie la capacité ep ?

# 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).


Linux
  1. Que signifie l'esperluette à la fin d'une ligne de script Shell ?

  2. Que signifie la sortie de Ps ?

  3. Que signifie un point avant le nom de la variable dans struct ?

  4. Que signifie __init dans le code du noyau Linux ?

  5. Que signifie la syntaxe |&en langage shell ?

Que signifie chmod 777

Que signifie "-" (double tiret) ?

Qu'est-ce que cela signifie d'être "compatible sh" ?

Que signifie le dernier - (trait d'union) dans les options de `bash` ?

Que signifie le nom de l'interface eth0 sous Linux ?

Que signifie le suffixe .d sous Linux ?