SISTEMAS DE FICHEROS EN LINUX

1

Introducción
Para saber administrar un sistema es fundamental comprender la organización de ese sistema. La organización de un sistema informático se llama sistema de ficheros. Vamos a estudiar como se organiza internamente un sistema de archivos en Linux y los comandos que se utilizan para manipularlo. El sistema de ficheros es la parte del núcleo más visible por los usuarios; se encarga de abstraer propiedades físicas de diferentes dispositivos para proporcionar una interfaz única de almacenamiento: el archivo. Cada sistema Unix tiene su sistema de archivos nativo (por ejemplo, ext2 en Linux, UFS en Solaris o EFS en IRIX), por lo que para acceder a todos ellos de la misma forma el núcleo de Unix incorpora una capa superior denominada VFS ( Virtual File System) encargada de proporcionar un acceso uniforme a diferentes tipos de sistema de ficheros. Un inodo o nodo índice es una estructura de datos que relaciona un grupo de bloques de un dispositivo con un determinado nombre del sistema de ficheros. Internamente, el núcleo de Unix no distingue a sus archivos por su nombre sino por un número de inodo.

Tipos de ficheros
Un fichero o archivo es el elemento básico del Sistema de Ficheros. La mayoría de los sistemas operativos tienen distintos tipos de ficheros. Para Linux se pueden clasificar los ficheros en 3 tipos: ficheros normales, directorios y ficheros especiales (dispositivo de bloques, dispositivo de caracteres y enlaces). Se pueden definir los ficheros normales como secuencias de bytes destinadas a almacenar información (texto, datos, programas) ya sea generada por los usuarios del sistema o por el propio sistema para su funcionamiento. Las reglas generales para el nombrado de ficheros en Linux son las mismas que para sistema Unix • Un nombre de fichero puede tener de 1 a 255 caracteres. • No se permiten los caracteres como: metacaracteres ? * [ ] ‘ “ ` $ # | \ ; & { } carácter / (delimitador de directorios) carácter espacio caracteres de control. • Unix distingue entre mayúsculas y minúsculas. Se recomienda utilizar siempre minúsculas pues , por convenio, las variables y macros del sistema se escriben en mayúsculas.
Pág. 1

SISTEMAS DE FICHEROS EN LINUX

2

No existe extensión. Pueden haber varios puntos. Se recomienda utilizar nombres con un punto y a continuación algo que indique el tipo de fichero de que se trata.

Los directorios son ficheros utilizados para almacenar y referenciar otros ficheros. Para Linux los directorios son tratados como ficheros y realmente contienen información sobre la estructura del sistema de ficheros. Los directorios están organizados en grafos (árbol). Existe un directorio que no posee antecedente o padre. Es el directorio raíz. Su símbolo es el carácter /. Cada fichero se puede referenciar unívocamente expresando un camino hacia él, desde el directorio raiz (ruta absoluta). Un fichero se puede referenciar desde el subárbol actual (ruta relativa). Cualquier directorio contiene dos ficheros por defecto que a su vez son directorios: . es un directorio que señala al propio directorio. .. es un directorio que señala al directorio padre o antecedente del actual. El contenido de los ficheros directorio es una tabla que mantiene una relación entre un nombre de fichero y su número de inodo. Inodo (2 bytes) Nombre del archivo (30 caracteres)

El contenido de los directorios podía ser algo semejante a:
Directorio raíz 1 . 1 .. 2 dev 3 4 home etc Directorio ejemplos 58 . 3 27 .. 8 40 Ejempl 8 o1 92 Ejempl 2 o2 Directorio os2 98 . 7 3 .. Directorio dev 2 . 1 .. 34 ttyp1 10 8 hda1 Directorio home 3 . 1 .. 27 primi1 8 98 os2 7

Directorio prim1 27 . 8 3 .. 39 58 3 .profile ejemplo s

Se puede apreciar que cada directorio asocia números de inodos con nombres de ficheros, esto implica, como se observa, que los números de inodo relacionan entre sí los directorios. En Linux, toda operación de E/S se realiza sobre un fichero de dispositivo. Toda entidad, sea física o lógica, se representa como un fichero (no hay
Pág. 2

SISTEMAS DE FICHEROS EN LINUX

3

unidades); a diferencia de otros sistemas como MSDOS, por esto los dispositivos físicos (discos, CDROM, terminal, impresora,...) se representan como ficheros especiales. Estos ficheros especiales se localizan en un directorio llamado /dev. Algunos de los más importantes son:
/dev/console /dev/fd* /dev/hd* Consola principal del sistema /dev/fd0 --> 1ª disquetera (A:) /dev/fd1 --> 2ª disquetera (B:) Discos duros con interface IDE: /dev/hda --> Todo el primer disco (primer canal IDE, master) /dev/hdb --> Todo el segundo disco duro (primer canal IDE, esclavo) ... /dev/hda1 --> 1ª partición primaria del primer disco duro /dev/hda2 --> 2ª partición primaria del primer disco duro ... /dev/hda5 --> 1ª partición lógica del primer disco duro. ... Puertos serie del sistema Discos duros con interfaz SCSI. (Para las particiones se sigue la misma notación que en los dispositivos IDE) Puertos paralelo (de impresión, etc.) Dispositivo nulo, cualquier dato enviado a este dispositivo se pierde. Consolas virtuales (el sistema simula la conexión a varios terminales)

/dev/ttyS*, /dev/cua* /dev/sd* /dev/lp* /dev/null /dev/tty

Estos archivos pueden clasificarse como de bloques o de caracteres Los dispositivos de bloques, (cuyo atributo es una ‘b’) se acceden bloque a bloque, como discos (/dev/hda) o disquetes (/dev/fd0). Los dispositivos de caracteres, (de atributo una ‘c’) se acceden carácter a carácter como un puerto serie (/dev/cua) Existen otros ficheros especiales llamados enlaces que la información que almacenan es un “puntero” a otro fichero del sistema. Los enlaces pueden ser fuertes (duros) o débiles (simbólicos). Cualquier cambio realizado en alguno de los ficheros enlazados afecta al otro. La orden ln permite crear este tipo de ficheros. La diferencia entre ellos es que un enlace fuerte representa un nuevo nombre pero con el mismo número de inodo. Esto implica que aunque se elimine el fichero original el fichero no desaparece físicamente hasta que no se elimina el último enlace. Un enlace simbólico representa un nuevo inodo pero la eliminación del original provoca, indirectamente, la desaparición de todos los enlaces.

Pág. 3

SISTEMAS DE FICHEROS EN LINUX

4

Jerarquía de ficheros en Linux
Al conjunto de todos los ficheros y directorios se le conoce como árbol de directorios. La imagen es más parecida a un árbol invertido, con la raíz en la cima y las ramas colgando de ella. Siguiendo este símil, en UNIX/Linux todos los directorios y ficheros cuelgan del raíz (“/”). Es el directorio más importante del sistema. En él debe existir lo mínimo para que el sistema pueda arrancar: programas y bibliotecas imprescindibles para el arranque, diagnóstico y recuperación del sistema: el kernel, la biblioteca C o libc, las utilidades básicas como cp, rm, mv, etc.
Nota: En Linux, no existen divisiones artificiales como las letras de unidad de Windows, sino que todos los sistemas de ficheros del ordenador están integrados en el mismo árbol.
--|------- bin |------- boot | `------ grub |------ cdrom -> media/cdrom |------ dev |------ etc |------ home | |------ pedro | |------ juan | `------ ..... |------ lib |------ media | |------ cdrom | |------ floppy | `------ ..... |------ mnt |------ opt |------ proc |------ root |------ sbin |------ tmp |------ usr | |------ X11R6 | |------ bin | |------ doc | |------ games | |------ include | |------ lib | |------ local | |------ etc | |------ sbin | |------ src | |------ bin | `------ ... | |------ sbin | |------ share | `------ src `------ var |------ backups |------ cache |------ lib |------ local Pág. 4

SISTEMAS DE FICHEROS EN LINUX |------ lock |------ log |------ mail |------ opt |------ run |------ spool |------ tmp `------ www

