Administración de archivos

Indicadores de Logros

Lectura: Administración de archivos

En Unix se emplean archivos o directorios para mantener información en medios de almacenamiento (e.g discos duros, disquettes, CD-ROM) pero también para abstraer dispositivos de hardware y mantener canales de comunicación con programas. En una red pueden emplearse directorios o archivos que estén en otro computador (ver Servicio NFS).

Para leer o escribir en un medio de almacenamiento es necesario montarlo antes en la jerarquía de directorios (see Disquetes y CDROM). Aunque antes de poderlo montar ya debe estar formateado a bajo nivel y debe contar con un sistema de archivos. Formatear un medio de almacenamiento significa prepararlo para que el hardware pueda leerlo y escribirlo, al dotarlo de un sistema de archivos se prepara para que el sistema operativo pueda organizar, leer y escribir datos.

Ubicación de archivos y directorios

Los directorios y archivos de un sistema Debian tiene una estructura estándar [1], algunos de los directorios son:

Directorio que contiene el kernel e información del arranque del sistema

Directorio que contiene programas disponibles incluso en los modos de ejecución más restringidos.

Directorio que contiene programas disponibles para usuarios finales y datos de dichos programas que no requiren modificación.

Directorio que contiene programas disponibles para todos los usuarios.

Directorio que contiene programas disponibles para el administrador.

Directorio que contiene los diccionarios.

Directorio que contiene documentación.

Directorio que contiene páginas info.

Directorio que contiene páginas man.

Directorio que contiene enlaces o complementos a la documentación disponible en /usr/share/doc.

Directorio que contiene enlaces o complementos a la documentación disponible en /usr/share/info.

Directorio que contiene enlaces o complementos a la documentación disponible en /usr/share/man.

Directorio que contiene librerías de funciones comunes a varios programas.

Directorio que contiene encabezados de algunos componentes del sistema.

Directorio que contiene fuentes de algunos programas.

Directorio que contiene datos y programas de X-Window.

Directorio que contiene datos y programas compilados por el administrador.

Directorio para montar disquettes.

Directorio para montar CD-ROM.

Directorio para montar archivos o dispositivos.

Directorio que contiene canales de comunicación con algunos programas.

Directorio que contiene librerías indispensables y módulos.

Directorio que contiene archivos de configuración.

Directorio que contiene abstracciones a los dispositivos conectados.

Directorio que mantiene información de los usuarios del sistema.

Directorio que mantiene información del administrador del sistema.

Directorio que mantiene archivos temporales, que serán borrados por el sistema operativo durante el arranque.

Directorio que mantiene archivos que deban modificarse frecuentemente.

Directorio virtual creado para intercambiar información con facilidad.

/boot

Mantiene el kernel e información indispensable para el arranque del sistema.

/bin

Mantiene unos pocos programas que estarán disponibles incluso en los modos de ejecución más restringidos (e.g. bash, cat, ls, login, ps).

/sbin

Mantiene programas disponibles sólo para el administrador incluso en los modos de ejecución más restringidos (e.g fsck, getty, halt).

/usr

Programas accequibles a usuarios finales y datos de estos programas que no requieren ser modificados (datos de sólo lectura). Algunos de sus subdirectorios son:

bin, games

Programas disponibles para todos los usuarios.

sbin

Herramientas para el administrador.

dict

Diccionarios --usados por ejemplo por ispell y look.

share

Datos de diversos programas, entre sus subdirectorios están: doc, man y info que contienen documentación; locale, i18n que mantiene información sobre internacionalización (locale); zoneinfo que mantiene información sobre zonas horarias.

doc, info, man

Enlaces o complementos a la documentación disponible en /usr/share/doc, /usr/share/info y /usr/share/man.

lib

Librerías de funciones comunes a varios programas (algunas como libc indispensables para todos).

include, src

Encabezados de algunos componentes del sistema y fuentes de algunos programas.

X11R6

Programas y datos de X-Window.

local

