miércoles, 23 de enero de 2008

tema 4 b

Gestión de archivos y directorios
UNIX tiene múltiples comandos para trabajar con ficheros y directorios: ls, rm, cp, mv, mkdir, rmdir, touch, etc.estos comandos tienen opciones que es importante conocer
ver las páginas de manual para las distintas opciones En esta sección trataremos:
los diferentes tipos de ficheros y sus atributos
los permisos de acceso para ficheros y directorios
la creación de enlaces
la localización de ficheros
la creación de particiones y sistemas de ficheros.
Tipos de ficheros y atributos La mayoría de los sistemas de ficheros definen 7 tipos de ficheros:
--Ficheros normales son los usuales; se crean con distintos programas (vi, cp, touch, etc.) y se borran con rm
Directorios contiene referencias a otros ficheros y directorios; se crean con mkdir y se borran con rmdir o rm -r
Ficheros de dispositivos de caracteres o bloques permiten la comunicación con el hardware y los periféricos; se crean con mknod y se borran con rm
caracteres: entrada/salida byte a byte
bloques: entrada salida en bloques de datos
Tuberías con nombre (named pipes) también llamados ficheros FIFO, permiten la comunicación entre procesos; se crean con mknod y se borran con rm
Sockets
comunican procesos en la red; se crean con socket() y se borran con rm o unlink()
Enlaces simbólicos también llamados enlaces blandos: apuntador a otro fichero; se crean con ln -s y se borran con rm El comando file nos permite determinar el tipo de un fichero:
para ficheros normales, distingue según contenido (fichero de imagen, pdf, ASCII, etc)
Ejemplo: $ file /dev/xconsole
/dev/xconsole: fifo (named pipe)
$ file fichero1
fichero1: PDF document, version 1.2
$ file fichero2
fichero2: Microsoft Office Document
$ file fichero3
fichero3: PNG image data, 750 x 686, 8-bit/color RGB, non-interlaced

Atributos de un fichero Podemos ver los atributos de un fichero con ls -l
Indicador de tipo
el primer carácter nos indica el tipo del fichero
Carácter Tipo
- fichero normal
d directorio
l enlace simbólico
c fichero de dispositivo de caracteres
b fichero de dispositivo de bloques
p tubería
s socket
Número de enlaces
indica el número de nombres (enlaces duros) del fichero
en el caso de un directorio, esto corresponde con el número de subdirectorios (incluidos . y ..)
Tamaño es el tamaño en bytes
con ls -lh se ve el tamaño de forma más legible
el tamaño máximo de un fichero depende del filesystem usado
Fecha
especifica la fecha de última modificación del fichero
podemos actualizarla con el comando touch
Nombre la longitud máxima del nombre es de 255 caracteres
evitar el uso de espacios y caracteres especiales como *,$, ?, ´, ", /, \
Permisos de ficheros y directorios UNIX proporciona tres operaciones básicas para realizar sobre un fichero o directorio: lectura (r), escritura (w) y ejecución (x)
Efecto sobre un fichero:
lectura (r): permite abrir y leer el fichero
escritura (w): permite modificar o truncar el fichero (para borrarlo, basta con que el directorio tenga permiso de escritura)
ejecución (x): permite ejecutar el fichero (binario o script)
Efecto sobre directorios:
ejecución (x): permite entrar en el directorio (pero no listar su contenido, ni crear ficheros o directorios)
lectura y ejecución (rx): permite listar el contenido del directorio (pero no crear ficheros o directorios)
escritura y ejecución (wx): permite crear, borrar o renombrar ficheros (pero no listar su contenido)
acceso total (rwx) Los permisos se aplican en tres categorías:
Permisos de usuario (u): asociados al propietario del fichero (por defecto, el usuario que lo creo)
Permisos de grupo (g): usuarios del grupo del propietario
Permisos de otros (o): resto de usuarios Cada usuario cae en uno solo de estas categorías:
p.e. al propietario se le aplican los permisos de usuario, aunque sean más restrictivos que los de grupo Los permisos se identifican con 9 caracteres:

