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