Otros programas y datos compilados por el administrador i.e no provienen de paquetes Debian. En algunos sistemas otros programas se ubican en /opt.

/floppy, /cdrom, /mnt

Directorios para montar disquettes, CD-ROMs y otros sistemas de archivos o dispositivos.

/proc

Diversos canales de comunicación con algunos programas (por ejemplo con el kernel).

/lib

Librerías indispensables y módulos (especialmente requeridas durante el arranque del sistema).

/etc

Archivos de configuración de diversos programas.

/dev

Abstracciones a los dispositivos conectados (o que podrían conectarse) al computador.

/home

Mantiene información de los usuarios del sistema.

/root

Mantiene información del administrador del sistema.

/tmp

Archivos temporales creados por algunos programas, que serán borrados por el sistema operativo durante el arranque.

/var

En este directorio los programas que lo requieran pueden mantener archivos que deban modificarse frecuentemente. Algunos de sus subdirectorios son: mail donde se mantienen colas de correo de cada usuario, log que mantiene bitácoras, run con archivos que mantienen los números de los procesos iniciados al arrancar el sistema, spool colas de impresión y de otros programas, tmp archivos temporales (más persistente que /tmp).

/proc

Este directorio es "virtual", no está presente en el disco, es creado por el sistema para intercambiar información con más facilidad.

El rigor de esta jerarquía hace que memorizandola sea fácil emplear diversos sistemas Unix, aunque puede no ser la más apropiada en algunas circunstancias. Para simular jerarquías diferentes cada proceso iniciado por el usuario root puede tener un directorio raíz diferente al directorio raíz real del sistema. Para establecerlo se emplea el programa chroot, que recibe como primer parámetro el nuevo directorio raíz y como segundo parámetro el programa por ejecutar. La ruta del programa se especifica con respecto al nuevo directorio raíz y para que el programa pueda ejecutarse, deben ubicarse las ibrerías que este requiera en la "nueva" jerarquía (por ejemplo en el nuevo directorio /lib).

Esta jerarquía de directorios en Linux no necesariamente está en un disco, sino sólo en memoria RAM, por eso pueden tenerse directorios como /proc y pueden montarse diversos sistemas de archivos sobre la misma jerarquía como se presenta en la siguiente sección.

Montaje y desmontaje de sistemas de archivos

Un sistema de archivos es información almacenada en un dispositivo de almacenamiento organizada siguiendo una convención, la cual permite al sistema operativo manejar la información cuando el usuario lo requiere, es decir, leer, escribir, consultar directorios, etc. Hay diversos tipos (o convenciones) de sistemas de archivos, Linux cuenta con controladores para varios tipos creados específicamente para Linux (e.g ext2, ReiserFS) así como controladores para tipos de sistemas de archivos creados para otros sistemas operativos (e.g affs, hpfs, ntfs, msdos). Los tipos que pueden emplearse con Linux [2] están incluidos en el kernel o son módulos en el subdirectorio fs del directorio con módulos de su sistema (es decir, el directorio de módulos es de la forma /lib/modules/2.2.x/fs/ remplazando x por la versión de su kernel).

Los que puede usar dependen de la forma como se haya compilado el kernel y de los módulos que estén cargados. Puede examinar los tipos que soporta su sistema viendo el contenido de /proc/filesystems y puede emplear otros tipos de sistemas de archivos cargando los módulos apropiados ---mientras sean soportados (ver Lectura Inicialización del sistema).

Aunque toda la estructura de directorios presentada en la sección anterior podría estar en un sólo sistema de archivos, es posible distribuirla en varios. Para poder emplear un sistema de archivos primero debe montarse en algún directorio con el comando mount o debe configurarse el sistema para que lo monte automáticamente durante el arranque (el primer directorio que debe montarse es la raíz / ). Para desmontar un sistema de archivos de un directorio se emplea el comando umount.

Comando utilizado para montar un dispositivo del sistema.

Comando utilizado para desmontar un dispositivo del sistema.

