Cuando se usa setcap, ¿dónde se almacena el permiso?

11

El uso setcappara otorgar permisos adicionales a un binario debería escribir el nuevo permiso en algún lugar, en el almacenamiento o en la memoria, ¿dónde se almacena?

Usar lsofcomo está no funciona porque el proceso desaparece demasiado rápido.

Zulgrib
fuente
Usa otro proceso. Haga una copia /usr/bin/sleepy dele las capacidades a esta copia.
Hauke ​​Laging

Respuestas:

9

Los permisos extendidos, como las listas de control de acceso establecidas por setfacly los indicadores de capacidad establecidos por, setcapse almacenan en el mismo lugar que los permisos tradicionales y los indicadores de identificación [ug] establecidos por chmod: en el inodo del archivo.

(En realidad, pueden almacenarse en un bloque separado en el disco, porque un inodo tiene un tamaño fijo que tiene espacio para los bits de permiso tradicionales pero no para los permisos extendidos potencialmente ilimitados. Pero eso solo importa en casos raros, como tener que cuidado que setcappodría quedarse sin espacio en disco. ¡Pero incluso chmodpodría quedarse sin espacio en disco en un sistema que utiliza deduplicación!)

GNU ls no muestra los atributos setcap de un archivo. Puedes mostrarlos con getcap. Puede enumerar todos los atributos extendidos con getfattr -d -m -; Se llama al atributo setcap security.capabilityy se codifica en un formato binario que getcapdecodifica para usted.

Gilles 'SO- deja de ser malvado'
fuente
4

setcap establece las capacidades de archivo que se almacenan en el atributo extendido del sistema de archivos. Estos se explican en man 7 capabilities:

Los conjuntos de capacidades de archivo se almacenan en un atributo extendido (consulte setxattr (2)) denominado security.capability.

Puede inspeccionar las capacidades de un proceso en ejecución examinando los campos CapInh / CapPrm / CapEff en /proc/PID/status. Consulte mi respuesta a " ¿Cómo establecer capacidades con el comando setcap? " Para obtener una explicación sobre cómo se aplican las capacidades para procesar en exec.

sebasth
fuente
capsh --decode = podría ser útil para obtener datos legibles por humanos.
Zulgrib