5

/bin /boot /dev /etc

Binarios de los comandos esenciales (cp, rm, ls, etc.), usados por todos los usuarios. Ficheros estáticos para el arranque del sistema (kernels, ficheros del gestor de arranque) Ficheros de dispositivos Configuración específica del sistema. Contiene algunos ficheros imprescindibles como /etc/passwd y /etc/shadow (ficheros que contienen los usuarios para acceder al sistema), /etc/group (la lista de grupos y sus miembros), /etc/fstab (la lista de montaje de dispositivos), etc. Bibliotecas compartidas esenciales y módulos del kernel Directorio para montajes temporales Paquetes software adicionales (los no incluidos en la distribución) Binarios esenciales para el sistema, usados por el administrador (fsck, mkfs, init, etc.) Ficheros temporales La mayoría de programas del sistema y sus ficheros relacionados Datos variables Ficheros del administrador del sistema (root) Sus contenidos no están en el sistema de ficheros normal, sino que son creados por el kernel cuando se le dice que monte ahí un sistema de ficheros de tipo “proc”. Es un directorio virtual por decirlo así. En este sistema de ficheros se puede encontrar y alterar información del sistema: configuración de dispositivos, opciones del kernel, información sobre los procesos en ejecución, etc.

/lib /mnt /opt /sbin /tmp /usr /var /root /proc

/home Ficheros de los usuarios

Nota: Normalmente sólo el administrador (root) puede escribir en los directorios del raíz salvo en /home y /tmp ya que están pensados para almacenar ficheros (temporales en el caso de /tmp) de los usuarios.

Los directorios /usr y /var son tan complejos como el directorio raíz: En /usr irán la inmensa mayoría de los programas del sistema, tanto para los usuarios como para el administrador, y los ficheros de datos que éstos necesiten. En él encontraremos algunos directorios como los que había en el directorio raíz. Su función es similar a la de sus homónimos del raíz, pero nada de lo que se encuentre en /usr debe ser necesario para iniciar o recuperar el sistema. Algunos de estos directorios son:

Pág. 5

SISTEMAS DE FICHEROS EN LINUX

6

bin lib local

La mayor parte de los programas de usuario Como su homónimo del raíz: bibliotecas, tanto dinámicas como estáticas Jerarquía local. Es como una copia de /usr pero destinado a programas creados o compilados de forma local (es el directorio usado cuando instalamos un programa a partir de los fuentes: los programas así instalados están al margen del sistema de gestión de paquetes de la distribución, y por eso se ponen en un directorio aparte. También es usado para instalar los scripts o programas “caseros” que hayamos hecho nosotros: /usr/local/bin o /usr/local/sbin es el lugar adecuado para éstos) Programas (no vitales) para el administrador Ficheros de datos independientes documentación (/usr/share/doc), etc. Directorio para el sistema X Window Para juegos Para fuentes de programas de la arquitectura: imagenes,

include Ficheros de cabecera para programas compilados en C

sbin share X11R6 games src

En /var como su nombre indica se encuentran directorios con datos variables, que cambiarán con el paso del tiempo por la acción de los programas del sistema. (Esto incluye desde correo hasta ficheros de log, pasando por bases de datos o cachés creadas por los programas del sistema). Algunos de estos directorios son:
cache
Datos cacheados por las aplicaciones que realizan operaciones de cálculo o de E/S (incluyendo esto descargas de la red) costosas para almacenar aquí los datos, y no tener que volver a reprocesarlos. Por ejemplo, la herramienta apt-get (/var/cache/apt). Información variable de los programas. (Su nombre es un poco confuso, porque en realidad no hay ninguna biblioteca aquí) Datos variables para los programas de /usr/local Ficheros de bloqueo Registros del sistema, los llamados ficheros de log o de bitácora. Por ejemplo, los que crea el servicio syslog Datos variables para los programas de /opt Datos para los programas en ejecución Datos de spool1, esto es, ficheros que son creados por programas para su posterior proceso: ficheros en cola de impresión, mensajes de correo, etc. Ficheros temporales preservados aunque el sistema sea reiniciado

lib local lock log opt run spool tmp

Ficheros relevantes
1

Acrónimo de Simultaneous Peripheral Operations OnLine. En general, un “spool” es un directorio en el que los programas clientes y los servidores se pasan datos a través de ficheros. Pág. 6

SISTEMAS DE FICHEROS EN LINUX

7

Algunos ya se han comentado pero existen algunos ficheros que contienen información importante relacionada con los sistemas de ficheros. /proc/filesystems Este fichero presenta una relación de los distintos sistemas de ficheros que la versión del núcleo de Linux instalada en nuestra máquina puede soportar. Al ejecutar el siguiente comando apareceran algunos de los sistemas de ficheros que se citan en la tabla siguiente:
$ cat /proc/filesystems

SISTEMA

DESCRIPCIÓN
Primer sistema de ficheros que usaba Linux

minix ext ext2 ext3 msdos umsdos vfat ntfs nfs iso9660 y udf hpfs smbfs procfs, sysfs, tmpfs, devfs

Extended File System. Creado para superar las limitaciones de Minix Second Extended Filesystem. Una mejora de ext. Actualmente es el sistema de ficheros más común de Linux
Una mejora de ext2 que incorpora journaling2, esto es, con soporte transaccional Usado para acceso a ficheros MS-DOS (nombres de 8+3 caracteres) Para instalar Linux en una partición MS-DOS Sistema de fichero Windows 95 (FAT32). Como el msdos, pero con nombres largos y algunas mejoras. Sistema de ficheros de Windows NT y XP (El modo de . escritura aún no está muy bien soportado)