El programa mount sin argumentos presenta los sistemas de archivos que están montados [3], de cada uno presenta el dispositivo en el que reside, el directorio en el que está montado, el tipo de sistema de archivos y algunos parámetros del montaje, por ejemplo:


/dev/hda1 on / type ext2 (rw,errors=remount-ro,errors=remount-ro)
proc on /proc type proc (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda2 on /var type ext2 (rw)
/dev/hda3 on /home type ext2 (rw)
En el ejemplo se muestran 5 sistemas de archivos montados en los directorios /, /proc, /dev/pts, /var y /home. 3 de ellos son de tipo ext2 y residen en tres particiones de un disco duro (/dev/hda1, /dev/hda2 y /dev/hda3 ver Dispositivos y Linux), los otros dos son virtuales, es decir, no residen en dispositivo de almacenamiento alguno (son creados por el kernel). Las opciones de montaje de todos indican que pueden leerse y escribirse rw, el sistema montado en la raíz en caso de fallas será montado con permiso de sólo lectura (errors=remount-ro) y el sistema montado en /dev/pts tendrá todos sus archivos como pertenencientes al grupo 5 (tty) y permisos de escritura y lectura para el usuario y sólo de escritura para el grupo (modo 620).

Para montar un sistema de archivos se emplea:


mount -t tipo -o opciones  dispositivo directorio

Donde dispositivo es el nombre del dispositivo que contiene el sistema de archivos (e.g /dev/hda1 o /dev/fl0), tipo es el tipo del sistema de archivos [4] y directorio es la ruta donde se quiere acceder la raíz del sistema montado (si el directorio donde se monta contiene datos, estos serán escondidos mientras el nuevo sistema de archivos permanezca montado).

La información sobre un sistema de archivos, su directorio de montaje y opciones pueden especificarse en el archivo /etc/fstab. De hacerlo puede emplear

Archivo que contiene información sobre los sistemas de archivos y su directorio de montaje.


mount directorio

para montar el sistema de archivos en el directorio especificado (el resto de información debe estar en /etc/fstab). Además, por defecto, los sistemas de archivos especificados en ese archivo serán montados automáticamente durante el arranque del sistema. Un ejemplo complementario al ejemplo anterior es:


/dev/hda1   /        ext2    defaults,errors=remount-ro   0  1
/dev/hda4   none     swap    sw                           0  0
proc        /proc    proc    defaults                     0  0
/dev/fd0    /floppy  auto    defaults,user,noauto         0  0
/dev/cdrom  /cdrom   iso9660 defaults,ro,user,noauto      0  0
/dev/hda2   /var     ext2    rw                           0  2
/dev/hda3   /home    ext2    rw                           0  2
Cada línea especifica un sistema de archivos con: dispositivo, directorio donde se debe montar, tipo del sistema de archivos, opciones de montaje separadas por comas, la frecuencia de volcado (típicamente 0) y un númeo para controlar el chequeo durante el arranque con fsck. Además de los tipos soportados por su sistema puede emplear swap para especificar particiones que servirán como zona de intercambio [5]. Algunas opciones (comunes a todo sistema de archivos) son: ro para montar en modo de sólo lectura, user que indica que un usuario puede montar el sistema de archivos (por defecto sólo el administrador puede hacerlo), rw para montar en modo lectura y escritura, ro modo de sólo lectura, noauto para indicar que el sistema no debe montarse durante el arranque ---note que los directorios /floppy y cdrom no son montados automáticamente durante el arranque (ver Disquetes y CDROM). El número que controla el chequeo con fsck indica el orden en el cual hacer chequeos, 0 indica que no se debe chequear el sistema, otros números positivos especifian una prioridad (los menores son más prioritarios y los números con el mismo número de ser posible son chequeados en paralelo). Es conveniente emplear 1 con el sistema de archivos montado en la raíz y 2 para los demás que requieran chequeo.

Sistemas de archivos en Linux

Aunque cada tipo de sistema de archivos tiene características propias, Linux puede manejar varios representándolos en un módelo de sistema de archivos propio del kernel (virtual file system). Por ejemplo los tipos vfat y msdos no permiten manejar permisos ni propietarios, pero al montarlos el kernel suple la carencia con valores por defecto [6].

El sistema de archivos del kernel se organiza a partir del árbol de directorios, en este árbol se encuentran nombres de archivos y directorios. Junto con cada nombre hay un número que identifica de forma única la información y que permite ubicarla en algún dispositivo de almacenamiento ---estos números pueden examinarse con ls -i. Por este diseño pueden montarse y desmontarse diversos sistemas de archivos sobre el mismo arbol de directorios, cada proceso puede tener su propio directorio raíz (chroot) y puede haber directorios y archivos que no corresponden a información almacenada en dispositivo alguno e.g el directorio /proc.

Cada entrada del árbol de directorios es de uno de los siguientes tipos:

Comando que permite crear enlaces simbólicos.

Comando que permite crear dispositivos de comunicación entre programas.

Bit que permite que un programa se ejecute con los permisos del dueño del archivo.

Comando que permite cambiar el grupo de un conjunto de archivos.

Comando que permite cambiar el usuario y el grupo de un conjunto de archivos.

Comando que permite establecer los permisos por defecto en archivos nuevos.

Comando que permite listar los atributos especiales de los archivos especificados.

Comando que permite crear un sistema ext2 en un sistema de almacenamiento.

Comando que permite examinar y modificar a bajo nivel un sistema de archivos ext2.

Comando que permite localizar bloques con errores en un dispositivo.

Comando que verifica un sistema de archivos ext2.

regular

Se trata de infomación que está almacenada fisicamente en algún dipositivo montado, es decir programas o datos.

enlace simbólico

Vinculo al nombre de otro archivo en el arbol de directorios (este es un enlace suave, a diferencia de un enlace duro que referencia el nodo-i). Se crean con el programa ln y la opción -s. La desventaja de los enlaces suaves es que hacen el acceso a la información un poco más ineficiente que los enlaces duros, entre sus ventajas están: si se borra el archivo enlazado el enlace simbólico ya no funciona, pueden hacerse enlaces simbólicos a directorios (no pueden hacerse enlaces duros a directorios).

directorio

Subdirectorio. Se manejan con mkdir, rm -f. Cada proceso tiene un directorio de trabajo que puede administrarse con pwd y cd.

Dispositivo por caracteres

No es información almacenada en dispositivo alguno, representa un dispositivo físico que se controla enviando de a un caracter (e.g una línea serial, un modem, una terminal). Se crean con


mknod [-m modo] nombre 
 num_mayor num_menor 

Donde el modo puede especificarse con números o letras al igual que con chmod (ver Lectura Archivos y permisos), num_mayor y num_menor son números que en Linux identifican de forma única el dispositivo [7]. Algunos números de dispositivos se presenta en el siguiente capítulo, la lista completa está en las fuentes del kernel en include/linux/major.h y están documentados en Documentation/devices.txt o en Internet la documentación más reciente (que corresponde al kernel más nuevo) en: http://www.kernel.org/pub/linux/docs/device-list/devices.txt. Por ejemplo allí se documenta que el dispositivo de caracteres con número mayor 4 es un dispositivo tty (por ejemplo una de las consolas virtuales), el número menor indica de que consola virtual se trata (si es un entero entre 1 y 63), para crear una entrada en el directorio de trabajo que se refiera a la primera consola virtual con el nombre cons1:


mknod cons1 c 4 1
Dispositivo por bloques

Representa un dispositivo al que se le pueden enviar bloques de información (e.g tarjeta de video, disco duro). Para crearlo se usa mknod de la forma como se presentó para dispositivos de caracteres pero con b después del nombre en lugar de c.

Pipes y sockets

No es información almacenada en dispositivo alguno, son canales de comunicación entre programas. Desde el intérprete de comandos pueden crearse pipes con mkfifo o con mknod seguido del nombre del pipe y la letra 'p'.

Además de los permisos presentados en la sección para usuarios (ver Archivos y permisos) en Linux pueden especificarse los siguientes:

  • setuid bit: empleado con archivos ejecutables cambia la identificación del usuario por la del dueño del archivo. Con chmod se modifica empleando u y s. por ejemplo:

    
chmod u+s cvs
    
    indica que cuando el programa cvs se ejecute, debe cambiarse la identificación por la del dueño de ese programa.

    Este permiso puede ser útil para que usuarios normales ejecuten programas que requieren ser ejecutados por root y por lo mismo debe usarse con precaución.

  • setgid bit: tambíen empleado con archivos ejecutables, indica que cuando se ejecute el programa debe cambiarse al grupo del archivo. Se establece con g y s.

  • sticky bit: se establece con t, no tiene efecto sobre archivos [8], con un directorio evita que un usuario que no sea el dueño del directorio pero que tenga permiso de escritura, pueda borrar o renombrar archivos que no le pertenecen.

  • Ejecución condicionada: se establece con X en el caso de directorios es equivalente a x, en el caso de archivos también es equivalente a x sólo si el archivo al que se modifica el permiso ya tenía permiso de ejecución para algún usuario. Es útil por ejemplo:

    
chmod a+X *
    
    que da permiso de ejecución a todos los usuarios a los archivos ejecutables y a los directorios.

El administrador puede cambiar los permisos de todos los archivos del sistema y puede fijar una política inicial para la mascara de permisos que todos los usuarios tendrán. Además de chmod [9] se emplean los siguientes programas para realizar estas labores:

chgrp grupo archivos

Cambia el grupo de el o los archivos especificados. Por ejemplo


chgrp profesores notas* quiz*

cambiará todos los archivos con prefijos "notas" y "quiz" al grupo profesores. Cómo opción puede recibir -R para aplicar el cambio recursivamente en un directorio (es decir a subdirectorios también). Este programa puede ser usado por cualquier usuario para cambiar el grupo de sus archivos a otro grupo al que el mismo usuario pertenezca.

chown usuario[:grupo] archivos

Cambia el usuario (y opcionalmente el grupo) de los archivos especificados. Al igual que chgrp con la opción -R efectua el cambio recursivamente en subdirectorios. Por ejemplo


chown -R pablo:administra nomina/

Pondrá al usuario pablo como dueño de todos los archivos y subdirectorios del directorio nomina, todos quedarán con el grupo administra. También puede usarse para cambiar el grupo de un archivo (si no se especifica el nombre del usuario).

umask

Este es un comando del intérprete de comandos [10] , para establecer permisos por defecto en archivos nuevos. En bash pueden especificarse los permisos como con chmod por ejemplo:


umask u=rw,g=,o=

hará que por defecto grupo y otros usuarios no tengan permiso de lectura ni escritura, sólo el propietario del archivo los tiene [11] . Los permisos de un archivo recién creado se establecen de acuerdo al programa que lo crea y a la máscara. Puede esperar que los programas no restrinjan seguridad y creen nuevos archivos y directorios con permisos de lectura y escritura para propietario, grupo y usuarios; este comportamiento hace que umask sea una buena alternativa.

Sistema de archivos ext2

ext2 es un sistema de archivos desarrollado para y junto con Linux. Permite todas las características que el sistema de archivos virtual de Linux soporta: directorios y archivos como inodos (con permisos, dueños y tipos especiales e.g dispositivos), enlaces duros y suaves. Entre sus limites se cuentan: nombres de archivos de máximo 255 caracteres, archivos de máximo 2GB, sistema de archivos de máximo 4TB. Aunque ext2 procura evitar fragmentación, en el momento de este escrito no hay una herramienta para defragmentar [12].

Además de los atributos de archivo presentados en la sección anterior, un sistema ext2 tiene otros que pueden administrarse con los siguientes programas:

lsattr archivos

Lista los atributos especiales de los archivos especificados. Entre sus opciones -R lista recursivamente atributos de subdirectorios y su contenido, -a lista también archivos de configuración.

chattr modo archivos

Permite modificar los atributos especiales de un sistema de archivos ext2. Como modo se especifican los cambios a los permisos, cada permiso se especifica con un caracter: A - no actualizar tiempos de acceso, S - actualización sincrona (es decir escribe directamente sin emplear caches), a - permite abrir el archivo sólo para agregar datos, c - el archivo es mantenido comprimido en disco (sus datos son descomprimidos automáticamente por el kernel), d - al emplear el program dump el archivo es copiado, i - el archivo no puede ser modificado o renombrado, j - llevar bitácora de datos, s - el archivo debe sobreescribirse con ceros si es eliminado, u - en caso de ser borrado por el usuario una copia es salvada para su posible recuperación. Los permisos se especifican como primer parámetro de chattr, precediendo uno o más atributos con '+' para activar, '-' para desactivar o '=' para dejar igual.

En el disco la información se organiza en bloques (de 1024, 2048 o 4096 bytes), estos bloques se juntan en grupos (cada uno de máximo 32768 bloques), algunos de los bloques se reservan para el administrador (para que pueda operar si los usuarios llegan a llenar el sistema de archivos). Cada grupo tiene algunos bloques de control y otros de datos, entre los bloques de control está una copia del superbloque (bloque que describe el sistema de archivos completo) y una tabla de los nodos-i cuyos datos están en el bloque. Un nodo-i mantiene información sobre un archivo es decir: atributos (modo, uid, gid, fecha de acceso, fecha de creación, fecha de modificación, fecha de eliminación), cantidad de enlaces y lista de los bloques del grupo en donde se encuentra la información del archivo.

Algunas herramientas para emplear sistemas de archivos ext2 son:

mke2fs dispositivo

También llamado mkfs.ext2, permite crear un sistema ext2 en un dispositivo de almacenamiento. Recibe el nombre del dispositivo, y de no recibir opciones prepara el sistema de archivos calculando los parámetros a partir del tamaño disponible. Como opciones pueden especificarse: -c para chequear bloques con errores antes de crear sistema de archivos, opcionalmente pueden pasarse los bloques erróneos ---reportados por el programa badblocks--- en un archivo con -l arc_blerr); -L etiqueta para poner una etiqueta; puede especificar el número de nodos-i bien con -N num_nodos o con -i bytes_por_inodo ---tenga en cuenta que no puede cambiarse la cantidad especificada después de que el sistema de archivos ha sido creado; el tamaño en bytes de cada bloque puede ser 1024, 2048 o 4096 y se especifica con la opción -b tamaño; el porcentaje de bloques para el administrador puede especificarse con -m porcentaje ---por defecto 5%.

