GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was bedeutet die ep-Fähigkeit?

# getcap ./some_bin
./some_bin =ep

Diese Binärdatei hat von Anfang an ALLE erlaubten (p) und effektiven (e) Fähigkeiten.

In der Textdarstellung von Fähigkeiten ein führendes = entspricht all= .Vom cap_to_text(3) Handbuchseite:

Für den Fall, dass der führende Operator = ist , und keine Liste von Fähigkeiten bereitgestellt wird, wird angenommen, dass sich die Aktionsliste auf alle bezieht Fähigkeiten. Beispielsweise sind die folgenden drei Klauseln einander äquivalent (und geben einen vollständig leeren Capability-Satz an):all=; =;cap_chown,<every-other-capability>= .

Eine solche Binärdatei kann tun, was sie will, begrenzt nur durch das Capability Bounding Set, das auf einem typischen Desktop-System alles enthält (ansonsten Setuid-Binärdateien wie su würde nicht wie erwartet funktionieren).

Beachten Sie, dass dies nur ein "Erwischt" der textuellen Darstellung ist, die von libpcap verwendet wird :im security.capability erweitertes Attribut der Datei, für die getcap wird /file/path =ep ausgeben , alle sinnvollen Bits sind effektiv an; für ein leeres security.capability , /file/path = (mit dem = nichts gefolgt) wird stattdessen gedruckt.

Falls jemand von all dem noch nicht überzeugt ist, hier ein kleines 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

Es ist keine Fähigkeit.

Es bedeutet effektives Set und erlaubtes Set.

Das bedeutet, dass die Fähigkeiten in den zulässigen Satz (p ), und alle zulässigen Fähigkeiten werden in den effektiven Satz kopiert (e ).

Die e wird für Legacy-Programme verwendet (möglicherweise die meisten Programme zur Zeit), das heißt Programme, die keine Fähigkeiten kennen, also nicht selbst Fähigkeiten von erlaubt nach effektiv kopieren können.

Warum es eine leere Menge gibt (wie @mosvy darauf hingewiesen hat), haben die Autoren der Bibliothek alle mit keiner verwechselt (unendlich und null sind zwei der am meisten verwirrten Zahlen).


Linux
  1. Was bedeutet kaufmännisches Und am Ende einer Shell-Skriptzeile?

  2. Was bedeutet in der Ausgabe von Ps?

  3. Was bedeutet ein Punkt vor dem Variablennamen in struct?

  4. Was bedeutet __init im Linux-Kernel-Code?

  5. Was bedeutet opt ​​(wie im opt-Verzeichnis)? Ist es eine Abkürzung?

Was bedeutet chmod 777

Was bedeutet „–“ (Doppelstrich)?

Was bedeutet es, „sh-kompatibel“ zu sein?

Was bedeutet der Schnittstellenname eth0 unter Linux?

Was bedeutet ./ (Punkt-Schrägstrich) unter Linux?

Was bedeutet ein + am Ende der Berechtigungen von ls -l?