GNU/Linux >> Linux Esercitazione >  >> Linux

Cosa significa la capacità ep?

# getcap ./some_bin
./some_bin =ep

Quel binario ha TUTTE le capacità consentite (p) ed efficaci (e) dall'inizio.

Nella rappresentazione testuale delle capacità, un protagonista = equivale a all= .Dal cap_to_text(3) manpage:

Nel caso in cui l'operatore principale sia = , e non viene fornito alcun elenco di funzionalità, si presume che l'elenco azioni faccia riferimento a tutto capacità. Ad esempio, le seguenti tre clausole sono equivalenti tra loro (e indicano un set di capacità completamente vuoto):all=; =;cap_chown,<every-other-capability>= .

Tale binario può fare tutto ciò che vuole, limitato solo dal set di limiti di capacità, che su un tipico sistema desktop include tutto (altrimenti binari setuid come su non funzionerebbe come previsto).

Si noti che questo è solo un "gotcha" della rappresentazione testuale usata da libpcap :nel security.capability attributo esteso del file per il quale getcap stamperà /file/path =ep , tutti i bit significativi sono effettivamente on; per un vuoto security.capability , /file/path = (con il = non seguito da nulla) verrà invece stampato.

Se qualcuno non è ancora convinto di tutto ciò, ecco un piccolo esperimento:

# 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

Non è una capacità.

Significa insieme effettivo e insieme consentito.

Significa che le funzionalità verranno inserite nel set consentito (p ) e tutte le funzionalità consentite verranno copiate nel set effettivo (e ).

Il e viene utilizzato per programmi legacy (probabilmente la maggior parte dei programmi al momento), ovvero programmi che non conoscono le funzionalità, quindi non possono copiare autonomamente le funzionalità da consentite a effettive.

Per quanto riguarda il motivo per cui esiste quello che sembra un insieme vuoto (come ha sottolineato @mosvy), gli autori della libreria hanno confuso tutto con nessuno (infinito e zero sono due dei numeri più confusi).


Linux
  1. Cosa significa l'attributo "s" nelle autorizzazioni dei file??

  2. Cosa significa un punto prima del nome della variabile in struct?

  3. Cosa significa __init nel codice del kernel di Linux?

  4. Cosa significa &alla fine di un comando Linux?

  5. Cosa significa la sintassi |&nel linguaggio della shell?

Cosa significa chmod 777

Cosa significa essere "sh compatibile"?

Cosa significa l'ultimo - (trattino) nelle opzioni di `bash`?

Cosa significa la lettera 'u' in /dev/urandom?

Cosa significa ./ (punto barra) in Linux?

Cosa significa il suffisso .d in Linux?