debugfs dispositivo

Permite examinar y modificar a bajo nivel un sistema de archivos ext2.

badblocks dispositivo

Localiza bloques con errores en un dispositivo y genera un reporte en un archivo.

e2fsck dispositivo

Verifica un sistema de archivos ext2. Este programa es llamado por fsck cuando se chequea un sistema con ext2.

Otros sistemas de archivos

Además de poder montar diversos tipos de sistemas de archivos hay paquetes que permiten formatear, revisar o hacer otras operaciones con algunos.

dosfstools

Este paquete incluye herramientas para sistemas de archivos FAT12, FAT16 y FAT32, i.e los programas mkfs.msdos (también llamado mkfs.vfat) y fsck.vfat (también llamado fsck.msdos o dosfsck). El primero permite crear sistemas de archivos para MS-DOS y Windows, por ejemplo para formatear la partición /dev/hdb1 con sistema FAT32:


mkfs.vfat -F 32 /dev/hdb1

fsck.msdos permite verificar una partición con sistema de archivos para MS-DOS o Windows, por ejemplo para verificar /dev/hdb1 y reparar errores automáticamente:


fsck.vfat -a /dev/hdb1

Lecturas recomendadas: Administración de archivos

Ejercicios: Administración de archivos

1. Entre los progamas del directorio /bin hay varios editores de texto. ¿Cuáles son y como opera cada uno?
2. Con el comando chroot ejecute el programa cat en un directorio diferente. Ayuda: Puede revisar las librerías que cat emplea con ldd /bin/cat (ver Administración de programas).
3. El ejemplo de mknod que referencia la primera consola virtual, en realidad referencia la entrada de teclado de la primera consola virtual. La información desplegada en la primera consola virtual puede verse en el dispositivo con número mayor 7 y número menor 1. En el directorio /dev debe existir un archivo que referencie ese dispositivo, identifiquelo y revise su contenido por ejemplo con cat o con less y la opción -f.
4. Hay un archivo en el que se almacena el mensaje de bienvenida que ven los usuarios que entran al sistema (por ejemplo al entrar desde una consola virtual o al hacer telnet), cambie el mensaje (Ayuda: el directorio /etc contiene la mayoría de archivos de configuración del sistema completo).
5. Examine las especificaciones de la CPU que tiene su sistema (Ayuda: comando more y un archivo del directorio /proc).
6. En el directorio /dev hay varios enlaces simbólicos para dispositivos, por ejemplo /dev/modem debe ser un enlace al puerto en el cual está el modem (e.g ttyS1), /dev/cdrom debe ser un enlace al dispositivo del CDROM (e.g hdc), /dev/mouse debe ser un enlace al puerto del ratón (e.g psaux o ttyS0). Revise los enlaces en su computador (si falta alguno agréguelo).