Cambio de permisos El comando para modificar los permisos es chmod
Formato
chmod [-R] operación ficheros
-R indica acceso recursivo
solo el propietario del fichero (o root) puede cambiar los permisos operación indica como cambiar los permisos, y puede especificarse mediante símbolos o números:
Permisos simbólicos: formato quien op permisos
quien
especificado por u, g, o o a para todos
op
puede ser + para añadir permisos, - para quitar o = para establecer
permisos
especificados por r, w, x Ejemplos:
chmod u+x temp.dat añade permisos de ejecución para el usuario (manteniendo los permisos existentes)
chmod ug=rw,o=r temp.dat lectura y escritura para usuario y grupo y sólo lectura para el resto
chmod -R u=rwx,=r * pon, de forma recursiva, permisos totales para el usuario y sólo lectura para el resto
chmod a-x *.bak quita el permiso de ejecución para todos
chmod g=u temp.dat pon los permisos de grupo igual a los del usuario
chmod a= * quita los permisos a todos
Permisos numéricos:
operación se representa por un número octal de tres dígitos, para u, g, y o respectivamente
cada dígito vale:
4 para r, 2 para w y 1 para x
para combinaciones, se suman:
p.e. rw es 6, rx es 5 y rwx es 7 Ejemplos:
chmod 750 temp.dat permisos rwx para usuario, rx para grupo y ninguno para otros
chmod 043 temp.dat ninguno para usuario, r para grupo y wx para otros
Permisos especiales Además de rwx existen los permisos setuid/setgid (s) y sticky bit (t)
setuid y setgid están relacionados con los atributos de los procesos:
cuando un proceso se crea se le asigna un UID/GID real y un UID/GID efectivo
UID/GID real
identificadores de usuario y grupo del usuario que lanzó el proceso (y que puede matarlo)
UID/GID efectivos
determinan las operaciones que el proceso puede hacer sobre los objetos del sistema
por ejemplo, un proceso con UID efectivo 0 (root) puede manipular todos los ficheros del sistema
lo normal es que los UID/GID normal y efectivo de un proceso coincidan Podemos usar ps para ver los RUID/RGID y EUID/EGID
ps axo ruid,rgid,euid,egid,cmd para ver números
ps axo ruser,euser,rgroup,egroup,cmd para nombres Los permisos setuid/setgid permiten que un proceso lanzado por un usuario se ejecute con EUID/EGID de otro usuario
Ejemplo: el programa passwd
-rwsr-xr-x 1 root root 25872 2005-07-25 23:15 /usr/bin/passwd cuando un usuario ejecuta passwd este proceso puede modificar el fichero /etc/shadow propiedad de root Fijar setuid/setgid
Forma simbólica
chmod u+s fija setuid chmod g+s fija setgid
Forma numérica: 4000 setuid, 2000 setgid Ejemplo: $ ls -l temp
-rw-r----- 1 tomas gac 0 2005-09-22 18:07 temp
$ chmod u+s temp; ls -l temp
-rwSr----- 1 tomas gac 0 2005-09-22 18:07 temp
IMPORTANTE: es peligroso poder ejecutar procesos con permisos de otro usuario
debería evitarse el uso de ficheros setuid/setgid
sticky bit solo se usa en directorios
permite crear ficheros en el directorio (si tiene permiso de escritura), pero solo los puede borrar:
el propietario del fichero
el propietario del directorio
el superusuario Ejemplo:
$ ls -ld /tmp drwxrwxrwt 15 root root 3072 2005-09-22 19:09 /tmp/ Para activar el sticky bit
chmod +t dir
chmod 1xxx dir
Permisos por defecto Cuando se crea un fichero se cambian los permisos por defecto
estos permisos pueden modificarse con umask
umask [opciones] valor donde valor son tres dígitos que especifican los permisos para u, g, o según la tabla
Octal Permisos Octal Permisos
0 rwx 4 -wx
1 rw- 5 -w-
2 r-x 6 -- x
3 r-- 7 ---
Opciones (dependen de la versión de shell):
-S muestra los permisos por defecto
Ejemplo3
$ umask 027 $ umask -S u=rwx,g=rx,o=
Cambio de usuario/grupo Los comandos chown y chgrp permiten cambiar el propietario y grupo de un fichero
sólo root puede cambiar el propietario
el grupo puede cambiarse a otro al que pertenezcamos Formato:
chown [opciones] propietario ficheros chgrp [opciones] grupo ficheros chown [opciones] propietario:grupo ficheros Algunas opciones
-R recorre recursivamente los subdirectorios
-v (verbose) indica las operaciones que realiza
Enlaces Permiten referirse a un fichero con otro nombre
Dos tipos:
Enlaces duros: asignan otro nombre al fichero
crean una entrada en el directorio apuntando al mismo nodo-i que el fichero original
el fichero no se borra hasta que se borran todos sus enlaces duros
no se puede enlazar con ficheros de otra partición
Enlaces blandos: un fichero que apunta al original
si el fichero se borra, el enlace permanece sin apuntar a nada
no tienen problema con las particiones
Comando ln Permite crear enlaces
Formato ln [-s] [opciones] destino [enlace] ln [-s] [opciones] destino1 destino2 ... [directorio]
con -s se crean enlaces blandos
si no se pone nombre del enlace se usa el del destino
Localización de ficheros
Una tarea común de administración es la búsqueda de ficheros que verifiquen ciertas propiedades
buscar ficheros muy grandes
buscar ficheros de un determinado usuario
mostrar los ficheros que se hayan modificado en los últimos 2 días
buscar ficheros setuid/setgid El comando básico para hacer esto es find
Comando find Busca a través de la jerarquía de directorios ficheros que cumplan determinado criterio
Formato find [directorio_de_búsqueda] [expresión]
Ejemplo:
Busca desde /etc los ficheros de tipo socket
find /etc -type s
Busca desde /etc y /usr/share los ficheros que se llamen magic o passwd
find /etc /usr/share -name magic -o -name passwd
Muestra desde el directorio actual todos los ficheros de forma recursiva
find La expresión tiene los siguientes componentes:
opciones: modifican la forma de operación de find
criterio de búsqueda
acciones: especifica que hacer con los ficheros que encuentra
operadores: permiten agrupar expresiones
Opciones de find normalmente se colocan al principio de la expresión
Opción
Efecto
-maxdepth n desciende como máximo n directorios
-mindepth n empieza a buscar a partir del nivel n
-depth procesa el contenido del directorio antes que el propio directorio
-daystart para medidas con tiempo, empieza desde el principio del día actual
-mount o -xdev no pasa a otras particiones
Criterios de busqueda

