miércoles, 18 de junio de 2008

Lo esencial de fstab (1)

A) ¿Que es el archivo Fstab?
Fstab significa: File System Table: Tabla de Sistemas de ficheros. Se encuentra en el directorio /etc/fstab.
Cuando encendemos nuestro PC con Linux, el sistema operativo se inicia, en primer lugar montando en modo solo lectura el sistema de ficheros raiz ( / ), para los procesos standar, y luego comprueba su consistencia; luego, en segundo lugar los desmonta y vuelve a montar, pero esta vez en modo lectura y escritura, y empieza a verificar la existencia y consistencia de todos los demas sistemas de ficheros que se usaran . La lista de sistemas de ficheros disponibles en nuestro Pc, está contenida en el fichero /etc/fstab.

B) Para que sirve:
Este archivo esta constituido por varias lineas de texto, y cada línea da información sobre cada uno de los sistemas de ficheros que deberían estar disponibles para tu PC, de modo que
- para añadir un nuevo sistema de ficheros de forma que se monte y esté disponible siempre, al arrancar el sistema,
- o modificar a tu gusto el comportamiento de tu ordenador con un tipo concreto de dispositivo, ( cdroms, dvd, pendrive-usb, etc)
lo único que necesitas es añadir o cambiar una línea del fichero /etc/fstab.
Este archivo, contiene todos los parámetros para que se monten todas las particiones de uno o varios discos que tengamos en el ordenador. El archivo fstab es donde se guardan los diferentes datos sobre el montaje de los dispositivos físicos: de discos duros fijos y extraibles, y de sus particiones, de disquetes, cdroms, dvd,pendrives-usb
Lo que en el está escrito nos sirve fundamentalmente para que podamos tener acceso a nuestros discos/particiones, asi como también a su funcionamiento, una vez que iniciamos Linux:
- montar la partición donde está Linux y lo que podemos hacer en ella.
- montar o no, al arrancar un disco duro externo, o un pen-drive que tengamos conectado en ese momento.
- poder o no borrar, o escribir en archivos de otras particiones, como la que contenga Windows, si tenemos ambos sistema operativos en el PC.

C) ¿ Que dispositivos podemos montar ?
Podemos montar cualquier dispositivo, que ya exista físicamente creado en el disco, tanto particiones, como discos: por ejemplo un disquet, un pen-drive, un disco duro externo, un dvd, un cdrom
Todos ellos poseen un formato determinado, y una ubicación del tipo: /dev/nombre_de_dispositivo, por ejemplo: /dev/hda1
Para ello tenemos que saber lo que tenemos montando en nuestro PC: para ver que particiones tenemos montadas: abrimos la Terminal de root, ponemos la contraseña, y una vez ya como root, escribimos:
fdisk -l
Y podremos ver algo asi, dependiendo del tamaño de nuestro disco y particiones:

Disco /dev/hda: 8455 MB, 8455200768 bytes
16 cabezas, 63 sectores/pista, 16383 cilindros
Unidades = cilindros de 1008 * 512 = 516096 bytes

Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/hda1 * 1 16383 8257000+ 7 HPFS/NTFS

Disco /dev/hdc: 60.0 GB, 60022480896 bytes
255 cabezas, 63 sectores/pista, 7297 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/hdc1 2881 7297 35479552+ f W95 Ext'd (LBA)
/dev/hdc2 1 1281 10289601 83 Linux
/dev/hdc3 * 2715 2880 1333395 82 Linux swap / Solaris
/dev/hdc4 1282 2714 11510572+ 83 Linux
/dev/hdc5 2882 7297 35471520 b W95 FAT32

Las entradas de la tabla de particiones no están en el orden del disco.
Toda esta información puede variar, según las características de tu disco duro (como el tamaño), así también como la cantidad de particiones que tengas en él ( En este caso 1 particion en el primer disco y 5 en el segundo disco). Si tienes más de un disco duro , como en este ejemplo, también se muestra ( 1ª disco: dev/hda y 2ª disco: dev/hdc ). Con esta información ya sabemos que tenemos dos discos duros: /dev/hda y /dev/hdc, y la ubicación ( por ejemplo /dev/hdc2 ) y el tipo ( Linux ) de las particiones que hay en nuestro PC.

D) ¿ Donde podemos montar los dispositivos ?: Puntos de montaje:
El punto de montaje es el lugar donde hacemos posible que se pueda acceder a un dispositivo ya montado (por ejemplo el 1ª disco dev/hda1), es decir que lo veamos como una carpeta, dentro de una ubicación del tipo: /media/punto_de_montaje, por ejemplo: /media/Windows-XP; es decir que podemos ver el contenido del sistema operativo Windows que esta en el 1ª disco (dev/hda1) en la carpeta /media/Windows-XP