1. Entre los progamas del directorio /bin hay varios editores de texto. ¿Cuáles son y como opera cada uno?

ae, ed, vi, echo

2. Con el comando chroot ejecute el programa cat en un directorio diferente. Ayuda: Puede revisar las librerías que cat emplea con ldd /bin/cat (ver Administración de programas).

 
mkdir /root/nj; 
mkdir /root/nj/lib; 
cp /bin/cat /root/nj; 
cp /lib/libc.so.6 /root/nj/lib; 
cp /lib/ld-linux.so.2 /root/nj/lib

3. El ejemplo de mknod que referencia la primera consola virtual, en realidad referencia la entrada de teclado de la primera consola virtual. La información desplegada en la primera consola virtual puede verse en el dispositivo con número mayor 7 y número menor 1. En el directorio /dev debe existir un archivo que referencie ese dispositivo, identifiquelo y revise su contenido por ejemplo con cat o con less y la opción -f.

cat /dev/vcs1

4. Hay un archivo en el que se almacena el mensaje de bienvenida que ven los usuarios que entran al sistema (por ejemplo al entrar desde una consola virtual o al hacer telnet), cambie el mensaje (Ayuda: el directorio /etc contiene la mayoría de archivos de configuración del sistema completo).

El archivo es /etc/motd, su primera línea que contiene el nombre de la máquina y la versión del sistema es generada en cada arranque por el script /etc/init.d/bootmisc ---que es arrancado desde el nivel S---, puede evitarse la modificación poniendo en "no" la variable EDITMOD en /etc/default/rcS.

