Si un dispositivo de bloqueo tiene el permiso brwx______, ¿qué tan seguro es?

Si un dispositivo de bloqueo tiene el permiso brwx______, ¿qué tan seguro es?

Tengo problemas para encontrar información sobre lo que realmente significan los permisos para dispositivos bloqueados. Para dispositivos de bloque, ¿qué significa permiso de lectura? ¿Significa que no puedo hacer cosas como hexdump? ¿Qué pasa con el permiso de escritura? ¿O ejecutar?

Y, además, ¿qué sucede si tiene permiso de montaje en el dispositivo al otorgarle a un usuario permiso sudo para montar solo ese dispositivo en particular, pero no los permisos r, w o x en el dispositivo? ¿Qué pasará entonces?

Respuesta1

Para los casos simples (cuando accedes al dispositivo como un archivo) es como escribió @Jasen:

  • El permiso de lectura permite leer desde el dispositivo (volcar, ejecutar fscken modo de solo lectura, etc.)
  • El permiso de escritura permite escribir en el dispositivo (sobrescribir con una imagen, etc.)
  • Se necesitan ambos permisos para ejecutar fsck, tune2fsetc., que deben leerse.ymodificar el sistema de archivos.
  • Se ignora el permiso de ejecución. Si intenta ejecutar un archivo de dispositivo, obtendrá "Permiso denegado" incluso si el dispositivo de bloqueo contiene un código ejecutable válido.

Si eres root normalmente obtendrás el CAP_DAC_READ_SEARCHyCAP_DAC_OVERRIDE capacidades, lo que significa que las banderas de permiso se ignoran por completo.

Paraioctlses más complicado:

Para realizar un ioctl, necesita poderabiertoel archivo, lo que significa que al menos necesita permiso de lectura o escritura.

Todo lo demás depende del conductor. Algunos controladores de dispositivos solo verifican capacidades como CAP_SYS_RAWIOo CAP_SYS_ADMIN, algunos usan el permiso de lectura para ioctls "inofensivos", que solo brindan información y el permiso de lectura+escritura para otros ioctls. Un controlador de dispositivo podría usar el permiso de ejecución para una verificación de permisos ioctl, pero no conozco ningún controlador que haga esto.

Paramontares mas fácil:

La mountllamada al sistema solo comprueba dos cosas:

  1. Necesitas poderalcanzarel archivo del dispositivo. Esto significa que todos los directorios en la ruta al archivo del dispositivo deben tener al menos el bit de permiso de ejecución establecido (o debe tener la CAP_DAC_READ_SEARCHcapacidad).
  2. Necesitas tener la CAP_SYS_ADMINcapacidad (que normalmente obtienes cuando eres root)

Los bits de permiso en el archivo del dispositivo se ignoran por completo durante el montaje y no tienen influencia alguna en el acceso al sistema de archivos montado.

Usandosudoejecuta el programa ejecutado como root con todas las capacidades disponibles, lo que significa que se ignoran todas las comprobaciones de permisos y, como escribió @Jasen en un comentario, /bin/mountsuele ser setuid-root, lo que hace que siempre obtenga todas las capacidades disponibles, por lo que los bits de permiso no tienen influencia. activado mounten la mayoría de las distribuciones de Linuxy otros sistemas operativos unixoides.

EDITAR:las partes sobre capacidades son específicas de Linux. Otros sistemas operativos unixoides como BSD u OSX no separan las habilidades especiales de root en capacidades, por lo que cuando se mencionan capacidades, simplemente necesitas ser root. Según las páginas de manual disponibles, las comprobaciones mountson similares a las comprobaciones específicas de Linux que describí. No parece haber un sistema operativo que verifique los bits de permiso durante el montaje.

Respuesta2

leer permite leer (por ejemplo, volcado hexadecimal) escribir permite escribir (por ejemplo, escribir una imagen en el dispositivo) en combinación, esto significa que puede usar una herramienta como "hexedit" para ver y modificar el contenido.

No sé qué permite x (¿posiblemente permita ioctl?)

como están los permisos, brwx______eso significa que solo el propietario (normalmente root) puede hacer esas cosas.

información relacionada