Вы находитесь на странице: 1из 37

Sistema de Archivos

Estructura de Sistema de Archivos

Clase 09
Sistemas Operativos
Contenido

 Sistema de Archivos
 Concepto de archivo
 Atributos de archivo
 Operaciones sobre los archivos
 Tipos de archivos
 Estructura de archivos
 Método de acceso: secuencial y directo
 Sistema de archivos de Linux
 FHS
Introducción
 Las condiciones esenciales para el almacenamiento
de la información a largo plazo son:
 Debe almacenar una cantidad grande de
información.
 Debe sobrevivir al concluir el proceso que la utiliza.
 Debe ser posible que varios procesos tengan
acceso concurrente a la información.
 La solución es el almacenamiento de la información en
discos y otros medios externos, en unidades llamadas:
archivos.
 Un archivo sólo debe desaparecer cuando su
propietario lo elimina explícitamente.
Sistema de Archivos
 Para la mayoría de los usuarios, el sistema de
archivos es el aspecto mas visible de un sistema
operativo. Proporciona el mecanismo para el
almacenamiento y el acceso en línea a datos y
programas que pertenecen al sistema operativo y a
todos los usuarios del sistema de computo.
 El sistema de archivos consta de dos partes distintas:
una colección de archivos, cada uno para el
almacenamiento de datos relacionados y una
estructura de directorios, que organiza y proporciona
información acerca de todos los archivos en el
sistema.
Concepto de archivo
 Colección de información relacionada y almacenada
en un dispositivo de almacenamiento secundario.
 La información de un archivo está definida por su
creador. En un archivo se pueden almacenar
diferentes tipos de información.
 Un archivo tiene cierta estructura definida de acuerdo
a su tipo. Un archivo de texto es una secuencia de
caracteres organizados. Un archivo fuente es una
secuencia de subrutinas y funciones. Un archivo
objeto es una secuencia de byte organizados en
bloques. Un archivo ejecutable es una serie de
secciones de código que el cargador puede llevar a la
memoria y ejecutarla.
Atributos del archivo :
 Nombre: Información guardada en formato legible.
 Identificador: Número único que identifica al
archivo dentro del sistema de archivos.
 Tipo: Para sistemas que admiten diferentes tipos.
 Ubicación: Puntero al dispositivo y su ubicación.
 Tamaño: Tamaño actual del archivo.
 Protección: Controla quién puede hacer la lectura,
escritura, ejecución.
 Hora, fecha e identificación de usuario: Datos para
la protección, la seguridad y la supervisión de uso.
 Para almacenar los atributos del archivo se
necesitan > 1KB y para la estructura de los
directorios > 1 MB.
Operaciones sobre los archivos :
 Un archivo es un tipo abstracto de datos, para definir
un archivo apropiadamente, se debe considerar las
operaciones que pueden realizarse con ellos.
 El sistema operativo debe proporcionar llamadas al
sistema para crear, escribir, leer, reposicionar, borrar y
truncar archivos, veamos como se llevan a cabo cada
una de las operaciones.
 Crear: Se debe encontrar el espacio para el archivo
dentro del sistema de archivos, luego es necesario
incluir una entrada en el directorio para el archivo.
 Escribir: Hacer una llamada al sistema
especificando el nombre del archivo y la
información que hay que escribir en él.
 Leer: Hacer una llamada al sistema especificando
el nombre del archivo y el lugar donde debe
colocarse el siguiente bloque del archivo.
 Reposicionarse dentro de un archivo: Se busca en
el directorio la entrada apropiada y se asigna un
valor dado a la posición actual del archivo.
 Borrar un archivo: Se busca en el directorio el
archivo, ubicado su entrada de directorio asociada,
liberamos todo el espacio del archivo, para ser
reutilizado por otro archivo, también se borra la
entrada del directorio.
 Truncar un archivo: Permite borrar solo el
contenido del archivo, manteniendo sus atributos.
El archivo se reinicializa con una longitud igual a
cero y libera todo el espacio que tenia asignado.
Tipos de archivos :
 Los SO soportan varios tipos de archivos, UNIX y