Criterio Efecto
-name patrón busca ficheros que coincidan con el patrón (pueden usarse comodines, escapados)
-wholename permite incluir nombres con el path
-iname igual que name pero no distingue mayúsculas/minúsculas
-regex igual pero usa REGEXPR
-type tipo busca por tipo de fichero (b, c, d, p, l, s, f)
-size [+/-]n[bck] busca por tamaño (tamaño igual, mayor o menor que n con b=bloques, c=bytes y k=KB)
-perm [+/-]permisos busca por permisos (sin nada, permisos exactos, - todos los permisos y + alguno de los permisos)
-user nombre busca por propietario
-uid n, -gid n busca por UID/GID
-nouser, -nogroup busca ficheros con prop./grupo no válidos

Busqueda por atributos temporales
Criterio Efecto
-atime [+/-]n busca ficheros cuya fecha de acceso para lectura coincide con, es anterior a (+) o es posterior a (-) n días
-mtime [+/-]n lo mismo, pero con la fecha de última modificación del fichero
-ctime [+/-]n lo mismo, pero con la fecha en que se cambió el estado del fichero
-amin/-mmin/ lo mismo, pero ahora n representa minutos
-cmin [+/-]n

-newer file busca ficheros modificados más recientemente que file
-anewer file ficheros con último acceso más reciente que la modificación de file
-cnewer file ficheros con cambio de estado más reciente que la modificación de file
Acciones de find find permite realizar distintas acciones con los ficheros que encuentra:
mostrar su nombre (acción por defecto)
mostrar otra información del fichero
ejecutar un comando sobre el fichero
Acción Descripción
-print imprime el nombre de los ficheros que encuentra (acción por defecto)
-ls imprime el nombre de los ficheros con formato de listado largo
-exec comando \{\} \; ejecuta comando sobre los ficheros encontrados
-ok comando \{\} \; igual que -exec pero pregunta antes de ejecutar comando
-prune si directorio no desciende por el (permite ignorar directorios)los caracteres {} se refieren al fichero que find acaba de encontrar y ; indica el fin del comando
Operadores de find permiten agrupar expresiones
Operador Descripción
expr1 -a expr2 AND (expr2 no se evalúa si expr1 es falsa)
expr1 expr2 igual que -a
expr1 -o expr2 OR (expr2 no se evalúa si expr1 es cierta)
! expr1 NOT (cierto si expr falsa)
( expr1 ) agrupan expresiones (hay que escapar los paréntesis)
Ejemplos con findf

