Está en la página 1de 18

GESTION DE ARCHIVOS EN GNU/LINUX

-
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)

Descripción de la estructura de directorio

Raíz

ILUSTRACIÓN 3 - EXTRAÍDO DE (PERSEO, 2012)


Parecido a el directorio raíz “C:\” de los sistemas operativos MS-DOS y Windows. Es el nivel más
alto dentro de la jerarquía de directorios, es el contenedor de todo el sistema (accesos al sistema de
archivos, incluyendo los discos extraíbles [CD’s, DVD’s, pendrives, etc.]).
Bin (binarios)
ILUSTRACIÓN 4 - EXTRAÍDO DE (PERSEO, 2012)
Los binarios son los ejecutables de Linux (similar a los archivos .exe de Windows). Aquí tendremos
los ejecutables de los programas propios del sistema operativo.

Boot (arranque)

ILUSTRACIÓN 5 - EXTRAÍDO DE (PERSEO, 2012)


Aquí nos encontramos los archivos necesarios para el inicio de Linux, desde los archivos de
configuración del cargador de arranque (Grub – Lilo), hasta el propio kernel del sistema.

Dev (dispositivos)

ILUSTRACIÓN 6 - EXTRAÍDO DE (PERSEO, 2012)


Esta carpeta contiene los dispositivos del sistema, incluso los que no se les ha asignado (montado) un
directorio, por ejemplo micrófonos, impresoras, pendrives (memorias USB) y dispositivos especiales
(por ejemplo, /dev/null). Linux trata los dispositivos como si fueran un fichero más para facilitar el
flujo de la información.

Etc (etcétera)

ILUSTRACIÓN 7 - EXTRAÍDO DE (PERSEO, 2012)


Aquí se guardan los ficheros de configuración de los programas instalados, así como ciertos scripts
que se ejecutan en el inicio del sistema. Los valores de estos ficheros de configuración pueden ser
complementados o sustituidos por los ficheros de configuración de usuario que cada uno tiene en su
respectivo “home” (carpeta personal).

Home (hogar)

ILUSTRACIÓN 8 - EXTRAÍDO DE (PERSEO, 2012)


Aquí se encuentran los ficheros de configuración de usuario así como los archivos personales del
mismo (documentos, música, videos, etc.), a excepción del superusuario (administrador, root) el cual
cuenta con un directorio aparte. Similar a “Mis Documentos” en Windows.

Lib (bibliotecas)

ILUSTRACIÓN 9 - EXTRAÍDO DE (PERSEO, 2012)


Contiene las bibliotecas (mal conocidas como librerías) esenciales compartidas de los programas
alojados, es decir, para los binarios en /bin/ y /sbin/, las bibliotecas para el núcleo, así como módulos
y controladores (drivers).

Media (multimedia)

ILUSTRACIÓN 10 - EXTRAÍDO DE (PERSEO, 2012)


Contiene los puntos de montaje de los medios extraíbles de almacenamiento, tales como lectores de
CD-ROM, Pendrives (memoria USB), e incluso sirve para montar otras particiones del mismo disco
duro, como por ejemplo, alguna partición que sea utilizada por otro sistema operativo.

Mnt (montajes)

ILUSTRACIÓN 11 - EXTRAÍDO DE (PERSEO, 2012)


Este directorio se utiliza normalmente para montajes temporales de unidades. Es una directorio
semejante a /media, pero es usado mayoritariamente por los usuarios. Sirve para montar discos duros
y particiones de forma temporal en el sistema; no necesita contraseña, a diferencia del directorio
/media.

Opt (opcionales)

ILUSTRACIÓN 12 - EXTRAÍDO DE (PERSEO, 2012)


Contiene Paquetes de programas opcionales de aplicaciones estáticas, es decir, que pueden ser
compartidas entre los usuarios. Dichas aplicaciones no guardan sus configuraciones en este directorio;
de esta manera, cada usuario puede tener una configuración diferente de una misma aplicación, de
manera que se comparte la aplicación pero no las configuraciones de los usuarios, las cuales se
guardan en su respectivo directorio en /home.

Proc (procesos)

ILUSTRACIÓN 13 - EXTRAÍDO DE (PERSEO, 2012)


Contiene principalmente archivos de texto, sistema de archivos virtuales que documentan al núcleo y
el estado de los procesos en archivos de texto (por ejemplo, uptime, network).

Root (administrador)

ILUSTRACIÓN 14 - EXTRAÍDO DE (PERSEO, 2012)


Es el /home del administrador (solo para él). Es el único /home que no está incluido -por defecto- en
el directorio anteriormente mencionado.

Sbin (binarios del sistema)

ILUSTRACIÓN 15 - EXTRAÍDO DE (PERSEO, 2012)


Sistema de binarios especial, comandos y programas exclusivos del superusuario (root), por ejemplo,
init, route, ifup, como mount, umount, shutdown). Un usuario puede ejecutar alguno de estas
aplicaciones de comandos, si tiene los permisos suficientes, o bien, si tiene la contraseña del
superusuario.