5. Examine las especificaciones de la CPU que tiene su sistema (Ayuda: comando more y un archivo del directorio /proc).

cat /proc/cpu/info

6. En el directorio /dev hay varios enlaces simbólicos para dispositivos, por ejemplo /dev/modem debe ser un enlace al puerto en el cual está el modem (e.g ttyS1), /dev/cdrom debe ser un enlace al dispositivo del CDROM (e.g hdc), /dev/mouse debe ser un enlace al puerto del ratón (e.g psaux o ttyS0). Revise los enlaces en su computador (si falta alguno agréguelo).

 
ln -s /dev/ttyS1 /dev/mouse
ln -s /dev/hdc /dev/cdrom

Notas

[1]

FHS (Filesystem Hierarchy Standard) es un estándar que establece "requerimientos y guías para ubicar archivos y directorios en sistemas estilo UNIX".

[2]

Los tipos soportados por el kernel 2.2.18, propios de otros sistemas operativos son: minix - Minix, affs Amiga Fast File System, hpfs - OS/2, ntfs - Windows NT/2000, msdos - Dos y Windows 3.1, vfat - Windows 95/98/ME algunas versiones de NT, fat_cvf - volumenes FAT comprimidos (Stacker, DoublSpace), adfs - Acorn Advanced, qnx4 - QNX, sysv - SystemV/Xenix/Coherent, ufs - BSD4.2/FreeBSD/NetBSD/OpenBSD/Solaris/NextStep, efs - Irix de Silicon Graphics, hfs - Apple. Los tipos creados con o para Linux son: ext2; umsdos - extensión a msdos para soportar nombres largos, permisos y propietarios, enlaces y archivos especiales; reiserfs, ext3, proc, usbdev. Los tipos de sistemas de archivos distribuidos son: nfs, coda, smb - protocolo SMB de Windows FWG/95/NT, shmem, ncp - Novell NetWare filesystem. Para ciertos dispositivos hay tipos especiales: iso9660 para leer CD-ROMs, romfs sistema de archivos de sólo lectura para ROM o RAM para mantener el kernel y módulos.

