GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué significa la capacidad ep?

# getcap ./some_bin
./some_bin =ep

Ese binario tiene TODAS las capacidades permitidas (p) y efectivas (e) desde el principio.

En la representación textual de capacidades, un = inicial es equivalente a all= .Desde el cap_to_text(3) página de manual:

En el caso de que el operador principal sea = , y no se proporciona una lista de capacidades, se asume que la lista de acciones se refiere a todos capacidades. Por ejemplo, las siguientes tres cláusulas son equivalentes entre sí (e indican un conjunto de capacidades completamente vacío):all=; =;cap_chown,<every-other-capability>= .

Tal binario puede hacer lo que quiera, limitado solo por el conjunto de límites de capacidad, que en un sistema de escritorio típico incluye todo (de lo contrario, binarios setuid como su no funcionaría como se esperaba).

Tenga en cuenta que esto es solo un "te pillé" de la representación textual utilizada por libpcap :en el security.capability atributo extendido del archivo para el cual getcap imprimirá /file/path =ep , todos los bits significativos están efectivamente on; por un vacío security.capability , /file/path = (con el = seguido de nada) se imprimirá en su lugar.

Si alguien todavía no está convencido de todo eso, aquí hay un pequeño experimento:

# 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

No es una capacidad.

Significa conjunto efectivo y conjunto permitido.

Significa que las capacidades se colocarán en el conjunto permitido (p ), y todas las capacidades permitidas se copiarán en el conjunto efectivo (e ).

El e se usa para programas heredados (posiblemente la mayoría de los programas en el momento actual), es decir, programas que no conocen las capacidades, por lo que no pueden copiar capacidades de permitido a efectivo.

En cuanto a por qué hay lo que parece y un conjunto vacío (como ha señalado @mosvy), los autores de la biblioteca han confundido todo con ninguno (el infinito y el cero son dos de los números más confusos).


Linux
  1. ¿Qué significa Ampersand al final de una línea de script de Shell?

  2. ¿Qué significa el atributo 's' en los permisos de archivo?

  3. ¿Qué significa un punto antes del nombre de la variable en struct?

  4. ¿Qué significa __init en el código del kernel de Linux?

  5. ¿Qué significa opt (como en el directorio opt)? ¿Es una abreviatura?

¿Qué significa chmod 777?

¿Qué significa "-" (doble guión)?

¿Qué significa ser "sh compatible"?

¿Qué significa el último - (guión) en las opciones de `bash`?

¿Qué significa la letra 'u' en /dev/urandom?

¿Qué significa un + al final de los permisos de ls -l?