Srv (servicios)

ILUSTRACIÓN 16 - EXTRAÍDO DE (PERSEO, 2012)


Información del sistema sobre ciertos servicios que ofrece (FTP, HTTP).

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)

ILUSTRACIÓN 18 - EXTRAÍDO DE (PERSEO, 2012)


Jerarquía secundaria de los datos de usuario; contiene la mayoría de las utilidades y aplicaciones
multiusuario, es decir, accesibles para todos los usuarios. En otras palabras, contiene los archivos
compartidos, pero que no obstante son de sólo lectura. Este directorio puede incluso ser compartido
con otras computadoras de red local.

Var (variables)

ILUSTRACIÓN 19 - EXTRAÍDO DE (PERSEO, 2012)


Archivos variables, tales como logs, archivos spool, bases de datos, archivos de e-mail temporales, y
algunos archivos temporales en general. Generalmente actúa como un registro del sistema. Ayuda a
encontrar los orígenes de un problema.
Sys (sistema)
Contiene parámetros de configuración del sistema que se está ejecutando. Datos referidos al kernel,
bus, dispositivos, firmware, fs (filesystem) y otros.

Lost Found (perdido y encontrado)

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.

Componentes de un Sistema de Archivos

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.

Características del sistema de archivos de UNIX

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.

Accediendo a los archivos

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:

[test@linux ~]$ ls –l doc/archivo


rw-rw-r-- 1 student student 128 04/22 archivo

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:

[test@linux ~]$ cat mono/saludo.txt


HOLA MUNDO!!!
Ahí podemos observar que el directorio mono posee permisos de ejecución debido a que este permiso
le permite al usuario usar el nombre del directorio cuando se está accediendo a archivos en ese
directorio, es decir, este permiso hace que el directorio pueda ser tomado por un programa para
realizar búsquedas. Lo que quiere decir que, si un directorio no tiene permisos de ejecución, no podrá
ser usado como referencia para ver su contenido por medio de la terminal.

Estructura de permisos para los usuarios del sistema

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.

Reglas de Asignación de Permisos (Numérico, Texto)

Comando chmod

El comando chmod te permite alterar/cambiar los derechos de acceso a archivos y directorios. La


forma en como esto se puede cambiar es de la siguiente forma:
Simbólicamente
Numéricamente

Cuando asignamos permisos simbólicamente se especifican con la siguiente sintaxis:

[test@linux ~]$ chmod f [user][operador][permisos]


Donde f es el nombre del archivo.
El campo [user] identifica el tipo de usuario al que se le darán los permisos, en este caso los valores
que se le dan a este campo son 4:
u – Usuario propietario del archivo
g – Usuarios pertenecientes al mismo grupo que el propietario del archivo
o – Usuarios ajenos al dueño y grupo del archivo
a – Todos los tipos de usuarios mencionados anteriormente
Cuando se omite este campo, el valor por defecto es a.
El siguiente campo [operador] identifica la forma en que se cambiarán los permisos, los valores que
se agregan son los siguientes:
+ - Añadir un permiso
- - Remover un permiso
= - Establecer un permiso único
Y por último el campo [permisos] que identifica el permiso que se le asignará al usuario especificado,
los valores son los ya conocidos:
r – Permiso de lectura
w – Permiso de escritura
x – Permiso de ejecución
s – Permiso para cambiar de propietario y grupos del archivo
El permiso s solamente puede ser brindado sobre el usuario propietario del fichero o al grupo que
pertenece el propietario del archivo.

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

Número Octal Equivalente en Texto Valor Binario


0 --- 000
1 --x 001
2 -w- 010
3 -wx 011
4 r-- 100
5 r-x 101
6 rw- 110
7 rwx 111

La sintaxis para dar o quitar permisos seria la siguiente:


[test@linux ~]$ chmod 651 README.txt
La línea de código anterior realiza la siguiente operación:
Da permisos de lectura y escritura al propietario del fichero, permisos de ejecución y lectura a los
usuarios pertenecientes al grupo y permiso de ejecución para los usuarios ajenos.
EJERCICIOS/ACTIVIDADES

- Laboratorio sobre gestión de archivos en Gnu/Linux


BIBLIOGRAFIA

Certad, C. (9 de Junio de 2011). http://fraterneo.blogspot.com/. Obtenido de


http://fraterneo.blogspot.com/: http://fraterneo.blogspot.com/2011/06/entendiendo-los-
inodos.html
Perseo. (27 de 3 de 2012). blog.desdelinux.net. Obtenido de http://blog.desdelinux.net/estructura-de-
directorios-en-linux/
The Linux Documentation Project. (s.f.). http://www.tldp.org/. Obtenido de http://www.tldp.org/:
http://www.tldp.org/pub/Linux/docs/ldp-archived/system-admin-
guide/translations/es/html/ch06s08.html

También podría gustarte