[3]

También puede examinar los sistemas de archivos montados en /etc/mtab o en /proc/mounts.

[4]

El tipo especial auto indica al kernel que intente determinar el sistema de archivos automáticamente. Intentará en el ordén especificado en el archivo /etc/filesystems o en su defecto /proc/filesystems. Esta opción es muy útil por ejemplo para disquettes.

[5]

Zona de intercambio o memoria swap es espacio en disco que puede emplearse como si fuera memoria RAM en caso de que esta última no sea suficiente (aunque es mucho más lento el acceso a un disco que a RAM). Las zonas de intercambio no se montan en el sistema de archivos, se especifican en /etc/fstab con tipo swap. La opción sw indica al kernel que debe emplear esa zona desde el arranque (posteriormente puede desmontarse o volverse a montar con los programas swapon y swapoff). Las zonas de intercambio no requieren ser volcadas o chequeadas con fsck.

[6]

El propietario por defecto en sistemas msdos o vfat puede establecerse con la opción uid=UID de mount, el grupo por defecto con la opción gui=GID.

[7]

En lugar de mknod también puede emplearse MAKEDEV que recibe nombres de dispositivos conocidos por Linux y crea los archivos apropiados en /dev.

[8]

En otras versiones de Unix con un programa hace que sea mantenido en memoria swap para que pueda cargarse más rápido.

