ejemplo de transmutación de smack del módulo de seguridad del kernel de Linux

2

En la documentación del kernel para módulo de seguridad smack se lee: "Si se marca un directorio como transmutación (SMACK64TRANSMUTE = VERDADERO) y la regla de acceso que permite que un proceso cree un objeto en ese directorio incluye 't' acceso a la etiqueta asignada al nuevo objeto que será la del directorio, no el proceso de creación. más fácil para dos procesos con diferentes etiquetas para compartir datos sin otorgar acceso a todos sus archivos ".

¿Alguien puede dar un ejemplo de cómo configurar las reglas y los permisos para el directorio y los archivos u otros recursos que se comparten?

Estoy leyendo sobre el tizen modelo de seguridad de tres dominios y el tema que es difícil de entender es sobre El directorio /run . Específicamente sobre la etiqueta System::Run : "El dominio de usuario tiene acceso completo y transmutable a esta etiqueta". En mi sistema de escritorio, el directorio /run contiene solo elementos de root. ¿Cómo podría un usuario procesar un acceso de escritura a él? ¿O el "acceso completo" no significa tener el permiso de escritura?

    
pregunta minghua 06.11.2016 - 03:49
fuente

1 respuesta

3

La función Transmutar en Smack resuelve el problema de dos aplicaciones que se ejecutan con diferentes reglas de Smack que comparten datos en un solo directorio. En primer lugar, ambas aplicaciones necesitan escribir ('w') y ejecutar ('x') acceso a la etiqueta del directorio para poder escribir en él. Pero los archivos que se crearían tendrían la etiqueta Smack del proceso que los creó. Si una de las dos aplicaciones quisiera acceder a los archivos en ese directorio que fueron creados por la otra aplicación, necesitaría acceso a la etiqueta de la otra aplicación.

Para resolver eso, Smack proporciona la función de transmutación. Se necesitan dos partes:

  • Las aplicaciones que escriben en el directorio deben tener acceso 't' a la etiqueta del directorio.
  • El directorio debe tener un atributo de transmutación. Si es un directorio ordinario, establezca el atributo con security.SMACK64TRANSMUTE xattr establecido en "TRUE", o más sencillo con el comando "chsmack -t". Si el directorio es un punto de montaje (como / run en su ejemplo de Tizen), puede montarse con la opción de montaje smackfstransmute="some_label" para darle la etiqueta Smack deseada y habilitar la transmisión.

Esto permitirá la transmutación, afectando a las etiquetas Smack de los archivos recién creados en ese directorio. Cada archivo creado allí por una de las aplicaciones ahora obtendrá la etiqueta Smack del directorio en lugar de la etiqueta Smack del proceso que lo creó. Y cada subdirectorio creado en ese directorio también obtendrá un atributo de transmutación.

Déjame mostrar un ejemplo:

# mkdir /tmp/test
# chsmack -a dir_label /tmp/test
# chsmack /tmp/test
/tmp/test access="dir_label"
# echo "process_label dir_label wx" | smackload
# echo process_label >/proc/self/attr/current

Con el directorio / tmp / test con la etiqueta "dir_label" y el shell actual ejecutándose con la etiqueta "process_label", veamos cómo se etiquetarán los nuevos archivos y directorios:

# touch /tmp/test/file1
# mkdir /tmp/test/dir1
# chsmack /tmp/test/file1 /tmp/test/dir1
/tmp/test/file1 access="process_label"
/tmp/test/dir1 access="process_label"

Vamos a habilitar transmutar:

# chsmack -t /tmp/test
# chsmack /tmp/test
/tmp/test/ access="dir_label" transmute="TRUE"
# echo "process_label dir_label wxt" | smackload

Y transmutar en acción:

# touch /tmp/test/file2
# mkdir /tmp/test/dir2
# chsmack  /tmp/test/file2 /tmp/test/dir2
/tmp/test/file2 access="dir_label"
/tmp/test/dir2 access="dir_label" transmute="TRUE"
    
respondido por el Rafał Krypa 15.01.2017 - 17:22
fuente

Lea otras preguntas en las etiquetas