Comprender la opción de montaje nodev y su uso con unidades flash USB

10

La página de manual de Mount (8) OS X describe la nodevopción:

No interprete caracteres ni bloquee dispositivos especiales en el sistema de archivos. Esta opción es útil para un servidor que tiene sistemas de archivos que contienen dispositivos especiales para arquitecturas distintas a la suya.

Solo eso, no entiendo completamente ... 

... para mí, la parte más importante de esta pregunta, que puede ayudarme a comprender la opción, es:

¿Por qué las unidades flash USB se montan con la opción nodev?

Ejemplo:

sh-3.2$ mount
/dev/disk1 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
/dev/disk0s2 on /Volumes/swap (hfs, local, journaled)
/dev/disk0s4 on /Volumes/spare (hfs, local, journaled)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
localhost:/Eiu9XWYlwq4E8x9l_bQTiX on /Volumes/MobileBackups (mtmfs, nosuid, read-only, nobrowse)
/dev/disk3 on /Volumes/gjp22 (zfs, local, journaled, noatime)
/dev/disk3s1 on /opt (zfs, local, journaled, noatime)
/dev/disk6 on /Volumes/zhandy (zfs, local, journaled, noatime)
/dev/disk8s1 on /Volumes/experiment (hfs, local, nodev, nosuid, journaled, noowners)
/dev/disk10 on /Volumes/tall (zfs, local, journaled, noatime)
/dev/disk11s2 on /Volumes/LaCie Little Big Disk (hfs, local, nodev, nosuid, journaled, noowners)
/dev/disk12 on /Volumes/twoz (zfs, local, journaled, noatime)
Wuala on /Volumes/WualaDrive (osxfusefs, local, nodev, nosuid, synchronous, mounted by gjp22)
/dev/disk14s2 on /Volumes/Time Machine Backups (hfs, local, nodev, nosuid, journaled)

En ese ejemplo, los cuatro volúmenes con nodevson:

  1. experimento - en una unidad flash USB
  2. LaCie Little Big Disk : en una unidad de disco duro en FireWire 400, este volumen incluye Time MachineBackups.backupdb
  3. Wuala : la integración del sistema de archivos utiliza FUSE para OS X
  4. Time Machine Backups

Hablando en términos generales, puedo entender que 2, 3 y 4 son especiales. Sin embargo:

  • No puedo entender la relevancia de nodevuna unidad flash USB.

otras referencias

Montaje de discos USB automáticamente (Cómo funciona) - Unix y Linux

Antecedentes

Deseando comprender por qué Time Machine en Lion y Mountain Lion no puede realizar copias de seguridad desde unidades flash USB. Pero esta pregunta es más general sobre la nodevopción.

Graham Perrin
fuente

Respuestas:

17

La nodevopción le dice al sistema que no permita la creación y el acceso a los nodos del dispositivo , el tipo de archivos especiales que tiene /dev.

Por ejemplo, /dev/disk0le brinda acceso directo a todos los datos almacenados en el primer disco sin tener que pasar por los niveles superiores, como el sistema de archivos o el código de verificación de permisos: el único permiso verificado es si tiene permiso para abrir ese nodo de dispositivo específico para leer o escribir

Esto significa que si /dev/disk0se hiciera legible para todo el mundo, cualquier usuario podría leer fácilmente los archivos de cualquier otro usuario en el mismo disco (si no estuvieran cifrados), simplemente leyendo /dev/sda.

Dependiendo del sistema operativo, /devgeneralmente tendrá muchos otros tipos de nodos de dispositivo, incluido el /dev/memque da acceso a la memoria completa (física y / o virtual) del sistema, aunque no con sistemas que ejecutan un núcleo compilado CONFIG_STRICT_DEVMEM(a menos que sea root ).

Por esta razón, solo se permite que la raíz cree nodos de dispositivo (para otros usuarios, mknoddevolverá "Operación no permitida"), y todos los nodos de dispositivo existentes se mantienen en una única ubicación ( /dev) con permisos de archivo estrictos que no otorgan a los usuarios normales acceso de lectura o escritura. (Con algunas excepciones.) Sin embargo, en la actualidad, cualquiera podría pasar fácilmente la restricción de solo root yendo a otra computadora a la que ya tenga acceso root, usándola para crear algunos nodos de dispositivo en una unidad USB, configurando permisos muy abiertos, y conectando esa unidad a su computadora.

Esto es lo que nodevpreviene la opción: incluso si alguien crea un nodo de dispositivo legible por todo el mundo en su propio disco, el sistema operativo se negará a hacer nada con él debido a la nodevopción utilizada durante el montaje.


Las mismas razones se aplican a la nosuidopción, que le dice al sistema operativo que ignore el bit setuid que normalmente haría que un programa se ejecute con privilegios diferentes a los del usuario. Por ejemplo, /usr/bin/sudotiene el bit setuid y es propiedad de root, por lo que siempre tendrá los mismos privilegios que root.

usuario1686
fuente
Esta es una gran respuesta, gracias. Si entiendo las cosas correctamente, surge otra pregunta ... en el foro de soporte de ZEVO: ¿Por qué los montajes ZEVO ZFS sin la opción nodev? (Por el momento no tengo una unidad de disco duro USB de repuesto para dar solo a HFS Plus.)
Graham Perrin
@GrahamPerrin: las opciones que nodevestán deshabilitadas de forma predeterminada y deben establecerse explícitamente durante el montaje. El montador automático de disco extraíble OS X los configura, los programas equivalentes en Linux también lo hacen, pero no se configurarán cuando se ejecuten mountdesde la terminal a menos que los agregue manualmente -o nodev. (Esto no perjudica la seguridad, ya que en mountsí mismo requiere privilegios de root). Por lo tanto, depende de cómo esté montado su disco ZEVO ZFS.
user1686
Con ZEVO Community Edition 1.1.1, la importación es dinámica (automática) y parece que lo predeterminado es montar automáticamente sin ella nodev. Ni la importación ni el montaje ZFS requieren autenticación ... veamos cómo se despliegan las cosas en el área ZEVO.
Graham Perrin el
@grawity: Incorrecto, la nodevopción le dice que rechace las lecturas y escrituras en los archivos del dispositivo para que las existentes también se vean afectadas. Aún puedes crearlos.
user2284570