find . -maxdepth 1 -user david busca ficheros, sólo en el directorio actual, propiedad de david
find / -name \*.html -ls busca, en todo el sistema de ficheros, ficheros terminados en .html y muestra un listado largo
find /home/httpd/html ! -name \*.html busca, desde /home/httpd/html, los ficheros que no acaben en .html
find /home -size +2500k -mtime -7 busca, desde /home, ficheros más grandes de 2500KB que hayan sido modificados en los últimos 7 días
find /home -iname \*.bak -ok rm \{\} \; busca ficheros terminados en .bak (sin distinguir mayúsculas/minúsculas) y pregunta si se quiere borrar
find /home -iname \*.bak -exec mv \{\} /BAK \; busca ficheros terminados en .bak y muevelos a /BAK
find / -wholename ´/home´ -prune -o -name \*.bak -ls busca excluyendo el directorio /home
find . -perm 022 encuentra ficheros con permisos -----w--w-
find . -perm +022 encuentra ficheros escribibles por grupo O otros
find . -perm -022 encuentra ficheros escribibles por grupo Y otros
find . -perm -g=w,o=w idéntico al anterior
find /home/httpd/html -name \*.html \ > -exec grep -l expired \{\} \; lista los nombres de los .html que tengan la palabra expired Este último ejemplo funciona, pero es muy ineficiente (¿por qué?)
otra forma de hacer lo mismo
grep -l expired $(find /home/httpd/html -name \*.html) si el número de ficheros .html es muy grande grep puede tener problemas
podemos usar xargs
find /home/httpd/html -name \*.html \ > xargs grep -l expired
Otros comandos para localizar ficheros Existen otros comandos para la localización de ficheros: which, whereis, locate
Comando which muestra la localización de comandos
Formato:
which [-a] comando
Opciones:
-a muestra todas las localizaciones del comando
Ejemplo:
$ which ls /bin/ls
Comando whereis muestra la localización del binario, fuente y página de manual de un comando
Formato:
whereis [opciones] comando
Opciones:
-b/-m/-s muestra sólo el binario/manual/fuente
Ejemplo:
$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz
Para más opciones ver la página de manual
Comando locate localiza ficheros rápidamente
utiliza una base de datos donde guarda la localización de los ficheros (/var/cache/locate/locatedb)
esa base de datos la crea y actualiza el administrador con el comando updatedb
Ejemplo:
$ locate \*.bak /root/.mozilla/firefox/2gwif.default/bookmarks.bak /var/backups/group.bak /var/backups/inetd.conf.bak
Particiones y sistemas de ficheros Vimos en el tema 2 como crear particiones y sistemas de ficheros en el momento de la instalación
si añadimos un nuevo disco al sistema ya instalado deberemos crear las particiones y los sistemas de ficheros esta operación implica los siguientes pasos:
creación de particiones (comando fdisk)
creación de los sistemas de ficheros (comando mkfs)
montado de los sistemas de ficheros (comando mount)
Creación de particiones El comando para crear particiones es fdisk
Formato:
fdisk [opciones] dispositivo donde dispositivo es el dispositivo del disco (/dev/hdx en IDE, /dev/sdx para SCSI o SATA)
Debemos tener permiso de administrador para usarlo
Opciones:
-l muestra la tabla de particiones del dispositivo
fdisk se usa mediante un menú: # fdisk /dev/hdb
Para crear una partición primaria de 5 GB usamos n (new): Command (m for help): n
Por defecto, crea la partición tipo Linux (Id 83)
con l (list) vemos el tipo de particiones soportadas
para cambiar el tipo de partición se usa t (type) Command (m for help): t 1
Selected partition 1
Para que se guarden los cambios debemos usar w (write)
Otras herramientas fdisk escribe la tabla de particiones --> el contenido de los discos se pierde
Existen otras herramientas para modificar las particiones:
cfdisk
interfaz para el fdisk (también escribe la tabla de particiones)

