Conociendo el FSTAB y sus opciones

Una de las dudas más comunes que abordan a los usuarios nuevos en el mundo de GNU/Linux trata sobre el montaje automático de las particiones y de sus permisos. Las órdenes de montaje y sus opciones se encuentran alojadas en el fichero /etc/fstab.

Normalmente, al instalar distribuciones como Ubuntu, en el fstab se generan las líneas de montaje de nuestras particiones automáticamente pero de un modo genérico. Muchos habrán visto que si lo dejamos tal cual, los nombres de los archivos de la partición al hacer un ls aparece en color verde. Esto ocurre cuando los ficheros tienen permisos de ejecución. Sin más vamos a entrar en materia.

En primer lugar tenemos que identificar el dispositivo en el que se aloja la partición. Cuando el disco es SATA, el primer dispositivo se nombra como sda, el segundo será sdb, y así sucesivamente. Las particiones correspondientes al primer disco se nombrarán como sda1, sda2, etc. En caso de tener un disco IDE la nomenclatura será hda, hdb, y sus particiones hda1, hda2 … etc. Los descriptores de todos los dispositivos y sus correspondientes particiones están en el directorio /dev. Para identificar cuáles son las particiones que queremos montar podemos utilizar la herramienta fdisk, a la que pasaremos como argumento el disco que queremos examinar. Si queremos ver las particiones del disco sda haremos:

fdisk /dev/sda

Con fdisk podemos manejar las particiones de modo flexible y seguro. Mediante la introducción de p veremos un listado de las particiones que tenemos. En mi caso he obtenido:

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sda1   *           1        1848    14844028+  83  Linux
/dev/sda2            1849        1941      747022+  82  Linux swap / Solaris
/dev/sda3            1942        5766    30724312+   7  HPFS/NTFS
/dev/sda4   *        5767        7296    12289725    7  HPFS/NTFS

Una vez identificada la partición que queremos montar podemos empezar a definir el fstab. La estructura de este archivo usa una sintaxis especial. Cada línea está formada por seis campos, separados por espacios en blanco (espacio, tabuladores o una combinación). Cada campo tiene su propio significado:

  • El primer campo muestra la partición descrita (la ruta al fichero de dispositivo)
  • El segundo campo muestra el punto de montaje donde la partición debe montarse
  • El tercer campo muestra el sistema de ficheros usado por la partición
  • El cuarto campo muestra las opciones de montaje usadas por mount cuando trata de montar la partición. Como cada sistema de ficheros tiene sus propias opciones de montaje, le animamos a leer la página man de mount (man mount) para un listado completo. Cuando existen múltiples opciones se separan por comas.
  • El quinto campo es usado por dump para determinar si la partición necesita ser volcada o no. En general puede dejar esto como 0 (cero).
  • El sexto campo es usado por fsck para determinar el orden en que los sistemas de ficheros deben ser comprobados si el sistema no se apagó correctamente. La partición raíz debe tener un 1 mientras que el resto puede tener 2 (o 0 en el caso en que la comprobación del sistema de ficheros no sea necesaria).