Network File System (sistema de ficheros en red)
Sistemas de ficheros usados por los CDs y DVDs Sistema de ficheros de OS/2 Sistema de ficheros en red usado por Samba Sistemas de ficheros especiales, que no están destinados a almacenar datos de forma permanente, sino a acceder a parámetros del kernel

2

Estos sistemas mantienen un “diario de cambios” lo que se traduce en una recuperación más rápida y mayor integridad de los datos frente a fallos. Pág. 7

SISTEMAS DE FICHEROS EN LINUX

8

SISTEMA

DESCRIPCIÓN

Otros sistemas de ficheros transaccionales (con journaling). ReiserFS se adecua especialmente a sistemas que tengan muchos archivos pequeños. Es muy eficiente en el almacenamiento de archivos, escala perfectamente y es capaz de tratar igual de bien archivos grandes. JFS es la aportación de IBM al combate entre los “grandes sistemas de archivos Linux”. Contempla el uso de varios procesadores, listas de control de acceso (ACLs) y redimensiona-miento nativo. XFS es un invento de SGI, procedente de IRIX. Su punto fuerte es la gestión de archivos muy grandes, como bases de datos gigantes. Tiene un mecanismo propio y nativo de asignación de cuotas, ACL y copias de seguridad y restauración. Nota: Para encontrar el tipo de sistema de archivos de un dispositivo determinado puede usarse el comando file. Por ejemplo: $ file < /dev/scd0

ReiserFS, XFS, JFS

/etc/fstab Cuando un sistema Linux arranca una de las tareas que obligatoriamente ha de realizar es incorporar diferentes sistemas de ficheros - discos completos, una partición, una unidad de CD-ROM...- a la jerarquía de directorios Linux; este proceso se llama montaje, y para realizarlo generalmente se utiliza la orden mount. Es obligatorio montar al menos un sistema de ficheros durante el arranque, el sistema raíz ( '/'), del que colgarán todos los demás. El fichero /etc/fstab es una tabla que describe las particiones y los sistemas de ficheros que deben montarse cuando el sistema arranca. Cada línea del fichero representa un sistema de ficheros susceptible de montaje. Esta tabla contiene 6 campos: • Dispositivo: Se especifica el dispositivo especial de bloque se se va a montar. • Punto de montaje: Corresponde a un directorio perteneciente a la estructura de directorios. • Tipo de sistema de archivo: Puede coincidir con cualquiera de los sistemas soportados por el núcleo. • Opciones de montado: Representan múltiples opciones separadas por comas, sin espacios. Entre ellas están: auto: Se monta automáticamente al arrancar o al utilizar el comando mount -a. noauto: No se monta automáticamente. dev: Se permite la existencia de dispositivos.. exec: Permite la ejecución de programas binarios suid: Permite la existencia de ficheros setuidados, esto es, tienen efecto los bits suid y sgid del sistema montado. nouser: Solo puede ser montado por el root. user: Puede ser montado por un usuario sin privilegios. rw/ro: Permite montar para lectura/escritura o sólo lectura.
Pág. 8

SISTEMAS DE FICHEROS EN LINUX

9

async: La E/S sobre el dispositivo se realiza de forma asíncrona. defaults: opciones por defecto: rw, suid, dev, exec, auto, nouser y async. Nota: En Linux, por cuestiones de seguridad, las opciones “noexec”, “nosuid” y “nodev” se asumen simplemente al indicar “user”, pero en otros sistemas UNIX quizás no, por lo que nunca está de más ponerlas explicitamente.

Volcado: Equivale a un dígito que indica si el sistema de ficheros debe ser volcado con el comando dump (para realizar copias de seguridad). 1 significa que será volcado y 0 que no. Orden: Indica como se van a chequear los sistemas en el arranque. Un 1 hace referencia al primer sistema chequeado que se aplica únicamente al directorio raiz. El resto de sistemas chequeados se indican con un 2. Si es un 0 significa que no será comprobado.
$ cat /etc/fstab /dev/hda2 /dev/fd0 /dev/hda1 /dev/cdrom / /mnt/floppy none /home/cdrom ext2 vfat ignore iso9660 defaults noauto 0 noauto,ro 1 0 0 0 1 0 0 0

Nota: Una vez que un dispositivo cuenta con una entrada en /etc/fstab, podrá ser montado3 utilizando únicamente el punto de montaje o el nombre de dispositivo.

/etc/mtab Este fichero tiene el mismo formato que el fichero /etc/fstab. Mantiene información actualizada de los sistemas que se encuentran actualmente montados.

Uso de ficheros. Permisos.
Para que un usuario pueda acceder a un determinado fichero, es necesario que tenga habilitado el permiso de acceso. Se puede tener alguno de ellos, todos o ninguno. Los permisos de acceso o derechos de uso de ficheros son : r Permiso de lectura. Significa que se puede mirar el contenido. Si se trata de un directorio que se puede visualizar el contenido (ficheros) de ese directorio. w Permiso de escritura. Significa que se puede modificar el contenido. Si es un directorio que se pueden borrar y crear ficheros dentro de ese directorio.
3

Ver orden mount más adelante Pág. 9

SISTEMAS DE FICHEROS EN LINUX

10

x . Permiso de ejecución. Se puede ejecutar el fichero, este permiso es imprescindible si se quiere ejecutar un script. Si es un directorio el usuario que lo posea tendrá acceso para realizar el resto de las funciones permitidas mediante los otros permisos (lectura y/o escritura) y por tanto podrá entrar en él, buscar o copiar ficheros de ese directorio, etc.
Nota: Para determinar los permisos finales siempre se debe tener en cuenta que: a) Para poder realizar operaciones sobre cualquier directorio (leer o escribir) será necesario siempre tener otorgado además el permiso de ejecución. b) Para acceder a un recurso de cualquier forma (ejecución, lectura o escritura) se deben tener permisos de ejecución para todos los directorios que contienen al recurso directa e indirectamente.

Para un fichero existen tres posibles entidades que disfrutan de los permisos de los ficheros: u Usuario. También conocido como propietario, es el usuario dueño del fichero. g Grupo. Grupo al que pertenece el fichero generalmente coincide con el grupo del propietario. El grupo determina el dominio. o Otros. Son los demás usuarios que no pertenecen a este grupo. Los permisos son atributos de cada fichero, están almacenados en el i-nodo del fichero. Los atributos de un fichero se pueden conocer mediante la orden: ls -l. Esta orden muestra un listado en formato largo de los ficheros del directorio actual y muestra algo como:
drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x 2 2 2 41 9 4 root root root root root root bin root root root root root 2048 1024 8192 16384 2048 1024 Oct 22 21:48 May 10 00:29 Nov 3 00:44 Jan 1 1970 Nov 3 00:44 Oct 22 21:12 bin/ boot/ dev/ dosc/ etc/ home/