E) Ver y Modificar el archivo Fstab:
= Para verlo, con el administrador de archivos Nautilus llegamos hasta el directorio /etc y en él buscamos el archivo fstab, y lo podemos abrir con el editor de textos gedit; pero de esta manera solo podemos verlo, y estudiarlo, pero no editarlo, pues cualquier cambio que hagamos en él no se guardara al cerrar gedit.
= Para modificarlo debemos tener permisos de Root. Por lo tanto, debemos abrir el archivo de la siguiente manera:
- Alt+F2 y en la pantalla que aparece escribimos: gksu nautilus
- Se nos pedirá la contraseña de root , y se abrira el administrador de archivos nautilus, en modo root
- Nos movemos por los directorios hasta: /etc/fstab
- Abrimos el archivo fstab con gedit, lo modificamos según nuestras necesidades y luego lo guardamos...y ahora si que se guardan los cambios que hayamos hecho en el archivo.

F) Comprender el significado de los datos que aparecen en el archivo fstab:
Este es un ejemplo del archivo /etc/fstab
# /etc/fstab: static file system information.
( las lineas que empiezan por # no son "leidas" como un comando, sino que sirven como "etiqueta" de la linea que va a continuación)# /etc/fstab: static file system information.
# <file system> <mount point> <type> <options> <dump> <passs>

# linux ficheros raiz

label=/ / ext3 defaults,errors=remount-ro 0 1

# linux home

/dev/hdc4 /home ext3 defaults 0 2

# disco duro 1 con windows xp

/dev/hda1 /media/hda1 ntfs-3g defaults,locale=es_ES.UTF-8 0 1

# usb-pendrive

/dev/sda1 /media/usb-disk vfat users,defaults,utf8,umask=0 0 2

# swap

/dev/hdc3 none swap sw 0 0

# disco duro 2

/dev/hdc1 /media/hdc1 auto users,defaults 0 2

# dvd

/dev/hdb /media/cdrom0 udf,iso9660 user,noauto 0 0

# cdrom

/dev/hdd /media/cdrom1 udf,iso9660 user,noauto 0 0

#disquet

/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0


Vamos a empezar con cada uno de los componentes que integran las ordenes del archivo Fstab.
<file system> <mount point> <type> <options> <dump> <pass>

por ejemplo:












I) <file system> Sistema de Archivos: es el dispositivo local o remoto que vamos a montar.  ( en la imagen-> en Rojo)

--- Normalmente se trata del fichero de dispositivo Linux a montar (por ejemplo /dev/hdc4), pero también puede ser una entrada con el patrón nombre_de_ordenador_en_red: directorio para sistemas de ficheros en red tales como NFS.

--- Los sistemas de ficheros ext2 y ext3 también se pueden identificar por el nombre asignado a su etiqueta de volumen (Label ) cuando fueron creados. Por ejemplo, la entrada label=/ en el fichero de ejemplo /etc/fstab se podría sustituir por /dev/hdc2 porque se trata de la partición de disco donde reside el sistema de ficheros raíz. Utilizar etiquetas es más flexible que utilizar ficheros de dispositivos de particiones concretas, ya que el fichero de dispositivo asociado a una partición puede cambiar si ese disco duro lo llevamos a otro ordenador o añadimos discos nuevos al nuestro.

---También se puede identificar una partición por su UUID: para saber el UUID ( etiquetas identificativas únicas ) de las particiones: teclear en una terminal el comando:
ls -l  /dev/disk/by-uuid/
Elegir el número que aparezca en la partición: en este ejemplo el UUID es:
97b1b9f6-30c9-43a1-82d6-518e7e35e1ec
Se puede sustituir /dev/hdc4 por su UUID

II) <mount point> Punto de montaje: es el directorio en donde queremos montar el sistema de ficheros, por ejemplo: /media/cdrom0 o /home   ( En la imagen -> en Azul)
Para tipos especiales de particiones que no deben montarse, tales como las particiones de intercambio o swap, éste campo debería tener la entrada (la palabra) none.

III) <type> Tipo: define el tipo del sistema de ficheros. ( En la imagen -> en Verde ). Las entradas más frecuentes en éste campo son:
- ntfs : Si es de WindowsXP
- fat : Si es Windows98 con particion tipo fat 32,
- vfat: Si es Windows 98 con particion tipo fat 16
- iso9660: Para cdroms, dvd y regrabadoras de cd y dvd
- sw: Para la particion de intercambio swap
- ext2 o ext3 : Para / y /home ( en Guadalinex es ext3)
- auto: Si deseas, porque no estas seguro de que tipo se trata, puedes poner auto, y así fstab lo detecta automáticamente.
- ignore: Si un sistema de ficheros no se está usando pero se quiere mantener su entrada en /etc/fstab, puedes poner ignore, evitar el montaje del sistema de ficheros, su comprobación de consistencia, y el resto de operaciones.