Si queremos montar mi partición de datos, cuya ruta al descriptor es /dev/sda3, el primer campo será esta misma ruta. El segundo será el directorio en el que queremos montar la partición, el cual debe existir. En mi caso lo haré en /media/DATOS. Como ya hemos visto mediante fdisk, el sistema de ficheros de esta partición es ntfs por lo tanto esta va a ser la opción a especificar en el tercer campo. En el cuarto campo irán las opciones de montaje. El quinto y sexto campo lo dejaremos a 0. En este caso voy a explicar los que yo he utilizado y que considero más importantes; por supuesto, hay muchas otras opciones para las que os remito a las manpages. Veamos cuales son estas opciones:

  • auto: Si especificamos esta opción, la partición se montará automáticamente al iniciar el sistema. La opción contraria es noauto. Lo más interesante es, sin duda, el montaje automático.
  • exec: Esta opción la pondremos si tenemos interés en que podamos ejecutar binarios sobre la partición. Si por ejemplo vamos a programar y ejecutar sobre la partición será necesario especificarla. La opción contraria es noexec.
  • rw: Al montar la partición, si especificamos esta opción estaremos permitiendo la lectura y escritura. Los permisos también deberán estar en concordancia con esta opción. Si queremos que la partición sea de sólo lectura la opción adecuada es ro (Read Only).
  • uid: Digamos que está opción indicará a qué usuario/os pertenecen los ficheros de la partición que vamos a montar. Estos usuarios deberán ser indicados a través de su identificación. Podemos revisar qué número corresponde a cada usuario examinando el fichero /etc/passwd. En mi caso, el valor del uid para mi usuario es 1000.
  • gid: Similar a la opción anterior pero referente al grupo de usuarios. Podemos ver el gid del grupo al que pertenecemos en el fichero /etc/groups. En mi caso es el mismo que el de usuario, 1000.
  • fmask: Se trata del umask para los ficheros de la partición a montar. Así podremos especificar los permisos que tendrán estos ficheros. Dado que la partición de datos pertenece a mi usuario, voy a darle los mismos permisos que tendrán los ficheros de mi home por defecto que son lectura y escritura para el propietario (especificado en uid), lectura para usuarios del mismo grupo (especificado en gid) al que pertenece el fichero y  lectura para el resto de usuarios. Estos permisos son rw-r–r–, en binario serán 644 y dado que lo que utilizamos con fmask es un umask 777-644=133. El valor será 133.
  • dmask: Es igual que la opción anterior pero en este caso se refiere a los directorios. Para que podamos abrir un directorio es necesario que éste tenga permisos de ejecución por lo que los permisos serán los mismos que para ficheros pero añadiendo permisos de ejecución para propietario, grupo propietario y el resto de usuarios. Por tanto los permisos serán rwxr-xr-x que en binario es 755. En umask sería 777-755=022. El valor será 022.
  • utf8: Lo pondremos si la codificación de los nombres es utf8, si estamos utilizando otra codificación utilizaremos la opción que le corresponda.

Después de ver cada una de las opciones la línea será la siguiente:

/dev/sda3       /media/DATOS    ntfs    auto,exec,rw,uid=1000,gid=1000,dmask=022,fmask=133,utf8 0       0

Ahora tendremos que comprobar que funciona. Para ello utilizaremos la orden mount a la que tendremos que pasar el argumento -a para ejecutar el montaje de lo que se encuentra en el fstab. Eso sí, antes tenemos que desmontar la partición si ya la tenemos activa. Para ello escribiremos:

 $ sudo umount -a

Se intentarán desmontar todas las particiones del fstab lo que, obviamente, no es posible. En caso de que no podamos desmontar nuestra partición de datos es porque algún proceso la está utilizando y se nos mostrará un error que indicará que el dispositivo que queremos desmontar está siendo usado. Podemos comprobar qué proceso es el que lo está haciendo con la instrucción fuse y el descriptor de la partición del siguiente modo:

 $ sudo fuse -m /dev/sda3

Esta instrucción nos sacará por pantalla el PID de los procesos que están ocupando la partición. Suponiendo que el proceso con PID 7418 está utilizando la partición podemos proceder a matarlo, desmontar y volver a montar con:

 $ sudo kill -9 7418
 $ sudo umount -a
 $ sudo mount -a

Ahora podemos irnos a la partición montada y comprobar si los permisos están correctos por medio de un ls. Seguido el proceso tendremos los archivos montados en nuestra partición con los mismos permisos que los del HOME de manera que se integrarán perfectamente.

Si detectas algún error en este tutorial, hay algo mal explicado o te ha sido útil deja tu comentario !

3 comentarios en “Conociendo el FSTAB y sus opciones

  1. Pingback: Conectar un disco duro externo « Mi Raspberry Pi

  2. Pingback: MONTAR UNIDADES AUTOMÁTICAMENTE AL INICIAR UBUNTU (TUTORIAL LARGO) |

Deja un comentario