La 2ª columna muestra el número de enlaces que tiene un fichero o directorio. La 3ª columna muestra el nombre del propietario del fichero. La 4ª columna indica el grupo al pertenece el fichero. La 5ª columna muestra el tamaño en bytes del fichero o directorio. La 6ª columna es la fecha, y en algunos caso la hora, de la última modificación. La 7ª columna representa el nombre del fichero o directorio. La primera columna muestra los atributos de cada fichero. Están representados mediante una cadena de 10 caracteres que significan: • Tipo de fichero. Está representado en el primer carácter. • Permisos. Se representan por los siguientes nueve caracteres.
Tipo Usuario/Propietario Grupo propietario Otros

-

r w x

r w x

r w x

El tipo de fichero, que puede ser:
Pág. 10

SISTEMAS DE FICHEROS EN LINUX

11

• • • • • •

El ‘-‘ (guión) indica que se trata de un fichero ordinario. La ‘d’ indica que es un fichero de entrada a un directorio. La ‘b’ indica que es un dispositivo de bloques. La ‘c’ indica que es un dispositivo de caracteres. La ‘l’ indica que es un enlace. Existen otros que varían según la versión de Unix: ‘p‘ (pipes o tuberias), ‘s‘ (sockets), etc. Los restantes nueve caracteres son una representación simbólica de los permisos de ese fichero, relativos a usuario, propietario, grupo y otros. Estos nueve caracteres se dividen en tres grupos, de tres caracteres cada uno, representando lectura, escritura o ejecución de cada grupo. • El ‘- ‘ (guión) representa que no está habilitado el permiso. • La ‘r’ indica que tiene habilitado el permiso de lectura. • La ‘w’ indica que tiene habilitado el permiso de escritura. • La ‘x’ indica que tiene habilitado el permiso de ejecución. Un ejemplo de un fichero cuyo listado largo muestra:
-rwxr-x--4 ciro users 456 Oct 22 21:45prueba

Este listado indica que el fichero prueba es un fichero ordinario con permisos totales para el propietario, de lectura y ejecución para el grupo (users) y ninguno para el resto. Además tiene 4 enlaces, fue modificado por última vez el 22 de Octubre del presente año a las 21:45 horas y tiene un tamaño de 456 bytes. Los tres tipos de permisos mencionados poseen una representación numérica basada en el sistema octal que parte de representar como “1” los bits de los permisos otorgados y “0” para los negados. Luego se transforma la representación binaria así obtenida en octal. La combinación de los tres tipos de permisos para un tipo de usuario oscila desde cero (ningún permiso) hasta siete (todos los permisos):
----x -w-wx r-r-x rwrwx = = = = = = = = 000 001 010 011 100 101 110 111 (0 (1 (2 (3 (4 (5 (6 (7 en en en en en en en en octal) octal) octal) octal) octal) octal) octal) octal)

Los permisos “totales'' de un recurso constan de nueve indicadores, donde los tres primeros indican los permisos asociados al dueño, los otros tres, al grupo y los últimos, al resto de los usuarios. Ejemplos:
rwx r-x --= 111 101 000 (750 en octal)
Pág. 11

SISTEMAS DE FICHEROS EN LINUX

12

rw- r-- r--

=

110 100 100 (644 en octal)

Sólo el dueño de un recurso siempre tendrá derecho a cambiar sus permisos, además de root.

NFS
Linux al igual que Unix brinda la posibilidad de compartir recursos entre las máquinas a través del Sistema de Ficheros de Red o NFS (Network File System). Este servicio básicamente permite el acceso de un cliente NFS a las partes del sistema de ficheros que sean exportadas por un servidor NFS. El cliente en dependencia de las restricciones que le sean impuestas podrá manipular los ficheros importados como parte de su propio sistema de ficheros. Para configurar este servicio se deben tener en cuenta los problemas de seguridad que puede generar una mala concepción del mismo. No obstante es muy conveniente y fácil de emplear en numerosos contextos donde la seguridad no sea un requisito indispensable. Un ejemplo podría ser un sistema con una máquina que tuviera un disco duro muy grande y utilizarlo como servidor y que los clientes accedieran a él. Para utilizar un NFS se necesitan 3 componentes: • Comunicación a través de protocolo TCP/IP • Una computadora que tenga montado el sistema de ficheros a exportar (servidor) • La computadora donde se desea montar remotamente los ficheros (cliente) Para compartir un directorio por NFS se deberán seguir los siguientes pasos: 1. En el servidor se coloca el recurso exportado a través de NFS en el fichero /etc/exports, que por defecto existe pero sin ninguna información. Cada entrada o línea en este fichero tiene la siguiente forma:
<directorio> Ejemplos:
/tmp /pub /home/pepe/ 192.168.168.71(ro) 192.168.168.2(rw) *.redes.disaic.cu(ro,root_squash,sync) 192.168.168.*(rw,all_squash,anongid=512,anonuid=509)

<máquina>(<opción1>, <opción2>, ...)

Para indicar en el fichero /etc/exports la forma en que se exporta un recurso a través de NFS se emplean distintas opciones. Las principales se describen a continuación: Opciones generales:
secure ro rw
Solicita autenticación. Activada por omisión Concede acceso de solo lectura. Concede acceso de lectura / escritura. Activada por omisión

noacces Hace inaccesible todo el contenido del directorio a un cliente especificado s
Pág. 12

SISTEMAS DE FICHEROS EN LINUX

13

sync

Indica que se realicen las operaciones de escritura en el disco instantáneamente. Permite una mayor tolerancia ante una falla del sistema que pudiera provocar inconsistencias en el file system, pero empeora el desenvolvimiento. Por defecto es async (la opuesta de sync)

Opciones para la traducción de identificadores: Los identificadores de los usuarios que acceden a los directorios compartidos a través de NFS son tratados por la máquina servidora cada vez que el cliente hace un pedido RPC-NFS. Si los identificadores de usuario y grupo coinciden en ambas máquinas, desde el cliente se podrán tener las mismas reglas de acceso que en el servidor. Esto no siempre es así y casi nunca conviene que lo sea. Por ejemplo para el usuario root de la máquina servidora no debe ser conveniente que el root de la máquina cliente utilice sus mismos permisos. Entonces lo que se hace es traducir el ID del usuario root (0) en el cliente, al ID del usuario nobody en el servidor. Esta técnica se conoce como squashing. Aunque por defecto se aplica solo para el usuario root también puede hacerse para el resto de los usuarios. En definitiva, las opciones que tienen que ver con la traducción de identificadores son las siguientes:
root_squash
Indica la traducción del identificador de root al del usuario nobody. Es así por defecto.

no_root_squas Deshabilita el squashing para el usuario root. Se puede emplear h para máquinas sin disco duro que montan todo los ficheros del sistema operativo utilizando NFS. all_squash
Habilita el squashing para todos los usuarios, o sea todos los identificadores en el cliente se mapean al identificador del usuario nobody en el servidor.