IV <options> Opciones: ( en la imagen -> en Amarillo ). Parámetros opcionales para Fstab
Contiene una lista de parámetros, separados por comas, con las opciones que necesite el comando mount para montar el sistema de ficheros. Muchas de estas opciones son específicas de cada sistema de ficheros.
Las más frecuentes son:

1- auto: Con esta opción hacemos que el dispositivo que la contenga sea iniciado siempre que se inicie el sistema, es decir, cada vez que este sea encendido. Es decir que sera montado siempre. o bien cuando se ejecute mount -a.

2- noauto: Esta es la opción contraria a auto, con ella hacemos que el dispositivo no sea montado al iniciarse el sistema, y tan solo sera montado en el momento en el que queramos usarlo; esta opción suele ser utilizada con dispositivos como las disqueteras, cd-roms, dvd, pendrives-usb..., es decir, todos aquellos dispositivos que no es necesario que se monten al arranque del sistema.

3- async: Con esto hacemos que las operaciones que realicemos no se hagan en el mismo momento en que las realizamos/pedimos, si no que pueden ser realizada mas adelante.

4- sync: Es la opción contraria a async. Añadiendo la opción sync fijaríamos que los datos sean transferidos, guardados o borrados, en el momento en que pedimos que se hagan. Esta opcion puede servir de mucho, y sobre todo ahorrarnos tiempo en la manera en la que se transfieren datos a dispositivos como los pen-drives y aquellos que se utilizan mediante conexión usb en los cuales necesitamos acceso/transferencia rapido/a.

5- dev: Al activar esta opción permitimos que puedan usarse nodos de dispositivo en el sistema de archivos, o, lo que es lo mismo, que se interpreten como tal los dispositivos especiales de bloques y de caracteres presentes en el dispositivo, el dispositivo (de bloques o de caracteres) es local (un disco duro interno o usb,) no es dispositivo de red

6- nodev: con esto impedimos que puedan usarse nodos de dispositivo en el sistema de archivos, es decir, con esta opción impedimos que se interpreten los dispositivos especiales de bloques y de caracteres presentes en el dispositivo.

7- exec: esta opcion hace que puedas ejecutar programas, ficheros script (guiones), o cualquier otra cosa cuyos permisos indiquen que es ejecutable, de ese sistema de ficheros.

8- noexec: Impide la ejecución de cualquier archivo en el dispositivo en el que esta opción sea activada, esta opción suele ser muy útil cuando en una misma maquina diversos usuarios tienen acceso a un mismo dispositivo y no queremos que estos puedan ejecutar archivos en los dispositivos, con esto ganamos en seguridad, ya que impedimos que los otros usuarios puedan ejecutar cualquier tipo de archivo “maligno” a través del cual lo que realmente quieren conseguir es escalar privilegios en el sistema,.

9- gid=Valor: Con esta opción indicamos que tan solo el grupo que posee el Valor especificado tenga el control sobre los archivos del dispositivo. Establece el ID (identificador) de grupo del sistema montado a ese valor cuando se termina de montar el sistema de ficheros. Puede tratarse de un valor numérico gid=1000 o del nombre del grupo de usuarios (gid=users,gid=usuarioslectordvd)

10- uid=Valor: Con esta opción indicamos que tan solo el usuario que posee el Valor especificado tenga el control sobre los archivos del dispositivo.

11- owner: indica que el propietario del sistema de ficheros ( el que tiene derechos a montar y desmontar el dispositivo ) será aquel que lo montó ( el primer usuario distinto de root conectado al sistema localmente), pero normalmente sera el usuario root si el sistema de ficheros viene configurado para montarse automáticamente durante el arranque.

12- ro: read-only. Con esta opcion hacemos que no se pueda escribir en el dispositivo, que tan solo se pueda leer.
Al instalar el sistema, en la línea correspondiente a la partición /  , aparece la opción errors=remount-ro , lo cual indica que en caso de que haya errores, la partición se remontara en modo de solo lectura ( ro = read only) , se leerá, pero no se podrá escribir en ella

13- rw: read-write. Con esto montamos la partición para que sea posible tanto leer como escribir en el dispositivo físico, esta opción es muy usada con dispositivos que permiten la escritura como por ejemplo los pendrive o los disquets, ya que sin esta opción, no podríamos guardar datos en dichos dispositivos.

14- suid: indica que el permiso tenga efecto para los ejecutables presentes en el dispositivo.
Permite el cambio del ID de usuario o grupo del usuario a los programas que efectúen operaciones sobre el sistema de ficheros, siempre que sus bits de permisos lo permitan. Tenga mucho cuidado usando ésta opción con sistemas de ficheros ajenos que en realidad no estés administrando, ya que ejecutar un programa que establezca su UID (identificador de usuario) a root es una forma corriente de romper la seguridad de un sistema.** uid=valor: establece el ID de usuario del sistema montado al valor valor. Igual que con gid, podemos escribirlo con el número identificador del usuario uid=37 o con el nombre del usuario uid=hatteras