parted
programa de GNU que permite crear, destruir, cambiar el tamaño, chequear y copiar particiones qtparted
clónico del Partition Magic para Linux (basado en libparted)
Partition Magic
programa comercial de la compañía Symantec que puede manejar diversos filesystems
Creación de los sistemas de ficheros Sobre cada partición debemos crear sistemas de ficheros con el comando mkfs
Formato:
mkfs [-V] [-t filesystem] dispositivo [n_bloques]
Opciones:
-V verbose
-t filesystem tipo de sistema de ficheros a crear (ext2, ext3, xfs, etc.)
si no se especifica se crea el por defecto del sistema (en Linux ext2)
n_bloques número de bloques usados para el sistema de ficheros (si no se pone, se usa toda la partición) mkfs es un front-end a distintos comandos, que permiten crear particiones de los tipos específicos:
mkfs.ext2 o mke2fs crea sistemas ext2
mkfs.ext3 crea sistemas ext3, equivalente a mkfs.ext2 -j
mkfs.jfs, mkfs.reiserfs, mkfs.xfs crean sistemas JFS, ReiserFS y XFS, respectivamente
mkfs.msdos, mkfs.vfat crea sistemas MS-DOS
mkswap crea un sistema de ficheros de tipo Linux swap
Cada uno de estos comandos pueden tener distintas opciones
ver las páginas de manual para más detalles
Comandos relacionados
dumpe2fs muestra información de sistemas de ficheros ext2/ext3
información sobre inodos, bloques y grupos
tune2fs permite ajustar parámetros en sistemas ext2/ext3
p.e. define el intervalo entre chequeos automáticos, convierte ext2 en ext3, etc.
e2label cambia la etiqueta de un sistema ext2/ext3
existen comandos similares para otros tipos de sistemas de ficheros, p.e. reiserfstune, jfs_tune, etc.
Partición de intercambio
Si lo que creamos es una partición de intercambio, la debemos inicializar con mkswap