Windows tienen archivos y directorios regulares.
 Los archivos regulares son:
 Archivos ASCII, consisten en líneas de texto, se
pueden mostrar e imprimir como están, y se
pueden editar con cualquier editor de texto.
 Archivos binarios, significa que no son archivos
ASCII, al listarlos aparece un listado
incomprensible de caracteres. Tienen cierta
estructura interna conocida solo por los programas
que los utilizan.
 La técnica común consiste en incluir el tipo de archivo
como parte de su nombre, así el nombre se divide en
dos partes: un nombre y una extensión, separados por
un carácter de punto.
 Ejemplo de nombre de archivo podría ser resume.doc,
Server.java y ReaderThread.c. El sistema utiliza la
extensión para indicar el tipo del archivo y el tipo de
operaciones que pueden realizarse con dicho archivo.
 UNIX usa un número mágico almacenado al principio
de algunos archivos para indicar, el tipo del archivo,
permiten la forma de extensión del nombre del archivo,
pero no son obligatorias ni el sistema operativo
depende de ellas.
 UNIX además maneja archivos especiales de
caracteres y de bloques. Los archivos especiales de
caracteres se relacionan con la entrada/salida y se
utilizan para modelar dispositivos de E/S en serie,
tales como terminales, impresoras y redes. Los
archivos especiales de bloques se utilizan para
modelar discos.
Estructura de archivos :
 Los archivos se pueden estructurar de varias formas,
se describen tres posibilidades comunes
 El archivo de la figura (a) es una secuencia de bytes
sin estructura: el sistema operativo no sabe, ni le
importa, qué hay en el archivo. Todo lo que ve son
bytes. Cualquier significado debe ser impuesto por los
programas a nivel usuario. Tanto UNIX como Windows
utilizan esta metodología.
 Hacer que el sistema operativo considere los archivos
sólo como secuencias de bytes provee la máxima
flexibilidad. Los programas de usuario pueden colocar
cualquier cosa que quieran en sus archivos y
denominarlos de cualquier manera conveniente. El
sistema operativo no ayuda, pero tampoco estorba.
 La primera configuración en la estructura se muestra
en la figura (b). En este modelo, un archivo es una
secuencia de registros de longitud fija, cada uno con
cierta estructura interna. El concepto central para la
idea de que un archivo sea una secuencia de registros
es la idea de que la operación de lectura devuelva un
registro y la operación de escritura sobrescriba o
agregue un registro.
 Hace décadas, cuando se empleaban las tarjetas
perforadas de 80 columnas, muchos sistemas
operativos de mainframes basaban sus sistemas de
archivos, en archivos consistentes de registros de 80
caracteres, es decir, en imágenes de la tarjeta.
 El tercer tipo de estructura de archivo se muestra en
la figura (c). En esta organización, un archivo consiste
de un árbol de registros, donde no todos son de la
misma longitud; cada uno de ellos contiene un campo
llave en una posición fija dentro del registro. El árbol
se ordena con base en el campo llave para permitir
una búsqueda rápida por una llave específica.
 La operación básica aquí no es obtener el siguiente
registro, aunque eso también es posible, sino obtener
el registro con una llave específica. Para el archivo del
zoológico de la figura (c), podríamos pedir al sistema
que, por ejemplo, obtenga el registro cuya llave sea
pony, sin preocuparnos acerca de su posición exacta
en el archivo.
Método de acceso a los archivos :
 Secuencial: La información es accedida en orden,
registro a registro. El registro depende del tipo de
archivo (texto plano sería byte). Las operaciones de
lectura accederán a la información en forma
secuencial e incrementando el puntero de archivo (file
pointer). El acceso secuencial es basado en el modelo
de cinta (tape), en donde los archivos son accedidos
de a uno a la vez y en forma secuencial.
 Directo o aleatorio: La información es accedida en
cualquier orden. No existe restricciones sobre el orden
de escritura y lectura de un archivo. Es basado en el
modelo de disco de un archivo, que está estructurado
en bloques.
Sistema de archivos de Linux
 Linux utiliza una estructura de directorios jerárquica en