15- nosuid: es lógicamente la opción opuesta a suid. Salvo casos excepcionales, no debe haber ninguna razón para que se permita la ejecución de programas suid en los directorios /home/usuario. Esto lo podemos evitar usando la opción `nosuid' en el fichero /etc/fstab para las particiones que tengan permiso de escritura por usuarios distintos al root. También puede ser útil usar `nodev' y `noexec' en las particiones de los directorios personales de los usuarios (o en /home/usuario ),lo que prohíbe la creación dispositivos de bloque o carácter y la ejecución de programas.

16- user: Permite a cualquier usuario del sistema montar o desmontar un dispositivo físico sin necesidad de ser root, esta opción es muy útil para dispositivos de uso frecuente, como cd-roms o disquetes. Pero tambien debe tenerse en cuenta, que el usuario que montó el dispositivo, solo el mismo usuario podrá desmontar el dispositivo. La opción opuesta es nouser.

17- users: indica que cualquier usuario puede montar y cualquiera también, puede desmontar el dispositivo.

18-nouser: debes ser el usuario root para montar el sistema de ficheros, nadie más que el superusuario podrá hacerlo.

19- defaults: Esta opción es la unión de las opciones rw, suid, dev, exec, auto, nouser y async

Puedes consultar la ayuda del comando mount si necesitases mas parametros, aunque como ya dije estos son los mas comunes, aunque tal vez no se apliquen a tus necesidades.
Para consultar la ayuda del comando mount; abrir una Terminal, y escribir: $ man mount ( y despues a la tecla intro) ( desgraciadamente esta ayuda esta en ingles ).

V) <dump> : (en la imagen -> en Morado ) el comando dump, es un comando estándar del sistema de ficheros Unix/Linux usado para respaldar información (back-ups); el valor de esta opcion sirve para identificar los sistemas de ficheros que deberían incluirse en las operaciones de copia de seguridad cuando se ejecute el comando dump.
Esta opcion solo puede poseer el valor 0 o 1,
Si su valor es 0 ( o falta ) indica al comando dump que no es necesario hacer copia de seguridad del sistema de ficheros asociado a la correspondiente línea de /etc/fstab
Si su valor es 1se hará un backup con las opciones, creando backup por si surge algún tipo de problema, lo normal es tenerlo desactivado (0), ya que rara vez se produce un error.

VI)= <pass> : (en la imagen -> en Naranaja ) Este campo le sirve al comando fsck (algo asi como el scandisk en windows) para identificar los sistemas de ficheros cuya consistencia hay que comprobar en el siguiente reinicio, y el orden en el que hay que efectuar esa comprobación.
Si su valor es 0 o falta el programa fsck asume que no es necesario comprobar el sistema de ficheros asociado a la línea en /etc/fstab , y el sistema no realizara nunca ninguna pasada para comprobar la integridad del dispositivo físico ( normalmente ponemos 0 en el cdrom, dvd, disquet, pendrive y particion swap), y por ello es recomendable tenerlo en activado en las particiones : para / usamos 1 y 2 para el resto de las particiones: el sistema realizara una pasada cada X desmontadas ( en guadalinex V4 creo que es cada 30 reinicios del sistema ) o si el dispositivo ha sido desmontado incorrectamente para comprobar su integridad.

--------------------------------

Gracias a Sanatas he sabido que en los repositorios de Guadalinex hay un programa (PySDM - Storage Device Manager  ) que sirve para editar gráficamente este archivo /etc/fstab; También se puede descargar desde aqui; es pues un programa altamente recomendable. Para saber mas sobre este programa gráfico: Automontar dispositivos ntfs con permisos de lectura y escritura de forma gráfica

------------------------------------------------------

Continúa... en
 Lo esencial de fstab (2)
y Preguntas habituales sobre fstab y sus respuestas

-----------------------------------------------------

4 comentarios:

  1. [...] similar a como se crea una línea en relación a una partición del disco duro ( ver lo esencial de fstab-1 y fstab-2) , pero reemplazando la entrada /dev/sdxx por un “UUID” o por una [...]

    ResponderEliminar
  2. [...] quieres saber mas sobre este archivo /etc/fstab: leete fstab-1 , fstab-2, y montar/desmontar [...]

    ResponderEliminar
  3. Excelente artículo, me ayudó mucho a comprender cada sección y qué hace cada uno.

    ResponderEliminar

A la vez que haces un comentario, por favor da una puntuación al tema: malo, normal, bueno o muy bueno.
Gracias.