# fdisk -l /dev/hdb
Disk /dev/hdb: 10.7 GB, 10737418240 bytes
16 heads, 63 sectors/track, 20805 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System
/dev/hdb1 1 9689 4883224+ 83 Linux
/dev/hdb2 9690 20805 5602464 82 Linux swap / Solaris
# mkswap /dev/hdb2
Setting up swapspace version 1, size = 5736919 kB
no label, UUID=a6c2849b-c33e-478e-8a8d-fecfe3f18f6d
Una vez creada debemos activarla con swapon # swapon /dev/hdb2
# swapon -s
Filename Type Size Used Priority
/dev/hda7 partition 377488 0 -1
/dev/hdb2 partition 5602456 0 -2
Finalmente, para que se active en el arranque, debe incluirse la entrada correspondiente en el fichero /etc/fstab /dev/hda2 none swap sw 0 0
Montado de los sistemas de ficheros Para poder acceder a los sistemas de ficheros debemos montarlos
los comandos para montar y desmontar son: mount y umount
Comando mount Permite asociar (montar) directorios a sistemas de ficheros
Ejemplo
$ mount -t ext3 /dev/hdb1 /home2
Formato
mount [opciones] [-t tipo] [disp.] [dir.]
Algunas opciones:
tipo tipo de sistema de ficheros (ext2, ext3, reiserfs, vfat, etc.); si se pone auto intenta determinar de forma automágica
-a monta los filesystems listados en /etc/fstab
-r/-w monta los sistemas de sólo lectura/escritura
-f simulación; usado con -v (verbose) para chequear
-n monta sin añadir la entrada a /etc/mtab; se usa cuando /etc es sólo lectura
-o opciones opciones de montado; formato igual al usado en el fichero fstab
Comando umount Desmonta los sistemas de ficheros
Formato
umount [opciones] directorio
Ejemplo:
$ umount /home2
Algunas opciones
-a desmonta los filesystems listados en /etc/mtab
-r si falla, intenta remontar sólo lectura
-f fuerza el desmontado
Si hay algún proceso bloqueando el filesystem, este no se puede desmontar:
usar el comando fuser -c directorio para ver el PID del proceso
Fichero /etc/fstab Al iniciar el sistema se montan los filesystems listados en /etc/fstab
cada línea del fichero tiene las siguientes columnas (file system) (mount point) (tipo) (opciones) (dump) (pass)
Ejemplo: /dev/hda9 /home ext3 defaults 0 2
Alguna de las opciones son:
rw monta tipo lectura/escritura
ro sólo lectura
auto/noauto monta/no monta con mount -a (monta/no monta al inicio)
exec/noexec Permite/no permite la ejecución de ficheros binarios en la partición
suid/nosuid permite/no permite que los bits setuid y setgid tengan efecto
dev/nodev interpreta/no interpreta dispositivos de bloques o caracteres en el filesystem
async toda la I/O se realiza de forma asíncrona
user puede montarlo un usuario (y sólo el que lo monta puede desmontarlo); implica las opciones noexec, nosuid y nodev, a menos que se fuercen (p.e. user,exec,suid,dev)
users puede montarlo/desmontarlo un usuario y el que desmonta no tiene que ser el que lo montó; implica las mismas opciones que user
defaults selecciona opciones por defecto (rw, suid, dev, exec, auto, nouser y async)
Filesystems específicos pueden tener opciones específicas:
ver el manual de mount para más detalles
Si un directorio aparece listado en el fstab puede montarse sin especificar el dispositivo:
$ mount /home
Campos dump y pass
dump
lo usa el comando dump para determinar de que filesystems hacer copias de seguridad
valor 1 o 0 según si la partición va a tener un backup controlado por dump o no (normalmente no se usa)
pass
lo usa el comando fsck para determinar el orden en que se chequean los filesystems al iniciar el sistema
si 0, el filesystem no se chequea
si > 0, los filesystems se chequean en el orden indicado por los números
si varios tienen el mismo número, se chequean en paralelo (si es posible)
normalmente / tendrá 1 y el resto 2
Fichero /etc/mtab Contiene una lista de los filesystem que están montados en el sistema
Ejemplo de fichero /etc/mtab $ cat /etc/mtab
/dev/hda1 / ext3 rw,errors=remount-ro 0 0
proc /proc proc rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs rw 0 0
/dev/hda9 /home ext3 rw 0 0
/dev/hda8 /tmp ext3 rw 0 0
/dev/hda5 /usr ext3 rw 0 0
/dev/hda6 /var ext3 rw 0 0
usbfs /proc/bus/usb usbfs rw 0 0
/dev/hdb1 /home2 ext2 rw,nodev 0 0
Autofs Sistema que permite montar los filesystems ``bajo demanda''
cuando se accede al directorio, este se monta
se desmonta automáticamente después de un tiempo de inactividad (por defecto, 5 minutos)
suele usarse para montar sistemas remotos con NFS
Ficheros de configuración:
/etc/auto.master define los puntos de montado
por cada uno de los puntos definidos, se inicia un proceso automount usando los parámetros indicados
Ejemplo de auto.master:
/home /etc/auto.home /misc /etc/auto.misc --timeout 60
Los ficheros le indican al automount los filesystems a montar
Ejemplo de auto.misc
cdrom -fstype=iso9660,ro :/dev/cdrom floppy -fstype=auto :/dev/fd0 windoz -fstype=vfat :/dev/hda1
esto monta el cdrom, el floppy y la partición /dev/hda1 en los directorios /misc/cdrom, /misc/floppy y /misc/windoz respectivamente
Para más información ver el manual de autofs y automount, el Autofs Automounter HOWTO o el Automount mini-Howto
Supermount Tipo de pseudofilesystem que para manejar dispositivos removibles (como cdroms o diskettes)
el filesystem se monta/desmonta automáticamente cuando se introduce/saca el CD o disquete
la línea correspondiente en el fstab debe ser del tipo: none /mnt/cdrom supermount dev=/dev/cdrom,fs=auto 0 0
se incluye ''de serie'' en algunas distribuciones (p.e. Mandriva)
en otras es necesario bajarse un parche para el kernel
pmount Comando que permite al usuario montar dispositivos hotpluggable (como cdroms, pendrives, etc.)
el dispositivo se monta debajo del directorio /media
no necesita estar listado en /etc/fstab
puede usar HAL (Hardware Abstraction Layer) pra obtener información de los dispositivos
gnome-volume-manager En el entorno GNOME monta automáticamente dispositivos removibles cuando se conectan o se inserta un CD
usa udev y HAL
el usuario puede configurar la acción realizada al conectarse el dispositivo (p.e. empezar a tocar un CD de musica cuando se inserta)
Chequeo del sistema de ficheros Periódicamente es necesario chequear los sistemas de ficheros
el comando básico para chequeo y reparación es fsck Al igual que mkfs, fsck es un front-end a comandos específicos para cada filesystem:
e2fsck, fsck.ext2 o fsck.ext3 chequean sistemas ext2/ext3
fsck.jfs, fsck.reiserfs, fsck.xfs para JFS, ReiserFS y XFS
fsck.msdos, fsck.vfat para sistemas MS-DOS Alguno de los errores que pueden aparecer se deben a:
Varios ficheros que usan el mismo bloque
Bloques marcados libres y ocupados simultáneamente
Número de enlaces erróneo
Nodos-i conteniendo información pero que no están en la entrada del directorio (la información se recupera en el directorio lost+found con el número de nodo-i)
Entradas del directorio que apuntan a nodos-i ilegales o vacíos
etc. Algunas de las opciones de fsck son:
-t filesystem tipo de filesystem a chequear
-A chequea los filesystems listados en /etc/fstab
-N no ejecuta; simplemente indica lo que haría
-R usado con -A no chequea el filesystem raíz Otras opciones dependen del filesystem particular
ver las páginas de manual para cada caso
Otras utilidades
du: muestra el espacio de disco usado por los ficheros y subdirectorios de un directorio
Formato:
du [opciones] [directorio]
Algunas opciones:
-a muestra valores para ficheros y directorios (por defecto, solo muestra directorios)
-b, -k tamaños en bytes/KBytes
-h salida más legible
-s muestra sólo la ocupación total
df: muestra el espacio de disco usado y disponible de los sistemas de ficheros montados
Formato:
df [opciones]
Algunas opciones:
-a muestra todos los filesystems (incluso los de tamaño 0)
-h salida más legible
-i da información sobre los inodos
-l sólo muestra filesystems locales
-T muestra el tipo de sistema de ficheros