no_all_squash Indica que no se haga squashing para ningún usuario. Por defecto es así excluyendo al usuario root. anongid=n y Indican que al hacer squash no se traduzcan los identificadores de anonuid=n grupo y usuario a los de nobody sino a los del usuario y grupo indicados mediante estas opciones.

2. Habilitar el servicio NFS a través del script de inicio correspondiente, normalmente situado en /etc/init.d (o /etc/rc.d/init.d):
# /etc/init.d/nfs start Nota: Dicho script arrancará los demonios nfsd que recibirá las solicitudes NFS desde los sistemas remotos y los traducirá en peticiones para el sistema local y mountd que llevará a cabo las operaciones de montar y desmontar.

3. Finalmente, una vez el servidor ha sido configurado para dejar exportar ciertos sistemas de ficheros, la maquina cliente debe realizar el montaje de
Pág. 13

SISTEMAS DE FICHEROS EN LINUX

14

ese sistema. Esto se puede realizar en el arranque (/etc/fstab) o utilizando el comando mount. El recurso se coloca en el argumento correspondiente al dispositivo empleando la forma:
máquina_servidora:recurso_compartido Ejemplos: #mount -t nfs #mount 192.168.1.80:/tmp gloin:/home/pepe /mnt/red /home/pepe

Nota: Para simplificar esta acción en el caso de que se realice frecuentemente, se podrian poner las siguientes líneas en el fichero /etc/fstab:
192.168.1.80:/tmp gloin:/home/pepe /mnt/red /home/pepe nfs nfs defaults,noauto defaults 0 0 0 0

En las opciones para montar un sistema de ficheros utilizando NFS se incluyen algunas de las opciones tradicionales como: auto, user, defaults, etc. Además existen algunas opciones propias del file system NFS. Algunas de ellas son:
rsize=<n> y Indican el tamaño en bytes que tendrán los paquetes de la red wsize=<n> empleados para las operaciones de lectura y escritura respectivamente. Por defecto es 1024, pero se han obtenido buenos resultados con n igual a 8192. soft
Expresa que cuando una operación de acceso a un recurso NFS no pueda realizarce en el tiempo previsto, el programa que la invoque genere un error de entrada/salida y se aborte la operación. Por defecto se reintenta la operación indefinidamente (opción hard). Indica que son permitidas las interrupciones en las operaciones sobre los ficheros accedidos mediante NFS. Por defecto no es así. indica que se utilice el protocolo TCP como protocolo de transporte, pues por defecto es el UDP (opción udp). Valor en décimas de segundos antes deenviar la primera retransmisión después de agotar el tiempo de espera. El valor por omisión es de siete décimas de segundo

intr tcp timeo=n

Ejemplo:
$ mount –t nfs –o timeo=20,intr mailserver:/var/spool/mail /correo

Monta el directorio remoto /var/spool/mail del servidor mailserver en el directorio local /correo con un valor de retransmisión de 2 segundos y permitiendo la interrupción de las operaciones.

Pág. 14

SISTEMAS DE FICHEROS EN LINUX

15

Comandos relacionados con el sistema de ficheros
Los archivos o ficheros pueden contener programas, datos o cualquier cosa que desee un usuario. El sistema operativo proporciona una serie de operaciones especiales que permiten crearlos (cp, vi), destruirlos (rm), leerlos (vi, cat), modificarlos o procesarlos (copiarlos, cambiar el nombre, etc.).

Operaciones básicas con ficheros
LS Visualiza el contenido de un directorio o información de un fichero. Su sintaxis es:
Sintaxis : ls [-opciones] [fichero/directorio] (Ver Tema “ Introducción a Linux”)

CAT Visualiza el contenido de los ficheros. Su sintaxis:
Sintaxis : cat [-opciones]

fichero1 fichero2 ...

(Ver Tema “ Introducción a Linux”)

CP Copia ficheros (o, opcionalmente, directorios). El nombre del fichero puede contener el camino absoluto desde el raiz para copiar entre subdirectorios.
Sintaxis : cp [-opciones] cp [-opciones]

origen destino origen1 origen2

directorio_destino

La segunda sintaxis de cp, copia varios archivos en un directorio dado. Si el destino es un directorio, entonces son copiados sin cambiar el nombre. Si se quiere copiar en el propio directorio es necesario especificar otro nombre, y si este fichero existe su contenido será reemplazado. Opciones: Mantiene la misma estructura y atributos del archivo original. -a

-b -r -u

Crea copias de seguridad de archivos que van a ser sobreescritos o borrados. Copia directorios recursivamente, esto es, directorios y su contenido. No copia archivos si ya existen.

Pág. 15

SISTEMAS DE FICHEROS EN LINUX

16

-v -i -p -f -s

Imprime el nombre de cada archivo antes de ser copiado. Esto es, muesta información detallada. Pide confirmación antes de sobreescribir. Preserva los permisos, el propietario, el grupo y los tiempos de los ficheros originales Elimina los ficheros de destino que ya existen sin pedir confirmación Permite crear enlaces simbólicos a los archivos en lugar de copiarlos.

Permite preservar la ruta completa. -parents

MV Mueve o cambia el nombre a un fichero o directorio.
Sintaxis : mv [-opciones] fichero1 fichero2 mv [-opciones] fichero1 fichero2 .....

directorio

En la primera sintaxis fichero1 es el nombre original de un archivo o directorio y fichero2 es el nuevo nombre del fichero o directorio. La segunda sintaxis de mv permite mover ficheros entre directorios. Tambien permite mover un directorio y todo su contenido a otro directorio. Opciones: Pide confirmación antes de sobreescribir. -i

-f -b -u

No pide confirmación Crea copias de seguridad de archivos que van a ser sobreescritos o borrados. No mueve un fichero o directorio que tenga un destino existente con el mismo tiempo de modificación o más reciente

RM Elimina archivos o directorios. Sintaxis : rm [-opciones] fichero1 fichero2 ......
Si el nombre del fichero es un directorio obligatoriamente debe utilizarse la opción ‘-r’. Opciones: Borra archivos sin formular preguntas, esto es, sin pedir confirmación. -f

-r

Permite aceptar nombres de directorios como argumentos, y realiza un borrado recursivo del mismo. Atención a esta opción que puede ser peligrosa. Borra archivos solicitando confirmación para cada uno antes de borrarlo.
Pág. 16

-i

SISTEMAS DE FICHEROS EN LINUX

17

-v

Visualiza el nombre del fichero o directorio antes de borrarlo (muestra información detallada)

CMP Compara el contenido de dos archivos. Sintaxis : cmp [-opciones] archivo1 archivo2
Este comando compara los dos archivos especificados. Por defecto informa sobre la localización de la primera diferencia, si existe. Si los archivos son iguales, no aparece ningún comentario. Si son diferentes, indicará el octeto y el número de línea donde se encuentra la diferencia. La orden facilita los códigos siguientes : ‘0’ si los archivos son idénticos ‘1’ si son diferentes ‘2’ si un archivo es inaccesible o no se ha especificado correctamente. Opciones: Imprime el número del octeto en decimal, y los octetos diferentes en octal -l por cada diferencia encontrada.