forma de árbol invertido, donde todo es tratado como
si fuera un archivo.
 Linux tiene una única raíz / independiente de los
dispositivos que estén conectados al computador, de
él cuelgan todos los archivos y directorios.
 Los directorios contienen 2 directorios especiales:
 El directorio actual representado por un punto .
 El directorio padre representado por dos puntos ..
 El camino o path, es la secuencia de directorios que
se debe recorrer separados por / existen:
 Camino absoluto, parte de la raiz /etc/yum.conf
 Camino relativo, parte de la ubicación del usuario
../etc/yum.conf
Tipos de sistema de archivos en Linux :
 Ext (Extended File System): Primer sistema de
archivos creado específicamente para el sistema
operativo Linux. Fue diseñado por Rémy Card para
vencer las limitaciones del sistema de archivos MINIX.
 Ext2 (Second extended filesystem): Sistema de
archivos estándar de Linux, su organización interna
no necesita defragmentación.
 Ext3 (Third extended filesystem): Sistema de
archivos con registro por diario (journaling), es el
más usado, soporta volúmenes de hasta 32 TB.
 Ext4 (Fourth extended filesystem): Es un sistema
de archivos transaccional (journaling), soporta
volúmenes de hasta 1 EB, hace menor uso del
CPU, mejoras en la velocidad de lectura y
escritura.
 ReiserFS: Desarrollado por la empresa Namesys, fue
el primer sistema de archivos con journal incluido en
un núcleo estándar de Linux, reduce la fragmentación,
posee mecanismos que le permiten trabajar con
cientos de miles de archivos, y una estructura de
archivos optimizada.
 XFS: Creado por SGI (antes Silicon Graphics Inc.) es
un sistema de archivos con journaling, tiene rápido
acceso para grandes cantidades de datos y altas
velocidades, pero lento en archivos pequeños.
 JFS: Desarrollado por IBM, inicialmente fue creado
para servidores de alto rendimiento y equipos de altas
prestaciones. Posee un eficiente journaling que le
permite trabajar cómodamente con archivos de gran
tamaño como con otros más pequeños.
FHS (Filesystem Hierarchy Standard) :
 Es una norma que define los directorios principales y
sus contenidos en el sistema operativo GNU/Linux y
otros sistemas de la familia Unix.
/ Directorio raíz.
/bin Binarios y comandos esenciales del sistema.
/boot Archivos fundamentales para el arranque.
/dev Archivos de dispositivos.
/etc Archivos de configuración.
/home Directorio para las cuentas de usuario.
/mnt Directorio de montaje de dispositivos.
/root Directorio del usuario root.
/proc Procesos y variables del núcleo del sistema.
/usr Aplicaciones de usuario.
/var Directorio de información variable, log etc.
Montaje de dispositivos en Linux :
 Procedimiento que vincula a los dispositivos físicos,
partición de disco o alguna unidad de red compartida,
con un directorio de nuestro sistema de archivos.
 El directorio utilizado para realizar los montajes es
/mnt, aunque se puede usar cualquier otro lugar.
 En la actualidad, cuando se introduce cualquier medio
extraíble (CD/DVD, memoria USB, etc) o se conecta
un dispositivo al puerto USB o FireWire, el sistema
operativo recurre a la capa de abstracción de
hardware (HAL), para que lo monte automáticamente
al directorio especial /media del sistema de archivos.
 El archivo /etc/fstab contiene la tabla de particiones
que el sistema monta automáticamente durante el
arranque.
Usuarios y grupos
 Usuarios: Son cuentas que permiten la identificación
y el acceso a una sesión con el sistema, cada usuario
tiene un User ID (UID) único. Existen los usuarios:

 Usuario root: Es el superusuario o administrador, usa


el símbolo # en el terminal
 Tiene el user ID (UID) = 0
 Tiene todos los privilegios sobre el sistema y
