SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
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          Directorio dev             Directorio home
1 .                      2     .                      3 .
1 ..                     1     ..                     1 ..
2 dev                    34 ttyp1                   27 primi1
                                                    8
3    home                10   hda1                  98 os2
                         8                          7
4    etc

Directorio prim1         Directorio ejemplos        Directorio os2
27    .                  58     .                   98 .
8                        3                          7
3     ..                 27     ..                  3     ..
                         8
39    .profile           40      Ejempl
                         8     o1
58     ejemplo           92      Ejempl
3     s                  2     o2

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       Consola principal del sistema
/dev/fd*           /dev/fd0 --> 1ª disquetera (A:)
                   /dev/fd1 --> 2ª disquetera (B:)
/dev/hd*           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.
                   ...
/dev/ttyS*,        Puertos serie del sistema
/dev/cua*
/dev/sd*           Discos duros con interfaz SCSI. (Para las particiones se sigue la
                   misma notación que en los dispositivos IDE)
/dev/lp*           Puertos paralelo (de impresión, etc.)
/dev/null          Dispositivo nulo, cualquier dato enviado a este dispositivo se
                   pierde.
/dev/tty           Consolas virtuales (el sistema simula la conexión a varios
                   terminales)



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                                                       5

                  |------ lock
                  |------ log
                  |------ mail
                  |------ opt
                  |------ run
                  |------ spool
                  |------ tmp
                  `------ www

/bin    Binarios de los comandos esenciales (cp, rm, ls, etc.), usados por todos los
        usuarios.
/boot   Ficheros estáticos para el arranque del sistema (kernels, ficheros del gestor
        de arranque)
/dev    Ficheros de dispositivos
/etc    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.
/lib    Bibliotecas compartidas esenciales y módulos del kernel
/mnt    Directorio para montajes temporales
/opt    Paquetes software adicionales (los no incluidos en la distribución)
/sbin   Binarios esenciales para el sistema, usados por el administrador (fsck,
        mkfs, init, etc.)
/tmp    Ficheros temporales
/usr    La mayoría de programas del sistema y sus ficheros relacionados
/var    Datos variables
/home Ficheros de los usuarios
/root   Ficheros del administrador del sistema (root)
/proc   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.

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          La mayor parte de los programas de usuario
include Ficheros de cabecera para programas compilados en C
lib          Como su homónimo del raíz: bibliotecas, tanto dinámicas como estáticas
local        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)
sbin         Programas (no vitales) para el administrador
share        Ficheros de datos independientes             de   la   arquitectura:    imagenes,
             documentación (/usr/share/doc), etc.
X11R6        Directorio para el sistema X Window
games        Para juegos
src          Para fuentes de programas


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).
lib          Información variable de los programas. (Su nombre es un poco confuso,
             porque en realidad no hay ninguna biblioteca aquí)
local        Datos variables para los programas de /usr/local
lock         Ficheros de bloqueo
log          Registros del sistema, los llamados ficheros de log o de bitácora. Por
             ejemplo, los que crea el servicio syslog
opt          Datos variables para los programas de /opt
run          Datos para los programas en ejecución
spool        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.
tmp          Ficheros temporales preservados aunque el sistema sea reiniciado


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
minix                      Primer sistema de ficheros que usaba Linux
ext                        Extended File System. Creado para superar las limitaciones
                           de Minix
ext2                       Second Extended Filesystem. Una mejora de ext.
                           Actualmente es el sistema de ficheros más común de Linux
ext3                       Una mejora de ext2 que incorpora journaling2, esto es, con
                           soporte transaccional
msdos                      Usado para acceso a ficheros MS-DOS (nombres de 8+3
                           caracteres)
umsdos                     Para instalar Linux en una partición MS-DOS
vfat                       Sistema de fichero Windows 95 (FAT32). Como el msdos,
                           pero con nombres largos y algunas mejoras.
ntfs                       Sistema de ficheros de Windows NT y XP (El modo de
                                                                  .
                           escritura aún no está muy bien soportado)
nfs                        Network File System (sistema de ficheros en red)
iso9660 y udf              Sistemas de ficheros usados por los CDs y DVDs
hpfs                       Sistema de ficheros de OS/2
smbfs                      Sistema de ficheros en red usado por Samba
procfs, sysfs, tmpfs,      Sistemas de ficheros especiales, que no están destinados a
devfs                      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
ReiserFS, XFS, JFS   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


/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         /              ext2       defaults               1    1
        /dev/fd0          /mnt/floppy    vfat       noauto                 0    0
        /dev/hda1         none           ignore     0                      0    0
        /dev/cdrom        /home/cdrom    iso9660    noauto,ro              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     2     root            bin                  2048    Oct 22 21:48   bin/
drwxr-xr-x     2     root            root                 1024    May 10 00:29   boot/
drwxr-xr-x     2     root            root                 8192    Nov 3 00:44    dev/
drwxr-xr-x     41    root            root                 16384   Jan 1 1970     dosc/
drwxr-xr-x     9     root            root                 2048    Nov 3 00:44    etc/
drwxr-xr-x     4     root            root                 1024    Oct 22 21:12   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):

      ---    =     000    (0   en   octal)
      --x    =     001    (1   en   octal)
      -w-    =     010    (2   en   octal)
      -wx    =     011    (3   en   octal)
      r--    =     100    (4   en   octal)
      r-x    =     101    (5   en   octal)
      rw-    =     110    (6   en   octal)
      rwx    =     111    (7   en   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>         <máquina>(<opción1>, <opción2>, ...)
     Ejemplos:

       /tmp             192.168.168.71(ro) 192.168.168.2(rw)
       /pub             *.redes.disaic.cu(ro,root_squash,sync)
       /home/pepe/      192.168.168.*(rw,all_squash,anongid=512,anonuid=509)

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     Solicita autenticación. Activada por omisión
ro         Concede acceso de solo lectura.
rw         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       192.168.1.80:/tmp     /mnt/red
       #mount              gloin:/home/pepe      /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         /mnt/red          nfs   defaults,noauto      0    0
        gloin:/home/pepe          /home/pepe        nfs   defaults             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).
intr            Indica que son permitidas las interrupciones en las operaciones
                sobre los ficheros accedidos mediante NFS. Por defecto no es así.
tcp             indica que se utilice el protocolo TCP como protocolo de transporte,
                pues por defecto es el UDP (opción udp).
timeo=n         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

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]    origen destino
cp [-opciones]    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:
-a        Mantiene la misma estructura y atributos del archivo original.
-b         Crea copias de seguridad de archivos que van a ser sobreescritos o
           borrados.
-r         Copia directorios recursivamente, esto es, directorios y su contenido.
-u         No copia archivos si ya existen.



                                                                               Pág. 15
SISTEMAS DE FICHEROS EN LINUX                                                       16

-v        Imprime el nombre de cada archivo antes de ser copiado. Esto es,
          muesta información detallada.
-i        Pide confirmación antes de sobreescribir.
-p        Preserva los permisos, el propietario, el grupo y los tiempos de los
          ficheros originales
-f        Elimina los ficheros de destino que ya existen sin pedir confirmación
-s        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:
-i        Pide confirmación antes de sobreescribir.
-f        No pide confirmación
-b        Crea copias de seguridad de archivos que van a ser sobreescritos o
          borrados.
-u        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:
-f        Borra archivos sin formular preguntas, esto es, sin pedir confirmación.
-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.
-i        Borra archivos solicitando confirmación para cada uno antes de borrarlo.

                                                                             Pág. 16
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:
-l        Imprime el número del octeto en decimal, y los octetos diferentes en octal
          por cada diferencia encontrada.
-s           No imprime las diferencias encontradas.
-c           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.
-m              Cambia la fecha de modificación del archivo.
-c              No crea un archivo nuevo (en caso de que no exista).
-r fichref      Toma como referencia la fecha correspondiente al fichero fichref.
-t              Permite especificar la fecha como un número decimal.
decimtime
-d date         Usa la fecha date en lugar de la actual.




DIFF
Busca diferencias entre dos ficheros.

                                                                                 Pág. 17
SISTEMAS DE FICHEROS EN LINUX                                                       18

Sintaxis :
diff [-opciones] fichero-origen fichero-destino

Opciones:
-a        Trata todos los ficheros como de texto y los compara línea por línea.
-b        Ignora los espacios en blanco.
-i        No distingue mayúsculas de minúsculas.
-q        Informa sólo de si los ficheros difieren, no de los detalles de las
          diferencias
-r        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       Equivale al operador lógico AND. Es el valor que se asume
         por defecto.
–o       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:
–atime        Fecha en días –periodo de 24 horas- de acceso al fichero
number
–ctime        Fecha en días de creación del fichero
number
–group name Especifica el grupo del propietario del fichero
–inum number Número de inodo del fichero
–mtime        Fecha en días de modificación del fichero
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     Ficheros con permiso idénticos a mask
–size          Tamaño del fichero en bloques –grupo de 512 bytes- o en
number[c]      bytes si se especifica el sufijo c.
–type t        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
–user name     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          Toma todos los argumentos entre exec y el “;” como una línea de
command ;      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”.

–print         Imprime el nombre del fichero actual. Se asume por defecto salvo
               cuando se usan expresiones con efectos laterales como –exec.

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:
-v        Imprime el nombre del archivo antes de enlazarlo.
-i        Pide confirmación si fichero_nuevo existe en destino. Si existe
          fichero_nuevo y no ponemos esta opción no permite hacer el enlace.
-s        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:
-c        Crea un contenedor. Es un fichero que con formato tar que va a contener
          otros ficheros.
-x        Extrae o restaura ficheros desde el contenedor que se encuentra en el
          dispositivo predeterminado o en el especificado en la opción f.
-f        Crea el contenedor o lee de él, donde nombre es un nombre de archivo o
nombre    un dispositivo especificado en /dev como fd0. Esta opción es obligatoria
-z        Comprime o descomprime el contenedor tar con gzip.
-j        Comprime o descomprime el contenedor tar con bzip2.
-M        Permite manejar ficheros tar ubicados en varios volúmenes y que la copia
          de seguridad sea multi-volumen.
-t        Crea una lista de los archivos almacenados en la salida estándar al
          mismo tiempo que crea un índice de todos los archivos almacenados.
-v        Modalidad detallada. Esto es, imprime los ficheros según se archivan
-r        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:     Para generar el carácter “~” pulsar la combinación de teclas <AltGr +
         4>.




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:
-o        Copiar fuera (output). Crea un archivo en la salida estándar.
-B         Usa bloques de 5120 bytes para entrada/salida.
-i         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.
-t         Visualiza tabla de contenidos de entrada. No crea archivos.


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.
-p            Crea la ruta entera.

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:
-p        Borra los directorios especificados que quedan vacios en el directorio
          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:
-a        Permite visualizar los sistemas sin bloques, asociados , normalmente, a
          ficheros proc.
-i          Muestra usos de inodos
-T          Imprime el tipo de sistema de ficheros
-k          Muestra los tamaños en bloques de 1 Kb
-t tipo     Muestra sólo los sistemas de ficheros del tipo especificado
-x tipo     Excluye del listado los sistemas que coincidan con el tipo especificado
-h          Muestra el tamaño de los dispositivos en forma humanamente legible

Ejemplo:
              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:
-a        Permite visualizar lo que ocupan todos los ficheros y directorios.


                                                                                Pág. 23
SISTEMAS DE FICHEROS EN LINUX                                                          24

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

Ejemplo:
              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:
-n        Elimina la verificación del dispositivo.




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:
-V        Visualiza información sobre la creación del sistema de ficheros
-t tipo     Permite determinar el tipo de sistema de ficheros que se va a crear: vfat,
            ext2, ext3, minix, reiserfs, etc.
-c          Comprueba bloques erróneos
-l          Guarda en fichero una lista de los bloques erróneos
fichero
-v          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:
-V        Activa el modo detallado
-A          Indica que se chequeen todos los sistemas de ficheros montados
-t tipo     Hace referencia al sistema de ficheros
-a          Repara automáticamente
-l          Lista los nombres de archivo
-r          Pide confirmación antes de reparar
-s          Lista información del superbloque

Ejemplos:


                                                                               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:
-a        Permite montar todos         los sistemas de ficheros especificados en el
          fichero /etc/fstab
-f          Realiza un montaje ficticio. Sirve para comprobar si el montaje se
            realizaría correctamente
-n          Monta el dispositivo sin escribirlo en el fichero /etc/mtab
-r          Monta el sistema de ficheros como sólo lectura
-w          Monta el sistema de ficheros para lectura/escritura (opción por defecto)

Ejemplos:
     $ 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:
m          Muestra la ayuda
p           Visualiza la tabla de particiones
d           Elimina una partición
n           Crea una partición nueva
w           Escribe la tabla de particiones en el disco
l           Muestra la lista de tipos de sistema de ficheros soportados
q           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

Mais conteúdo relacionado

Mais procurados

5 the linux filesystem
5 the linux filesystem5 the linux filesystem
5 the linux filesystemcyberleon95
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativosAyuditasups
 
Sistema de archivos.
Sistema de archivos.Sistema de archivos.
Sistema de archivos.Rommel
 
Sistema de archivos y directorios - Ubuntu - Compendio
Sistema de archivos y directorios - Ubuntu - CompendioSistema de archivos y directorios - Ubuntu - Compendio
Sistema de archivos y directorios - Ubuntu - CompendioJose Diaz Silva
 
Sistemas de archivos - Introducción
Sistemas de archivos - IntroducciónSistemas de archivos - Introducción
Sistemas de archivos - IntroducciónPablo Macon
 
Linux ud6 - permisos de archivos
Linux   ud6 - permisos de archivosLinux   ud6 - permisos de archivos
Linux ud6 - permisos de archivosJavier Muñoz
 
Estructura del sistema de archivos de linux
Estructura del sistema de archivos de linuxEstructura del sistema de archivos de linux
Estructura del sistema de archivos de linuxYolanda Mora
 
Linux ud2 - comandos gestion archivos
Linux   ud2 - comandos gestion archivosLinux   ud2 - comandos gestion archivos
Linux ud2 - comandos gestion archivosJavier Muñoz
 
sistemas operativos-maestra maricarmen
sistemas operativos-maestra maricarmensistemas operativos-maestra maricarmen
sistemas operativos-maestra maricarmenKaren Vidal
 
Tema 3 Ficheros Y Permisos
Tema 3 Ficheros Y PermisosTema 3 Ficheros Y Permisos
Tema 3 Ficheros Y PermisosFresyMetal
 

Mais procurados (19)

5 the linux filesystem
5 the linux filesystem5 the linux filesystem
5 the linux filesystem
 
Estructura de directorios de Linux
Estructura de directorios de LinuxEstructura de directorios de Linux
Estructura de directorios de Linux
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Sistema de archivos.
Sistema de archivos.Sistema de archivos.
Sistema de archivos.
 
19 usuarios gruposlinuxasoitson
19 usuarios gruposlinuxasoitson19 usuarios gruposlinuxasoitson
19 usuarios gruposlinuxasoitson
 
Cli unix2
Cli unix2Cli unix2
Cli unix2
 
Sistema de archivos y directorios - Ubuntu - Compendio
Sistema de archivos y directorios - Ubuntu - CompendioSistema de archivos y directorios - Ubuntu - Compendio
Sistema de archivos y directorios - Ubuntu - Compendio
 
Sistemas de archivos - Introducción
Sistemas de archivos - IntroducciónSistemas de archivos - Introducción
Sistemas de archivos - Introducción
 
Linux ud6 - permisos de archivos
Linux   ud6 - permisos de archivosLinux   ud6 - permisos de archivos
Linux ud6 - permisos de archivos
 
Estructura del sistema de archivos de linux
Estructura del sistema de archivos de linuxEstructura del sistema de archivos de linux
Estructura del sistema de archivos de linux
 
Linux ud2 - comandos gestion archivos
Linux   ud2 - comandos gestion archivosLinux   ud2 - comandos gestion archivos
Linux ud2 - comandos gestion archivos
 
Sistemas de Archivos
Sistemas de ArchivosSistemas de Archivos
Sistemas de Archivos
 
Estructura de directorio de ubuntu
Estructura  de directorio de ubuntuEstructura  de directorio de ubuntu
Estructura de directorio de ubuntu
 
Clase3 (consola linux)
Clase3 (consola linux)Clase3 (consola linux)
Clase3 (consola linux)
 
Linux Para Asterisk
Linux Para AsteriskLinux Para Asterisk
Linux Para Asterisk
 
sistemas operativos-maestra maricarmen
sistemas operativos-maestra maricarmensistemas operativos-maestra maricarmen
sistemas operativos-maestra maricarmen
 
Herramientas
HerramientasHerramientas
Herramientas
 
Sistemas de archivos
Sistemas de archivosSistemas de archivos
Sistemas de archivos
 
Tema 3 Ficheros Y Permisos
Tema 3 Ficheros Y PermisosTema 3 Ficheros Y Permisos
Tema 3 Ficheros Y Permisos
 

Semelhante a Prueba2

Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.Alan Resendiz
 
Introducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUXIntroducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUXJose Pla
 
Linux basico-3.PDF
Linux basico-3.PDFLinux basico-3.PDF
Linux basico-3.PDFULEAM
 
Tema 3 Ficheros Y Permisos
Tema 3 Ficheros Y PermisosTema 3 Ficheros Y Permisos
Tema 3 Ficheros Y PermisosFresyMetal
 
Archivos y Directorios
Archivos y DirectoriosArchivos y Directorios
Archivos y DirectoriosMayra Almache
 
LINUX - Comandos básicos I
LINUX - Comandos básicos I LINUX - Comandos básicos I
LINUX - Comandos básicos I Pablo Macon
 
Sistema achivo unix II
Sistema achivo unix IISistema achivo unix II
Sistema achivo unix IIPablo Macon
 
Sistema achivo UNIX
Sistema achivo UNIXSistema achivo UNIX
Sistema achivo UNIXPablo Macon
 
Archivo y directorios en linux
Archivo y directorios en linuxArchivo y directorios en linux
Archivo y directorios en linuxJessica Medina
 
Guia comandos-rapidos-linux-4781
Guia comandos-rapidos-linux-4781Guia comandos-rapidos-linux-4781
Guia comandos-rapidos-linux-4781Enrique Villafuerte
 
MÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCER
MÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCERMÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCER
MÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCERnelson rodriguez huallpa
 
Archivo y directorios en linux
Archivo y directorios en linuxArchivo y directorios en linux
Archivo y directorios en linuxJessica Medina
 
Conalep tlalnepantla 2
Conalep tlalnepantla 2Conalep tlalnepantla 2
Conalep tlalnepantla 2nfgfb
 
Taller de diapositivas de gestion yadministracion de archivos y directorio1
Taller de diapositivas de gestion yadministracion de archivos y directorio1Taller de diapositivas de gestion yadministracion de archivos y directorio1
Taller de diapositivas de gestion yadministracion de archivos y directorio1Mauricio Velasquez
 

Semelhante a Prueba2 (20)

Herramientas
HerramientasHerramientas
Herramientas
 
Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.
 
Intro comandos unix
Intro comandos   unixIntro comandos   unix
Intro comandos unix
 
Introducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUXIntroducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUX
 
Linux basico-3.PDF
Linux basico-3.PDFLinux basico-3.PDF
Linux basico-3.PDF
 
Cli unix2
Cli unix2Cli unix2
Cli unix2
 
Tema 3 Ficheros Y Permisos
Tema 3 Ficheros Y PermisosTema 3 Ficheros Y Permisos
Tema 3 Ficheros Y Permisos
 
Archivos y Directorios
Archivos y DirectoriosArchivos y Directorios
Archivos y Directorios
 
LINUX - Comandos básicos I
LINUX - Comandos básicos I LINUX - Comandos básicos I
LINUX - Comandos básicos I
 
Sistema achivo unix II
Sistema achivo unix IISistema achivo unix II
Sistema achivo unix II
 
Sistema achivo UNIX
Sistema achivo UNIXSistema achivo UNIX
Sistema achivo UNIX
 
Sistemas virtual de archivos en linux.
Sistemas virtual de archivos en linux.Sistemas virtual de archivos en linux.
Sistemas virtual de archivos en linux.
 
Curso Linux Basico
Curso Linux BasicoCurso Linux Basico
Curso Linux Basico
 
Archivo y directorios en linux
Archivo y directorios en linuxArchivo y directorios en linux
Archivo y directorios en linux
 
Guia comandos-rapidos-linux-4781
Guia comandos-rapidos-linux-4781Guia comandos-rapidos-linux-4781
Guia comandos-rapidos-linux-4781
 
Sistememas de archivos
Sistememas de archivosSistememas de archivos
Sistememas de archivos
 
MÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCER
MÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCERMÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCER
MÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCER
 
Archivo y directorios en linux
Archivo y directorios en linuxArchivo y directorios en linux
Archivo y directorios en linux
 
Conalep tlalnepantla 2
Conalep tlalnepantla 2Conalep tlalnepantla 2
Conalep tlalnepantla 2
 
Taller de diapositivas de gestion yadministracion de archivos y directorio1
Taller de diapositivas de gestion yadministracion de archivos y directorio1Taller de diapositivas de gestion yadministracion de archivos y directorio1
Taller de diapositivas de gestion yadministracion de archivos y directorio1
 

Prueba2

  • 1. 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
  • 2. 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 Directorio dev Directorio home 1 . 2 . 3 . 1 .. 1 .. 1 .. 2 dev 34 ttyp1 27 primi1 8 3 home 10 hda1 98 os2 8 7 4 etc Directorio prim1 Directorio ejemplos Directorio os2 27 . 58 . 98 . 8 3 7 3 .. 27 .. 3 .. 8 39 .profile 40 Ejempl 8 o1 58 ejemplo 92 Ejempl 3 s 2 o2 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
  • 3. 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 Consola principal del sistema /dev/fd* /dev/fd0 --> 1ª disquetera (A:) /dev/fd1 --> 2ª disquetera (B:) /dev/hd* 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. ... /dev/ttyS*, Puertos serie del sistema /dev/cua* /dev/sd* Discos duros con interfaz SCSI. (Para las particiones se sigue la misma notación que en los dispositivos IDE) /dev/lp* Puertos paralelo (de impresión, etc.) /dev/null Dispositivo nulo, cualquier dato enviado a este dispositivo se pierde. /dev/tty Consolas virtuales (el sistema simula la conexión a varios terminales) 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
  • 4. 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
  • 5. SISTEMAS DE FICHEROS EN LINUX 5 |------ lock |------ log |------ mail |------ opt |------ run |------ spool |------ tmp `------ www /bin Binarios de los comandos esenciales (cp, rm, ls, etc.), usados por todos los usuarios. /boot Ficheros estáticos para el arranque del sistema (kernels, ficheros del gestor de arranque) /dev Ficheros de dispositivos /etc 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. /lib Bibliotecas compartidas esenciales y módulos del kernel /mnt Directorio para montajes temporales /opt Paquetes software adicionales (los no incluidos en la distribución) /sbin Binarios esenciales para el sistema, usados por el administrador (fsck, mkfs, init, etc.) /tmp Ficheros temporales /usr La mayoría de programas del sistema y sus ficheros relacionados /var Datos variables /home Ficheros de los usuarios /root Ficheros del administrador del sistema (root) /proc 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. 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
  • 6. SISTEMAS DE FICHEROS EN LINUX 6 bin La mayor parte de los programas de usuario include Ficheros de cabecera para programas compilados en C lib Como su homónimo del raíz: bibliotecas, tanto dinámicas como estáticas local 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) sbin Programas (no vitales) para el administrador share Ficheros de datos independientes de la arquitectura: imagenes, documentación (/usr/share/doc), etc. X11R6 Directorio para el sistema X Window games Para juegos src Para fuentes de programas 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). lib Información variable de los programas. (Su nombre es un poco confuso, porque en realidad no hay ninguna biblioteca aquí) local Datos variables para los programas de /usr/local lock Ficheros de bloqueo log Registros del sistema, los llamados ficheros de log o de bitácora. Por ejemplo, los que crea el servicio syslog opt Datos variables para los programas de /opt run Datos para los programas en ejecución spool 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. tmp Ficheros temporales preservados aunque el sistema sea reiniciado 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
  • 7. 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 minix Primer sistema de ficheros que usaba Linux ext Extended File System. Creado para superar las limitaciones de Minix ext2 Second Extended Filesystem. Una mejora de ext. Actualmente es el sistema de ficheros más común de Linux ext3 Una mejora de ext2 que incorpora journaling2, esto es, con soporte transaccional msdos Usado para acceso a ficheros MS-DOS (nombres de 8+3 caracteres) umsdos Para instalar Linux en una partición MS-DOS vfat Sistema de fichero Windows 95 (FAT32). Como el msdos, pero con nombres largos y algunas mejoras. ntfs Sistema de ficheros de Windows NT y XP (El modo de . escritura aún no está muy bien soportado) nfs Network File System (sistema de ficheros en red) iso9660 y udf Sistemas de ficheros usados por los CDs y DVDs hpfs Sistema de ficheros de OS/2 smbfs Sistema de ficheros en red usado por Samba procfs, sysfs, tmpfs, Sistemas de ficheros especiales, que no están destinados a devfs 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
  • 8. SISTEMAS DE FICHEROS EN LINUX 8 SISTEMA DESCRIPCIÓN ReiserFS, XFS, JFS 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 /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
  • 9. 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 / ext2 defaults 1 1 /dev/fd0 /mnt/floppy vfat noauto 0 0 /dev/hda1 none ignore 0 0 0 /dev/cdrom /home/cdrom iso9660 noauto,ro 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
  • 10. 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 2 root bin 2048 Oct 22 21:48 bin/ drwxr-xr-x 2 root root 1024 May 10 00:29 boot/ drwxr-xr-x 2 root root 8192 Nov 3 00:44 dev/ drwxr-xr-x 41 root root 16384 Jan 1 1970 dosc/ drwxr-xr-x 9 root root 2048 Nov 3 00:44 etc/ drwxr-xr-x 4 root root 1024 Oct 22 21:12 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
  • 11. 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): --- = 000 (0 en octal) --x = 001 (1 en octal) -w- = 010 (2 en octal) -wx = 011 (3 en octal) r-- = 100 (4 en octal) r-x = 101 (5 en octal) rw- = 110 (6 en octal) rwx = 111 (7 en 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
  • 12. 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> <máquina>(<opción1>, <opción2>, ...) Ejemplos: /tmp 192.168.168.71(ro) 192.168.168.2(rw) /pub *.redes.disaic.cu(ro,root_squash,sync) /home/pepe/ 192.168.168.*(rw,all_squash,anongid=512,anonuid=509) 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 Solicita autenticación. Activada por omisión ro Concede acceso de solo lectura. rw 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
  • 13. 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
  • 14. 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 192.168.1.80:/tmp /mnt/red #mount gloin:/home/pepe /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 /mnt/red nfs defaults,noauto 0 0 gloin:/home/pepe /home/pepe nfs defaults 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). intr Indica que son permitidas las interrupciones en las operaciones sobre los ficheros accedidos mediante NFS. Por defecto no es así. tcp indica que se utilice el protocolo TCP como protocolo de transporte, pues por defecto es el UDP (opción udp). timeo=n 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 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
  • 15. 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] origen destino cp [-opciones] 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: -a Mantiene la misma estructura y atributos del archivo original. -b Crea copias de seguridad de archivos que van a ser sobreescritos o borrados. -r Copia directorios recursivamente, esto es, directorios y su contenido. -u No copia archivos si ya existen. Pág. 15
  • 16. SISTEMAS DE FICHEROS EN LINUX 16 -v Imprime el nombre de cada archivo antes de ser copiado. Esto es, muesta información detallada. -i Pide confirmación antes de sobreescribir. -p Preserva los permisos, el propietario, el grupo y los tiempos de los ficheros originales -f Elimina los ficheros de destino que ya existen sin pedir confirmación -s 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: -i Pide confirmación antes de sobreescribir. -f No pide confirmación -b Crea copias de seguridad de archivos que van a ser sobreescritos o borrados. -u 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: -f Borra archivos sin formular preguntas, esto es, sin pedir confirmación. -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. -i Borra archivos solicitando confirmación para cada uno antes de borrarlo. Pág. 16
  • 17. 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: -l Imprime el número del octeto en decimal, y los octetos diferentes en octal por cada diferencia encontrada. -s No imprime las diferencias encontradas. -c 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. -m Cambia la fecha de modificación del archivo. -c No crea un archivo nuevo (en caso de que no exista). -r fichref Toma como referencia la fecha correspondiente al fichero fichref. -t Permite especificar la fecha como un número decimal. decimtime -d date Usa la fecha date en lugar de la actual. DIFF Busca diferencias entre dos ficheros. Pág. 17
  • 18. SISTEMAS DE FICHEROS EN LINUX 18 Sintaxis : diff [-opciones] fichero-origen fichero-destino Opciones: -a Trata todos los ficheros como de texto y los compara línea por línea. -b Ignora los espacios en blanco. -i No distingue mayúsculas de minúsculas. -q Informa sólo de si los ficheros difieren, no de los detalles de las diferencias -r 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 Equivale al operador lógico AND. Es el valor que se asume por defecto. –o 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: –atime Fecha en días –periodo de 24 horas- de acceso al fichero number –ctime Fecha en días de creación del fichero number –group name Especifica el grupo del propietario del fichero –inum number Número de inodo del fichero –mtime Fecha en días de modificación del fichero number –name pattern Patrón de búsqueda. Sigue la sintaxis de los nombres de ficheros Pág. 18
  • 19. SISTEMAS DE FICHEROS EN LINUX 19 –perm mask Ficheros con permiso idénticos a mask –size Tamaño del fichero en bloques –grupo de 512 bytes- o en number[c] bytes si se especifica el sufijo c. –type t 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 –user name 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 Toma todos los argumentos entre exec y el “;” como una línea de command ; 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”. –print Imprime el nombre del fichero actual. Se asume por defecto salvo cuando se usan expresiones con efectos laterales como –exec. 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
  • 20. 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: -v Imprime el nombre del archivo antes de enlazarlo. -i Pide confirmación si fichero_nuevo existe en destino. Si existe fichero_nuevo y no ponemos esta opción no permite hacer el enlace. -s 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: -c Crea un contenedor. Es un fichero que con formato tar que va a contener otros ficheros. -x Extrae o restaura ficheros desde el contenedor que se encuentra en el dispositivo predeterminado o en el especificado en la opción f. -f Crea el contenedor o lee de él, donde nombre es un nombre de archivo o nombre un dispositivo especificado en /dev como fd0. Esta opción es obligatoria -z Comprime o descomprime el contenedor tar con gzip. -j Comprime o descomprime el contenedor tar con bzip2. -M Permite manejar ficheros tar ubicados en varios volúmenes y que la copia de seguridad sea multi-volumen. -t Crea una lista de los archivos almacenados en la salida estándar al mismo tiempo que crea un índice de todos los archivos almacenados. -v Modalidad detallada. Esto es, imprime los ficheros según se archivan -r 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
  • 21. 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: Para generar el carácter “~” pulsar la combinación de teclas <AltGr + 4>. 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: -o Copiar fuera (output). Crea un archivo en la salida estándar. -B Usa bloques de 5120 bytes para entrada/salida. -i 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. -t Visualiza tabla de contenidos de entrada. No crea archivos. 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
  • 22. 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. -p Crea la ruta entera. 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: -p Borra los directorios especificados que quedan vacios en el directorio 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
  • 23. 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: -a Permite visualizar los sistemas sin bloques, asociados , normalmente, a ficheros proc. -i Muestra usos de inodos -T Imprime el tipo de sistema de ficheros -k Muestra los tamaños en bloques de 1 Kb -t tipo Muestra sólo los sistemas de ficheros del tipo especificado -x tipo Excluye del listado los sistemas que coincidan con el tipo especificado -h Muestra el tamaño de los dispositivos en forma humanamente legible Ejemplo: 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: -a Permite visualizar lo que ocupan todos los ficheros y directorios. Pág. 23
  • 24. SISTEMAS DE FICHEROS EN LINUX 24 -b Muestra la información en bytes -c Escribe el total -k Muestra los tamaños en bloques de 1 Kb -l Contabiliza todos los archivos incluidos enlaces fuertes -x No busca enlaces simbólicos -s Solo visualiza el total -S Permite contar por separado sin incluir el espacio de los subdirectorios -h Muestra el tamaño de los dispositivos en forma humanamente legible Ejemplo: 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: -n Elimina la verificación del dispositivo. MKFS Sirve para construir en un dispositivo un sistema de ficheros para que posteriormente pueda ser montado por el sistema operativo. Pág. 24
  • 25. 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: -V Visualiza información sobre la creación del sistema de ficheros -t tipo Permite determinar el tipo de sistema de ficheros que se va a crear: vfat, ext2, ext3, minix, reiserfs, etc. -c Comprueba bloques erróneos -l Guarda en fichero una lista de los bloques erróneos fichero -v 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: -V Activa el modo detallado -A Indica que se chequeen todos los sistemas de ficheros montados -t tipo Hace referencia al sistema de ficheros -a Repara automáticamente -l Lista los nombres de archivo -r Pide confirmación antes de reparar -s Lista información del superbloque Ejemplos: Pág. 25
  • 26. 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: -a Permite montar todos los sistemas de ficheros especificados en el fichero /etc/fstab -f Realiza un montaje ficticio. Sirve para comprobar si el montaje se realizaría correctamente -n Monta el dispositivo sin escribirlo en el fichero /etc/mtab -r Monta el sistema de ficheros como sólo lectura -w Monta el sistema de ficheros para lectura/escritura (opción por defecto) Ejemplos: $ 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
  • 27. 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
  • 28. 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: m Muestra la ayuda p Visualiza la tabla de particiones d Elimina una partición n Crea una partición nueva w Escribe la tabla de particiones en el disco l Muestra la lista de tipos de sistema de ficheros soportados q 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