Sistemas de ficheros con LVMun sistema LVM; algunas de sus ventajas son:
LVM proporciona mucha más flexibilidad a la hora de distribuir el espacio disponible
LVM permite mover y cambiar de tamaño los volúmenes creados bajo su control
Existen varios beneficios inmediatos por usar LVM:
Es posible aumentar y decrecer los volúmenes en caliente: esto permite redistribuir el espacio en las particiones según nos sea necesario; también se puede dejar espacio sin asignar e ir asignándolo según vaya siendo necesario
Es posible añadir espacio de almacenamiento al sistema de volúmenes: si se añade un nuevo disco a la máquina se puede añadir este espacio a LVM y hacer crecer los volúmenes que contiene para aprovechar el nuevo espacio de almacenamiento

Manejar volúmenes físicos y grupos de volúmenes
Creación de un volumen físico (PV), sobre una partición tipo Linux LVM (8e)
# pvcreate /dev/hdc1
Crear un grupo de volúmenes (VG), de nombre NuevoGrupo a partir de dos PVs
# vgcreate NuevoGrupo /dev/hda2 /dev/hdc1
Activar un grupo de volúmenes: es necesario hacer esto antes de usarlo, pero normalmente el sistema lo hace por nosotros en el arranque
# vgchange -a y NuevoGrupo
Borrar un VG (es necesario desactivarlo antes)
# vgchange -a n NuevoGrupo # vgremove NuevoGrupo
Añadir el PV /dev/hdc1 a un VG ya creado
# vgextend GrupoVolumen /dev/hdc1
Quitar PVs de un VG
# vgreduce NuevoGrupo /dev/hda2
Trabajar con volúmenes lógicos
Crear un volumen lógico (LV) de nombre testlv en el VG NuevoGrupo con un tamaño de 4.20 GB
# lvcreate -L4.20G -n testlv NuevoGrupo
Crear un volumen lógico con nombre otrotestlv, con 2 stripes (número de volúmenes físicos entre los que se reparte el LV)
# lvcreate -i2 -L1G -n otrotestlv vg
Destruir un volumen lógico (hay que desmontarlo antes)
# umount /dev/NuevoGrupo/otrotestlv # lvremove /dev/NuevoGrupo/otrotestlv
Agrandar un LV; se puede especificar el nuevo tamaño en bytes (-L) o LEs (-l), o la diferencia (para aprovecharlo es necesario alargar el sistema de ficheros que contiene)
# lvextend -L12G /dev/GrupoVolumen/homelv # lvextend -L+1G /dev/GrupoVolumen/tmplv # lvextend -l+200 /dev/GrupoVolumen/tmplv
Reducir un LV: lvreduce funciona igual que el lvextend
Información acerca de un grupo de volúmenes # vgdisplay GrupoVolumen
Información acerca de un volumen lógico # lvdisplay /dev/GrupoVolumen/homelv
Información acerca de un volumen físico # pvdisplay /dev/hda2
Una vez creados los volúmenes lógicos sólo resta crear los sistemas de ficheros y montarlos
se hace de la forma habitual (mkfs, mount)
# mkfs.ext3 /dev/GrupoVolumen/homelv # mount -t ext3 /dev/GrupoVolumen/homelv /home

Si hemos agrandado un LV debemos agrandar el filesystem
la forma de hacerlo depende de cada filesystem particular
ext2/ext3
varios comandos:
resize2fs (en Debian, paquete e2fsprogs): permite alargar o encoger un filesystem ext2/ext36
ext2resize (en Debian, paquete ext2resize): programa de GNU para alargar o encoger un filesystem ext2/ext3 que no esté montado
ext2online (en Debian, paquete ext2resize): programa de GNU para alargar o encoger un filesystem ext2/ext3 que puede estar montado y siendo usado
ReiserFS
comando resize_reiserfs o resizefs.reiserfs (en Debian, paquete progsreiserfs)
XFS
el filesystem debe montarse que sea extensible; se usa el comando xfs_growfs (en Debian, paquete xfsprogs)
JFS
como XFS el filesystem debe montarse que sea extensible; se especifica el tamaño en el proceso de remontado: