¿Cómo establecer permisos predeterminados para unidades FAT montadas automáticamente en Ubuntu 9.10?

17

Tengo muchas unidades FAT32 que me gustaría montar en Ubuntu, de modo que tengan el modo de permiso 700 para directorios y 600 para todos los demás archivos. De manera predeterminada, tienen 755 para todos los archivos, lo que no es particularmente útil ya que casi no los directorios no deben ser ejecutables, y arruina los repositorios de control de versiones alojados en las unidades.

"De vuelta en el día" Hubiera tenido las unidades enumeradas en / etc / fstab con el umask / dmask que quiero y no había ningún defecto. En estos días, las unidades automount bajo sus nombres de volumen. Lo cual es genial, excepto que ahora no tengo idea de cómo configurar el valor predeterminado.

He intentado cambiar la clave gconf / system / storage / default_options / vfat / mount_options sin ningún efecto aparente. Inicialmente era 077, pero la unidad montada reflejaba un valor predeterminado de 022; cambiarlo y volver a insertar las unidades dio como resultado que los archivos aún tuvieran bits de permiso de 755.


fuente
eh Pensé que su nombre de usuario parecía familiar. He estado usando mutágeno durante años. Bienvenido a Super User. :)
quack quijote
Además, ¿qué versión de ubuntu estás usando? Supongo que Karmic, pero podrías estar hablando del Lucid RC, o incluso algo anterior.
quack quijote
Aclarado en el título. Esperaba que no importara, ya que tengo algunas instalaciones más antiguas, y algo como el montaje no debería cambiar cada seis meses.
Por desgracia las cosas HAL ha sufrido bastantes cambios en las versiones recientes. 9.04 y anteriores son probablemente lo mismo; algunas soluciones pueden aplicarse a todos; pero 9.10 DeviceKit usos y HAL está en desuso. No confío en que ninguna de las cosas DBus / HAL / DeviceKit se mantenga estable en este momento.
charlatán quijote
1
Comentario del pagin : Creo que el problema es mucho más fundamental: quiero modificar la umask para el montaje automático independientemente del dispositivo que se conecte a la computadora. Es decir, si un amigo mío llega con su memoria USB y solo quiero copiar algún archivo de este, quiero que se transfieran automáticamente como chmod 750, no 000 o 777, 770 o lo que sea. Realmente debería haber una opción en algún lugar para configurar esto ...
quack quixote

Respuestas:

7

Actualizado
Desafortunadamente no hay una incorporado de medios para hacerlo. La "forma correcta", la forma en que el apoyo , está dando un / etc / fstab de acuerdo con el valor por defecto de montaje opciones que desee. Esto significa que sus valores por defecto deben establecerse por dispositivo, aunque se puede utilizar la etiqueta de partición o UUID para evitar que requiere una ruta de dispositivo específico. En particular, este método parece tener lugar antes de la autorización de escritorio PolicyKit.

Los foros de Ubuntu, Launchpad y Bugzilla de Gnome tienen muchos mensajes de usuarios que buscan la misma funcionalidad que busca, tanto en NTFS y FAT32. Ubuntu 9.10 y 10.04 proporcionan el montaje automático por defecto a través de una combinación de DeviceKit-discos, GVFS y Nautilus.

DeviceKit-disks proporciona una interfaz FilesystemMount cuyo argumento de opciones parece ser la forma correcta de configurar sus opciones de montaje. Pero GVFS / Nautilus no parece proporcionar ningún medio, a través de la interfaz de usuario o un archivo de configuración, para especificar esta opción cuando se monta automáticamente una llave USB.

Hay un par de soluciones alternativas:

  • Este error de Launchpad contiene un parche proporcionado por el usuario que altera los valores predeterminados de DeviceKit-Disks en un paquete personalizado de devicekit-disks .

    En el lado positivo, esta puede ser la forma más fácil de configurar sus valores predeterminados preferidos para todos los dispositivos. La desventaja es que deberá volver a realizar el reparto cuando se actualice el paquete.

  • Una publicación en los foros de Ubuntu propone un script de solución alternativa específico para el dispositivo :

    #!/bin/bash
    devkit-disks --unmount /dev/disk/by-uuid/0D3594370C618A2A
    devkit-disks --mount-options "dmask=000" --mount /dev/disk/by-uuid/0D3594370C618A2A
    

    Esto también es subóptimo, ya que tendrías que mantenerlo actualizado con dispositivos específicos. Pero evita el problema de autorización que puede tener la solución fstab compatible .

quijote curandero
fuente
comentario de Rndmerle : Como nota al margen, en Ubuntu Lucid (10.4) el comando devkit-disks ha sido reemplazado por / usr / bin / udisks
quack quixote
Esta solución alternativa con udisks --unmount, etc., solo funciona para umask y dmask. No se permiten otras opciones, ya que puede adivinar desde el parche que vinculó.
user39559
1

Aquí está mi línea fstab para que mi dispositivo usb se monte con permisos adecuados para una clave ssh privada (fmask = 177). La prueba y el error me informaron que tenía que agregar la opción 'usuario' para que el montaje automático funcionara.

/dev/disk/by-uuid/C2F8-E4F2  /media/TIM_ABELL  vfat  rw,user,nosuid,nodev,dmask=0077,flush,fmask=177

También tuve que crear el punto de montaje que anteriormente era automático:

mkdir /media/TIM_ABELL

el uuid del disco se puede encontrar conectando el disco y ejecutando

mount
ls -l /dev/disk/by-uuid/

que le permitirá obtener el punto de montaje -> dispositivo -> mapeo uuid

Tim Abell
fuente
1
en lugar de usar las rutas completas / dev / disk / by-uuid / FOO o / dev / disk / by-label / FOO , puede usar la sintaxis de acceso directo UUID=FOOo LABEL=FOO.
quack quijote
0

¿Realmente has probado el viejo método / etc / fstab? Esto funciona para mi. Ubuntu usa fstab, sin importar el montador automático HAL.

Ivan Petrushev
fuente
2
¿Qué pongo en / etc / fstab para que todas las unidades FAT se monten así? Mi punto no es que "podría hacer esto con fstab" (no puedo), es "esto no sucedió bajo el modelo fstab porque no montó nada a menos que se lo dije".
0

Hice algunas secuencias de comandos bash y salí con esta versión mejorada de la secuencia de comandos de solución alternativa que se publica arriba:

#!/bin/bash
dev_path="/dev/disk/by-id"
usb_drives=$(find $dev_path -name "usb*")
mount_options="utf8=0,codepage=850,iocharset=iso8859-1"

for dev in $usb_drives ; do
  if ( devkit-disks --show-info $dev | \
       grep "is mounted:" | grep -q 1 ) ; then
    devkit-disks --unmount $dev
    devkit-disks --mount $dev \
      --mount-options $mount_options
  fi
done

Encuentra todos los dispositivos conectados por USB (con suerte todos los pendrives) que ya están montados, y los vuelve a montar usando mount_options (en mi caso, permítales usar el juego de caracteres iso-8859-1 para compatibilidad con otros sistemas operativos limitados)

Guido I
fuente
3
¿Qué sucede si conectas un USB ext4? ¿Aplicará máscaras y otras opciones que solo desee (y solo tenga sentido) para FAT?
user39559