-s -c

No imprime las diferencias encontradas. Visualiza la diferencia en ascii y el caracter.

TOUCH Cambia la fecha de un archivo. Sintaxis : touch [opciones] fichero(s)
Si no se indica lo contrario toma la fecha/hora actual del sistema. Si fichero(s) no existe crea un archivo vacio (a menos que se especifique la opción -c) Opciones: -a

Cambia la fecha de acceso del archivo. Cambia la fecha de modificación del archivo. No crea un archivo nuevo (en caso de que no exista). Toma como referencia la fecha correspondiente al fichero fichref. Permite especificar la fecha como un número decimal. Usa la fecha date en lugar de la actual.

-m -c -r fichref -t decimtime -d date

DIFF Busca diferencias entre dos ficheros.
Pág. 17

SISTEMAS DE FICHEROS EN LINUX

18

Sintaxis : diff [-opciones] fichero-origen fichero-destino Opciones: Trata todos los ficheros como de texto y los compara línea por línea. -a

-b -i -q -r

Ignora los espacios en blanco. No distingue mayúsculas de minúsculas. Informa sólo de si los ficheros difieren, no de los detalles de las diferencias Cuando compara directorios, compara recursivamente cualesquiera directorios encontrados

FIND Busca ficheros en un sistema de archivos.
Sintaxis: find nodo_ruta criterio_nombre_expresión acción Busca a partir de la jerarquía de archivos que empieza en nodo_ruta los ficheros que cumplan el criterio dado en criterio_nombre_expresion y les aplica la acción correspondiente. El nodo-ruta especifica a partir de dónde buscar los archivos (camino). El criterio indica cómo seleccionar los archivos, si es por el nombre solamente o es por otro criterio cualquiera. Puede ser compuesto por una expresión en cuyo caso se construye a partir de un conjunto de opciones o primitivas y operadores. La yuxtaposición de dos opciones implica el operador lógico AND. Podemos agrupar las primitivas y operadores usando paréntesis. Los paréntesis, comas y corchetes son metacaracteres del shell. Debemos entrecomillarlos para usarlos dentro de la expresión. La acción es referida a, qué hacer con los ficheros seleccionados.

find acepta los siguientes operadores para construir expresiones:
–a –o ! Equivale al operador lógico AND. Es el valor que se asume por defecto. Equivale al operador lógico OR Equivale al operador lógico NOT, esto es, niega la expresión que le sigue.

Algunas de las criterios más usados de find son los siguientes: Fecha en días –periodo de 24 horas- de acceso al fichero –atime number Fecha en días de creación del fichero –ctime number –group name Especifica el grupo del propietario del fichero –inum number Número de inodo del fichero Fecha en días de modificación del fichero –mtime number –name pattern Patrón de búsqueda. Sigue la sintaxis de los nombres de ficheros
Pág. 18

SISTEMAS DE FICHEROS EN LINUX

19

–perm mask –size number[c] –type t –user name

Ficheros con permiso idénticos a mask Tamaño del fichero en bloques –grupo de 512 bytes- o en bytes si se especifica el sufijo c. Tipo del fichero. “t” puede ser: b-->bloque; c-->carácter; d-->directorio; f-->fichero; l-->enlace simbólico; n->fichero de red; p-->FIFO; s-->socket Nombre de usuario del fichero

Nota: Cada número en la lista de opciones es un número decimal opcionalmente precedido por un + o un –. Un signo “+” significa “mayor que” o “posterior a” y un signo “–“ implica “menor que” o “anterior a”. Algunas de las acciones de find son: –exec command ; Toma todos los argumentos entre exec y el “;” como una línea de comandos reemplazando cada argumento en el lugar en que está situado {} por el nombre del camino actual. Después ejecuta la línea de comandos resultante mostrando los resultados que tienen éxito – valor de retorno 0-. El “;” final debe estar entrecomillado o precedido por “\” y delimitado con un espacio. Nota: Para aprobar cada cambio en find sustituir “exec” por “ok”. Imprime el nombre del fichero actual. Se asume por defecto salvo cuando se usan expresiones con efectos laterales como –exec.

–print

Algunos ejemplos: a) Buscar todos los ficheros con extensión .c o .h, empezando en el directorio actual: $ find . –name “*.[ch]” b) Buscar todos los ficheros con extensión .Z que fueron modificados por última vez hace 3 días: $ find . –name “*.Z” –mtime 3 c) Buscar todos los ficheros con extensión .c que fueron modificados hace más de 3 días y menos de 9 días: $ find . –name “*.c” –a “(“ –mtime +3 –a –mtime –9 “)” d) Ejecutar ls –l sobre todos los ficheros modificados hace más de 10 días: $ find . –mtime +10 –exec ls –l {} ';' e) Buscar todos los ficheros de solo lectura (sobre sistemas Windows) que tienen tmp en cualquiera de las dos partes de su nombre y borrarlos:
$ find . “(“ –name “tmp.*” –o –name “*.tmp” “)” –perm =rx –exec rm {} \;

f) Busca en todo el disco duro los ficheros ordinarios que se llamen “fic” y tengan como propietario a bin y visualiza su nombre y su ruta: $ find / –name fic –type f –user bin -print

Pág. 19

SISTEMAS DE FICHEROS EN LINUX

20

LN Establece un enlace o vínculo entre dos ficheros. De manera que al actualizar uno de ellos los cambios se producirán en los dos.
Sintaxis: ln [-opciones] fichero_existente

fichero_nuevo

Opciones: Imprime el nombre del archivo antes de enlazarlo. -v

-i -s

Pide confirmación si fichero_nuevo existe en destino. Si existe fichero_nuevo y no ponemos esta opción no permite hacer el enlace. Hace enlaces simbólicos en lugar de enlaces duros

TAR Permite empaquetar y comprimir archivos para realizar copias de seguridad
Sintaxis: tar [-opciones]f [nombre_almacen] [ ficheros ... ] Opciones: Crea un contenedor. Es un fichero que con formato tar que va a contener -c otros ficheros.

-x -f nombre -z -j -M -t -v -r

Extrae o restaura ficheros desde el contenedor que se encuentra en el dispositivo predeterminado o en el especificado en la opción f. Crea el contenedor o lee de él, donde nombre es un nombre de archivo o un dispositivo especificado en /dev como fd0. Esta opción es obligatoria Comprime o descomprime el contenedor tar con gzip. Comprime o descomprime el contenedor tar con bzip2. Permite manejar ficheros tar ubicados en varios volúmenes y que la copia de seguridad sea multi-volumen. Crea una lista de los archivos almacenados en la salida estándar al mismo tiempo que crea un índice de todos los archivos almacenados. Modalidad detallada. Esto es, imprime los ficheros según se archivan Permite añadir ficheros al final de un fichero tar.

