GNU/Linux >> Znalost Linux >  >> Linux

Co znamená schopnost ep?

# getcap ./some_bin
./some_bin =ep

Tento binární soubor má VŠECHNY povolené schopnosti (p) a účinné (e) od začátku.

V textové reprezentaci schopností je hlavní = je ekvivalentní all= .Z cap_to_text(3) manuálová stránka:

V případě, že vedoucí operátor je = a není uveden žádný seznam schopností, předpokládá se, že seznam akcí odkazuje na vše schopnosti. Například následující tři klauzule jsou si navzájem ekvivalentní (a označují zcela prázdnou sadu schopností):all=; =;cap_chown,<every-other-capability>= .

Takový binární soubor si může dělat, co chce, omezený pouze sadou omezení schopností, která na typickém desktopovém systému zahrnuje vše (jinak setuid binární soubory jako su nebude fungovat podle očekávání).

Všimněte si, že se jedná pouze o "gotcha" textové reprezentace používané libpcap :v security.capability rozšířený atribut souboru, pro který je getcap vytiskne /file/path =ep , všechny smysluplné bity jsou efektivně zapnuty; za prázdné security.capability , /file/path = (s = místo toho bude vytištěno.

Pokud o tom všem stále není někdo přesvědčen, zde je malý experiment:

# 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

Není to schopnost.

Znamená to efektivní sada a povolená sada.

Znamená to, že schopnosti budou umístěny v povolené sadě (p ) a všechny povolené funkce budou zkopírovány do platné sady (e ).

e se používá pro starší programy (možná většina programů v současné době), což jsou programy, které neznají schopnosti, takže samy nemohou kopírovat schopnosti z povolených na efektivní.

Pokud jde o to, proč existuje to, co vypadá a prázdná množina (jak poznamenal @mosvy), autoři knihovny si spletli vše s žádným (nekonečno a nula jsou dvě z nejvíce zmatených čísel).


Linux
  1. Co znamená Ampersand na konci řádku skriptu Shell?

  2. Co znamená ve výstupu Ps?

  3. Co znamená opt (jako v adresáři opt)? Je to zkratka?

  1. Co znamená tilda (~) na konci názvu souboru?

  2. Co znamená „rc“ v „.bashrc“ atd.?

  3. Co znamená písmeno 'u' v /dev/urandom?

  1. Co znamená atribut „s“ v oprávněních k souboru?

  2. Co znamená tečka před názvem proměnné ve struct?

  3. Co znamená __init v kódu jádra Linuxu?