[9]

El programa chmod también puede recibir la especificación de los permisos como un número octal (de 1 a 4 digitos): el primer dígito de izquierda a derecha indica permisos de otros; el segundo, en caso de haberlo, permisos del grupo; el tercero, si lo hay, permisos del usuario y el cuarto permisos de los programas. Para los digitos de usuario, grupo y otros un 0 indica ningún permiso, un 1 indica permiso de ejecución, 2 permiso de escritura y 4 permiso de lecturar; las posibles combinaciones se obtienen sumando estos valores (por ejemplo la máxima suma es 7 que concede los tres permisos). En el caso del digito de permisos especiales 1 es el bit sticky, 2 setgid y 4 setuid. Por ejemplo chmod 62 da permiso de lectura y escritura al grupo y sólo de lectura a otros. chmod 4110 prog marca como ejecutable el archivo prog para usuario y grupo y pone el bit setuid.

[10]

umask es un comando al menos de bash, csh y tcsh.

[11]

Para especificar la mascara de umask también puede emplearse un número en octal. El número indica los permisos que por defecto NO deben concederse. El ejemplo análogo al presentado en esta sección es umask 0177.

[12]

Aún cuando en el sitio de desarrollo hay planes para desarrollar una http://e2fsprogs.sourceforge.net/ext2.html.