Acceso a sistemas de ficheros

Para tener acceso a los diferentes sistemas de ficheros es necesario:

El comando mount

El comando mount se utiliza para montar los sistemas de ficheros. Es decir para hacerlos accesibles desde el sistema.

En principio sólo es superusuario o root puede montar sistemas de ficheros en el sistema.

Para montar un sistema de ficheros:

[root@sal]# mount -t ext3 /dev/sda5 /media/removible
  • -t ext3 es el tipo de sistema de ficheros que reside en el dispositivo.

  • /dev/sda5 dispositivo que se quiere montar.

  • /media/removible punto de montaje en el que se montará.

Importante

Es posible especificar opciones de montaje mediante el uso de -o tales como sólo lectura, ...

Algunos tipos de sistemas de ficheros:

  • ext2

  • ext3

  • iso9660

  • reiserfs

  • xfs

  • jfs

  • nfs

  • cifs

  • vfat

  • msdos

Existen algunas opciones interesantes a la hora de montar un sistema de ficheros. Algunas de ellas son comunes a todos ellos, mientras que otras dependen del sistema de ficheros:

  • -o loop permite el montar imágenes ISO a través del dispositivo de loopback:

    [root@sal]# mount -t iso9660 debian-sarge-dvd1.iso /media/iso -o loop
    
  • -o rw monta un sistema de ficheros en modo lectura/escritura.

  • -o ro monta un sistema de ficheros en modo sólo lectura.

  • -o suid permite la ejecución de SUIDs en el sistema de ficheros.

  • -o nosuid no permite la ejecución de SUIDs en el sistema de ficheros.

  • -o exec permite la ejecución de comandos en el sistema de ficheros.

  • -o noexec no permite la ejecución de comando en el sistema de ficheros.

  • -o remount permite montar un sistema de ficheros ya montado con otras opciones diferentes.

  • -o owner permite a un usuario sin privilegios montar un sistema de ficheros si es el propietario del dispositivo físico.

  • -o nouser no permite a los usuarios sin privilegios el montar sistemas de ficheros.

  • -o user permite a cualquier usuario montar y desmontar el sistema de ficheros.

El comando umount

El comando umount se utiliza para desmontar sistemas de ficheros:

[root@sal]# umount /media/iso

Desmontaría el sistema de ficheros montado en /media/iso.

Sólo el superusuario o root puede desmontar sistemas de ficheros.

Importante

Es posible permitir a usuarios sin privilegios montar sistemas de ficheros. En este caso el usuario que montó el sistema de ficheros podrá desmontarlo también.

Aviso

Para poder desmontar un sistema de archivos es necesario que ningún recurso del sistema este usando dicho dispositivo:

[root@sal]# pwd
/media/iso
[root@sal]# umount /media/iso
umount: /media/iso: dispositivo ocupado
[root@sal]# 

Aviso

Bajo ningún concepto se debe desconectar ningún dispositivo de almacenamiento del sistema sin desmontarlo previamente.

Cuando se hace una operación de escritura sobre un dispositivo, rara vez se hace directamente al dispositivo. Normalmente se escribe en una zona intermedia denominada buffer cache y son los algoritmos de multitarea los que deciden cuando se va a ir escribiendo esa información al dispositivo.

Cuando se hace un umount de un dispositivo se priorizan las escrituras pendientes sobre ese dispositivo (se hace un sync sobre el dispositivo). Por este motivo si se desconecta un dispositivo del sistema sin haberlo desmontado previamente se perderan datos y se dice entonces que hay una inconsistencia en el sistema de archivos.

Con sistemas de archivos transaccionales o de journaling como ext3 o Reiser es posible, en principio, recuperar esa información.

El fichero de configuración /etc/fstab

Este fichero tiene dos propositos:

  1. Especificar que sistemas de ficheros se montan en el arranque.

  2. Indicar las opciones de montaje de los sistemas de ficheros.

Sugerencia

Es posible montar un sistema de archivos especificando unicamente el punto de montaje si está en el fichero /etc/fstab. Se montará con las opciones especificadas en dicho fichero.

Un /etc/fstab típico:

LABEL=/     /             ext3          defaults       1 1
none        /proc         proc          defaults       0 0
/dev/hda5   swap          swap          defaults       0 0
/dev/hdc    /media/cdrom  iso9660       noauto,user,ro 0 0
/dev/fd0    /media/floppy auto          noauto,user    0 0
/dev/hda6   /media/vfat   vfat          noauto,user    0 0
/dev/sda1   /media/scsi   reiserfs      auto           0 0

Este fichero consta de seis columnas:

  1. La primera columna es el dispositivo físico o la etiqueta del sistema de ficheros.

  2. La segunda columna es el punto de montaje.

  3. La tercera columna es el sistema de ficheros que hay en el dispositivo.

  4. La cuarta columna son las opciones de montaje.

  5. La quinta columna es información para dump. Si es un cero no es necesario hacer un dump del sistema de ficheros.

    En caso de no encontrar nada se asume que es un cero.

  6. La sexta columna indica a fsck el orden en el que chequeará los sistemas de ficheros al arrancar.

    Si hay un cero no chequeará el sistema de ficheros.

Sugerencia

Si se utiliza user como una de las opciones entonces se permite montar el sistema a cualquier usuario con las opciones indicadas en /etc/fstab pasandole a mount el punto de montaje especificado en /etc/fstab unicamente.

El fichero /proc/partitions

Este fichero nos muestra las particiones que tenemos en el sistema:

[root@sal]# cat /proc/partitions

major minor  #blocks  name

   3     0  195360984 hda
   3     1  192418506 hda1
   3     2          1 hda2
   3     5    2939863 hda5

[root@sal]# 

El fichero /proc/filesystems

Este fichero nos muestra los filesystems con los que puede trabajar el núcleo en ese momento.

[root@sal]# cat /proc/filesystems

nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   securityfs
nodev   sockfs
nodev   pipefs
nodev   futexfs
nodev   tmpfs
nodev   inotifyfs
nodev   eventpollfs
nodev   devpts
        cramfs
nodev   ramfs
nodev   mqueue
nodev   usbfs
        ext3

[root@sal]# 

El fichero /etc/mtab

Este fichero nos muestra los filesystems que tenemos montados en el sistema y las opciones con las que fueron montados.

[root@sal]# cat /etc/mtab
/dev/hda1 / ext3 rw,errors=remount-ro 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
/sys /sys sysfs rw,noexec,nosuid,nodev 0 0
udev /dev tmpfs rw,mode=0755 0 0
devshm /dev/shm tmpfs rw 0 0
devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0
usbfs /proc/bus/usb usbfs rw,noexec,nosuid,nodev 0 0
[root@sal]#