acceso total a todos los archivos y directorios
 Administra las cuentas de usuarios
 Ejecuta tareas de mantenimiento del sistema
 Puede detener el sistema, instala software,
modificar o reconfigurar el kernel, controladores,
etc
 Usuarios especiales: Conocidos como usuarios del
sistema, tenemos: bin, daemon, adm, lp, sync,
shutdown, mail, operator, squid, apache, etc
 Tienen un UID entre 1 y 1000
 Se crean automáticamente durante la instalación
de Linux o de alguna otra aplicación
 No tienen contraseñas, porque no inician sesiones
 Cada cuenta asume distintos privilegios del root

 Usuarios normales: Son los usuarios creados por el


administrador, usa el símbolo $ en el terminal
 Tienen un UID mayor igual a 1000
 Tienen sus propios directorios de trabajo dentro del
directorio /home con todos los privilegios
 Pueden personalizar su entorno de trabajo
 Grupos: Contiene cuentas de usuarios, con el fin de
otorgarles permisos sobre archivos y directorios de
una sola vez
 Cada grupo tiene un Group ID (GID) único
 Cuando se crea un usuario, por defecto se le
asigna un grupo del mismo nombre que el sistema
lo crea
Archivos de configuración
 login.defs: Archivo de configuración, que otorgará los
valores por defecto al crear un usuario, está ubicado
en la carpeta /etc

 passwd: Ubicado en el directorio /etc, guarda cuentas


de usuarios, tiene 7 campos de datos, que contienen
usuario:clave:UID:GID:comentario:directorio:shell
Ejemplo: root:x:0:0:root:/root:/bin/bash

 group: Tiene a los grupos y los usuarios miembros,


está en el directorio /etc, consta de 4 campos
grupo:clave:GID:usuarios
Ejemplo: root:x:0:root
 shadow: Guarda claves de usuarios en forma cifrada,
ubicado en el directorio /etc, es extensión del archivo
passwd. Los datos están agrupados en 9 campos
usuario:contraseña:d1:d2:d3:d4:d5:d6:reservado
 usuario: login o cuenta de usuario (el mismo de /etc/passwd)
 contraseña: contraseña del usuario, se encuentra cifrada
 d1: días desde el 1/1/1970 hasta último cambio de la contraseña
 d2: días que deben pasar para poder cambiar la contraseña
 d3: días que deben pasar para que caduque la contraseña y deba
ser cambiada
 d4: días que avisará el sistema de la caducidad de la contraseña
 d5: días con contraseña caducada antes de deshabilitar la cuenta
 d6: días desde el 1/1/1970 y el día en que se deshabilitó la cuenta
 reservado: campo reservado
Ejemplo:
root:$1$kQ3NywEd$FZpStLFpYpbQkLXHDjI5R1:15962:0:99999:7:::
Permisos de archivos y carpetas
 Cuando listamos un directorio, obtenemos:
- rw- rw- r-- 1 usr3 usr3 1090 may 18 14:15 dir2.txt
- rw- rw- r-- 1 usr3 usr3 578 may 18 15:00 lista
d rwx rwx r-x 2 usr3 usr3 4096 may 18 15:05 zeta
 Las columnas representan: tipo de archivo, 3 grupos
de permisos (c/u con rwx), sigue (1/2) el número de
enlaces al archivo, luego está el propietario y el grupo
al que pertenece el archivo, las siguientes indican el
tamaño, la fecha y hora de la última modificación,
finalmente el nombre del archivo o directorio
 Los permisos del archivo, están en 3 grupos, los tres
primeros representan permisos para el propietario del
archivo, los tres siguientes son permisos para el grupo
del archivo y los tres últimos son los permisos para los
demás usuarios.
 El significado y valor de las letras son:
o r = read (Lectura), tiene el valor de 4
o w = write (Escritura), tiene el valor de 2
o x = execution (Ejecución), tiene el valor de 1

Ejemplo: - rw- rw- r-- 1 usr3 usr3 1090 may 18 14:15 dir2.txt
d rwx rwx r-x 2 usr3 usr3 4096 may 18 15:05 zeta
 El archivo dir2.txt tiene los permisos: rw- rw- r--
 Significa que el propietario y el grupo usr3, tienen