Nota: Se puede usar el comando tar con copias de seguridad progresivas usando el comando find para buscar los ficheros y posteriormente tar para almacenarlos. Ejemplos: a) Almacenar el directorio /home en un disquete:
$ tar cvf /dev/fd0 /home

b) Crear una copia de seguridad en disquete multivolumen con modalidad detallada y comprimida:
$ tar cvfzM /dev/fd0 /home
Pág. 20

SISTEMAS DE FICHEROS EN LINUX

21

c) Recuperar la copia de seguridad anterior:
$ tar xvfzM /dev/fd0

d) Crear en un fichero una copia comprimida con bzip2 del directorio home del usuario:
$ tar cvjf copia.tar.bz2 ~

Nota: 4>.

Para generar el carácter “~” pulsar la combinación de teclas <AltGr +

CPIO Permite copiar contenedores de archivos. Toma su entrada de la estándar y envia su salida a la salida estándar. (Algunas personas encuentran la sintaxis de cpio más confusa que la de tar)
Sintaxis: cpio [-opciones] [<entrada] [>salida] Opciones: Copiar fuera (output). Crea un archivo en la salida estándar. -o

-B -i

Usa bloques de 5120 bytes para entrada/salida. Copiar dentro (input). Extrae archivos de la entrada estándar, se asume que son el resultado de un acción de copiar fuera de cpio. Los archivos extraídos serán creados y copiados en el directorio en uso, conservando la estructura de árbol original. Visualiza tabla de contenidos de entrada. No crea archivos.

-t

Ejemplos: a) Copiar la lista de archivos situados en /home y subdirectorios en el dispositivo /dev/fd0.
$ ls -R /home | cpio -o >/dev/fd0

b) Extraer los archivos del dispositivo /dev/fd0 y crea un índice en el archivo especificado.
$ cpio -it </dev/fd0 >backup.idx

c) Restaurar el archivo especificado desde el dispositivo /dev/fd0 .
$ echo “/home/usuario/notas.txt” | cpio -i </dev/fd0

Ordenes básicas para la gestión de directorios
PWD Muestra el nombre del directorio actual. Sintaxis: pwd

Pág. 21

SISTEMAS DE FICHEROS EN LINUX

22

CD Cambia el directorio actual.
Sintaxis: cd [directorio] Directorio es un argumento opcional. Si no se especifica al acción por defecto es cambiar al directorio del usuario ($HOME o también representado por el carácter “~”).

MKDIR Crea uno o varios directorios especificados.
Sintaxis: mkdir [-opciones] directorio1 directorio 2 ....... Opciones: -m modo

Establece los permisos de directorio al modo especificado en el momento de creación. Crea la ruta entera.

-p

Ejemplo: Crear la siguiente ruta de una sola vez adios/pongo/por/testigo mkdir -p adios/pongo/por/testigo Establecer permisos en el momento de creación de un directorio mkdir -m 755 /win2k

RMDIR Elimina directorios que están vacíos.
Sintaxis: rmdir [-p] directorio1 directorio2 ....... Opciones: Borra los directorios especificados que quedan vacios en el directorio -p padre. Esto es, borra caminos completos Nota: Para borrar un directorio no vacio junto con todo lo que tenga debajo usar rm -r directorio.

Pág. 22

SISTEMAS DE FICHEROS EN LINUX

23

Información de los sistemas de ficheros y sus componentes
STAT Muestra la información que contiene el inodo de un fichero: nombre del fichero, tamaño, tipo, propietario y grupo, permisos, número de inodo, enlaces y distintas fechas. Como argumento del comando se le pasa el nombre del fichero del que queremos la información.
Sintaxis: stat <fichero>

DF Se usa para visualizar la cantidad de espacio disponible en cada uno de los sistemas especificados como argumentos, o de todos los sistemas montados si no hay argumentos.
Sintaxis:

df [opciones] <dispositivo>
Opciones: Permite visualizar los sistemas sin bloques, asociados , normalmente, a -a ficheros proc.

-i -T -k -t tipo -x tipo -h
Ejemplo:

Muestra usos de inodos Imprime el tipo de sistema de ficheros Muestra los tamaños en bloques de 1 Kb Muestra sólo los sistemas de ficheros del tipo especificado Excluye del listado los sistemas que coincidan con el tipo especificado Muestra el tamaño de los dispositivos en forma humanamente legible

df -ahT

Muestra todos los dispositivos que hay montados en el sistema indicando el tipo de sistema de ficheros y en forma humanamente legible.

DU Informa de la utilización de los directorios, especificados como argumentos, y de todos los subdirectorios situados debajo.
Sintaxis: du [opciones] <dispositivo> Opciones: Permite visualizar lo que ocupan todos los ficheros y directorios. -a
Pág. 23

SISTEMAS DE FICHEROS EN LINUX

24

-b -c -k -l -x -s -S -h
Ejemplo:

Muestra la información en bytes Escribe el total Muestra los tamaños en bloques de 1 Kb Contabiliza todos los archivos incluidos enlaces fuertes No busca enlaces simbólicos Solo visualiza el total Permite contar por separado sin incluir el espacio de los subdirectorios Muestra el tamaño de los dispositivos en forma humanamente legible

du -sh

Muestra el tamaño, en forma humanamente legible, del directorio actual (incluyendo sus subdirectorios).

FDFORMAT Se utiliza para dar formato de bajo nivel a un disquete. Como argumento a este comando se tiene que indicar el dispositivo que se desea formatear.
Sintaxis:
fdformat [-n] <dispositivo>

El dispositivo puede ser /dev/fd0 o /dev/fd1, que son los ficheros equivalentes a la unidad A o a la unidad B, respectivamente. El dispositivo también puede incluir la especificación del tipo de unidad (letra mayúscula para 3 ½ y minúscula para 5 ¼), de la densidad (D/d para doble y H/h para alta) y de la capacidad (360, 720, 1200, 1440 Kb). Ejemplos: a) Para una disquetera de 3 ½ de alta densidad y 1440 Kb de capacidad será:
$ fdformat /dev/fd0H1440

Nota: Puede usarse también el dispositivo /dev/fd0 pues ésta es la capacidad que se asume por defecto. b) Para un disquete de 5 ¼, doble densidad y capacidad 360 Kb sería:
$ fdformat /dev/fd0d360

Opciones: Elimina la verificación del dispositivo. -n

MKFS Sirve para construir en un dispositivo un sistema de ficheros para que posteriormente pueda ser montado por el sistema operativo.
Pág. 24

SISTEMAS DE FICHEROS EN LINUX

25

Sintaxis:
mkfs [opciones] dispositivo

