Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad Vi - Archivos en Gnu-Linux PDF
Unidad Vi - Archivos en Gnu-Linux PDF
-
DESARROLLO
Unidad 6.
Estructura de directorio en GNU/Linux
El sistema operativo Gnu/Linux posee una estructura de directorio que posee múltiples sub-directorios
los cuales cumplen diferentes funciones de almacenamiento y organización en todo el sistema. Estos
directorios se pueden clasificar en:
Estáticos: Contiene archivos que no cambian sin la intervención del administrador (root), sin
embargo, pueden ser leídos por cualquier otro usuario (/bin, /sbin, /opt, /boot, /usr/bin).
Dinámicos: Contiene archivos que son cambiantes, y pueden leerse y escribirse (algunos sólo por su
respectivo usuario y el root). Contienen configuraciones, documentos, etc. (/var/mail, /var/spool,
/var/run, /var/lock, /home).
Compartidos: Contiene archivos que se pueden encontrar en un ordenador y utilizarse en otro, o
incluso compartirse entre usuarios.
Restringidos: Contiene ficheros que no se pueden compartir, solo son modificables por el
administrador (/etc, /boot, /var/run, /var/lock). (Perseo, 2012)
Dicha estructura se representa en forma de árbol, como se muestra en la Ilustración 1:
ILUSTRACIÓN 1 - EXTRAÍDO DE (PERSEO, 2012)
Donde la raíz del árbol (/) es la base de toda la estructura de directorios y las ramas (directorios y
archivos) surgen o cuelgan de dicha base.
Algunas distribuciones de Linux modifican la estructura de directorio para adaptarlo a sus propias
necesidades. De igual forma, el estándar es el siguiente:
ILUSTRACIÓN 2 - EXTRAÍDO DE (PERSEO, 2012)
Raíz
Boot (arranque)
Dev (dispositivos)
Etc (etcétera)
Home (hogar)
Lib (bibliotecas)
Media (multimedia)
Mnt (montajes)
Opt (opcionales)
Proc (procesos)
Root (administrador)
Srv (servicios)
Tmp (temporales)
ILUSTRACIÓN 17 - EXTRAÍDO DE (PERSEO, 2012)
Es un directorio donde se almacenan ficheros temporales (por ejemplo: por el navegador de internet).
Cada vez que se inicia el sistema este directorio se limpia.
Usr (usuarios)
Var (variables)
En los sistemas Unix, cada una de las particiones/sistema de ficheros cuenta con un directorio llamado
/lost+found en el cual se almacenan ficheros y directorios (o restos de ellos) recuperados tras una
revisión del sistema de ficheros a través de la herramienta fsck, todo ello provocado habitualmente
por cuelgues del sistema, apagados forzados del equipo, cortes de corriente, etc. (Perseo, 2012)
Sistemas de Archivos
Anteriormente en la Unidad 5 hablamos sobre los sistemas de archivos, pero como sabemos, cada
sistema operativo posee su propio sistema de archivos, o su propia forma de organizar las cosas. Es
similar al mundo real, Juan el hermano de David le parece mejor guardar primero los libros en su
bolso y después desayunar para ir a la escuela, mientras que David prefiere desayunar, esperar que su
madre guarde sus libros y después ir con su hermano a la escuela.
Esto sucede, no con desayunos, ni libros, ni madres, pero si con archivos, información codificada ya
sea en formato ASCII o Binario y sobre todo datos en los sistemas operativos. Según (Certad, 2011)
Los sistemas de archivos generalmente constan de dos partes: Los metadatos o los datos acerca de los
datos, y los datos en sí mismos. La primera parte, los metadatos, suena raro por ser datos acerca de los
datos, pero es un componente muy importante de los sistemas de archivos. Consiste de información
acerca de los datos. Más precisamente incluye información como nombre de archivo, fecha de
modificación, propietario, permisos, etc.
ILUSTRACIÓN 20
Bloque de carga o Sector de Arranque: Contiene el programa de arranque (booteo) para el
sistema operativo.
Súper bloque: Mantiene la información básica sobre el sistema de archivo, tales como nombre
partición, tamaño entre otros.
Lista de i-nodos: Conjunto de i-nodos asociados a archivos o directorios.
Bloques datos: mantiene el contenido de cada archivo asociado a un i-nodo.
La mayoría de los sistemas de archivos UNIX tienen una estructura general parecida, aunque los
detalles exactos pueden variar un poco. Los conceptos centrales son superbloque, nodo-i, bloque de
datos, bloque de directorio, y bloque de indirección. El superbloque tiene información del sistema de
archivos en conjunto, como su tamaño (la información precisa aquí depende del sistema de archivos).
(The Linux Documentation Project, s.f.)
Un sistema de archivos UNIX posee las siguientes características:
Un sistema de archivos permite realizar una abstracción de los dispositivos físicos de
almacenamiento de la información para que sean tratados a nivel lógico, como una estructura
de más alto nivel y más sencilla que la estructura de su arquitectura hardware particular.
El sistema de archivos UNIX se caracteriza por:
Poseer una estructura jerárquica.
Realizar un tratamiento consistente de los datos de los archivos.
Poder crear y borrar archivos.
Permitir un crecimiento dinámico de los archivos.
Proteger los datos de los archivos.
Tratar a los dispositivos y periféricos (terminales, unidades de disco, cinta, etc.) como
si fuesen archivos.
El sistema de archivos está organizado, a nivel lógico, en forma de árbol invertido, con un
nodo principal conocido como nodo raíz (“/”). Cada nodo dentro del árbol es un directorio y
puede contener a su vez otros nodos (subdirectorios), archivos normales o archivos de
dispositivo.
Los nombres de los archivos (pathname) se especifican mediante la ruta (path), que describe
como localizar un archivo dentro de la jerarquía del sistema. La ruta de un archivo puede ser
absoluta (referida al nodo raíz) o relativa (referida al directorio de trabajo actual, CWD current
work directory). (Departamento de Lenguajes y Computación)
Teniendo en cuenta las características de los sistemas de archivos, pasemos a describir y especificar
un poco más sobre inodos o nodo-i.
Inodos
ILUSTRACIÓN 21
Según (The Linux Documentation Project, s.f.) Un nodo-i tiene toda la información de un archivo,
salvo su nombre. El nombre se almacena en el directorio, junto con el número de nodo-i. Una entrada
de directorio consiste en un nombre de archivo y el número de nodo-i que representa al archivo. El
nodo-i contiene los números de varios bloques de datos, que se utilizan para almacenar los datos en el
archivo. Sólo hay espacio para unos pocos números de bloques de datos en el nodo-i; en cualquier
caso, si se necesitan más, más espacio para punteros a los bloques de datos son colocados de forma
dinámica. Estos bloques colocados dinámicamente son bloques indirectos; el nombre indica que para
encontrar el bloque de datos, primero hay que encontrar su número en un bloque indirecto.
En general en los sistemas de archivos UNIX, con cada archivo o directorio hay un inodo asociado
representado por un número entero.
“Realmente, tampoco lo sé. Era simplemente el nombre que comenzamos a utilizar. "Índice" es lo
mejor que se me ocurre, debido a la estructura algo inusual de un sistema de ficheros que
almacenaba la información del acceso a los archivos como una lista plana en disco, dejando al
margen toda la información jerárquica de los directorios. Así el número “i” es un índice sobre la
lista, el nodo “i” es el elemento seleccionado de la lista. (En la primera edición del manual se empleó
la notación “i-nodo”; el guion fue desapareciendo poco a poco).” - Dennis Ritchie, uno de los
creadores de UNIX.
La forma o el método usado en los sistemas de archivos UNIX para crear un archivo es la siguiente
mostrada en la Ilustración 22:
ILUSTRACIÓN 22
1. Este paso, es el momento en que el usuario crea el archivo con el nombre que él cree
pertinente.
2. El usuario, una vez creado el archivo, inserta texto o un contenido que haga referencia al
nombre del archivo.
3. En este momento, el superbloque posee diferentes bloques e inodos donde algunos de ellos se
encuentran libres. Por tanto, el contenido se guarda en un bloque que tiene un número entero
como identificador y que obviamente, se encuentra libre.
4. Después de esto, se genera un metadato del archivo que contiene toda la información con
respecto a él, Tipo, Usuario, Tamaño y entre otros más, donde también se encuentra el inodo,
y este tiene el valor del identificador del bloque donde fue almacenado el contenido del
archivo y apunta hacia él.
5. Este metadato es el que en realidad se guarda en un inodo.
Ahora, en la Ilustración 23 se muestra la forma en la que accedemos al archivo y/o la información del
archivo:
Vamos a simular que un usuario realiza un comando en la terminal para ver los archivos que tiene en
el directorio doc:
[test@linux ~]$ ls doc/
ILUSTRACIÓN 23
1. Cuando el comando se ejecuta, el sistema se encarga de ir al inodo del directorio doc, en este
caso es el 101 y acceder a toda su información.
2. Después de tener toda la información, el sistema se encarga de buscar el número del bloque
donde se encuentra la información de los archivos que el contiene el cual se encuentra en el
campo inode del metadato del directorio.
3. Al tener el número del bloque, accede a él para observar toda la información de cuáles son los
archivos que lo contienen.
4. En este paso, el sistema captura los nombres de los archivos que se encuentran en el directorio
doc.
Por último, el sistema le muestra al usuario la información del o los archivos contenidos en el
directorio:
[test@linux ~]$ ls doc/
archivo
¿Y qué pasa cuando el usuario realiza el siguiente comando?
[test@linux ~]$ ls –l doc/archivo
ILUSTRACIÓN 24
Los pasos 1-2-3-4 son los mismos que se realizan al momento de hacer el comando anterior, con la
diferencia de que, el usuario quiere observar más detalles sobre el archivo.
5. Cuando el sistema encuentra los archivos, en este caso el archivo con nombre archivo,
interpreta el número del inodo donde se encuentra la información de este archivo y accede a él.
6. Después, el sistema lee la información y como salida del comando muestra lo siguiente:
Estructura de permisos
En archivos
En los sistemas operativos Linux la seguridad es muy importante y como superusuarios poseemos el
poder de asignarle permisos a nuestros archivos en caso de guardar información de manera segura sin
que otro usuario en el sistema o invitado pueda leer, escribir o ejecutar el archivo. Y para esto, existen
3 atributos básicos para los archivos:
Read (Permiso de lectura)
Write (Permiso de escritura)
Execute (Permiso de ejecución)
Read: Si un archivo tiene permiso de lectura se puede ver su contenido.
Write: Si un archivo tiene permiso de escritura se puede modificar, ya sea agregando, sobrescribiendo
o borrando su contenido.
Execute: Si un archivo tiene permiso de ejecución se puede ejecutar como su fuera un programa en el
sistema operativo. Si tenemos un programa llamado medir lo podremos ejecutar como cualquier
comando.
Pero, en el sistema operativo estos permisos tienen asignados unos caracteres por medio los cuales se
identifican:
Para los permisos de lectura se utiliza la letra r.
Para los permisos de escritura se utiliza la letra w.
Para los permisos de ejecución se utiliza la letra x.
En directorios
Los permisos en los directorios son los mismos que tienen los archivos, pero estos tienen una tarea
distinta:
Read: Cuando un directorio tiene permisos de lectura el usuario puede observar los archivos que se
encuentran dentro. Se pueden listar los archivos con ls. Pero hay que tener en cuenta que, el hecho de
que el directorio tenga permisos de lectura, no significa que podamos leer los archivos que este
directorio tenga.
Write: Cuando un directorio tiene permisos de escritura el usuario puede agregar, eliminar o mover
archivos al directorio.
Execute: Cuando un directorio tiene permisos de ejecución pasa la siguiente situación. Normalmente
cuando nosotros queremos buscar un archivo y observar su contenido en Linux digitamos el siguiente
comando:
En Linux, el superusuario tiene la opción de decir al sistema que tipos de usuario, grupos de usuario u
otras personas pueden acceder a los diferentes archivos ubicados en la estructura de directorios.
La forma en cómo se muestran los permisos de un archivo es la siguiente:
[test@linux ~]$ ls –l mono/
rw-rw-r-- 1 dann dann 45 04-22 saludo.txt
Si se observa bien, los permisos se muestran son rw-rw-r--. ¿Cómo interpreto esto?
Usuarios, grupos y otros
Cuando un archivo es creado, modificado o accedido el sistema le crea unos permisos por defecto, y
esos permisos se guardan en 3 lugares distintos:
Usuario (u)
Grupo (g)
Otros (o)
ILUSTRACIÓN 25
De esa forma, los permisos son guardados para que los usuarios, grupos de usuarios u otros tengan
ciertas restricciones con respecto al archivo o directorio. Pero en realidad los permisos no se guardan
en forma de caracteres.
Comando chmod
Representación Octal
Los permisos en GNU/Linux no solo se representan por medio de letras. Todos los sistemas
operativos poseen un lenguaje de máquina y cuando nosotros realizamos cualquier operación en el
computador en realidad la computadora o el sistema operativo lee un conjunto de ceros y unos. Por lo
tanto, los permisos se pueden representar de forma octal. El formato octal se utiliza para representar la
información de una manera simple. En la siguiente tabla muestra el significado de cada valor
numérico:
TABLA 1