permisos de lectura y escritura (rw-)
 Los demás solo tienen permiso de lectura (r--)
 Reemplazando sus valores tendremos 664
 Para el directorio zeta se tiene: rwx rwx r-x por lo
que su representación numérica será 775
Comandos Linux
 Comando file : Permite determinar el tipo de archivo.
Sintaxis: # file [-i] archivo

 Comando stat : Muestra información completa acerca


de archivos o sistemas de archivos.
Sintaxis: # stat archivo

 Comando touch : Permite crear un archivo vacío y


también cambiar la fecha de un archivo.
Sintaxis: # touch [opción] archivo
Opciones: -a Cambia la fecha de acceso del archivo
-m Cambia la fecha de modificación del archivo
-t SSAAMMDDhhmm.ss Especifica la nueva fecha
 Comando useradd : Crea cuentas de usuarios.
Sintaxis: # useradd [opción] cuenta
Opciones:
-c Agrega comentario a la cuenta de usuario
-d Asigna directorio de trabajo o home al usuario
-u Asigna un UID al usuario
-s Asigna shell al usuario, por defecto es bash
-g Asigna número de grupo principal (GID) al usuario
-G Asigna los grupos a los que pertenecerá el usuario
-e Asigna fecha de expiración a cuenta (año-mes-día)
-r Crea una cuenta del sistema, su UID será menor al definido
en /etc/login.defs y no se crea el directorio de inicio
Ejemplo:
# useradd user01
# useradd -c "Usuario de prueba" -G centos user02
 Comando passwd : Asigna/cambia la contraseña.
Sintaxis: # passwd cuenta

 Comando usermod : Modifica una cuenta de usuario.


Sintaxis: # usermod [opción] cuenta
Opciones:
-l Cambia el login o nombre del usuario
-L Bloquea la cuenta del usuario, no se permite el ingreso al
sistema. No borra solo lo deshabilita.
-U Desbloquea una cuenta previamente bloqueada

 Comando userdel : Elimina cuenta de usuario.


Sintaxis: # userdel [opción] cuenta
Opción: -r Elimina inclusive el directorio de trabajo
 Comando groupadd : Crea grupos al sistema.
Sintaxis: # groupadd [opción] grupo
Opción: -g Asigna un GID al grupo

 Comando groupmod : Modifica a un grupo.


Sintaxis: # groupmod [opción] grupo
Opción: -n <nuevo_grupo> Cambia nombre del grupo

 Comando groupdel : Elimina grupos del sistema.


Sintaxis: # groupdel grupo

 Comando chmod : Cambia permiso de archivo(s) o


carpeta(s)
Sintaxis: # chmod [-R] [permisos] archivo/carpeta
 Comando chown : Cambia al propietario y/o grupo de
un archivo(s) o carpeta(s).
Sintaxis:
# chown [-R] [propietario:grupo] archivo/carpeta

 Otros comando:
# id usuario Muestra el UID y GID del usuario
# groups usuario Muestra a que grupos pertenece
# su - usuario Permite cambiar de usuario
# users Lista usuarios conectados
#w Lista usuarios conectados y que hacen
# who Lista usuarios conectados al sistema
# whoami Indica nombre del usuario actual
Bibliografía
 Sistemas Operativos Modernos.
Andrew S. Tanenbaum - Prentice Hall 3ra Edición 2008
 Sistemas Operativos.
William Stallings - Prentice Hall 5ta Edición 2005
 Sistemas Operativos: Diseño e Implementación.
Tanenbaum, Andrew y Woodhull Albert - Prentice Hall
3ra Edición 2006.
 Sistemas Operativos.
Flynn, Ida y McIver Hoes Ann - Thomson Publishing
5ta Edición 2008.
 http://www.nexolinux.com/como-cifra-linux-las-
contrasenas/
Ing. Leoncio Armas Castro
c12115@utp.edu.pe

Вам также может понравиться