El dispositivo hace referencia a la unidad de almacenamiento donde se crea el sistema de ficheros Opciones: Visualiza información sobre la creación del sistema de ficheros -V

-t tipo -c -l fichero -v

Permite determinar el tipo de sistema de ficheros que se va a crear: vfat, ext2, ext3, minix, reiserfs, etc. Comprueba bloques erróneos Guarda en fichero una lista de los bloques erróneos Presenta una salida más detallada sobre la creación de un tipo concreto de sistema de ficheros.

Ejemplos:
$ mkfs –t vfat /dev/fd0 $ mkfs –V –t ext2 /dev/hda3

El primero permite crear un sistema de ficheros fat en el disquete de la primera disquetera. El segundo crea uno de Linux en la tercera partición del primer disco duro. Nota: Para facilitar al usuario la creación de sistemas de ficheros se han implementado comandos GNU específicos para cada sistema de ficheros: mkdosfs (para vfat), mke2fs (para ext2), mke2fs -j (para ext3), etc. (Ver comandos mk* en el directorio /sbin)

FSCK Permite comprobar y reparar un sistema de ficheros.
Sintaxis:
fsck [-AV] [-t tipo] [opciones] dispositivo

Opciones: Activa el modo detallado -V

-A -t tipo -a -l -r -s
Ejemplos:

Indica que se chequeen todos los sistemas de ficheros montados Hace referencia al sistema de ficheros Repara automáticamente Lista los nombres de archivo Pide confirmación antes de reparar Lista información del superbloque

Pág. 25

SISTEMAS DE FICHEROS EN LINUX

26

$ fsck -t vfat /dev/fd0 $ fsck –A /dev/hda

El primero permite comprobar y reparar el sistema de ficheros fat del disquete. El segundo chequea todos los sistemas del disco duro primario. Nota: Se recomienda el chequeo de los dispositivos antes de montarlos.

MOUNT Para tener acceso a la información de un dispositivo éste debe montarse. La operación de montado permite conectar un sistema de ficheros con un directorio (punto de montaje) del sistema Linux. El comando mount sirve para montar dispositivos. Sintaxis:
mount [opciones] [-t tipo] [-a] [-o opc] dispo punto_montaje

Nota:Por seguridad, la operación de montar y desmontar solo la puede realizar el superusuario. Para resolver esto se puede usar la opción user en las lineas del fichero /etc/fstab. Los tipos pueden ser vfat, ext3, ntfs, xfs, reiserfs, minix y, además, para montar un CD-ROM se utiliza el tipo iso9660, para un montaje en red nfs, etc. Nota:En los sistemas Linux más nuevos no es necesario especificar el sistema de ficheros ya que mount los detecta automáticamente. Los argumentos dispo y punto_montaje hacen referencia al dispositivo y al directorio en donde se va a montar el sistema de ficheros. Este punto de montaje debe ser un directorio que exista y que además esté vacío. Opciones: Permite montar todos -a fichero /etc/fstab

los sistemas de ficheros especificados en el

-f -n -r -w
Ejemplos:

Realiza un montaje ficticio. Sirve para comprobar si el montaje se realizaría correctamente Monta el dispositivo sin escribirlo en el fichero /etc/mtab Monta el sistema de ficheros como sólo lectura Monta el sistema de ficheros para lectura/escritura (opción por defecto)

$ mount $ mount –a $ mount –r –t iso9660 /dev/cdrom $ mount –t ext2 /dev/hdb2 /temp/aux

La ejecución del comando sin argumentos muestra un listado de todos los dispositivos montados. El segundo ejemplo monta todos los dispositivos que no están montados y aparecen en el fichero /etc/fstab con la opción auto activada. El
Pág. 26

SISTEMAS DE FICHEROS EN LINUX

27

siguiente ejemplo monta como sólo de lectura el dispositivo /dev/cdrom, como un sistema de ficheros iso9660, tomando como punto de montaje el directorio especificado en el fichero /etc/fstab. (Si ese dispositivo no apareciera en el fichero /etc/fstab se produciría un error). El último ejemplo monta la segunda partición del segundo disco duro, que contiene un fs ext2, en el directorio /temp/aux. Con la opción –o se pueden incluir más opciones, por ejemplo, las que se especifican en el fichero /etc/fstab: user, dev, auto, defaults, etc. Algunas de ellas interesantes son:

-remount Intenta montar un sistema de ficheros ya montado -loop
Permite montar un fichero como si se tratara de un dispositivo

-noatime No actualiza el atributo que indica la fecha y hora de acceso al archivo. Esto acelera la ejecución del sistema de archivos (Debería usarse en medios reescribibles que tengan un número limitado de posibles reescrituras, como ocurre con los CD/DVD-RW y los dispositivos de almacenamiento Flash.)
Ejemplos:
$ mount -t iso9660 -o ro,loop ~/imagen.iso /media/cdrom

Permite montar el fichero imagen.iso en /media/cdrom y en modo solo lectura.
$ mount -w -o noatime /dev/sda1 /memstick

Monta un dispositivos flash con la opción noatime (ello reduce el número de escrituras).

UMOUNT Cuando un sistema de archivos ya no se necesita, hay que desmontarlo de la estructura de directorios utilizando el comando umount. Este comando permite desmontar un sistema de archivos montado previamente.
Sintaxis:
umount dispositivo | punto_montaje

Es importante desmontar un disco antes de extraerlo. Esto da al sistema la oportunidad de completar cualquier escritura pendiente y evita dejar inestable el acceso a las estructuras del dispositivo desmontando el sistema de archivos limpiamente. (El uso del comando umount garantiza que toda la información mantenida en memoria por el sistema operativo se escriba en el dispositivo antes de desmontarlo. Para ello tambien puede usarse el comando sync dispositivo) Para desmontar un sistema se puede utilizar, indistintamente, el dispositivo o el directorio en el que se encuentra montado. Ejemplos:
$umount /dev/fd1 $umount /mnt/win $umount -a
Pág. 27

SISTEMAS DE FICHEROS EN LINUX

28

$umount –t vfat

El primer ejemplo desmonta la unidad de disquete B. El segundo desmonta el dispositivo que hubiese sido montado en el directorio /mnt/win. La opción –a permite desmontar todas las unidades y la última opción indica desmontar todas los sistemas montados del tipo vfat.

FDISK Permite crear y manejar particiones Linux.
Sintaxis:
fdisk [opciones] dispositivo

Si no se indican opciones se arranca en modo interactivo, en cuyo caso pueden usarse los comandos: Muestra la ayuda m

p d n w l q

Visualiza la tabla de particiones Elimina una partición Crea una partición nueva Escribe la tabla de particiones en el disco Muestra la lista de tipos de sistema de ficheros soportados Sale de fdisk sin cambiar nada

Nota: El comando cfdisk es una implementación que usa las librerías ncurses para realizar las operaciones de particionamiento dentro de un entorno más amigable

Pág. 28