Professional Documents
Culture Documents
Implantación de
Sistemas Operativos
Mario Donaire Mendoza
2011 – 2012
Estos apuntes han sido creados en base al material elaborado por Sergio de
Mingo para el primer curso del ciclo de grado superior Administración de
Sistemas Informáticos y Redes (año 2011 – 2012), licenciados bajo Creative
Commons Attribution – ShareAlike 3.0 Unported (CC BY‐SA 3.0).
Tema Uno
Introducción a los Computadores
DEFINICIONES Unidad Central (UC). Es la encargada de interpretar las ins‐
trucciones y convertirlas en señales eléctricas para
Computador: Cualquier cosa que tenga un procesador que sea capaz ejecutarlas.
de ejecutar un programa. Formado por componentes lógicos (softwa‐ Unidad Aritmético – Lógica (ALU). Se encarga de los cálcu‐
re) y componentes físicos (hardware). los aritméticos y lógicos (y, o, sí, no; unión, intersección y
Sistema Operativo: Primer y último programa que lee el computador. complemento).
Es el programa base del computador. Registros. Son los que van a almacenar los datos e instruc‐
Firmware: Sistema operativo de los computadores pequeños. ciones utilizados por la CPU.
Programa: Son un conjunto de instrucciones y datos que son leídas,
interpretadas y ejecutadas por el computador. MEMORIA
La memoria está dividida en direcciones que podrán albergar
ANTECEDENTES
únicamente una instrucción o un dato (funciones y variables). En ella
se alojarán los programas, donde estarán contenidas, a su vez, las
Tras la segunda guerra mundial (1939 – 1945) Alan Touring y
instrucciones que tendrá que llevar a cabo el computador.
Von Neumann desarrollan un modelo teórico para crear una máquina
Posee dos registros importantes:
programable de propósito general. Ésta sería la primera máquina
creada sin una finalidad específica, capaz de variar en su funcionalidad
Registro de Direcciones, donde escribimos la dirección de
según el programa que se le implantara, es decir, un computador,
memoria con la que queremos trabajar, bien sea una ope‐
limitado únicamente por aquello que el programador sea capaz de
ración de escritura o de lectura. Este registro depende del
ordenarle.
bus de direcciones, por lo que su tamaño será igual al ta‐
maño de dicho bus.
MODELO VON NEUMANN Registro de Datos, en el caso de ser una operación de lectu‐
ra aparecerá el dato o la instrucción almacenada en la
Este modelo es conceptual y aunque fue desarrollado a media‐ dirección que se indica en el registro de la dirección. En el
dos del siglo pasado, a día de hoy todos los computadores lo siguen. caso de ser una operación de escritura, se actualizará el
valor de la dirección que se indica en el registro de direc‐
Componentes: ción con el valor del registro de datos. El tamaño del
registro de datos es igual al tamaño de cada ranura de
Unidad Central de Proceso (CPU). memoria.
Memoria Principal. Encargada de almacenar el programa
del programador. Según necesite leer o escribir, habrá un interruptor que cambia‐
Unidad de Entrada/Salida. Sirve de barrera lógica entre el rá ambos modos. Dicha línea eléctrica también estará incluida en la
procesador y los periféricos. memoria.
Buses. Son los cables, los medios de comunicación entre los
elementos del computador. Modos de Direccionamiento.
Periféricos. Cualquier dispositivo añadido a la máquina para
permitir la interacción del computador con el medio. Los datos podrán ser incluidos de diferentes maneras en las ins‐
trucciones. Según se referencien de una u otra forma, tendremos uno
UNIDAD CENTRAL DE PROCESO (CPU) u otro modo de direccionamiento.
Encargada de la lectura, la comprensión e interpretación del
programa y de su ejecución. Está constituida por:
3
Implantación de Sistemas Operativos
INMEDIATO: El dato se incluye en la instrucción, como con‐ BUSES
secuencia se leerá más rápidamente, pero el ancho de
memoria estará dividido entre la instrucción y el dato. Son líneas eléctricas de comunicación. Sus parámetros de medi‐
DIRECTO: La instrucción no incluye el dato, sino que lo refe‐ ción son:
rencia a otra dirección de memoria. Así todo el ancho de
memoria estará dedicado para ese dato, aunque al tener Ancho de bus: total de líneas en paralelo de un bus. Por ca‐
que ir a la dirección del dato, su procesado será más lento. da línea circulará una señal eléctrica. Cada línea en
INDIRECTO: La instrucción nos manda a una dirección de paralelo transmite un bit. Cada línea de bus emite un im‐
memoria donde a su vez existe un nuevo redirecciona‐ pulso que se traduce en 0 y 1 (binario).
miento hacia el dato. Esto tiene como ventaja poder Frecuencia del bus: es el número de pulsos por unidad de
cambiar los datos sin tener que tocar el código. tiempo (Hz).
Ciclo de Instrucción (CPU – Memoria) PERIFÉRICOS
Es el mecanismo que sigue la CPU al leer y ejecutar una instruc‐ Todo lo que no es la CPU y la memoria. Permiten a la CPU co‐
ción de la memoria. Este ciclo es la manera que tienen de interactuar municarse con el exterior. Los hay de entrada, de salida y de
estos dos componentes. entrada/salida. Sus características son:
1. La CPU lee el registro contador (es un registro de la CPU). La Fiabilidad. Es la probabilidad de que el periférico esté ope‐
dirección que allí encuentra la escribe en el registro de di‐ rativo.
recciones de la memoria (es un registro de la memoria). Modo de acceso (secuencial, directo). Es la forma en la que
2. La memoria escribe el contenido de dicha dirección en su hemos de acceder al dispositivo.
registro de datos. Velocidad de transferencia. La velocidad con la que el dis‐
3. La memoria le da el contenido del registro de datos a través positivo puede suministrarnos datos o procesar los datos
del bus de sistema. enviados a él.
4. La instrucción se escribe en el registro de instrucción (es un Buffering. Los periféricos almacenan datos. Un buffer es un
registro de la CPU) durante su procesamiento. almacén intermedio de datos utilizado para sincronizar co‐
5. En este punto la CPU pide a la memoria los datos direccio‐ sas que trabajan a diferentes velocidades.
nados directa e indirectamente, si los hubiera. En ese caso
se repiten los pasos anteriores. EL COMPUTADOR MODERNO
6. La UC decodifica la instrucción, y la ALU la ejecuta.
7. La ALU incrementa el registro contador (en “n+1”) y vuelve
Está basado en el modelo de von Neumann. En ellos, los com‐
a comenzar el ciclo.
ponentes electrónicos están grabados en placas o circuitos. Existen
numerosas arquitecturas que llevan ese modelo a la práctica.
Hay que tener en cuenta que el tamaño de memoria tiene que
ser igual o menor que el tamaño del registro. Es decir, si en memoria
EL ORDENADOR PERSONAL
caben 2 bytes, el registro de datos tendrá que ser de 2 bytes.
Cuando el registro de instrucción llega a la “instrucción de sal‐
En 1970 nace el ordenador personal. Se trata de ofrecer estas
to”, ésta modifica el registro contador y se va a esa instrucción de
máquinas en un entorno doméstico, idea que fue llevada a cabo por
trabajo.
Macintosh. IBM, que no apostó por el comercio de los ordenadores
entre usuarios de la calle, llegó tarde al mercado y por eso no pudo
UNIDAD DE ENTRADA/SALIDA
desarrollar su propia tecnología, creando un equipo clónico formado
por piezas de los demás fabricantes y que funcionara en entorno de
En los computadores actuales no hay un equivalente directo.
MS DOS. En ellos introdujo el chip BIOS, que rápidamente fue desen‐
Sirven de barrera lógica entre el procesador y los periféricos. Evita que
criptado y permitió la difusión de los ordenadores personales.
el procesador se conecte con diferentes periféricos y tenga que ser
Actualmente es la arquitectura que seguimos usando.
compatible con todos ellos, de manera que pueda abstraerse. Es un
El PC está constituido por una fuente de alimentación, una pla‐
intermediario.
ca base (donde están integrados el chip de memoria BIOS, el
procesador y los buses, la memoria principal y los puertos de expan‐
sión internos y externos), unidades de almacenamiento y periféricos.
4
Implantación de Sistemas Operativos
REPRESENTACIÓN DE LA INFORMACIÓN Nº bits = log24 = 2 bits; es decir, el número al que tendré que
elevar 2 para obtener 4. De la misma forma, para codificar 8 va‐
LA INFORMACIÓN lores, tendré que elevar 2 a la 3, por lo que necesitaré 3 bits.
Es la materia prima de la informática. El PC transforma la infor‐ Para pasar de binario a decimal divido el número en dos sucesi‐
mación, traduciendo el cifrado binario (dos valores de voltaje) en el vas veces, si la división no es exacta ponemos un 1, si sí lo es,
que se encuentran los datos y las instrucciones. ponemos un 0, así 33:
33/2=16 (resto 1)
16/2=8 (resto 0)
LOS CÓDIGOS 8/2=4 (resto 0)
4/2=2 (resto 0)
Es una tabla que relaciona dos alfabetos, de forma que me 2/2=1 (resto 0)
permitirá codificar un lenguaje en otro distinto. 1/2=0 (resto 1)
Los ordenadores trabajan con dos tipos de voltaje debido a sus Sería 100001
restricciones técnicas y eléctricas; es decir, códigos binarios. Todos los
software (datos e instrucciones) están codificados en códigos de dos Código Hexadecimal
símbolos (0 y 1) combinados de diferentes formas. Se suele utilizar para simplificar la notación. Cada dígito equiva‐
le a 4 bits, por lo que 4bits se podrán simplificar con un dígito
Códigos numéricos: Codifican valores numéricos (binario…). hexadecimal.
Códigos alfanuméricos: Codifican valores numéricos y no Los dígitos hexadecimales van del 0 al 9 y luego de la A a la F. Se
numéricos (ASCII‐7…). calculan igual que los binarios pero al ser un sistema en base 16, será:
Otros códigos no binarios: Para simplificar notación (hexa‐
X * 16i
decimal).
Además hay que tener en cuenta que la A=10, la B=11… la F=15.
Códigos Numéricos
Códigos Alfanuméricos
Código Binario.
Representa dos tipos de voltaje, y se representa con dos símbo‐
Código ASCII – 7.
los (0 y 1). Estos dos símbolos son la unidad mínima de información,
Utiliza 7 bits para codificar cada dígito y sólo codifica 128 (27)
denominado BIT. 8 bits forman un byte.
caracteres.
1Kbyte = 210 bytes = 1024 bytes
1Mb = 1024 Kb Código ISO‐8859‐1.
1Gb = 1024 Mb Amplía al código ASCII. Añade un bit más, por lo que serán 28
1Tb = 1024 Gb caracteres (256). Conocido como Latín1.
El código binario es ponderado, es decir, la posición que ocupen Código Unicode.
los números tendrá un significado. Dicho significado vendrá determi‐ Recoge todos los alfabetos del mundo. Tiene diferentes imple‐
nado por: mentaciones, de las que la UTF – 8 utiliza hasta 4 bytes por carácter;
utilizando 232 caracteres.
X * 2i
Donde “X” es el valor del bit (1 ó 0) e ”i” la posición que ocupa EL SOFTWARE
(de derecha a izquierda).
LENGUAJES DE PROGRAMACIÓN
1001 = 9 (1*23+0*22+0*21+1*20)
Poseen una sintaxis muy estricta destinada a ser traducida lite‐
Para saber cuántos bits serán necesarios para codificar X valo‐ ralmente al lenguaje máquina. Esta traducción se denomina
res, habrá que calcular: Nº bits = log2X = ld X. Es decir, si quiero COMPILACIÓN.
transmitir los primeros 4 valores numéricos, necesitaré:
5
Implantación de Sistemas Operativos
COMPILACIÓN Abiertas y restrictivas: Tienen que hacer público su código
fuente si lo distribuyen. Puedes cambiar su código fuente,
Como se ha dicho antes, es la traducción del lenguaje de pro‐ pero si lo comercializas o distribuyes tienes que compartir
gramación al lenguaje máquina. Esta traducción la lleva a cabo el los derechos y hacerlo público. Es el caso de Línux (GPL).
compilador, traduciendo cada palabra al código máquina. A partir del Abiertas y sin límites: El código fuente está abierto y no tie‐
código fuente genera otro archivo llamado código objeto o ejecutable. nes que compartir derechos si lo cambias (MIT).
PREGUNTAS.
COMPILADORES E INTÉRPRETES
1. Define qué es un programa.
Un intérprete es un programa que tras ejecutarse lee el código 2. ¿Qué hace especial al computador con respecto al resto de
fuente. No lo traduce al lenguaje máquina, sino que lo lee y lo inter‐ máquinas?
preta y hace lo que determine la instrucción fuente. Este código 3. Describe y enumera los componentes del modelo de Von
intermedio compila el código fuente, de manera que consigue porta‐ Neumann.
bilidad porque cualquier lenguaje podrá ser interpretado por el código 4. Describe la estructura y funcionamiento de la memoria en
intermedio. el modelo de Von Neumann.
Se denomina SCRIPT al código fuente en lenguaje interpretado. 5. Describe brevemente los modos de direccionamiento vistos.
Define qué son y pon un ejemplo de cada uno de ellos.
DISTRIBUCIÓN DEL SOFTWARE 6. Describe el ciclo de instrucción en el modelo de Von Neu‐
mann.
Debe distribuirse con el código objeto (es decir, el código com‐ 7. ¿Qué es el registro contador? ¿Cuál es su importancia en el
pilado), y no tiene por qué distribuirse con el código fuente. Hay procesado de la instrucción? ¿Qué relación tiene con la ins‐
muchas cuestiones sobre si el código fuente debería o no estar siem‐ trucción de salto?
pre abierto. 8. Pasar de binario a decimal: 10, 101, 1101, 1011.
Cuando adquieres un software, lo adquieres con una licencia, es 9. Pasar de Hexadecimal a decimal: 22ª, 71.
decir, con la cesión de ciertos permisos. Dicha licencia te dice qué 10. Si un programa ha sido compilado sobre una arquitectura
derechos te ha cedido el programador. Es un contrato de cesión. Hay x86, ¿podría ejecutar un teléfono móvil?
diferentes tipos de licencias: 11. ¿Qué es el proceso de compilación? Define el proceso de in‐
terpretación y la diferencia entre ambos.
Cerradas y restrictivas: Sólo puedes utilizar el software en
los términos de la licencia. Es muy limitada. Nunca te de‐
jan ver el código fuente (Windows, Oracle…).
6
Tema Dos
El Sistema Operativo
INTRODUCCIÓN Número de procesadores: Los habrá MONOPROCESADOR,
si soportan un único procesador que ejecute los progra‐
El sistema operativo, tal y como se indicó en el tema uno, es el mas, y MULTIPROCESADOR, si soporta la ejecución
primer programa y el último en ejecutarse. Una vez ha arrancado el simultánea de programas en varios procesadores a la vez.
sistema, el sistema operativo sólo se ejecutará cuando algún compo‐ Tiempo de respuesta: El tiempo de respuesta es lo que tar‐
nente físico o lógico lo requiera. En este capítulo se verán las da un proceso en hacer lo que se le ha pedido. En función
relaciones que tiene con el hardware y el software. de esto, podremos diferenciar entre TIEMPO COMPARTI‐
DO y TIEMPO REAL. Por tiempo compartido se entiende
INTERFAZ que el procesador comparte el tiempo de la CPU de forma
que puede simular simultaneidad. De esta forma, el proce‐
Definido ampliamente como un elemento que funciona como sador computa más de un proceso en un mismo intervalo
intermediario en una comunicación entre dos actores. Es decir, podría de tiempo, por lo que el tiempo de respuesta será varia‐
ser una interfaz un cable USB, un menú, el sistema operativo… una ble. Por tiempo real se entiende que el procesador se
puerta sería una interfaz entre dos estancias. dedica a un solo proceso en un intervalo de tiempo dado,
La ventaja de utilizar una interfaz es que si la conoces puedes de esta forma evita simultanear varios procesos y puede
ignorar lo que hay detrás de ella, pudiendo facilitar el uso de procesos garantizar el tiempo de respuesta, que tendrá un valor fi‐
complejos. jo. El tiempo real implica que los programas no efectúen
Por ello las interfaces aportan transparencia y portabilidad. entrada/salida (leer/escribir en el disco duro, ya que es un
Transparencia porque los cambios que hacemos en los dos lados sólo proceso muy lento), ni que sean interactivos, ya que si lle‐
implican un cambio en la interfaz, por lo demás son invisibles; y por‐ varan a cabo alguna de estas acciones no podrían
tabilidad porque al ser un intermediario podemos cambiar una de las garantizar el tiempo de respuesta.
dos partes sin que afecte al resto. Estas características harán posible
que ambos elementos, en comunión a través de la interfaz, puedan COMPONENTES DEL SISTEMA OPERATIVO
abstraerse el uno del otro.
El sistema operativo es la interfaz entre los soportes físicos y ló‐ Los cuatro componentes que se citan a continuación son los
gicos. Todos los soportes físicos serán manipulados por los lógicos a cuatro pilares del sistema operativo y todos ellos se alojan y gestionan
través del sistema operativo. De esta forma, si cambio el monitor, el en el área de KERNEL del sistema.
Word no tendrá que cambiar (se podrá abstraer), porque el Word pide El KERNEL es el núcleo del sistema. No es una aplicación más, lo
al sistema operativo que dibuje cosas en la pantalla. que se ejecuta en KERNEL es “especial”. Aunque es un programa, se
ubica en un lugar particular de la memoria denominado ESPACIO DE
CLASIFICACIÓN DE LOS SISTEMAS OPERATIVOS KERNEL (más allá del espacio de Kernel está el espacio usuario). En esa
zona, las instrucciones maquina hacen cosas que los códigos de otras
Se pueden clasificar en función de: zonas no pueden hacer; pueden manipular el Registro Contador y el
registro de la CPU.
Número de usuarios: Serán MONOUSUARIOS aquellos que Debido a estas peculiaridades, los errores cometidos en esta
no distinguen entre diferentes perfiles de usuarios (MS‐ zona suelen tener peores consecuencias (siendo la peor consecuencia
DOS, Android). Serán MULTIUSUARIOS aquellos que sí ha‐ un cuelgue del sistema) que los que suceden en espacio usuario. Por
cen esta distinción (Windows, UNIX). este motivo se hicieron micro Kernel que limitaran el número de
Número de procesos: Serán MONOPROCESO los que sólo operaciones a realizar dentro de esta área y así se pudieran limitar
puedan ejecutar un proceso a la vez (MS‐DOS). Se llama‐ también el número de errores graves del sistema.
rán MULTIPROCESO los que sean capaces de realizar
multigestión.
7
Implantación de Sistemas Operativos
Gestor de Procesos. Bloqueo Mutuo: Llamado “deadlock”. Se produce cuando
Gestor de Memoria. Gestionará la memoria volátil. dos procesos están utilizando dos recursos, y cada uno de
Sistema de Ficheros. Gestionará y clasificará toda la infor‐ los procesos requiere del recurso del otro. Es decir, los
mación almacenada en la memoria no volátil. procesos A y B están utilizando los recursos R1 y R2, res‐
Gestor de Entrada/Salida. Gestionará los drivers del siste‐ pectivamente, y ambos procesos quedan bloqueados, el A
ma; los periféricos. por el recurso R2 y el B por el R1. En estos casos, ambos
procesos quedarán bloqueados indefinidamente. Para evi‐
GESTOR DE PROCESOS tar esto se recurre a la expropiación o a la detección
preventiva.
El gestor de procesos se encargará de los programas que se es‐ Ejecutando: El proceso se está ejecutado y por tanto está
tén ejecutando. Antes de ser ejecutado, cuando se requiere la siendo leído.
actuación de un programa, el sistema operativo crea una imagen de
dicho programa en memoria. En ese momento, cuando el código Transiciones.
objeto de un programa es copiado en memoria y está preparado para
ser ejecutado, pasa a denominarse PROCESO. Además, el sistema Parado a Ejecutando: El proceso comienza a ejecutar por‐
operativo crea una estructura para almacenar información sobre él; que el sistema operativo le otorga el uso de la CPU.
dicha estructura recibe el nombre de bloque de control. Ejecutando a Bloqueado: El proceso sufre un bloqueo. No
podrá seguir ejecutándose hasta que se produzca la condi‐
Bloque de Control: Es una ficha que almacena toda la informa‐ ción del bloqueo.
ción de cada proceso, creada cuando el proceso aparece en Bloqueado a Parado: Se ha producido la condición del blo‐
memoria y se almacena en el espacio de kernel. Esta informa‐ queo, por lo que el proceso se interrumpe hasta que el
ción, llamada también metadatos del proceso, incluye: PID del sistema operativo lo crea conveniente.
proceso (número entero asignado al proceso y que el kernel uti‐ Ejecutando a Parado: El sistema operativo estima que el
liza para identificarlo de manera unívoca), estado, localización proceso ha usado la CPU el tiempo suficiente y expulsa al
en la memoria, recursos usados, propietario o lanzador, priori‐ proceso.
dad.
Interrupciones.
Cada uno de los programas ejecutados (procesos) tiene su ima‐
gen y su bloque de control, estando destinados los bloques al espacio Las interrupciones software, o llamadas al sistema, sirven para
de kernel y las imágenes al resto de la memoria. que los procesos invoquen al sistema operativo. Con ellas, los proce‐
sos pueden interactuar con el sistema, pidiéndole servicios (ficheros,
Estados de los Procesos. memoria, etc.).
El proceso es como sigue: se activa la línea de interrupción y la
El estado describe cómo se están ejecutando los procesos en un CPU salta a la línea donde están las rutinas de interrupción, la CPU
momento dado. Cada sistema utiliza sus propios estados para sus tiene que saber dónde están para que sepa donde saltar (lo sabrá por
procesos, y nosotros utilizaremos tres de ellos para nuestro modelo: la memoria ROM o por lo que sea); en ese momento se ejecuta el
sistema operativo.
Parado: En este estado el proceso no se está ejecutando. El Se entiende por LLAMADA AL SISTEMA una interrupción soft‐
proceso está interrumpido, quedando ignorado. Su inte‐ ware; el proceso invoca al sistema operativo usando una instrucción
rrupción no depende de ninguna condición por lo que de salto.
podrá volver a ser ejecutado.
Bloqueado: Como antes, en este estado el proceso tampo‐ Planificación de los Procesos.
co se está ejecutando. El proceso está bloqueado hasta
que se cumpla la condición del bloqueo, por lo que no po‐ La planificación es necesaria para gestionar el tiempo que em‐
drá volver a ejecutarse hasta que se cumpla dicha plea la CPU entre los diferentes procesos activos. De ello se encargará
condición (que además es ajena al sistema). Por ejemplo, el planificador o SCHEDULER, utilizando las siguientes estructuras:
el programador introduce “cuando pulse una tecla pasa la
diapositiva”, hasta que no se pulse esa tecla (la condición
del bloqueo) no se cumplirá dicha condición. Tabla de procesos. Es el área donde se guardan los bloques
Si un proceso A está utilizando un recurso R, y un segundo de control. en el área de kernel.
proceso B requiere de ese mismo recurso, el sistema blo‐ Cola de procesos. Guarda el orden de los procesos que van
queará a B hasta que A libere dicho recurso. a disfrutar de la CPU. Guarda el PID (process ID) de los
8
Implantación de Sistemas Operativos
procesos que van a ejecutarse. Se guarda en el área de Los quantum los asigna el sistema operativo, pero si se ejecuta
kernel. Sobre esta estructura se aplican las políticas de el B y termina su quantum ¿quién asigna el siguiente quantum a
planificación. C? Eso lo hace el reloj del sistema que está dentro del procesa‐
Bloque de control. Estructura que almacena la información dor. Cuando empieza un quantum el sistema operativo resetea
del proceso. Se guarda en el área de kernel. El “Adminis‐ el reloj, y cuando el reloj llega a cero manda una interrupción
trador de tareas” de Windows consigue la información que de reloj. Entonces el sistema operativo asigna el siguiente quan‐
aporta con una llamada al sistema. tum, elige el proceso, resetea el reloj y se marcha. Esto se
denomina CAMBIO DE CONTEXTO, es decir, cuando el sistema
Los planificadores son códigos sencillos. Son la parte del siste‐ operativo deja de ejecutar un proceso y se pone a ejecutar el
ma operativo que administra los procesos y distribuye el tiempo para siguiente.
todos ellos en base a unas políticas que tenga asignadas. Podríamos La interrupción de reloj va por una línea de interrupción distinta
tocar el kernel del sistema y pedir que el planificador no permita más (es un hardware distinto); cada hardware tiene una línea de in‐
interrupciones. Sin interrupciones el sistema se congela, no funciona‐ terrupción distinta.
rá nada.
Existen diferentes políticas de planificación, y aquí se nombran Cambio de contexto.
tres de ellas, pero su importancia no radica en sus nombres, sino en
cómo ejecutan cada una de sus preferencias. Los cambios de contexto siempre llevan un tiempo, no son gra‐
tuitos. En ese tiempo es el sistema operativo el que se está
Round – Robin: Es una política expulsiva (la CPU expulsará a ejecutando, es tiempo perdido. La planificación Round Robin es la más
los procesos). Puede poner los procesos en alta prioridad; completa y sigue estos pasos:
hasta que no terminen los de prioridad alta no pasará a
otros. El timón de un avión, por ejemplo, sería siempre de 1. Se activa la interrupción del reloj (reloj es el hardware que
alta prioridad. marca el tiempo del quantum).
SJN (Short Job Next): Política no expulsiva. El proceso se 2. La CPU pasa de ignorar al proceso y se ejecuta el sistema
ejecutará y la CPU no podrá expulsarlo. Cuando el proceso operativo. El sistema operativo (el planificador) expulsa al
llama al sistema (no todas las llamadas crean bloqueos, proceso.
como escribir en un buffer, pedir espacio de memoria…) se 3. El sistema operativo almacena el estado del registro con‐
bloqueará, pero sólo una vez haya terminado. El propio tador (es como el marca páginas de un proceso) en su
sistema hará una llamada al sistema para informar al sis‐ bloque de control. Así, cuando vuelva a ejecutar ese pro‐
tema operativo de que ya ha acabado. El siguiente proceso ceso sabrá por donde va.
será el más corto de los procesos. 4. Se calcula el siguiente proceso que debe entrar en base a
FIFO: Los procesos se ejecutan por completo, uno detrás de la política que sea.
otro. Es una política no expulsiva. 5. El sistema operativo resetea el reloj y se autoexcluye.
6. Vamos al bloque de control donde está guardado el núme‐
EJEMPLO. Tenemos un proceso A ejecutándose y a mitad de su ro de dirección y lo metemos en el registro contador.
quantum hace una llamada al sistema para escribir un byte. Es‐ 7. La CPU ejecuta el programa por donde iba.
to implica saltar al espacio de kernel. Dentro del kernel escribe
el byte en el bus para mandarlo al disco. Una vez escrito en el Hoy día se intentan tener diferentes flujos de procesos para evi‐
bus el disco duro tarda mucho en dar el byte. Mientras el disco tar los tiempos muertos del cambio de contexto. De esta forma, los
devuelve el dato aprovechamos y dejamos al proceso A en es‐ programas ejecutarán un solo proceso y dentro de ese proceso inclui‐
tado bloqueado por el disco duro (la condición de bloqueo será, rán una pequeña librería que generará esos pequeños procesos
“hasta que el disco no responda”). En ese momento ejecutamos (llamados hilos) para evitar cambios de contexto y así ahorrar tiempo.
los procesos B y C (ejecutan todo su quantum) múltiples veces
(de manera consecutiva, primero B y luego C) hasta que el disco Sincronización de Procesos.
responde. Entonces el disco manda una interrupción cuando se
estaba ejecutando el proceso C. El sistema operativo pone en Existen mecanismos externos para provocar que dos procesos
estado parado a C y A (acude a la tabla de procesos y pone pa‐ concurrentes se ejecuten siempre de la misma manera, denominados
rados a los procesos). Podría seguir con A, B, o C, en función de IPC (Inter – Process Comunication). Por lo general suelen provocar
la política de planificación. bloqueos artificiales. Son muy usados por los programadores.
Si B y C no hacen llamadas al sistema, el sistema operativo no El planificador planifica, pero los procesos pueden sincronizarse
será ejecutado; si son procesos que no tienen entrada/salida no ejecutando bloqueos. Puede hacer que B no pueda empezar hasta que
requerirán al sistema operativo. A no haya terminado, de esa forma se bloquea a B con una tubería (un
9
Implantación de Sistemas Operativos
buffer de memoria). Se trata de forzar el orden de ejecución de los Protección: Los procesos tendrán un mapa de memoria pri‐
procesos mediante la sincronización, provocando bloqueos vado para que los demás procesos no toquen su espacio.
Movilidad: Hay que permitir que se puedan cargar procesos
GESTOR DE MEMORIA en diferentes zonas de memoria, para ello se utilizan las
direcciones virtuales.
La memoria es algo básico. Aloja todo el software, incluido el Sobre – asignación de zonas externas (si fuera necesario):
sistema operativo. Normalmente sólo aloja el software activo (los Es la capacidad de darle a un proceso más espacio del que
procesos). Los programas (software no activo) se alojan en memorias disponemos. A esto se le llama MEMORIA VIRTUAL. Es de‐
secundarias de almacenamiento permanente. cir, si tenemos un proceso que ocupa 100 direcciones y
La memoria es un recurso caro que se ha de gestionar con cui‐ sólo tenemos 80 libres, tendremos que meterlo por partes
dado para no desaprovecharlo. en diferentes momentos.
Se produce carga bajo demanda. Se van cargando las cosas
Jerarquía de Memoria. según se van necesitando. Si el gestor de memoria es ma‐
lo, dejará cosas de uso inmediato en el disco duro, por lo
El mapa de memoria se construye sobre diferentes dispositivos. que el sistema se ralentizará y su producirá “trashing”. Si
Podemos tener unas direcciones destinadas a la memoria volátil y se le deja descansar, el sistema operativo bloqueará los
rápida, y otras a la memoria no volátil y lenta. El programador del procesos y cesará su ejecución, dejando de requerirse más
sistema operativo conoce esta arquitectura. fragmentos al disco.
Según su tamaño y su velocidad de acceso se utilizarán para
unas funciones u otras. De más precio y menor tamaño a menos Ejemplo. Sea un programa con 3 direcciones (#1, #2, #3), en
precio y más capacidad. las que tenemos [SUMA #2, #3], [7] y [8], respectivamente.
Cuando cargamos este programa en la memoria el proceso
Registros (de la CPU y memoria). El registro contador sería será cargado en cualquier ranura de memoria. Para ello no
la dirección cero del mapa de memoria. tendremos que cargar el proceso en las ranuras #1, #2, #3
Cache (L1 y L2), cerca del procesador. Se utiliza para guar‐ de nuestra memoria para que se pueda ejecutar la SUMA
dar las últimas instrucciones que has utilizado de la del programa, sino que la cargaremos en cualquier direc‐
memoria RAM. Hay políticas de cache, podría guardar lo ción, por ejemplo, la #51, #52, #53. Para que el programa
último o lo más utilizado, en función de las mismas. Según no acuda a la dirección #2, #3 de nuestra memoria para ha‐
dichas políticas, su rendimiento puede variar. Tiene dos cer la suma, se crea un mapa de memoria privado y el
niveles, el L1 es más rápido que el L2. sistema operativo tendrá que asignar las equivalencias, es
Memoria RAM (volátil, de rápido acceso) decir, el sistema operativo se encargará de decir que la di‐
Disco duro. rección del mapa privado del proceso #2 es igual a la
dirección #52 real de la memoria. De esta manera los pro‐
Mapa de Memoria. gramas tendrán movilidad, y podrán ser cargados siempre
en el mismo sitio. Con este sistema la protección viene de la
Por cada proceso se guarda una imagen y un registro del proce‐ mano.
so en el bloque de control. Esta imagen contiene:
Memoria Virtual.
Los datos del programa.
Las instrucciones. Es un dispositivo hardware llamado MMU (memory manage‐
La pila y otros elementos. ment unit); es una memoria más. Aquí se guardan los mapas de
dirección una vez el sistema operativo ha hecho las equivalencias de
El mapa de memoria está distribuido en muchos dispositivos las direcciones físicas y virtuales.
(registro, disco duro…). Hay una zona para los procesos de usuario Cuando el sistema operativo asigna un mapa al proceso, enton‐
(espacio de procesos) y el resto está reservado para las direcciones de ces mete la equivalencia a la MMU, donde accederá la CPU (a las
entrada/salida, el sistema operativo y los vectores de interrupción. direcciones físicas).
Asignación de Memoria. Paginación.
Es la acción de asignar espacio a cada imagen de cada proceso La paginación es una técnica necesaria para conseguir la sobre
entrante. En un sistema multiproceso se habrán de garantizar 3 cosas: asignación, y además conseguiremos movilidad y protección. Los
procesos cargados en memoria se dividen en “páginas” (fragmentos)
10
Implantación de Sistemas Operativos
de igual tamaño. Todos los procesos se van a dividir en el mismo PARENTE para el programador (lo decide el programador), será el
tamaño de página, y no tiene por qué ser múltiplo exacto. Además, la compilador el que hace los segmentos.
memoria se dividirá en zonas llamadas “marcos de página”, del mismo Los tipos son tres:
tamaño que las páginas de los procesos, de forma que todas las pági‐
nas de todos los procesos encajarán en cualquier marco de la De Código: Se recogen todas las instrucciones.
memoria. Las páginas se irán alojando bajo demanda. De Dato: Se recogen todos los datos.
De Pila: …
Ejemplo. Si un proceso tiene 52 ranuras y tenemos 10 ranuras
por página, tendremos 6 páginas (la sexta tendrá 2 ranuras). En la MMU se guarda la tabla de segmentos. Se guarda su inicio
Si a ese proceso le asignamos 3 marcos estando cargadas las y su fin (su longitud). Esto permite que varios procesos abiertos com‐
páginas 1, 2 y 4, y una instrucción del proceso pide la página 5, partan los mismos segmentos. Es decir, si abrimos dos Firefox, podrán
el sistema operativo tendrá que ir por ella al disco duro y quitar compartir segmentos.
una de las páginas cargadas para meter esta nueva. Toda esta información desaparece una vez el proceso deja de
estar cargado en memoria.
Para saber si un dato está en una página recurrimos a la MMU,
que va a guardar la tabla de paginación de cada proceso (como si Fragmentación.
fuera un bloque de control).
Los procesos van a dejar huecos al ser descargados de la memo‐
Ejemplo. El proceso A está dividido en páginas de 10 direccio‐ ria. El sistema operativo será el encargado de volver a asignar esos
nes. Cuando dicho proceso pide una SUMA [#35, 7], habrá que huecos. Si no tiene huecos, irá cargando trozos de procesos, utilizando
saber dónde está la dirección virtual #35. Como hemos dividido memoria virtual, de forma que el ordenador se ralentizará. Por ello, a
cada página en 10 direcciones, sabemos que la #35 estará en la más RAM, más velocidad.
página 4. Resulta que la página 4 está cargada en memoria, en La fragmentación consiste en un desperdicio de la memoria, por
el marco 1. La MMU tendrá entonces la equivalencia de la me‐ dejar huecos desaprovechados. Es como cuando en un aparcamiento
moria virtual #35 con la memoria física #5. Entonces, la CPU en línea se producen huecos por salidas y aparcamientos de los co‐
dará a la ALU, SUMA [#5, 7]. ches. La segmentación tiene fragmentación EXTERNA porque los
Si se hubiera pedido una página que no hubiera estado cargada segmentos son de tamaño variable.
en memoria, la MMU daría un mensaje de error y lanzaría una
interrupción, consiguiendo que el sistema operativo bloqueara SISTEMA DE FICHEROS
el proceso y que pidiera al disco duro que busque esa página.
Esto es un ERROR DE PAGINACIÓN. El sistema de ficheros (también parte del kernel) debe almace‐
nar la información sobre los soportes físicos y tiene que ser capaz de
Lo que se hace es dar a todos los procesos un mínimo de mar‐ encontrarla rápidamente. Para dar buenos tiempos de respuesta se
cos de memoria para acelerar los procesos. tendrá que clasificar la información; el sistema operativo se encarga
Podría darse el caso de que todos los marcos estuvieran ocupa‐ de organizar los dispositivos de almacenamiento para garantizar
dos y tuviéramos que cargar una página más… este es el problema del tiempos razonables.
REEMPLAZAMIENTO. El sistema de ficheros crea una estructura básica dentro del
Según el sistema operativo se gestionarán de una forma u otra propio dispositivo de almacenamiento (como si fueran las estante‐
las páginas que no caben en la memoria volátil. Por ejemplo, Windows rías). Aunque esto ocupa espacio, contribuye al orden y por tanto a la
utiliza un fichero para colocar las páginas que no caben y las trata rapidez. A esto se le llama FORMATO LÓGICO: aplicar sobre el formato
como si fueran un fichero más, mientras que Linux utiliza una parti‐ físico del disco unos compartimentos (bytes) para parcelar su estruc‐
ción (ver más adelante, en sistema de ficheros) metiendo las páginas tura, es decir, lo que se denomina FORMATEO. Es por este espacio
en disco pero con las mismas reglas de la memoria volátil (salvo que lógico por lo que los discos no tienen todo su espacio neto disponible,
es más lento). ya que las marcas utilizadas para crear su estructura fundamental (con
el fin de obtener rápidamente la información) ocupan espacio dentro
Segmentación. del disco. Cuando realizo un formateo, estoy reconstruyendo el for‐
mato lógico sin tocar la información que está contenida en él. De
Es otra técnica necesaria para conseguir sobre asignación. Con hecho, dicha información permanece inalterada y oculta, se podría
esta técnica, cada proceso se divide en segmentos de tamaño variable acceder a ella leyendo el disco bit a bit, en crudo.
y que suelen ser temáticos. Los procesos agruparán su información en Cada sistema de ficheros utiliza su propio formato:
segmentos, en función de su naturaleza. Este proceso NO ES TRANS‐
11
Implantación de Sistemas Operativos
NTFS (New Technology File System): Es el sistema de como en UNIX, o será un atributo más destinado a vincular cada
ficheros de windows. archivo con un programa, como en Windows.
FAT (File Allocation Table): El sistema de MS‐DOS. Aunque
tiene bajas prestaciones, es muy sencillo de leer y fácil de El Directorio.
programar; por ello se ha convertido en un estándar.
FAT32: Sistema de ficheros de pen drive, móviles, cámaras. Es una estructura organizativa de orden superior, por lo que
como tal, contendrá los nombres de los archivos y las relaciones con
Particiones. su localización, no los archivos en sí mismos. Por ello contiene bytes,
pero no contiene todos los bytes de los archivos que relaciona. En
La primera estructura que va a realizar el sistema de ficheros aquellos bytes se almacena una tabla de dos columnas, una con los
sobre el disco duro es una PARTICIÓN. Una partición es una demarca‐ nombres y la otra con la ubicación de esos nombres. Esos nombres
ción que establece una zona formateable en una unidad de pueden ser de archivos o de otros directorios, ya que un directorio
almacenamiento. Dicha unidad será la encargada de contener la puede tener las relaciones de otros directorios, sin que los contenga
información de forma reglada y ordenada a través de un formato físicamente.
lógico. A aquellos soportes físicos que puedan ser particionados se les La estructura organizativa con las que el sistema de ficheros or‐
podrá aplicar un formato lógico a cada una de sus particiones (no ganiza los archivos será por tanto jerárquica, en forma de árbol. Esta
todos los soportes físicos lo soportan, por ejemplo, el CD no puede ser estructura queda obscurecida por las interfaces gráficas de usuario,
particionado). Esto es muy útil porque podemos formatear cada convirtiendo la máquina en una caja negra.
partición de manera independiente.
Los discos duros IDE, SCSI, SATA soportan varios tipos de parti‐ El Árbol de Ficheros.
ciones (MBR o GPT – sólo por discos SCSI o SATA).
Hay varios tipos de particiones: Es la estructura organizativa formada por archivos y directorios.
El árbol de ficheros siempre posee una raíz, que en función del siste‐
Primarias: Esta es la partición fundamental. Los discos IDE ma operativo será una otra (para Windows sería C:\, D:\ …, y para
(tipo MBR) pueden tener hasta 4 particiones de este tipo, Linux “/”).
porque en el índice sólo caben 4 áreas formateables. Di‐ Con esta estructura podemos trazar la ruta o camino de cada
cho índice se almacena en la TABLA DE PARTICIONES, archivo, desde la raíz hasta su ubicación.
guardada en el sector maestro (el primer sector del disco).
Extendidas: Cada partición extendida tiene su propia tabla Metadatos.
de particiones; dicha tabla no se guarda en los primeros
sectores del disco y puede tener cualquier tamaño. Sólo se Se denomina metadatos a aquellos datos que informan sobre
puede crear una partición extendida. otros datos. El sistema de ficheros guarda información sobre los
Una partición extendida no es formateable, a menos que archivos, sobre sus propiedades (tamaño, propietario, permisos,
contenga una partición lógica (este requisito lo impone el ubicación, fecha de creación, etc.). Los metadatos aportan informa‐
hardware). ción del archivo, pero no forman parte del mismo.
Lógicas: Son las particiones que se realizan dentro de las Los metadatos pueden perderse al pasar un archivo de un sis‐
particiones extendidas; puede haber tantas como se quie‐ tema operativo a otro, ya que si el formato lógico es distinto habrá
ra. Las particiones lógicas no están referenciadas en las que reconstruirlo.
tablas.
Ejemplo. Sistemas de Ficheros FAT (File Allocation Table). Se
Ejemplo. En un disco IDE podríamos tener hasta 4 particiones estudia este sistema porque es un modelo real y sencillo. Se ha
primarias; o 3 primarias y 1 extendida; 2 primarias y 1 extendi‐ utilizado desde las primeras versiones de MS‐DOS, y en su co‐
da; 1 primaria y 1 extendida; o 0 primarias y 1 extendida. mienzo se pensó para discos de pequeño tamaño, por lo que no
funciona muy bien sobre soportes de gran almacenamiento.
El Archivo. Desde su primera aparición en el IBM PC 286, se ha seguido uti‐
lizando a la par que los soportes de almacenamiento crecían,
Es la unidad mínima de almacenamiento; contiene bytes a los por lo que es un sistema obsoleto desde el punto de vista técni‐
que asociamos un nombre y unas propiedades (almacenadas como co, pero en boga desde el punto vista comercial (como se
metadatos, ver más adelante). Los archivos pueden tener también un apuntó más arriba, su sencillez y su compatibilidad con la mayo‐
formato interno, pero el sistema de ficheros es ajeno al mismo. ría de los sistemas operativos ha hecho que prácticamente
En función del sistema operativo, la extensión de los archivos todos los dispositivos lo utilicen, convirtiéndolo en un están‐
será parte del nombre (meramente informativo de cara al usuario), dar).
12
Implantación de Sistemas Operativos
Este sistema se basa en una TABLA FAT que relaciona a cada fi‐ Hay que tener en cuenta que en el directorio raíz podemos te‐
chero con su ubicación en el disco. En esta tabla están todos los ner también directorios que nos señalen en qué cluster
archivos del disco, por lo que si se tratara de un disco grande y empiezan. Cuando nos vamos a la tabla FAT y entramos por ese
lleno, la tabla ocuparía mucho espacio. Además, cuando el sis‐ cluster nos encontraremos una tabla de directorios donde esta‐
tema arranca, carga la tabla en memoria, por lo que si es muy rán las referencias de los archivos con sus clusters, al igual que
grande consumirá mucha memoria. en el directorio raíz. Las tablas de directorios están esparcidas
Antes de nada habrá que definir CLUSTERS. Son divisiones lógi‐ en diferentes clusters del área de datos.
cas del espacio disponible orientadas al almacenamiento. El Recordad que un cluster sólo pertenece a un fichero, no puede
disco de FAT está dividido en clusters guardados en memoria. haber varios ficheros en un cluster.
Cada cluster delimita un espacio determinado que siempre será Con desfragmentar lo que hacemos es agrupar todos los fiche‐
igual. ros en cluster contiguos.
Cuando formateamos en FAT creamos: PROBLEMAS DE FAT: En versiones antiguas, el programador
pensó que con destinar 8 bytes para nombrar los archivos sería
Sector de Arranque: Guarda información de la partición suficiente, por eso estaban restringidos a 8 letras. Además, el
FAT. rendimiento para discos grandes es muy bajo, y un área de da‐
Tabla FAT: De asignación. Es una lista de clusters, y por cada tos muy grande genera una tabla FAT de gran tamaño.
uno de ellos tendrá una entrada. Cuanto más grande sea el
espacio almacenado, más clusters tendrá y más ocupará. FAT está patentado en USA por Microsoft, pero no ha ejercido
La tabla FAT tiene el siguiente aspecto: su derecho sobre su patente porque le interesa que todo el
mundo lo utilice.
CLUSTER OCUPADO FINAL SIGUIENTE
X (1 ó 0) (1 ó 0) Y ENTRADA/SALIDA
Donde la columna “Cluster” (con X igual al valor del cluster, El sistema operativo controla la comunicación entre los periféri‐
desde 1 hasta n) nos indica el número de ese cluster. “Ocu‐ cos y los procesos. Es una comunicación en dos sentidos:
pado”, puede ser igual a 1 (en este caso el cluster estará
ocupado), o a 0 (en este caso estará libre). “Final”, que po‐ De los procesos a los periféricos: Los procesos se comuni‐
drá tener un valor de 1 (indicando que es cluster final) o 0 can con los periféricos a través del uso de DRIVERS. Los
(no es cluster final). “Siguiente”, que siempre que haya un 1 drivers son programas o librerías que contienen código
en “Final”, tendrá un 0, y si no, indicará el siguiente cluster para comunicarse con un periférico, así ganamos MODU‐
que habrá que leer para completar ese archivo. LARIDAD (flexibilidad en el kernel). Los drivers suelen
Directorio raíz: Es una tabla de dos columnas que guarda suministrarlos los fabricantes del periférico. Todos los dri‐
los ficheros y en qué cluster empiezan. vers escriben sus líneas de código en el área de kernel
Área de Datos: Aquí se guardan los datos de nuestros fiche‐ porque acceden al hardware, y todo lo que está en el área
ros. Esto ocupa el 90% del espacio de la partición. de kernel se ejecutará sin restricciones.
Los programas hacen llamadas al sistema con una instruc‐
FAT divide el área formateable en clusters. Por ejemplo, si ción de salto; el sistema operativo llama a la FUNCIÓN DEL
un archivo A ocupa 10 bytes y cada cluster tiene un tamaño DRIVER y ejecuta la instrucción. El programador del driver
de 5 bytes, dicho archivo ocupará dos clusters. Imaginemos debe conocer el sistema operativo para que las funciones
que ocupa los clusters 1 y 2. Cuando grabemos un segundo de los drivers sean exactas a las que tiene el sistema ope‐
archivo B de 5 bytes ocuparemos el cluster 3. Ahora bien, si rativo (por eso se hacen para un mismo periférico
volvemos a abrir A y le añadimos información, el sistema de diferentes drivers según el sistema operativo).
ficheros meterá esa información nueva en el cluster 4, que‐ Una vez hecha la llamada a la función del driver tenemos
dando la siguiente tabla FAT: que llevar a cabo esa instrucción escribiendo en registros
del propio periférico o bien en buses. Si el periférico está
CLUSTER OCUPADO FINAL SIGUIENTE mapeado podremos utilizar instrucciones de escritura y
1 1 0 2 lectura de memoria; si no, podremos utilizar instrucciones
2 1 0 4 específicas directas. Si tenemos muchas instrucciones
3 1 1 0 ocuparemos mucho espacio para ellas, y quedará poco es‐
4 1 1 0 pacio restante para los datos.
De los periféricos a los procesos: Se utilizan interrupciones.
Cada línea de interrupción debe tener una rutina de inte‐
13
Implantación de Sistemas Operativos
rrupción que la trate. El conjunto de rutinas se denomina 11. Describe en qué consiste la sincronización de procesos.
vector de interrupción. El vector de interrupción se carga 12. ¿Qué es la jerarquía de memorias?
en un lugar conocido de la memoria que podríamos variar, 13. ¿Qué garantías debemos dar a los procesos durante la asig‐
aunque si lo hacemos, habría que decirle al sistema opera‐ nación de memoria?
tivo que cambie esa posición. 14. ¿En qué consiste el mecanismo de memoria virtual?
15. Describe la paginación y compárala con la segmentación y
PREGUNTAS. explica en qué consiste el problema del reemplazamiento.
16. ¿En qué función escribe el sistema de ficheros?
1. Explica las diferencias entre un sistema de tiempo real y 17. ¿Qué es una partición?
uno de tiempo compartido. 18. ¿Cómo se organizan las particiones en un disco duro?
2. ¿Qué es una interfaz? ¿Por qué decimos que el sistema ope‐ 19. Diferencia entre archivo y directorio.
rativo es una interfaz? 20. ¿Qué son los metadatos?
3. Diferencia programa y proceso. 21. ¿Cómo funciona FAT? Describe su estructura principal. Ilus‐
4. ¿Qué es el bloque de control? trar este funcionamiento con un ejemplo.
5. Define los estados en los que puede estar un proceso. 22. Describe brevemente los dos flujos de comunicación de En‐
6. Describe qué es una interrupción y una llamada al sistema. trada/Salida.
7. ¿Cuál es la función de una interrupción? 23. Explica los conceptos de driver y qué papel juega en la co‐
8. ¿Qué es un planificador y cuál es su función? municación con los periféricos.
9. Describe con detalle el mecanismo de cambio de contexto. 24. Describe brevemente el modelo de interrupciones.
10. Describe las estructuras que realiza el planificador.
14
Tema Tres
Máquinas Virtuales y
Virtualización de Sistemas
INTRODUCCIÓN Emuladores (Inferno). Virtualiza la plataforma hardware;
emula una arquitectura. Algunos ejemplos serían los emu‐
La virtualización es el mecanismo que abstrae los recursos ladores de Android o IOS (los emuladores de teléfonos,
hardware de una máquina a través de una interfaz (Virtual Machine SDK – Software Development Kit).
Monitor) entre dicho hardware y el sistema operativo.
El VMM es un proceso más, pero va a ofrecer hacia arriba una CARACTERÍSTICAS
interfaz software que va a imitar al hardware real, así podremos
instalar un sistema operativo y un kernel convencional, creyendo que Nosotros vamos a utilizar un modelo denominado máquina vir‐
lo que tiene por debajo es hardware. De esta forma podremos com‐ tual de sistema.
partir el uso de los recursos hardware entre diferentes sistemas
operativos instalados en una misma máquina. Emulador sobre Sistema Operativo (VMware). Se instala so‐
bre el sistema operativo como una aplicación que no
ELEMENTOS podrá planificar ni asignar memoria.
Host: La máquina física. VENTAJAS
Monitor: Software que crea la capa de abstracción en el
host. Se puede instalar sobre el propio hardware. Optimización de Recursos. Las máquinas pueden ser susti‐
Guest: Máquina virtual. Funciona sobre el VMM. Cada sis‐ tuidas por un número mucho menor de ellas, consiguiendo
tema guest trabaja de forma independiente y desconoce el las mismas prestaciones. Este número menor de máquinas
resto de sistemas invitados. serán mucho más potentes, de forma que puedan sopor‐
tar “granjas” de máquinas virtuales ejecutadas sobre ellas
OTROS MODELOS (pool de recursos). Con ello conseguimos que no haya má‐
quinas infrautilizadas.
La virtualización se puede conseguir de otras formas. Reducción de Costes. Al necesitar menos máquinas aho‐
rramos en costes. Además, a menos máquinas, menos
A nivel de procesos (JVM o .NET). Cada proceso tiene incor‐ hardware y por tanto se reduce el número de fallos. Al
porado una pequeña librería de virtualización, como si centralizar los recursos en esas máquinas mucho más po‐
cada proceso tuviera su propio VMM. tentes abarato en las tareas de administración y
A nivel de sistema operativo (OpenVZ). Se instalan sobre el mantenimiento y homogeneizo el hardware. Al consumir
hardware. La propia plataforma puede sustituir al sistema menos energía participo cuidando el medio ambiente
operativo. Es un kernel modificado que puede ejecutarse (eco‐computación o green IT).
sin sistema operativo. Sólo están preparados para ejecutar Mejora de la Recuperación ante Fallos. La restauración del
sobre ellos máquinas virtuales. No tienen interfaz gráfica, sistema guest es trivial. Recuperar una máquina virtual es
es algo ligero, para técnicos. Aquí el propio monitor es el tan sencillo como arrancar un programa; lo único que ten‐
sistema operativo, y el que gestionará el reparto de proce‐ dremos que hacer es reiniciar esa plataforma en un host u
sos con cada máquina virtual. Puede arrancar máquinas otro. El proceso de re‐arranque es más ligero que el de
virtuales con prioridades, por lo que el rendimiento mejo‐ una máquina física. Todo el sistema invitado suele estar
rará. Ejemplos de este tipo son Citrix o Xen. representado en simples ficheros. Además, si tenemos di‐
ferentes host podemos hacer migraciones en calientes de
15
Implantación de Sistemas Operativos
uno a otro. También se pueden hacer SNAPSHOT de má‐ LABLE, porque puede aumentar sus capacidades, y por ello es FLEXI‐
quinas virtuales como si fueran un backup de un proceso, BLE. El cloud computing puede permitir por tanto sistemas más
pues no deja de ser un proceso más, restaurando con faci‐ escalables y con mayor MOVILIDAD, no porque se mueva el software
lidad esas máquinas. (que de hecho no se mueve en absoluto), sino porque los usuarios
Optimización de la Carga de Trabajo. El balanceo de carga accederán al software a través de sus terminales (como ahora lo es el
es más sencillo. Hay procesos que permiten determinar a navegador), desde cualquier parte.
que host queremos enviar la máquina y se ejecutarán en el
tiempo que dura la migración de ese proceso. Así se podrá FABRICANTES Y LICENCIAS
balancear la carga entre los diferentes host sin que los
clientes lo perciban, ganando en adaptabilidad. Si tenemos Las licencias PROPIETARIAS no te ceden ningún derecho.
varias plataformas host en las que se ejecutan máquinas VMware comercializa productos, todos propietarios, que se instalan
virtuales, irán distribuyendo las peticiones entre ellas, em‐ sobre el sistema operativo (Windows o Linux); VMware Workstation
pezando por las que tengan menor carga. Además, con (potente y completo), y VMware Player (gratuito, aunque no te permi‐
dos host muy potentes, si tenemos uno de ellos muy so‐ te crear nuevas máquinas virtuales). Virtual PC viene de serie en
brecargado, puede ir migrando máquinas en caliente al Windows, y sus prestaciones son menores que las que ofrece VMwa‐
otro. re. Parallels es para entorno Mac.
Seguridad por Aislamiento. En el modelo tradicional de Las licencias ABIERTAS, como Xen. Xen no requiere una plata‐
hosting teníamos muchos usuarios utilizando un servicio forma por debajo, se instala directamente sobre el hardware porque
(web, correo, base de datos…). Si uno de los usuarios pu‐ tiene un pequeño kernel de Linux y no necesita de sistema operativo
diera modificar el código de este servicio y cambiarlo por para funcionar.
otro código objeto, conseguiría que la CPU ejecutara su
código, y comprometiendo la seguridad de la máquina al VMWARE
completo y por tanto de todos los usuarios que utilizaban
ese servicio. Con la virtualización puedo virtualizar servi‐ Puede utilizarse sobre Linux o Windows. A partir de imágenes
cios, haciendo que puedan convivir varios de ellos en una podemos crear máquinas virtuales. No podrá cambiar la plataforma
misma máquina física. De esta forma los aíslo, consiguien‐ hardware que virtualiza, es decir, si tengo un sistema operativo de 32
do que los ataques sólo afecten al guest de esa máquina. bits, los virtuales también lo tendrán.
Cada máquina virtual estará referenciada a un directorio, en la
Cloud Computing. que habrá unos ficheros.
Este modelo busca una plataforma total en la que no se tenga CREAR UNA MÁQUINA VIRTUAL NUEVA
que ejecutar nada (ni siquiera el sistema operativo) en tu procesador.
Por lo tanto los terminales particulares perderán potencia, delegando Se podrá crear a partir de un CD o de una imagen ISO. Habrá
todo el poder de cálculo en supercomputadores que ejecutarán nues‐ que elegir el tipo de sistema instalar para poder seleccionar la VMwa‐
tros programas y que almacenarán toda nuestra información. Con re Tools adecuadas.
esos terminales, el usuario ejecutará el mínimo proceso para poder
acceder a esas aplicaciones remotas. Actualmente esta función la VMware Tools.
cumple el navegador, aunque el protocolo http (de los años 90) está al
límite de sus posibilidades. Estas herramientas se utilizan para compartir funciones con el
Con este modelo centralizas todo en un sitio, ahorrando a nivel host, como el portapapeles o pasar carpetas del host a la máquina
administrativo y a nivel de recursos (Gmail, Facebook, Twitter…). virtual. Con ellas tenemos más funcionalidad. Cuando VMware las
Amazon ofrece este tipo de hosting, alquilándote una capacidad instala le hace creer al guest que se trata de un nuevo hardware,
de procesamiento y creando bajo demanda lo que se necesite. De esa instalando los drivers correspondientes.
forma, ante picos de trabajo, mejorarás el servicio sin necesidad de
invertir en hardware que quedará sin utilizar en los días de poco CONFIGURACIÓN
tránsito. Esto también ahorra en mantenimiento de máquinas (y el
ahorro del mantenimiento de un CDP – Centro de Procesamiento de Cada dispositivo virtual que agreguemos creará un puente
Datos, que tiene que estar climatizado, protegido contra incendios…). software con nuestro dispositivo físico. Aunque algunos sistemas
Lo malo es que el núcleo central del negocio estará en manos de permiten agregar hardware en caliente, es aconsejable parar la má‐
otros. Por ejemplo, Wikileaks fue capado por Amazon. quina.
Algunas ventajas son que se crece más rápidamente, porque es
más sencillo mejorar esos servidores centrales. Se dice que es ESCA‐
16
Implantación de Sistemas Operativos
Discos Duros. Snapshots.
Podemos añadir cuantos queramos y podremos elegir su cone‐ Es una foto fija del estado de la máquina. Se entiende por ES‐
xión, IDE o SCSI. Cada disco se representa como un fichero con TADO el contenido de los discos, el contenido de la memoria (guarda
extensión VMDK, que representará el disco duro de la máquina vir‐ el contador del programa; todo lo que haya en la RAM), etc. Con los
tual. Si la máquina virtual tiene un disco de 50 Gb, ese fichero ocupará snapshots se podrá volver a ese estado en cualquier momento. Un
lo mismo. snapshot crea un VMDK que se puede seguir leyendo pero no se
Se puede hacer que el espacio vaya creciendo, es decir, que es‐ puede modificar. Para volver a ese estado se sustituye el VDMK,
tos ficheros crezcan dinámicamente, de forma que no tengamos que creado en el momento de la captura, por el VMDK actual. Este proce‐
especificar el tamaño, pero así la máquina virtual perderá rendimiento so es muy rápido (tarda apenas unos segundos en restaurarse).
(no se recomienda para servidores en producción), aunque también
optimizará el espacio en disco para su uso doméstico. Ejemplo. Nada más arrancar mi máquina virtual creo un snap‐
shot (1). Después instalo en mi máquina virtual el Office 2003 y
Tarjetas de Red. hago otro snapshot (2). Luego instalo el photoshop CS4 y hago
otro más (3). Podría volver al estado inicial de la máquina e ins‐
Podemos añadir cuantas queramos, aunque al final todas utili‐ talar una versión más moderna del Office, haciendo un último
zarán las tarjetas físicas que tengamos. Cada tarjeta virtual creará un snapshot (4). De esta forma tendríamos 4 imágenes correspon‐
puente software (en “Conexiones de Red”). dientes a cuatro estados de la máquina, cada una ligada a una
Hay tres tipos de configuración: línea temporal distinta.
Host – Only: El guest sólo podrá acceder a los servicios que PREGUNTAS.
estén activos en el host. Si el host no tiene ningún servicio,
el guest no podrá tenerlos; ambos utilizarán una red pri‐ 1. ¿En qué consiste la virtualización?
vada para comunicarse. Es un entorno más restringido y 2. ¿Qué elementos intervienen en la virtualización de un sis‐
controlado. tema?
Bridge: Cada máquina virtual tendrá un identificador IP in‐ 3. Enumera las ventajas que aporta la virtualización de siste‐
dependiente; habrá que configurar cada una de ellas como mas.
si fuera una máquina nueva. 4. ¿Qué tipos de virtualización hemos visto en clase? Describe
NAT: Las máquinas virtuales utilizan la misma dirección IP sus diferencias.
que la máquina física. El guest se conecta a Internet por 5. Enumera un par de fabricantes de productos de licencia li‐
medio del host. bre y propietaria destinados a la virtualización y comenta
algún aspecto de ellos.
6. ¿Qué es un snapshot? ¿Qué ventajas nos aporta?
7. ¿Sería posible crear un snapshot sobre una máquina física?
8. Define y explica brevemente el concepto de cloud compu‐
ting y enumera las ventajas que aporta.
17
Tema Cuatro
Introducción a Unix
INTRODUCCIÓN CARACTERÍSTICAS
En 1969 Bell Labs comienza a desarrollar el primer sistema opera‐ Unix es multiusuario. Tradicionalmente (en sus comienzos) cada
tivo de tiempo compartido, el proyecto MULTICS. Los requerimientos de uno de los usuarios manejaba su sistema a través de una consola (una
una potente máquina (GE‐645) obligan a abandonarlo. televisión con teclado), no a través de un ordenador. Dicha consola se
Thompson y Ritchie comienzan a escribir un nuevo sistema para conectaba con el ordenador a través de un bus independiente. Para
la PDP‐7; una máquina mucho más barata. En 1970 aparecen las acceder, cada usuario se valida con su identificador (login) y contrase‐
primeras versiones escritas en lenguaje ensamblador de la PDP‐7, ña. Si es correcta, Unix arranca un proceso llamado SHELL, que será el
pero eran versiones poco portables. Para solucionarlo, Ritchie desa‐ encargado de comunicarse con la consola (será el portal entre el
rrolla el lenguaje de alto nivel C, en 1973, reescribiendo todo el núcleo kernel y la consola, y viceversa). El usuario tiene como interfaz la
de Unix en C. Teniendo un compilador de C para cada arquitectura, SHELL. En este modelo sólo había un ordenador por infraestructura y
Unix es portable sin tocar una línea. las consolas ni almacenaban ni computaban nada.
Unix fue desarrollado por Ken Thompson y Dennis Ritchie de los Cada usuario trabaja dentro un espacio de almacenamiento
Bell Labs, para el computador PDP‐7 de DEC. Fue el primer sistema personal (un directorio propio, dentro del árbol de ficheros del siste‐
operativo multiusuario, reescrito en un lenguaje de alto nivel y porta‐ ma, al que acceden los usuarios tras validar su nombre y contraseña).
ble. A través de comandos escritos, el usuario se comunica con el sistema.
La publicación del código de Unix y del compilador de C se di‐ Dichos comandos son interpretados por la SHELL, que será la encarga‐
fundió rápidamente entre los ámbitos académicos. Debido a esto da de realizar las llamadas al sistema oportunas. Por tanto, la SHELL se
aparecieron los primeros clones (como BSD, en 1975), y el código se ejecuta en espacio usuario (si estuviera en el kernel no tendría que
amplió y mejoró (en el futuro aparecerían problemas legales). Entre hacerlas, puesto que sería parte del sistema).
las familias de Unix se encuentran: En Unix, el usuario ROOT es el administrador, posee el control
total de la máquina, sobre él no se controla ningún permiso, simple‐
System V. Es la considerada heredera de la versión más pu‐ mente se le deja hacer.
ra de Bell Labs. En Unix, los usuarios se agrupan y se etiquetan en GRUPOS; un
BSD. Creada a partir del licenciamiento a Berkeley. Reescri‐ usuario puede pertenecer a varios grupos. Todos los ficheros y direc‐
ta para evitar problemas legales. Primera pila de torios tienen un único propietario y pertenecen a un único grupo. Los
protocolos TCP/IP de Internet. grupos permiten que varios usuarios trabajen de forma cooperativa
AIX. Surge del licenciamiento a IBM. con ficheros y directorios.
GNU/Linux. El movimiento GNU ha intentado reescribir su Además, Unix es multiproceso y de tiempo compartido (ver te‐
propio Unix para licenciarlo con su licencia GPL. ma 2, “Clasificación de sistemas operativos”). Es portable gracias a
POSIX y al compilador de C (como se añadió en la introducción). Una
Para llamar a algo Unix tienes que pagar, ya que es una marca característica importante más de Unix es que todo son ficheros.
licencia del consorcio The Open Group. Por ejemplo, Linux, FreeBSD,
NetBSD, no son Unix. La compatibilidad real entre todos ellos la marca ELEMENTOS DEL SISTEMA
el estándar POSIX (es un estándar, escrito en C, sobre la interfaz de
llamadas al sistema). Si estandarizas esto, lo haces con todas las libre‐ LOADER (CARGADOR)
rías de llamadas al sistema, mejorando la portabilidad. Los
programadores ya saben lo que van a encontrarse cuando el sistema Es un pequeño programa encargado de cargar el kernel (es de‐
operativo es POSIX. Unix y MAC OS lo son. cir, pasarlo del disco a la memoria).
Cuando la CPU arranca, en el principio de la SECUENCIA DE
ARRANQUE, siempre tiene que leer una dirección de memoria. Esta
dirección (que suele estar fijada por los diseñadores del microproce‐
18
Implantación de Sistemas Operativos
sador) albergará la instrucción del primer programa que ejecutará la área de usuario. Los inicia el kernel y se están ejecutando todo el
máquina. Pero ¿cómo metemos ese primer programa en esa direc‐ tiempo (independientemente de los usuarios), comenzando sus tareas
ción? Una opción (lo normal) es hacer que la CPU comience por leer cuando la máquina arranca. Aunque no tienen por qué ser iniciados
una parte del mapa de memoria que suele estar alojado en una me‐ por ningún usuario en particular, también pueden ser lanzados por
moria no volátil (por ejemplo, una ROM). ellos. Los objetivos que cumplen son diversos, desde validar usuarios
entrantes, chequear discos, registrar eventos, etc.
Ejemplo. Los diseñadores de una CPU nos indican que su proce‐ Estos procesos equivalen a los servicios de Windows.
sador empieza a leer por la dirección 0000. Nosotros podemos Los demonios no pueden ser matados salvo por el usuario que
pinchar, desde la dirección 0000 a la 1024 un módulo de memo‐ los creó. Ya que todos los procesos tienen que haber sido lanzados por
ria ROM. En esa memoria podemos poner las instrucciones de un usuario (como se verá en “Usuarios y Grupos”, página 26), serán
nuestro programa inicial (que los IBM‐PC suelen llamar BIOS) y estos usuarios sin acceso de shell los que podrán acabar con sus
la CPU lo ejecutará siempre al inicio. Apaguemos o no el procesos asociados. Además, root podría matar cualquier proceso, ya
computador sabemos que el programa inicial estará preparado que tal y como se ha indicado antes, cuando root hace algo, se le deja
en esa memoria cuando la CPU vaya a leerlo allí. hacer.
Ese primer programa (la BIOS), podría cargar el kernel del sis‐ SHELL
tema, pero en la actualidad los fabricantes de sistemas operativos
prefieren que ese primer programa cargue el programa CARGADOR. Es la interfaz de usuario entre el kernel y los usuarios, llamada
La BIOS se puede configurar, asignando una lista de prioridades INTÉRPRETE de comandos. Cada shell controla una consola, y se eje‐
donde buscar el programa cargador; una vez lo ha encontrado, la CPU cuta en la máquina Unix, no en las consolas. Cuando un usuario valida
lo ejecuta, y una vez en marcha, encuentra al kernel (de manera su nombre y contraseña contra un demonio a través de su consola
sencilla, ya que cada cargador es programado por los creadores de su hardware, el sistema carga una shell, por lo que dicha shell será el
propio sistema operativo). Después lo carga en memoria y le dice a la único vínculo entre el usuario y la máquina durante toda la sesión.
CPU dónde empezar a leer la dirección de memoria del kernel. Una Esto se suele representar en forma de círculos concéntricos,
vez cumplida su función desaparece de la memoria. En ese momento el donde el núcleo está ocupado por el kernel de Unix y rodeándole está
kernel se ejecuta de forma directa (sin interrupciones ni llamadas al la shell. El círculo más exterior estaría ocupado por los usuarios. Este
sistema), cargando todas las estructuras que va a necesitar el sistema diagrama representa la imposibilidad de lo usuarios para llegar al
operativo (tablas de procesos, planificador, etc.). Es la única fase donde kernel sin utilizar para ello la shell.
se ejecuta el kernel per se.
Todo esto es válido para casi cualquier sistema, no sólo para Unix. SECUENCIA DE ARRANQUE DEL SISTEMA
KERNEL Arranca la CPU y lee las primeras direcciones de memoria
asignadas por el diseñador. Allí está alojada la BIOS.
Es un archivo ejecutable que recoge la mayor parte del código
La BIOS busca al cargador y lo carga en memoria.
del sistema. Lo que no forma parte del mismo son librerías (DLL –
El cargador carga al kernel.
Dinamic Link Library). Resulta de la compilación de todos los elemen‐
El kernel comienza a ejecutarse y carga todo lo que es nece‐
tos fundamentales estudiados en el Tema 2.
sario para el sistema, incluidos los demonios, siendo el
Cuando arranca la CPU y la BIOS ejecuta el cargador, éste busca
planificador la última instrucción de la rutina de arranque
el archivo del kernel para ejecutarlo. Será el primer código que ejecu‐
del sistema. Cuando salta el planificador decide el siguien‐
te la CPU para poner en orden el sistema antes de que pueda recibir a
te proceso a ejecutar (realizando por tanto el primer
los demás procesos.
cambio de contexto) y termina la secuencia de arranque
Se pueden conseguir kernel más pequeños pasando parte de su
(se deja de ejecutar el kernel).
código a librerías externas que se enlacen dinámicamente, por ejem‐
plo las librerías TCP. De esta forma, el primer programa que requiera
esa librería tendrá que esperar hasta que se carguen en memoria. Con
esto, lógicamente, conseguiremos que el kernel consuma menos La CPU comienza a ejecutar a los demonios.
memoria y se realice, por tanto, un arranque más rápido. La máquina queda a la espera de conexiones de usuarios.
DEMONIOS FICHEROS
Son procesos NO INTERACTIVOS (es decir, no reciben ningún in‐ Como se ha dicho antes, en Unix son todo ficheros, lo que signi‐
put de los usuarios, no interactúan con ninguna shell) ejecutados en el fica que recibirán esta denominación tanto archivos como directorios.
19
Implantación de Sistemas Operativos
Estos ficheros se organizan en un único árbol de ficheros, aunque
tengamos muchas particiones. En Windows, al contrario, por cada Ejemplo. Imaginemos que en nuestra raíz tenemos un directo‐
volumen de almacenaje (partición, unidad de red, etc.) tenemos un rio “Dir1”, y que dentro del mismo existen otros tres directorios
árbol de ficheros distinto (a:\, c:\, d:\...). más: “A”, “B” y “C”. Si dentro del directorio “A” existe el fichero
En Unix, los ficheros no tienen extensión, es decir, que un fiche‐ “F1”, y nos encontramos en ese directorio, “A”, la ruta que de‐
ro sea “archivo.txt” no es indicativo para el sistema, sino para beré indicarle a shell para que borre “F1”, será “/Dir1/A/F1”
nosotros (nos orienta de que es un archivo de texto). Además, aque‐ (ruta absoluta) o “A/F1” (ruta relativa).
llos archivos que comienzan por “.”, permanecerán ocultos.
Todos los ficheros de Unix tienen un único propietario y perte‐ Metadatos.
necen a un único grupo.
Dentro del árbol de ficheros nos podemos encontrar: Los metadatos ya se definieron en el tema 2 “Sistema de Fiche‐
ros”. Almacenan información sobre los ficheros, por lo que son
Ficheros de datos. Binarios o planos. similares en ficheros y directorios (propietario, grupo del fichero,
Directorios: Cuando creamos un directorio tenemos siem‐ tamaño, permisos, fecha y hora de modificación).
pre dos entradas, la entrada “.” (apunta al directorio
actual) y la “..” (apunta siempre al directorio padre). Permisos
Ficheros especiales: Son la interfaz entre los procesos, los
dispositivos y el kernel, Unix los utiliza para acceder a to‐ Unix no tiene listas de control de acceso, no crea listas de usua‐
dos los recursos del sistema y poder manipularlos. No son rios (CL) con las operaciones que puede realizar, sino que permite tres
bytes almacenados en un disco, sino portales de comuni‐ operaciones para cada fichero y directorio:
cación con los drivers del sistema, a los que accederemos
cuando leamos o escribamos en este tipo de ficheros. Es Leer (Read): Recuperar bytes de un fichero.
decir, utilizando las operaciones básicas de los ficheros Escribir (Write): Modificarlo.
(leer y escribir) podremos manipular cualquier dispositivo, Ejecutar (eXecute): Cargar su contenido en memoria y eje‐
consiguiendo HOMOGENEIZAR todo el sistema (con dos cutarlo, o cargar su intérprete en memoria y que lo
llamadas al sistema se hace todo). ejecute éste.
Algunos ficheros de este tipo son “/dev/random”
(sobre el que no podremos escribir, y si lo leemos, el sis‐ Además, Unix diferencia tres roles de usuarios respecto a fiche‐
tema nos devolverá una serie de bytes aleatorios, ros y directorios:
ofrecidos por un driver, ya que el tamaño del fichero es de
0 bytes); “/dev/null” (del que no podremos leer, pero so‐ Propietario (User owner).
bre el que podremos escribir sin que su tamaño aumente; Miembro del grupo del fichero (Group members).
el sistema ignorará todo lo que se escriba en él, sin que Todos los demás (the Other).
vaya a parar a ningún sitio).
Para cada fichero se guarda una ristra de 9 bits que muestra los
Rutas. permisos que tiene; 3 para cada uno de los roles y de esos tres, uno
para cada una de las operaciones.
Todos los ficheros se localizan en una ruta (path). La RUTA es el
conjunto de nombres que habrá que “cruzar” en el árbol de ficheros Montajes.
para llegar a cualquiera destino. Cada uno de esos nombres se separa
por el símbolo slash (“/”). En una ruta, todos los nombres correspon‐ Permiten ampliar nuestro árbol de ficheros, y por tanto el ES‐
den a directorios, menos el último. PACIO DE NOMBRES (que es el conjunto de nombres que podemos
Hay dos formas de establecer la ubicación de un fichero, me‐ manejar en el árbol).
diante: Si agregamos una unidad de disco ya formateada con su propio
árbol de ficheros, tendremos que unir ese árbol a nuestro árbol gene‐
Ruta Relativa: La ruta comienza por un nombre y no por la ral. En Unix, a esto (es decir, montar dispositivos para visualizarlos en
raíz (/). El sistema lo encuentra utilizando como referencia nuestro propio árbol) se le llama MONTAJE. Con ello conseguimos
la ubicación donde se ubica el usuario. Cuando un usuario ampliar el espacio de nombres incluyendo la información de otros
tiene asignada una shell, suele apuntar a un directorio del dispositivos.
árbol (que suele ser el directorio “home”, es decir, el Cualquier dispositivo que tenga capacidad de almacenamiento
“working directory” del usuario). tiene que ser montado.
Ruta Absoluta: La ruta comienza por el directorio raíz (/).
20
Implantación de Sistemas Operativos
Si no lo montáramos tendríamos que manejar el dispositivo con Software Libre y GPL.
“leer/escribir”, trabajando con la información que está almacenada en
crudo (algo que hacen los gestores de disco). Aunque todo el software GPL es libre, no todo el software libre
es GPL. Esto es porque existen muchas licencias libres. Es la GNU, a
LINUX, UN UNIX LIBRE través de la FSF (Free Software Fundation), la que decide si una licen‐
cia es libre o no. Para ello, tendrá que cumplir las cuatro libertades.
¿QUÉ ES LINUX? Hay que tener en cuenta que estas libertades no dicen nada
acerca de la distribución. Referido a esto existen diversas propuestas
Linux bien puede ser un kernel de un sistema operativo o un sis‐ más y menos robustas (MIT, BSD, Apache, etc.).
tema operativo completo que utiliza su propio kernel. Sea lo que sea,
es software libre y utiliza la licencia GPL. HISTORIA DE LINUX
Software Libre. En 1980, la GNU y Stallman comienzan a crear un Unix comple‐
tamente libre. En su versión, su kernel se denominaba HURD, y
El concepto de software libre fue creado por el movimiento desarrollaron para él un gran número de aplicaciones, como un editor
GNU (GNU´s Not Unix) que fue fundado por el hacker Richard Stall‐ de texto llamado Emacs (Editor MACroS), gcc…
man. Su manifiesto puede leerse en la siguiente dirección. En 1990, Linus Benedict Torvalds (ingeniero de software finlan‐
dés) empieza a modificar Minix (un Unix de juguete) y lo compila en
http://www.gnu.org/gnu/manifesto.es.html un Intel 386.
En 1991, Linus libera la primera versión de Linux consistente en
Es una manera de entender el software; si la información tiene un kernel que ha recibido aportaciones de otros y que está licenciado
que ser libre y el software es información, entonces el software debe con GPL. Linus utiliza para esta versión el compilador y otros elemen‐
ser libre. Para ello, el código fuente debe ser público y libre, es decir el tos GNU. Nace una polémica interna: ¿Linux o GNU/Linux?
código podrá ser: Actualmente HURD está abandonado. Linux es el sistema “ofi‐
cial” de la comunidad libre.
Modificado.
Linux y Unix.
Redistribuido.
Ejecutado.
Linux deriva directamente de los ancestros de Unix, en concreto
de Minix. No es POSIX, aunque cumple su estándar en su totalidad.
Según GNU, el software libre será aquel que permite las si‐
Por ello, muchos no le consideran un Unix puro, o totalmente Unix.
guientes cuatro libertades:
Avance y Desarrollo.
Libertad 0. Libertad de ejecución para cualquier propósito.
Libertad 1. Libertad para estudiar su funcionamiento.
El avance de Linux es complejo. No existe un organismo centra‐
Libertad 2. Libertad para distribuir copias.
lizador ni coordinador. El kernel está gestionado y se actualiza por
Libertad 3. Libertad para mejorarlo y adaptarlo.
Torvalds y su equipo. El resto de usuarios coge el kernel y le añade
aplicaciones externas a su gusto, creando una distribución.
Algunos ejemplos de software libre son: sistemas operativos
Una distribución está formada por:
como Linux, FreeBSD, OpenSolaris, etc.; compiladores e intérpretes
como Gcc, Python, Java, etc.; otras aplicaciones como Firefox, Emule,
Kernel + Aplicaciones
Bittorrent, etc.
donde el kernel puede ser oficial o estar modificado. Cada distribución
Licencias GPL (General Public License).
avanza de forma independiente y publica sus propias actualizaciones
en sus propios servidores. Muchas distribuciones comparten aplica‐
Es una licencia propia de GNU cuyo objetivo fundamental es
ciones. En las distribuciones no existe ningún elemento
proteger al propio software libre. Implica que si modificas código GPL
estandarizador, y por tanto pueden existir cambios de librerías, entor‐
y lo quieres distribuir, debes hacerlo también bajo licencia GPL.
nos, plataformas… lo que hace que todo está muy desorganizado.
Detrás de las distribuciones existen diferentes tipos de colectivos:
Empresas: Ubuntu, Suse.
Gobiernos: Max, GuadaLinex.
21
Implantación de Sistemas Operativos
Comunidades de Usuarios: Gentoo, Debian. 2. ¿Quién es el usuario root y qué diferencias existen entre él
y el resto de usuarios?
El único denominador común a todo esto es la licencia GPL. 3. Explica el proceso de arranque de Unix.
Los repositorios oficiales del kernel están en “kernel.org”. Exis‐ 4. ¿Qué funciones tiene la shell?
ten miles de repositorios no oficiales ya que cada uno puede hacer las 5. Describe las características generales del sistema de fiche‐
modificaciones que quiera al kernel (por ejemplo Android). Incluso ros de Unix.
aquellos que quieran incluir sus modificaciones en el kernel oficial 6. ¿Qué es un montaje y qué implica realizarlo?
pueden enviarlas a la lista de correo oficial, donde los “committers” 7. Describe el modelo de permisos de Unix.
decidirán si incluirlas o no en el kernel oficial. 8. Enumera cuáles son los metadatos estudiados que utiliza
Unix.
PREGUNTAS. 9. ¿Qué es un fichero especial o de dispositivo?
1. Describe brevemente las características generales de Unix y
su modelo de utilización.
22
Tema Cinco
Linux I
Administración y Uso Básico
ARQUITECTURA estándar, todavía está presente en todos los sistemas Li‐
nux que sean compatibles con los programas UNIX.
CARACTERÍSTICAS C‐Shell (csh). La sintaxis de esta shell es similar a la que uti‐
liza el lenguaje de programación C.
Linux es un sistema operativo multiproceso y multiusuario. En‐ Korn Shell (ksh). Es un superconjunto de sh, complicada pa‐
tre los usuarios distingue a root (“raíz”) y a todos los demás. Además, ra principiantes.
está conformado en su totalidad por ficheros. Bourne Again SHell (bash). Es la shell estándar de GNU, in‐
En su organización sólo existe un árbol de ficheros de estructura tuitiva y flexible. En Linux es la shell estándar para casi
horizontal, donde estos se agrupan en directorios temáticos. En Linux, todos los usuarios. Es una sh con añadidos y conexiones,
dichos ficheros no tienen extensión, pero cada uno tiene un nombre y por lo que sh será siempre compatible con bash, pero no
una ruta (bien sea absoluta o relativa). Por último, todos los ficheros, siempre lo será a la inversa. Bash es una shell compatible
y por tanto todo lo que forma Linux, tiene tres permisos: lectura, con sh que incorpora herramientas de ksh y csh y sigue el
escritura y ejecución. estándar POSIX.
USO DEL SISTEMA El archivo “/etc/shells” nos podrá dar una idea de las she‐
lls de un sistema Linux.
Linux tiene ciertas reminiscencias del sistema Unix. En él, cada
usuario manejaba una consola sobre la que se visualizaba la shell, de ~$ cat /etc/shells
/bin/bash
forma que todos los usuarios se conectaban a un solo sistema Unix, /bin/sh
introduciendo su usuario y contraseña. Hoy día, nuestra CPU es nues‐ /bin/tcsh
tro propio Unix, sobre el que podemos arrancar múltiples shells. /bin/csh
SHELL Para cambiar de una shell a otra sólo hay que introducir el
nombre de la nueva shell en la terminal. El sistema encontrará la
orden introducida utilizando la variable PATH, y puesto que una shell
La shell es un recubrimiento del kernel del sistema. Funciona
es un archivo ejecutable (un programa), la shell actual podrá activarla.
como una interfaz entre el usuario y el kernel; sin ella, el usuario
Una vez introducido el comando, lo normal será que el prompt mues‐
tendría que manipular las librerías de llamadas al sistema, por lo que
tre la apariencia vinculada a dicha shell.
su existencia permite que el usuario se abstraiga, permitiendo que la
shell haga las llamadas al sistema por él al interpretar nuestras accio‐
Arranque de la Shell.
nes. Además de esto, la principal tarea de la shell será proporcionar
un entorno de usuario.
Cada vez que un usuario valida su acceso, se arranca una shell
para él. Durante la sesión podremos arrancar más de una; si ejecuto
Tipos de Shell.
“bash”, se arrancará otra shell, quedando la anterior bloqueada hasta
que la nueva no finalice su funcionamiento.
Hay muchas shell:
Al arrancar la shell, lee sus parámetros de configuración de un
fichero llamado “.bash_profile” (ten en cuenta que el primer punto
Shell Bourne (sh). Es la shell original aún utilizada en siste‐
indica que el fichero está oculto) en muchas distribuciones y “.bashrc”
mas UNIX y derivados. Es la shell básica, un pequeño
en Ubuntu. Existe un fichero de este tipo por usuario, donde se guar‐
programa con pocas características. Aunque no es la shell
23
Implantación de Sistemas Operativos
dan las preferencias de sus sesiones. Si no se creara este fichero, al ser Expresiones Regulares.
bash un proceso, desaparecería al apagar el sistema.
Cuando validamos el nombre de usuario y la contraseña, apare‐ Le dan flexibilidad a la invocación de comandos. Los caracteres
cen una serie de líneas en pantalla. Estas líneas están escritas por el comodines se utilizan para que la shell los sustituya por otra expre‐
kernel y por el proceso INIT, mostrando un análisis del arranque. En sión. De forma que si utilizamos el asterisco (*), la shell utilizará
las líneas finales aparecerá “tty1”, que nos muestra que estamos en la cualquier secuencia de caracteres, y si ponemos el signo de interroga‐
consola número 1, siguiendo el esquema de funcionamiento de los ción (?), los tendrá en cuenta de forma individual.
años 70.
Redirecciones de Flujo.
Uso de la Shell.
Los programas en Linux tienen tres flujos de datos, que se iden‐
Una vez arrancada, el usuario la manipulará a través de coman‐ tifican con los números 0, 1 y 2:
dos que ésta entienda. Una vez validado el nombre de usuario, el
sistema mostrará el PROMPT, lo que significa que la shell está prepa‐ Entrada estándar (por defecto el teclado), cuyo identifica‐
rada para recibir un comando. El prompt en Linux suele tener la dor es el 0.
siguiente forma (termina con el símbolo “$”): Salida estándar (por defecto el monitor), cuyo identificador
es el 1.
usuario@maquina:/ruta$ Salida estándar de errores (por defecto el monitor), cuyo
(alumno@mvirtual:~$) identificador es el 2.
Los comandos se introducen en Linux siguiendo el siguiente es‐ Cuando la shell le pide al kernel que ejecute un proceso, infor‐
quema: mará al kernel y al proceso sobre el flujo de dicho proceso (es decir,
sobre su entrada/salida). Por defecto tomará los datos del teclado y
~$ comando [-modificadores] [argumentos]
mostrará la salida por pantalla, pero podría ser también algo como “la
(con espacios entre comandos, modificadores y argumentos)
entrada la coges de esta tubería y la vuelcas en aquel fichero”. De esta
forma redirigimos el flujo de los datos.
Ten en cuenta que puedes encadenar comandos, separando
cada uno de ellos (junto con sus modificadores y sus argumentos) con
Si no hay información de ese flujo, el proceso volcará la in‐
un punto y coma (“;”).
formación al monitor (salida estándar). Sin embargo,
Cuando le hacemos llegar a la shell el carácter “intro”, conside‐
podemos pedir que saque los datos no por pantalla sino,
ra que la orden ya ha sido emitida, interpretándola y ejecutándola y
por ejemplo, a “/dev/null”, o redirigirlo a un fichero,
mostrando el prompt de nuevo en pantalla una vez ha finalizado.
almacenando en él la información que de otra forma mos‐
Mientras los procesos arrancan, la shell quedará bloqueada.
traría en pantalla.
Igualmente, la salida estándar de error será el monitor.
Ejemplo. Cuando escribo el comando “date” y pulso “intro”,
La entrada estándar es el teclado, pero se puede cambiar,
asume que la orden ha sido introducida por completo. La shell
por ejemplo, la shell podría pedirle que cuente caracteres,
hace una llamada al sistema para que el kernel arranque el pro‐
pero no del teclado, sino de un fichero.
ceso “date”, etc. En ese momento la shell crea un nuevo
proceso. Mientras se ejecuta “date”, la shell quedará en esta‐
En general los programas y comandos no muestran nada si todo
do bloqueado. Shell y “date” están conectados a través de una
va bien.
estructura de sincronización; hasta que “date” no ponga bytes
Para modificar las entradas y las salidas de los comandos habrá
en el buffer que comparte con la shell, la shell no se desblo‐
que escribir:
queará. Una vez desbloqueada, escribirá los datos en pantalla.
El kernel retirará “date” de la memoria y la shell volverá a
“>” (para que redireccione la salida).
mostrar el prompt.
“2>” (para que redireccione la salida de error).
Para salir de la shell, habrá que escribir el comando “exit”. “&>” (para que redireccione ambas salidas).
Ten en cuenta que la Shell distingue entre mayúsculas y minúsculas “>>” (para que redireccione la salida; sin truncar, es decir,
cuando te refieras a los ficheros, así que presta atención. lo que escribamos lo añadirá en una línea nueva al archivo
que ya está creado. Esta opción permite también la nota‐
ción “2>>” ó “&>>”).
“<” (para que redireccione la entrada).
24
Implantación de Sistemas Operativos
Ten en cuenta que las tuberías están limitadas en capacidad, de
Ejemplos. Si escribo: forma que una vez alcanzado ese límite hará que el proceso de salida
se bloquee.
~$ ls /bin > /tmp/salida.txt
Variables de Entorno.
La información de los ficheros que hay contenidos en el directo‐
rio “bin”, se escribirá en el fichero “salida.txt” situado en el Son un conjunto de valores asociados a un nombre que afecta
directorio “tmp” (todo dentro del directorio “home”). al modo de funcionar de los procesos y de la shell. Dichos valores se
almacenan dentro de bash y sólo serán visibles en la shell que se
~$ ls /bin > /tmp/salida.std 2> /tmp/salida.err declararon. Es decir, si arranco una segunda shell no tendrá las varia‐
bles que haya declarado en la shell madre, por lo que para que sean
Escribirá el contenido de “bin” en “salida.std”, y si diera error, globales tendremos que utilizar:
dicho mensaje se escribiría en el fichero “salida.err”.
/# export VARIABLE
~$ cat < archive > /tmp/archivo.copia
y así todas las shell hijas tendrán incluidas dichas variables.
en vez de mostrar el contenido del archivo en pantalla, lo mete‐ Las variables aportan información a la shell. Dicha información
rá en el fichero “archivo.copia”. no se perderá al cerrar la shell porque se almacenan en un fichero
estático de disco, y podrá afectar a los programas que estemos ejecu‐
~$ sort < /tmp/nombres.txt
tando. Las variables son consultadas por bash durante su ejecución, es
decir, si introduzco la variable “colors=1”, cuando bash consulta el
Ordena las líneas del fichero “nombres.txt”. Sort puede ordenar
espacio de variables y se encuentra con esto, hará que los procesos
varios archivos a la vez. Por ejemplo, si queremos que los archi‐
impriman los caracteres en color. Por poner otro ejemplo, si al arran‐
vos “nombres1” y “nombres2” queden ordenados y queden así
car Firefox necesita guardar cierto archivo temporal, le preguntará a
en un archivo nuevo llamado “nombres”, escribimos:
bash si tiene una variable que indique la ruta donde podría guardarlo.
Hoy día casi todos los procesos guardan sus propios ficheros, pero
~$ sort < nombres1 nombres2 > nombres
antiguamente funcionaban en base a las variables que bash pudiera
Tuberías. contener.
Como se indicó antes, hay un fichero que bash leerá y ejecutará
Conectan la entrada de un proceso con la salida de otro, consi‐ antes de dar el primer prompt (“.bashrc”). En dicho fichero podrás
guiendo que se comuniquen datos entre sí. Ambos procesos se meter las variables de entorno, de forma que aunque las pierdas
arrancan a la vez, pero mientras no haya datos en la tubería, el lector cuando cierres el proceso, las volverás a cargar al inicio, por ello se
se bloquea. Es decir, el comando que escribamos a la derecha de la dice que son dinámicas.
tubería tomará como entrada la salida del comando de la izquierda. Las variables se declaran de la siguiente forma:
~$ VARIABLE=valor
Ejemplo. Si escribo:
Donde VARIABLE puede tomar la forma que quieras, aunque
~$ cat /tmp/nombres.txt | sort
por convenio suele ir siempre en mayúsculas. Además, bash es sensi‐
De esta forma, hacemos que el contenido de “nombres.txt” ble a las mayúsculas y minúsculas. El valor es alfanumérico.
aparezca en pantalla, y como lo hemos conectado con una tu‐ Lo que declares cuando escribes una variable se queda dentro
bería a sort, hará que el contenido aparezca ordenado de bash.
alfabéticamente por filas. Para recuperar el valor de una variable puedo escribir el nom‐
bre de la variable precedida del símbolo $. Por ejemplo, si hago las
~$ cat /tmp/nombres.txt | head siguientes declaraciones:
Aquí lo que nos mostrará serán las primeras diez líneas del ar‐ ~$ VAR=F1
chivo “nombres.txt” en pantalla. ~$ cat F1 (será lo mismo que si pongo: cat $VAR).
Se pueden utilizar varias tuberías en la misma invocación y se
pueden combinar con redirecciones. Y si pongo:
~$ VAR=ls
~$ $VAR (será lo mismo que ejecutar “ls”)
25
Implantación de Sistemas Operativos
I‐nodo.
En bash puedes meter lo que quieras: rutas, comandos, etc. Ten
en cuenta que para modificar cualquier variable de entorno siempre Los i‐nodos hacen referencia a una estructura de datos, una es‐
tendremos permisos porque será nuestra shell. pecie de ficha con diferentes campos (por ejemplo, el bloque de
control, los metadatos del fichero…). El inodo almacena los metadatos
Variable PATH. de cada fichero existiendo un inodo por cada directorio. Guardan una
lista con la localización de los bloques de disco donde está guardado
Esta variable es muy importante. En ella se guardan las rutas cada fichero. Estos bloques se gestionan en grupos, reduciendo la
donde se podrán encontrar los ficheros binarios (ejecutables). Utilizar‐ fragmentación de los ficheros.
la nos evita tener que escribir la ruta absoluta de cada comando al A través de la ruta de los ficheros llegamos a su nombre que
invocarlo. Las rutas almacenadas están separadas por “:” tendrá asociado un número de inodo; dicho número estará recogido
Por defecto, PATH contiene todas las rutas existentes para los en la tabla de i‐nodos. Esta tabla se carga durante el arranque. La
archivos binarios. Si modifico PATH y sobrescribo su valor, perdere‐ tabla se almacena en la primera parte del disco y se carga en memoria
mos todas las rutas y será incapaz de ubicar los programas que (pudiendo cargarse por bloques).
ejecutemos, y por tanto, no podrá ejecutarlos a menos que nos en‐ Cada tabla empareja nombres y números de inodos. Por ejem‐
contremos en su misma ruta. plo, si en el directorio raíz tuviéramos la siguiente tabla (el inodo de la
Al ejecutar un programa, bash va probando las distintas rutas raíz no hay que buscarlo, está en lugar conocido):
contenidas en PATH hasta dar con la ubicación del mismo. Para meter
nuevas rutas a PATH, sin eliminar las existentes, habrá que escribir: Directorios i‐nodo
. 1
~$ PATH=$PATH:/nueva/ruta
.. 1
Ten en cuenta que al introducir el símbolo $ antes de la variable bin 4
estamos recuperando su valor (tal y como se dijo más arriba). El orden dev 7
en el que introduzcas las variables a PATH será respetado por bash. Si
por ejemplo pongo:
En esta tabla los directorios “.” y “..” apuntan a la raíz, por lo
que comparten el mismo inodo. Si quiero leer “/bin/ls”, voy a raíz
~$ PATH=.:$PATH
y “/bin” está en el inodo 4. Voy a la tabla de inodos y en el inodo 4
están los metadatos de “/bin”, donde puedo leer que se encuentra
Haré que siempre que vaya a arrancar un programa, bash bus‐
en el bloque 144. Leo dicho bloque y tengo otra tabla de directorios
que primero en el directorio en el que me encuentre.
de “/bin”.
Has de saber que aunque eliminemos el valor por defecto de
PATH, bash siempre podrá ejecutar los comandos echo y exit, pues
son comandos internos. Ficheros i‐nodo
Algunas variables de entorno más son: HOME, MAIL, PS1, HIS‐ /bin/nano 8
TORY, CLASSPATH. /bin/ls 3
SISTEMA DE FICHEROS Voy al inodo 3 y tenemos todos los metadatos de “/bin/ls” y nos
dice que está en el bloque 155 y 156, y allí encontramos el fichero.
CARACTERÍSTICAS Existe una caché de bloques para que no tenga que acceder
siempre al disco.
El sistema de ficheros es parecido al UFS (Unix File System), por
lo que sólo existe un árbol y por tanto sólo tiene una raíz (“/”). El Diferencias con FAT.
sistema siempre diferencia entre mayúsculas y minúsculas y los fiche‐
ros no tienen extensión. Los ficheros y los directorios son lo mismo Dentro de un fichero cada bloque apunta a su siguiente, por lo
(ambos tienen los mismos metadatos). que no es necesario consultar continuamente la tabla de inodos.
El sistema de ficheros está basado en el concepto de i‐nodo. Además, reduce la fragmentación debido a la gestión de los inodos
(los bloques tienden a almacenarse cercanos y en grupos).
26
Implantación de Sistemas Operativos
Tipos de ficheros.
Volcaré en el fichero “hola” el contenido “saludo”. Automá‐
Existen diferentes tipos de ficheros que Linux identifica con un ticamente, al estar “hola” y “adios” enlazados, “saludo”
carácter. también estará en “adios”.
Si ahora escribo:
Utiliza un “–“ para los ficheros regulares.
Una “d” para los directorios (Linux los muestra de color ~$ rm /tmp/hola
azul).
Una “b” o “c” para los dispositivos. Eliminaré “hola”, pero no ese inodo, pues el sistema de fi‐
Una “l” para los enlaces SIMBÓLICOS o blandos. En ellos el cheros no libera un inodo hasta que no se han eliminado
contenido del bloque del fichero enlace es la ruta del fi‐ todos los nombres que tiene referenciado. Para liberar ese
chero enlazado, sería lo que son los accesos directos en inodo habrá que escribir también:
Windows. Se crean con “ln –s” (de symbolic). El fichero
~$ rm /tmp/adios
enlazado guarda la ruta de acceso del fichero al que está
enlazado, por lo que si borro este fichero, el enlazado no
Para ver los metadatos del fichero y los nombres que apun‐
valdrá para nada.
tan a cada inodo se utiliza “ls –l”.
La sintaxis será la siguiente. Si tengo un archivo, por ejem‐
Montajes.
plo “Notas_Trim2012”, y quiero mostrarlo con un acceso
directo a “n012”, escribo:
Es un mecanismo que asocia el fichero de dispositivo de una
unidad de almacenamiento con un directorio del árbol. Permite am‐
~$ ln –s Notas_Trim2012 n012
pliar el espacio de nombres, accediendo a ellos a través de otras
De esta forma, cuando haga un ls, me aparecerá: unidades. El montaje es necesario para utilizar las unidades de mane‐
ra transparente.
lrw-rw-r-- alumno alumno … n012 Para extraer físicamente una unidad se tiene que desmontar.
Tanto el montaje como el desmontaje eran tareas tradicionalmente
Un “–“ para los enlaces FÍSICOS o duros. En los enlaces físi‐ de root. Dicho montaje se puede automatizar durante el arranque
cos un mismo inodo está referenciado desde dos ficheros utilizando “/etc/fstab”, aunque hoy día lo realizan los gestores de
diferentes. Los enlaces son la forma de crear accesos a fi‐ escritorio de manera automática.
cheros en diferentes lugares. Para los enlaces FÍSICOS se Para realizar un montaje se suele acudir al directorio “/dev”
crea un nombre de ficheros que apunte a un inodo ya re‐ donde se encuentran los ficheros de dispositivos, de forma que para
ferenciado. Por ejemplo, si “ls” apunta al inodo 5, y creo montar una unidad de cd rom escribiremos:
“lista” que hace referencia a ese mismo inodo, tendré un
fichero con dos nombres (en Linux el número de ficheros ~$ mount /dev/cdrom1 /mnt/cdrom
que hay es el número de inodos existentes).
No se pueden crear enlaces físicos a directorios. Siempre que hayamos creado antes el directorio “cdrom” en
Los enlaces se crean con el comando “ln” (link). Por “mnt”. Para desmontar la unidad habrá que escribir:
ejemplo, si tengo el ficheros “/tmp/hola”, y quiero enlazar‐
lo con un fichero que aún no existe llamado “adios”, para ~$ umount /dev/cdrom1 /mnt/cdrom
que “adios” apunte al mismo inodo que “hola”, escribiré:
Con lo que la shell nos reponderá:
~$ ln /tmp/hola /tmp/adios
umount: /mnt/cdrom: no montado
Si ejecutamos “ls –i” nos devolverá el número de inodo
Organización.
que corresponde a ese nombre. Y los dos ficheros aparece‐
rán con un fondo azul:
Aunque Linux mantiene su árbol organizado en zonas, son con‐
432455 adios 432455 hola venios no oficiales, por lo que esta organización puede ser alterada
por un administrador. Muchas aplicaciones presuponen ciertas cosas
Siguiendo con el ejemplo anterior, si escribo: del sistema de ficheros, por ejemplo, que tiene una organización
horizontal, ya que cada aplicación coloca sus ficheros en directorios
~$ echo saludo > /tmp/hola
27
Implantación de Sistemas Operativos
temáticos, no como en Windows, que se instala todo un programa en usuarios: propietario, del mismo grupo del fichero, y el resto. A root
un solo directorio. se le deja hacer, no tiene en cuenta los permisos.
Los ficheros se organizan en los siguientes directorios: Los permisos se almacenan en una ristra de 9 bits, y se mues‐
tran tras el dígito que indica el tipo de fichero al hacer “ls –l”.
/bin. Suele indicar la presencia de binarios (ejecutables),
compilados o scripts (programas hechos en lenguajes in‐ Ejemplo. -rwxr--r--(significa que es un fichero regular y su
terpretados –no se dice script de C porque está propietario puede leerlo, modificarlo y ejecutarlo, y los miem‐
compilado). En este directorio están los ejecutables fun‐ bros del grupo y el resto sólo pueden leerlo.
damentales: ls, tail, head…
/usr/bin. Se suelen meter los ejecutables sin los que Li‐ ¿Qué implicaciones tienen los permisos rwx en un directorio?
nux seguiría funcionando.
/usr. Suele indicar información propia de usuarios. Antes r. Implica poder leer su tabla de directorio, es decir, poder
estaban las cuentas de usuarios, pero al crearse “/home”, hacer un “ls”.
se quedó como un cajón de sastre. No es fundamental. w. Implica poder modificar su tabla, crear o eliminar un ar‐
/sbin. Suele indicar binarios destinados al superusuario o chivo que esté contenido en él. Si eliminas un archivo
root. desenlazas su entrada en la tabla del directorio que lo con‐
/dev (device). Suele recoger los ficheros de los dispositi‐ tiene.
vos, son todo nombres de ficheros que no existen. Es una x. Implica poder acceder a la información de los inodos, es
estructura en memoria, cuando apago, desaparece y se decir, poder atravesar el directorio. Por ejemplo, si tengo
crea al arrancar. El nombre de los dispositivos está vacío, “/dir1/dir2” y “/dir2” no tiene permiso de ejecución, no
ocupa muy poca memoria, son conductos hacia los dispo‐ podré acceder a él.
sitivos. Cuando instalas un driver, éste crea un
“/dev/device” que se escribirá en el kernel, por lo que Asignación de Permisos.
siempre se creará al arrancar la máquina.
/home. Indica directorios de cuentas de usuario. No es ori‐ Para la modificación de los permisos utilizamos “chmod”. Suele
ginal, pues tiene más de tres letras. utilizarse de dos formas:
/var. Aquí se recoge la información variable, cualquier co‐
sa que vaya a ser modificada frecuentemente. Por Modo textual. Más sencillo y lento. Utilizaremos “+” para
ejemplo, si instalo una base de datos, su motor estará en añadir permisos y “‐“ para quitarlos. Además, según que‐
“/bin”, sus librerías en “/lib” y sus tablas en ramos modificarlos para el propietario, el grupo y los
“/var/tablas”. Al ser información variable el directorio demás, utilizaremos “u”, “g” y “o”, respectivamente. Por
estará cambiando constantemente, por lo que antes ejemplo, para añadir permisos de escritura al grupo y al
(cuando la velocidad de acceso a los soportes de memoria resto de usuarios de un archivo escribiremos:
era una cuestión económicamente a tener en cuenta) po‐
dríamos poner “/var” en aquellos dispositivos más ~$ chmod go+w fichero
rápidos.
/opt. Destinado a la instalación de programas de forma Modo octal. Menos intuitivo pero más rápido. Modifica los
vertical. Todo aquello que tenga que ser instalado a mano 9 bits a la vez. La suma de los valores de r(4), w(2) y x (1)
se meterá aquí. Es específico de Linux. en cada categoría de usuario cambiará en su conjunto los
/etc. Guarda toda la configuración del sistema y las aplica‐ permisos de un archivo. Por ejemplo, si queremos que un
ciones externas instaladas. fichero tenga todos los permisos para todos los usuarios
escribiremos:
Permisos.
~$ chmod 777 fichero
El modelo de permisos es tan sencillo que puede quedar limita‐
Máscara de Permisos.
do; según qué contexto habrá que dar muchas vueltas para conseguir
lo que se quiera. Normalmente, en sistemas complejos con múltiples
La máscara de permisos especifica qué permisos tiene un fiche‐
usuarios, suele complementarse con otros sistemas de control de
ro o directorio cuando es creado. Los permisos base de los ficheros
acceso.
serán de 666 en modo octal y rw-rw-rw- en modo textual, y de 777
Tanto para ficheros como para directorios hay tres tipos de
para los directorios. Utilizando el comando “umask” siempre resta‐
permisos: Lectura (r), Escritura (w) y Ejecución (x); para tres tipos de
mos el valor que pongamos al valor de los permisos base:
28
Implantación de Sistemas Operativos
/etc/passwd: guarda toda la información de los usuarios
~$ umask 022 fichero menos las contraseñas. Es decir, guarda el nombre de
usuario, el UID y GID, los datos y el tipo de shell, separados
Propietario y Grupo. por dos puntos (“:”). Esta información nos interesa que sea
consultada por cualquier usuario, por lo que sus permisos
Todos los ficheros deben tener un propietario y un grupo, y sólo serán 644. Si pongo “finger usuario” nos dirá toda la
uno de ellos. Podemos cambiar el propietario utilizando: información sobre él.
Este archivo guarda una línea por cada usuario,
~$ chown nombre fichero en la que se almacenará la siguiente información:
Para cambiar el grupo se utilizará: usuario:x:1000:1002:datos:/home/usuario:/bin/bash
~$ chgrp nombre fichero donde “usuario” es el login del usuario; “x” hace refe‐
rencia a la pertenencia o no de contraseña (sin “x”, no
Es decir, si al hacer un “ls –l” en nuestro directorio “home”
tiene contraseña). Para bloquear un usuario, con eliminar
tenemos una línea que dice:
esa “x”, el usuario no podrá entrar al sistema. Los números
de ejemplo “1000” y “1002” hacen referencia al UID y
-rw-r--r--1 alumno alumno 179 2010-03-26 05:31 example
GID del usuario. El UID es un número único que identifica
a cada usuario. El UID para root es 0 (cero). El UID se guar‐
Podremos cambiar el grupo y el propietario a root escribiendo
da en el inodo y en el bloque de control, el sistema nunca
(todo en una misma línea):
utilizará el nombre de un usuario, sino su UID. Si dos per‐
/home/alumno# chgrp root example;chown root example sonas tienen el mismo UID se consideran iguales; es una
forma chapucera de compartir información. Si se asigna el
Ahora, al hacer un “ls –l” tendremos: UID 0 a un usuario, el sistema creerá que es root.
El GID es un número único que identifica a tu
-rw-r--r--1 root root 179 2010-03-26 05:31 example grupo primario. El GRUPO PRIMARIO es el único grupo de
usuario que se guarda dentro de “/etc/passwd”; aun‐
USUARIOS Y GRUPOS que el usuario pertenezca a muchos grupos, aquí sólo se
mostrará el primario. Cada grupo tiene su identificador;
que un grupo sea primario no significa que sea más impor‐
USUARIOS
tante para ese usuario. Un usuario tendrá que tener
siempre al menos un GID.
Hay dos tipos de usuarios: root y el resto de usuarios. Dentro
del resto de usuarios están aquellos, /etc/group. Aquí se encuentran todos los grupos existen‐
tes en el sistema, y por tanto también estarán el resto de
grupos a los que pertenece un usuario (además del prima‐
con acceso de shell: todos aquellos usuarios humanos
rio) y que no aparecen en “/etc/passwd”; es decir,
(alumnos, profesores, etc.).
para saber todos los grupos a los que pertenece un usua‐
y sin acceso de shell: los que no tienen contraseña asignada
rio habrá que ver dos ficheros:
y lanzan los procesos del sistema.
~$ cat /etc/group
Esta distinción se produce porque todos los procesos de la má‐
quina Linux tienen que estar asociados a un usuario; dicha ~$ cat /etc/passwd
información se almacenará en el bloque de control. Habrá procesos
que serán lanzados por el sistema sin tener usuarios humanos asocia‐ /etc/shadow: guarda las contraseñas cifradas de cada
dos. Por ejemplo, el sistema ejecuta los demonios, pero como todo usuario. Se cifran a partir de una función HASH. Este tipo
proceso tiene que estar asociado a un usuario, estos también tienen de funciones son irreversibles, es decir, si la aplico sobre
que tener uno. Para ello, estos procesos crean un usuario que no tiene un nombre me devolverá una cadena de caracteres a par‐
acceso de shell. Este usuario no puede ser root ya que si fuera de esta tir de la que será imposible volver a obtener el nombre. Es
forma tendrían los permisos de root y eso sería peligroso. requisito de una buena función de este tipo que tenga un
La información de los usuarios se almacena en tres archivos bajo índice de colisión, es decir, que sea poco probable
ubicados en la ruta absoluta “/etc”: que dos variables distintas produzcan la misma cadena
hash. Cuando te registras en la máquina Linux, la máquina
29
Implantación de Sistemas Operativos
genera la cadena hash a partir de lo que has metido y lo Directorios Home.
compara con la cadena que tiene almacenada en
“/etc/shadow”. Si coincide, te deja entrar. Ten en Son los directorios personales de los usuarios. Normalmente
cuenta que la cadena hash siempre será de la misma longi‐ todos los usuarios se crean bajo “/home”, aunque pueden crearse
tud, independientemente de la variable que transforme. donde se quiera.
Las funciones hash se utilizan para los antivirus y para ha‐ Hay una manera para dotar a “/home” de contenido automáti‐
cer seguimiento de archivos “conflictivos”. camente, por ejemplo, que siempre que lo creemos aparezca un
fichero llamado “bienvenido.txt”. Dicha estructura se crea en
En sistemas de miles de usuarios se suele guardar todo esto en “/etc/skel” (de skeleton) y todos los “/home” tendrán la misma
una base de datos externa para poder gestionarlo mejor. apariencia que nuestro “/skel”. El comando useradd permite
manejar diferentes “/skel”, especificando cuál de ellos queremos
Creación de Usuarios. utilizar al crear un usuario.
El sistema sigue los siguientes pasos al crear un usuario: Eliminación de un Usuario.
Crear el directorio del usuario en “/home”. El sistema desandará todos los pasos efectuados durante la
Calcula un nuevo UID y GID. creación de usuarios. Es posible que se quiera guardar la “/home” del
Inserta dicha información en una nueva entrada de usuario, conservando sus cosas.
“/etc/passwd”.
Crea una nueva contraseña cifrada. /# userdel –r usuario
Cambia la titularidad del home del usuario al nuevo usuario.
Utilizando el modificador “r” eliminamos la “/home” del usuario.
Nosotros utilizamos la siguiente línea de comandos para que el
GRUPOS
sistema realice los tres primeros pasos anteriores:
/# useradd usuario –d /home/usuario –m –s /bin/bash Los grupos permiten compartir información entre diferentes
usuarios. Existen grupos ya definidos, y se pueden crear más en
Utilizamos “-d” para que ubique el directorio home del usuario “/etc/group” o con el comando groupadd. La información de los
en “/home/usuario”; utilizamos “-m” para que cree dicho directo‐ grupos se almacena en “/etc/group”. Cuando hacemos:
rio (si es que no existe); y “-s” para decirle la shell que utilizará
(poniendo su ruta absoluta). ~$ cat /etc/group
Ahora tenemos que darle una contraseña al usuario. Para ello
Nos devuelve una lista con todos los grupos, su GID y los usua‐
utilizamos el comando passwd:
rios que pertenecen al mismo. Ten en cuenta que al crear un usuario
/# passwd usuario con useradd, siempre aparecerá un grupo que se llame de la misma
forma que el usuario y que será su grupo primario.
La shell nos devolverá una línea para introducir el password y Para crear un nuevo grupo se utiliza:
nos lo volverá hacer escribir. Si queremos que la contraseña caduque
podremos utilizar la siguiente línea de comandos: /# groupadd grupo
/# passwd –x 30 usuario Para eliminarlo:
El comando passwd puede ser invocado por el usuario cuan‐ /# groupdel grupo
do quiera, pero sólo será para cambiar su contraseña. Esto es posible
Para modificar el grupo de un usuario:
gracias a que este comando tiene el permiso especial “s”. Cuando
hacemos:
/# usermod –aG grupo usuario
/# chmod +s /bin/ls
Con el modificador “aG” añado ese grupo al usuario sin eliminar
los demás. Si utilizo “g” cambiamos el grupo primario del usuario; y
Conseguimos que cuando un usuario ejecute “ls” lo haga co‐
con “G” borramos todos los grupos a los que pertenece y sólo se
mo si fuera root. En octal, los permisos serían 1664.
queda con el que pongamos.
30
Implantación de Sistemas Operativos
PROCESOS Existen algunas alternativas a ps, como top, que es comando
que permanece bloqueado en la pantalla y que nos va a mostrar la
Siempre se crean con la función de C, FORK y EXEC. Los proce‐ información en tiempo real, viendo cómo funcionan los procesos y
sos siempre se crean mediante llamadas al sistema; habrá que cómo varían. Además, pstree es un script que sacará por pantalla
meterlas dentro de un código que formará parte de un programa y los procesos unidos mediante una línea de parentesco, mostrando los
que a su vez formará parte de un proceso. linajes de los procesos que hay ejecutándose en el sistema.
Sin embargo, tiene que haber un primer proceso que sea crea‐
do “manualmente” y no mediante una llamada al sistema. Este primer Finalizar Procesos.
proceso se crea línea a línea por el programador y se denomina INIT;
es por tanto el ancestro de todos los procesos. De esta forma, INIT Utilizamos el comando kill para enviar una señal al proceso;
siempre será el primer proceso del sistema (con un PID 1). el modificador que utilizaremos para acabar con el proceso será “9”.
Aunque el propietario de un proceso puede acabar con los procesos
Diferencia entre Exec y Fork. que haya lanzado, sólo root puede acabar con cualquier proceso:
Exec. Cuando arrancamos un proceso con exec le pasamos /# kill –9 [PID del proceso]
las rutas que se encuentran en PATH para que encuentre
el código objeto que queremos ejecutar. Entonces exec Primer y Segundo Plano.
llama al sistema y espera su respuesta. Por ejemplo, cuan‐
do ejecutamos “ls”, encuentra su código en “/bin/ls” y Por defecto los procesos se ejecutan en primer plano. Cuando
bash llama a exec para crear el proceso. exec lanza un proceso, bash hace que ese proceso hijo tome el control
Fork. Creación por partición. El proceso se ejecuta y fork de la entrada y salida estándar. Por ejemplo, si ejecutamos “sort”,
hace la llamada al sistema. Fork creará un proceso igual hasta que no acabe, bash no volverá a mostrar el prompt. Si por el
que el proceso padre que se ejecutará en tiempo compar‐ contrario, queremos seguir comunicándonos con bash mientras un
tido. Es una forma de clonar un proceso, que ejecutará el proceso se está ejecutando, tenemos que hacer que ese proceso
proceso clonado a partir de la llamada fork (el PID de cada activo pase a ejecutarse en segundo plano. Para ello, lo único que
uno de los procesos será diferente). tenemos que hacer es escribir al final del comando que ejecutemos el
carácter &. Por ejemplo:
Ten en cuenta que el propietario de un proceso hijo será el
/# comando –[modificadores] [argumentos] &
mismo que el del padre; si lanzamos un “rm” seremos los propietarios
y por tanto de “bash” y de exec. Es decir, cuando se lanza un progra‐
Cuando ese proceso haya terminado te enviará una señal que
ma en una shell, el proceso será hijo de esa shell.
no será visible hasta que ejecutes el “intro” en el prompt. Cuando
Linux tiene más estados que parado y bloqueado y en ejecu‐
enviemos un proceso a segundo plano, perderemos toda la interacti‐
ción. Entre ellos podremos encontrar:
vidad que teníamos con él.
Sin embargo, se puede hacer que un proceso vuelva a primer
Proceso Zombie. Es un proceso acabado cuya información
plano. Cuando lanzas un proceso a segundo plano, bash le asigna un
todavía aparece en la tabla de procesos. Esto sucede por‐
identificador que podremos visualizar con el comando jobs. Con
que quien libera la tabla de procesos siempre es el
dicho identificador, y con el comando fg podremos hacer que cual‐
proceso padre, y si el padre se muere antes que el hijo, en‐
quier proceso vuelva al primer plano:
tonces se quedará en la tabla de procesos.
Proceso Huérfano. En un proceso cuyo padre ha finalizado y
/# fg [identificador del proceso]
es adoptado por Init, que lo libera.
Una vez hecho esto, ese proceso ocupará toda la shell, por lo
Monitorizar Procesos. que si queremos volver a tener acceso al prompt tendremos que
utilizar la combinación de teclas “ctrl+z”, para detener el proceso.
Para ver los procesos que se están ejecutando en esa consola se Entonces podremos volver a interactuar con la shell y podremos
suele utilizar el comando ps. Esta orden tiene varios modificadores enviar al proceso a segundo plano de la siguiente manera:
”a”, “u”, “x”, que se pueden utilizar en combinación (en cualquier
orden) y que además no irán precedidos por el signo “-“. Para ver /# bg [identificador del proceso]
todos los procesos del sistema:
~$ ps aux
31
Implantación de Sistemas Operativos
PREGUNTAS. 16. En función de su ruta, ¿qué puedes decir de un fichero que
se encuentre en los siguientes directorios? /bin; /usr/bin;
1. Crea un archivo con los nombres de los ficheros y directo‐ /opt; /sbin; /dev; /home/Sergio/bin; /var.
rios de la raíz. 17. Describe brevemente el modelo de permisos de Linux.
2. Crea un archivo de los contenidos anteriores, pero que sólo 18. Deseamos que al crear nuevos usuarios les aparezca un fi‐
contenga las 5 primeras líneas. chero llamado “bienvenido.txt” en la raíz de su directorio
3. Crea un fichero que contenga 30 palabras en línea. “/home”. ¿Cómo conseguirlo?
4. Muestra en pantalla la primera mitad del archivo. 19. ¿Tiene sentido tener un UID repetido en el sistema? ¿Qué
5. Crea otro fichero cuya primera mitad sea la mitad del ante‐ consecuencias tendría? ¿y si es el UID 0?
rior y viceversa. 20. Describe los pasos que hemos de dar para crear un nuevo
6. ¿Qué es una redirección y una tubería? Diferencia entra usuario en el sistema.
ambas. 21. Describe brevemente el modelo de procesos de Linux y su
7. ¿Qué es una variable de estado? proceso de creación.
8. Crea un fichero con el contenido “fichero enlazado”, que se 22. Parece que un proceso no responde, ¿cómo actúas?
llame “fenlazado”. 23. ¿Qué es el proceso Init?
9. Crea un enlace físico con “fenlazado” y llámalo “efisico”. 24. ¿Cómo podemos ejecutar un proceso en segundo plano?
10. Crea un enlace simbólico hacia “fenlazado” y llámalo “esim‐ 25. ¿Qué es un proceso zombie? ¿Y uno huérfano?
bólico”. 26. Quiero que el sistema me salude cada vez que me conecto
11. Muestra en pantalla la información de los ficheros de los al sistema con un mensaje del tipo “Bienvenido!” ¿Cómo lo
ejercicios 8, 9, 10. consigues?
12. ¿Qué es un i‐nodo?
13. ¿Qué información almacenan los directorios en Linux?
14. Diferencias entre enlaces simbólicos y físicos.
15. Cuando haces un “ls –l”, ¿qué significado tiene el primer ca‐
rácter de cada línea y qué valores puede tomar?
32
Tema Seis
Linux II
Administración Avanzada
BÚSQUEDA DE LA INFORMACIÓN /# head archive | grep patrón
Mostrará, de las 10 primeras líneas (head) del archivo, aquellas
INTRODUCCIÓN
que tengan ese patrón. Si quiero que ese patrón se encuentre al final
de la línea, escribo:
Dentro de un gran sistema es necesario contar con sistemas de
búsqueda de información. Para ello utilizaremos comandos potentes
/# grep patron$ archivo
que nos permitirán buscar tanto ficheros, como su contenido o como
la información que esté recopilada en sus metadatos. Para encontrar los procesos ejecutados por el usuario
Hoy día los sistemas de ficheros funcionan de manera potente, “alumno”, tendría que teclear la siguiente línea:
de forma que únicamente con introducir ciertas pistas, te devuelven
una lista relacionada. Algunos ejemplos podrían ser tracker, spotlight, /# ps aux | grep alumno
etc.
Vamos a utilizar las herramientas más básicas y compatibles con Donde leerá la información de la tubería. Ten en cuenta que
todos los Unix: grep y find. podría redireccionar la entrada de grep, aunque si lo hiciera sería lo
mismo que si no lo escribiera, es decir, las dos líneas siguientes harán
GREP lo mismo:
Busca información dentro de un fichero o pathline. Nos devuel‐ /# grep alumno < archivo
ve las líneas completas que coinciden con ese patrón de búsqueda. /# grep alumno archivo
Grep necesita una expresión regular, como las que se vieron ante‐
riormente (*, ?), y las siguientes: Argumentos de Grep.
^. El acento circunflejo se refiere al principio de línea. Los argumentos se pueden concatenar.
$. Referido al fin de línea.
-i (insensitive). Busca mayúsculas y minúsculas.
Cuando lo utilicemos, buscará líneas que contengan la expre‐ -w (word). Sólo busca palabras sueltas, es decir, si pongo:
sión que se busca y mostrará su salida. Entre las muchas entradas, se
puede utilizar un archivo. /# grep –w para archivo
/# grep patrón < archivo Buscará la palabra “para” dentro de ese archivo, y nunca la
encontrará en palabras en las que ese patrón esté conte‐
De esta forma buscará ese patrón dentro de ese archivo. Si por nido, como “paraguas”.
ejemplo escribo:
-v (reVerse). Invierte el sentido de la coincidencia, es de‐
/# grep ^patrón < archivo cir, muestra todo lo que no tenga ese patrón.
-l. Muestra el nombre del fichero donde encontró la
Así buscará todas las líneas que empiecen por ese patrón den‐ coincidencia, es decir, buscará el patrón de todos los fiche‐
tro de ese archivo. Si por el contrario escribo: ros de ese directorio y te imprime el nombre de los
archivos que lo contengan, no la coincidencia.
33
Implantación de Sistemas Operativos
-n (number). Nos devuelve el número de línea donde se
produce la coincidencia, además de la línea. /# find /ruta –type l
Además, con este modificador podremos obtener el nú‐
mero de líneas de todo el fichero con el comando cat, es Nos devolverá todos los enlaces simbólicos situados en
decir: “/ruta”.
/# cat –n /ruta/fichero -user. Seguido de un UID (se encuentran en
“/etc/passwrd”, lo encontraremos utilizando un
Atención, mucho cuidado con los tabuladores; grep puede in‐ “grep nombre /etc/passwd”). Nos encuentra ar‐
terpretar el tabulador de un archivo de texto como 8 espacios. chivos de ese usuario.
Cuando escribamos grep, agruparemos el argumento con comillas. -perm. Encuentra archivos con esos permisos. Podemos
utilizar los símbolos “‐“ y “/” para incluir todas las condi‐
FIND ciones o permitir opcionalidad, respectivamente. Por
ejemplo:
Busca información en los metadatos, por lo que es ideal para
complementar con grep. Necesita un lugar donde empezar a buscar ~$ find . –perm /+w
y unos parámetros de búsqueda. Soporta muchas reglas y puede
asociar comandos en la búsqueda. Permite ejecutar comandos por Nos encontrará en el directorio donde nos encontremos
cada archivo coincidente con las reglas. Por ejemplo, puede buscar un los los archivos que tenga permiso de modificación en
tipo de archivo y hacer que esos tipos de archivo sean borrados. Es cualquiera de sus permisos.
posible utilizar expresiones regulares o reglas no concretas.
~$ find . –perm /ug+w
Find devuelve las rutas de los ficheros que ha encontrado. Si lo
has utilizado con rutas relativas, te las devolverá en rutas relativas; del
Nos encontrará todos los ficheros que puedan ser modifi‐
mismo modo te devolverá rutas absolutas si las utilizaste con find.
cados o por el propietario o por los miembros del grupo o
por los dos. Pero si escribo:
Reglas.
~$ find . –perm -ug+w
Cada regla se utiliza como un modificador: -regla valor.
Una invocación puede utilizar varias reglas. Sólo encontrará los ficheros que tengan permisos de modi‐
ficación tanto el propietario como los miembros del grupo.
/# find /ruta –regla1 valor1 –regla2 valor2 …
-exec. Seguido de un comando, un espacio, “{}”, un es‐
Aunque hay muchas reglas, las que vamos a ver son las siguien‐
pacio y “\;” podremos ejecutar comandos y aplicar su
tes, aunque puedes consultarlas todas en el manual (“man find”).
resultado a find. Por ejemplo, para borrar todos los archi‐
vos con permisos 640 del directorio “tmp”, escribiremos:
-name. Busca archivos cuyo nombre coincida con el valor.
Por ejemplo, si queremos que encuentre todos aquellos
~$ find /tmp –perm 640 –type f –exec rm {} \;
archivos que comiencen por A mayúscula:
Dentro de {}, bash sustituirá lo que ha encontrado find.
/# find /ruta –name “A*”
Un uso práctico de “/dev/null” con find, sería redirigirle la
-ctime. Archivos creados hace tantos días como indique
salida de error al hacer un find como usuario, ya que no tendremos
el valor. Por ejemplo:
permisos para buscar en muchos directorios. Por ejemplo, si escribo:
/# find /ruta –ctime –3
~$ find / 2> /home/alumno/error
En este caso mostrará aquellos ficheros creados hace me‐
Además de tirarse un buen rato mostrando por pantalla todo el
nos de tres días y que se encuentren “/ruta”.
espacio de nombres (para finalizar el proceso pulsar “ctrl+c”), al ter‐
minar tendremos un fichero en “/home/alumno” llamado “error” y
-type. Encuentra los archivos de ese tipo, b (bloques), c
que contendrá líneas de error, del tipo:
(carácter), d (directorio), f (file, regular), l (enlace simbóli‐
co). Por ejemplo: find: «/lost+found»: Permiso denegado
34
Implantación de Sistemas Operativos
/# sed 10d < archive
Si esa información no queremos que quede incluida en nuestro
fichero “fileclean”, podremos hacer que la vuelque a “/dev/null”, Lo que hará será mostrarte todas las líneas de entrada menos la
escribiendo: número 10. Ten en cuenta que no borra dicha línea, sino que simple‐
mente no la muestra. Para borrar esa línea lo que podremos hacer
~$ find / 2> /dev/null 1> home/alumno/fileclean será redireccionar la salida a un nuevo archivo, donde dicha línea no
aparecerá (no quedará grabada), es decir:
TRATAMIENTO DE LA INFORMACIÓN
/# sed 10d < archive > modif.archive
Aunque podemos modificar archivos con un editor, la tarea se
Atención, si leemos de un fichero y redireccionamos la salida a
convierte en algo tedioso cuando se trata de múltiples archivos. Para
ese mismo fichero, perderemos toda la información contenida en el
ello, podemos buscar información con grep y find y aprovechar
mismo. Será mejor no escribir esto:
para realizar modificaciones automáticas a archivos de forma masiva.
En Unix se utilizan de forma tradicional dos procesos, muy po‐
/# sed 10d < archive > archive
tentes y complejos:
Modificar Líneas.
sed.
awk. Es el uso más extendido de sed. Se escribe utilizando la si‐
guiente sintaxis:
SED
/# sed s/cadena1/cadena2/ < archive
Es un editor de flujo, y no es interactivo (como nano). La “ED”
viene de “editor”. Es similar a grep ya que recibe líneas por su entra‐ Esto modificará la primera aparición de “cadena1” por “cade‐
da, también recibe un patrón y expulsa la entrada en función de na2” en cada línea. Para cambiar todas las apariciones de “cadena1”
aquel, pero mientras que sed modifica los patrones, grep sólo los por “cadena2” de una línea, tendremos que escribir una g al final:
busca. Es decir, cuando sed lee de su entrada (una tubería, un fiche‐
ro, …), aplicará sus modificadores y colocará el resultado modificado /# sed s@cadena1@cadena2@g < archive
en su salida.
Podremos omitir la entrada o especificarla: AWK
/# sed [commandos] < archive Este comando se considera un lenguaje de programación. Es
/# sed [commandos] una herramienta muy potente y compleja utilizada para procesar
información de ficheros o de flujos. Awk interpreta su entrada (sea de
Este comando nos permitirá imprimir, borrar y modificar líneas.
una tubería o de un archivo) y fracciona cada línea de la misma en
campos (nos referiremos a cada una de las columnas interpretadas
Imprimir Líneas.
por awk como $X, donde X>0 será igual al número de columna, y
para X=0, sacará toda la línea).
Para imprimir líneas utilizamos la letra p (print). Si escribo:
La sintaxis es la siguiente:
/# sed 10p < archive
/# awk ’expresión acción’ < archive
Imprimirá la línea 10 de “archive” y luego, todo el fichero. Sin
Awk comprobará para cada línea si se cumple la “expresión”, y
embargo, si escribo:
después ejecutará la “acción” (dicha “expresión” y “acción” podrán
/# sed –n 10p < archive ser muy complejas). Las “acciones” se separarán por comas (,) que al
mostrarlas en pantalla las sustituirá por el delimitador estándar, es
Imprimirá solo la línea 10 de “archive”. decir, un espacio). Ten en cuenta que awk podrá utilizar los siguientes
caracteres en sus expresiones:
Borrar Líneas.
> mayor que
Para borrar líneas utilizamos la letra d (delete). Por ejemplo, al < menor que
escribir: >= mayor o igual que
<= menor o igual que
35
Implantación de Sistemas Operativos
== igual que /# cat ciudades.txt | awk ’{print “Ciudad:”, $1}’
!= distinto que Ciudad: Madrid
Ciudad: Barcelona
&& y
Ciudad: Londres
|| o Ciudad: Berlín
Ciudad: Sevilla
Ejemplo. Si escribimos un fichero (llamado “ciudades.txt” con
tres columnas (que hacen referencia a “ciudades”, “nacionali‐ O podremos definir una variable LIN=lin+1, y pedir que nos
dades”, “temperaturas”): muestre en pantalla la variable LIN y todo lo que hayamos introduci‐
do:
Madrid ES 31
/# awk ’{LIN=lin+1; print LIN $0}’
Barcelona ES 25
Londres UK 19
Berlín DE 12 ADMINISTRACIÓN DE PROCESOS
Sevilla ES 36
GESTIÓN AVANZADA
Awk podrá referirse a la columna donde están escritas las ciu‐
dades con $1, a la columna donde están escritas las El objetivo será aprender a programar procesos para que arran‐
nacionalidades con $2, y a la columna de las temperaturas con quen automáticamente. Para ello vamos a conocer los niveles de
$3. Por lo tanto si queremos que nos saque por pantalla todas ejecución y el arranque programado (cada cierto tiempo) de procesos.
las ciudades con una temperatura superior a 30 grados, escribi‐ Estos serán puntos fundamentales para cada administrador.
remos: Una vez se logre aprender a programar las tareas, habrá que
aprender a escribirlas (haciendo scripts).
/# awk ’$3>30 {print $1}’ < ciudades.txt
Madrid Niveles de Ejecución.
Indicándole que de la columna tres ($3) seleccione los números Los niveles de ejecución son propios de máquinas Unix SYSTEM
mayores de 30 y que nos muestre la línea de la columna uno V (el hijo más puro de Unix –en su lado opuesto estaría BSD).
($1) que coincida con ese valor. Como Linux desciende de Minix, y éste de Unix, se considera un
Si queremos que nos imprima las ciudades cuya nacionali‐ SYSTEM V. No obstante, esto no funciona en las distribuciones Ubuntu
dad sea española: y Devian actuales, aunque existirá algo parecido. Ubuntu agilizó y
modificó todo esto, mejorando el arranque y procesado de la máqui‐
/# awk ’$2==”ES” {print $1}’ < ciudades.txt
na.
Madrid
Barcelona Los niveles de ejecución (normalmente 7, del 0 al 6) son modos
Sevilla de operación (llamados run levels) que describen mecanismos de
automatización de parada y arranque de procesos cuando se inician
Indicándole que de la columna dos seleccione aquellos valores los run levels (ten en cuenta que para pasar al nivel 4 no habrá que
iguales a ES, y que nos muestre la línea de la columna uno que pasar los anteriores).
coincidan con ese valor. Es decir, cuando se pasa a un nuevo modo habrá una serie de
Si queremos que nos imprima las ciudades de nacionalidad procesos que arrancarán y otros que morirán con ellos. El nivel por
distinta a la española y con una temperatura superior a los 15 defecto se encuentra en “/etc/inittab”. Por ejemplo, cuando la
grados: máquina arranca pasa a un run level concreto, arrancando todos los
procesos que haya contenidos en dicho nivel (servidor web, demonio
/# awk ’$2!=”ES” && $3>15 {print $1}’ < ciudades.txt de backup, etc.). Por seguir poniendo ejemplos, si nuestro sistema de
Londres copias de respaldo consume muchos recursos y tiene que ejecutarse
en solitario, podríamos describir un nivel que arrancara todos los
Indicándole que de la columna dos y la tres seleccionen aque‐
procesos vinculados con el backup y matara a todos los demás.
llos valores distintos a ES y con una temperatura de 15 grados, y
Cada nivel se describe en los directorios “/etc/rcX.d”, don‐
que nos muestre la línea de la columna uno que coincidan con
de la X nos indica el nivel del run level.
esos dos valores.
También podremos hacer que lea los datos de entrada de
X=0 Nivel de apagado de la máquina.
una tubería, por ejemplo:
X=1 Nivel monousuario (root). Prueba de errores.
36
Implantación de Sistemas Operativos
X=[2-5] Niveles de uso del sistema. Son niveles estándar Si queremos programar los procesos para que sean lanzados en
para ser modificados como se desee. cualquier momento, tenemos dos herramientas para hacerlo:
X=6 Nivel de reinicio de la máquina.
cron Programa procesos para lanzarse periódicamente.
Estos directorios contienen scripts (tienen permisos de ejecu‐ at Programa procesos para lanzarse en un momento
ción) “rc”, y todos los nombres contenidos siguen una estructura concreto.
particular, empezando por K (“kill”, parada del servicio) o S (“start”, Cron.
inicio del servicio); luego va un número, que impondrá la jerarquía en
la ejecución de ese script, es decir, un 569 se ejecutará antes que un Permite programar procesos para ser lanzados periódicamente
575; y al final irá un nombre descriptivo del proceso que arranca, por (cada semana, cada mes, cada hora, etc.). Es lanzado por un demonio
ejemplo: llamado “crond” (es decir, para que funcione, el demonio tiene que
estar ejecutándose) y lee la información de un fichero personal (aun‐
/etc/rc1.d# ls que sea personal no se almacena en nuestra “home”, sino en “/var”)
K15pulseaudio llamado “crontab”.
K20rsync
Para acceder a nuestro crontab, accederemos a nuestro script
crontab. Si utilizamos “crontab –l” nos mostrará las tareas progra‐
Como consecuencia, el run level 0 tendrá casi todos scripts “K”.
madas (como si hiciéramos un “cat”); si usamos “crontab –e”
podremos editarlo (como si hiciéramos un “nano”).
Arranque Programado de Procesos.
Cada línea tiene cinco dígitos separados por espacios; cada lí‐
nea corresponde a una programación distinta y tiene un formato
Para arrancar procesos al inicio o al apagado del sistema utilizare‐
diferente:
mos los script rc. Estos scripts se generan a partir de un comando llamado
“update-rc.d”, que crea las estructuras de los scripts contenidos en
min hor día mes día-sem comando
“etc/rcX.d” a partir de los scripts contenidos en “/etc/init.d”.
Dentro de este directorio se encuentran los script sin S o K y sin número, y Los valores para cada campo son:
con esos scripts podremos controlar el arranque y parada de todos los
demonios. Por ejemplo, “/etc/init.d/apache” podrá invocar el
minutos: 0‐59
script general de control de apache para detenerlo, apagarlo, reiniciarlo o
horas: 0‐23
iniciarlo.
días: 1‐31
Es decir, init.d es un directorio que guarda los scripts de
meses: 1‐12
control y funciona como un panel de control de demonios y servicios
días de la semana: 0‐6 (0=domingo)
en general. A través de los scripts contenidos en dicho directorio,
podremos controlar por completo todos los procesos asociados a
Además, podremos poner los siguientes caracteres en los campos:
dicho demonio. Este directorio está estrechamente vinculado a los run
levels, por lo que no sería conveniente ubicar los scripts de init.d
“*” cualquier valor.
en otro lugar.
“-“ indica un rango de valores.
Una vez conocido esto, podremos ejecutar update-rc.d pa‐
ra que cree de forma automática los scripts K o S a partir de los “,” para separar una serie de valores.
scripts contenidos en init.d. Por ejemplo:
Ten en cuenta que aunque haya varios usuarios conectados a
/# update-rc.d cron start 2 2 3 4 5 . stop 2 0 1 6 . varias shells, los procesos de una shell no afectan a la otra.
La salida por defecto de cron es hacia el inbox del correo del
Este comando arrancará el demonio de cron en los niveles 2, usuario, por lo que habrá que redireccionarla.
3, 4 y 5 lo parará en los niveles 0, 1 y 6. Por citar dos, creará en el run
level 2 (directorio “etc/rc2.d”) el script S2cron y en run level 0 Ejemplo. Para cada línea de abajo, los siguientes periodos:
(directorio “etc/rc0.d”) el script K2cron. Fíjate en los puntos que Cada 15 minutos de cada hora, todos los lunes de cada mes
van tras los números de “start” y los números de “stop”. A las 13 horas, el quince de cada mes
Para que lo haga solo, escribiremos: A las 13 horas, el quince que sea de L‐V de cada mes
Primer lunes de cada mes a las 0:00
/# update-rc.d cron defaults Cada 8 horas de lunes a viernes
Cada 12 horas, los lunes y miércoles en los meses estivales
Si queremos programarlo al inicio de una sesión de un usuario
bastará con invocarlo en el .bash_profile, escribiendo init 2. /# crontab –e
37
Implantación de Sistemas Operativos
MIN HOR DÍA MES DÍA-SEM
15 * * * 1 Logs.
00 13 15 * *
00 13 15 * 1-5 Comandos.
00 0 1-7 * 1 Script propios.
00 0,8,16 * * 1-5 Herramientas especializadas.
00 0,12 * 6-9 1,3
LOGS.
At.
Logs del Sistema.
Permite programar procesos para ser lanzados de manera pun‐
tual. El lanzador es un demonio llamado ”atd” (es decir, para que
Son archivos de eventos. El sistema de logs lo mantienen dos
funcione, el demonio tiene que estar ejecutándose) y lee los procesos
demonios:
de la entrada estándar.
La sintaxis es como sigue:
syslogd: que gestiona los logs del sistema.
klogd: que gestiona los logs del kernel.
/# at hora:min día.mes.año
Una vez escrito se le da al “intro” y se introducen por teclado Los logs suelen guardarse en archivos bajo “/var/log”. Po‐
los comandos (su entrada estándar) hasta que at no reciba el carác‐ dremos consultarlos usando las herramientas clásicas: cat, grep,
ter de fin de fichero (“ctrl+d”). Si redirigimos su entrada hacia un sed, awk, etc.
fichero, at lo leerá byte a byte, por lo que también tendremos que
escribir los “intro” que necesitemos. /var/log/messages Son eventos de prioridad media.
Los argumentos pueden ser los siguientes: /var/log/kern.log Eventos de máxima prioridad.
Generados por el kernel.
-l Lista las tareas. /var/log/auth.log Informan sobre los accesos al sis‐
-d Borra una tarea. tema, escalado de privilegios y accesos fallidos.
-f Lee las tareas desde un fichero en lugar de la en‐ /var/log/dmesg Eventos producidos durante el arran‐
trada estándar. que (comando dmesg).
Si hay dos tareas en ejecución (la X y la Y), y quiero eliminar la Y, Estos archivos pueden crecer hasta tener gran tamaño.
tendré que escribir:
Logrotate.
/# at –l
1 tarea X El script logrotate es el encargado de su archivado. Su con‐
2 tarea Y figuración está en “/etc/logrotate.conf” y está configurado en
/# at –d 2
el crontab de root. Logrotate crea periódicamente archivos com‐
primidos con las extensiones *.1.gz, *.2.gz, etc. Además, trunca
at lanzará la shell sh que será la que leerá nuestros procesos y
a cero el archivo log correspondiente. Cuanto mayor sea el número,
los ejecutará. Esto significa que si utilizamos comandos internos de la
más antiguo será el archivo.
shell bash, no funcionarán, ya que at ejecutará el script mediante sh.
Por ejemplo, si quiero lanzar el comando “/bin/tarea” el 12 de
junio a las 18:30 de 2012, escribiré:
Logger.
/# echo “/bin/tarea” | at 18:30 12.6.2012
Con este comando podremos generar nuestros propios eventos
y registrarlos en los logs. Su uso es muy sencillo:
AUDITORÍAS
/# logger -f /var/log/message “mi evento”
AUDITAR EL SISTEMA
COMANDOS.
Las auditorías son la forma de controlar el sistema más básica
para un administrador. Con ellas se podrá saber quién entra, quién Algunos comandos básicos son:
sale, quién usa qué, etc.
Para llevarlas a cabo se utilizan diferentes mecanismos: last (permite consultar los últimos accesos)
38
Implantación de Sistemas Operativos
who (lista de usuarios conectados ahora) variable PATH. Si creamos un directorio dentro de nuestro “home”,
finger (aporta información sobre un usuario) llamado “scripts”, escribiremos:
Siempre es conveniente contar con herramienta especializadas ~$ export PATH="$PATH:~/scripts"
de monitorización y auditorías.
Comentarios.
PROGRAMACIÓN DE LA SHELL
Todo aquello que vaya después del símbolo almohadilla (#), se‐
rá ignorado por bash y sólo será visible cuando se edite el contenido
SCRIPTS
del script. De esta forma podremos introducir todo de tipo de comen‐
tarios y aclaraciones sobre nuestro script. Podremos introducir
Un script de la shell es una secuencia de comandos que se eje‐
comentarios en una misma línea de código, por ejemplo:
cutarán al introducir el nombre del script en la línea de comandos.
Son ficheros de órdenes. Como tales, son ficheros de texto plano; las
echo “¡Hola, $USER!” # así te saludará
órdenes incluidas en ellos las lee un intérprete. En nuestro caso, la
shell de Unix se utilizará como un intérprete de nuestros scripts.
Los scripts de init, por ejemplo, en el directorio init.d, suelen
Alternativamente, podrás utilizar scripts para realizar tareas automá‐
estar bien comentados ya que tienen que ser entendidos y tienen que
ticas usando el comando cron. Otros usos para los scripts será para
poder ser editados por cualquiera que utilice Linux.
los procedimientos de apagado y arrancado de la máquina, donde las
operaciones de los demonios y los servicios se definen en los scripts
Modo de Prueba.
de init.
Para crear un script de shell, abre un nuevo fichero vacío con un
Podemos ejecutar los scripts para que lo hagan en prueba de fa‐
editor (vim, emacs, gedit, dtpad, nano, etc.). Los editores vim o emacs
llos. Lo normal será escribir:
pueden ser configurados para reconocer la sintaxis de bash, lo que
puede ser de gran ayuda si se nos olvida poner corchetes o puntos y ~$ bash –x script_ejemplo
comas. Para resaltar los errores de escritura en vim, podremos escribir
(:syntax enable), que siempre nos aparecerá si lo introducimos en Lo que nos irá mostrando cada línea del script precedida de un
nuestro archivo .vimrc símbolo “+”, y ejecutándola a continuación, es decir:
Una vez abierto el editor, pon los comandos de Linux que quie‐
ras en su interior, como si los estuvieras introduciendo en la línea de + echo “¡Hola, $USER!”
comandos. En un script, la primera línea comienza con la ruta del ¡Hola, alumno!
intérprete, comenzando por los caracteres “#!”. Por ejemplo:
Podremos introducir dentro de nuestro script el comando set
#! /bin/bash para localizar aquellos comandos de los que tengamos dudas de su
funcionamiento, de forma que únicamente se activará el modo de
El intérprete se cargará en memoria y se le pasará el fichero de fallos cuando llegue a esa sentencia:
órdenes para que las procese. A partir de la cabecera se escriben
todas las órdenes siguiendo la sintaxis del intérprete. set –x # activa el modo de prueba
Dale a tu script un nombre que esté relacionado de alguna ma‐ echo “¡Hola, $USER!”
nera con su función, y asegúrate de que no entra en conflicto con set +x # desactívalo
Introducir Datos.
ninguna de los órdenes que ya existan. Para asegurarse de que no
haya ninguna confusión, los nombres de los scripts suelen terminar en
Para ello existen dos métodos. Bien utilizando la instrucción
.sh; aunque podría ser que incluso de esta forma se repitan los
read (nos pedirá que metamos el valor de la VARIABLE):
nombres. Para aclarar todo esto podremos utilizar los comandos:
/# read VARIABLE
/# wich -a script_ejemplo
O bien utilizando argumentos en la llamada. Si hago un script llamado
/# whereis script_ejemplo
prueba con la siguiente estructura:
/# locate script_ejemplo
#! /bin/bash
Todo script debe tener permisos de ejecución, y para ejecutarse echo ”$1 $2”
tendrá que escribirse su ruta absoluta, relativa o incluir su ruta en la
39
Implantación de Sistemas Operativos
Podré ejecutarlo escribiendo dos argumentos en la llamada que me Si no aparece [in LISTA], se reemplazará por in $@, y for
mostrará a continuación. Si pongo más, serán ignorados. ejecutará las instrucciones una vez por cada parámetro introducido.
VARIABLE puede ser cualquiera. LISTA puede ser cualquier lista de
/# ./prueba hola qué tal palabras o números. En el principio del bucle, VARIABLE toma el
hola qué
primer valor de la LISTA, luego toma el segundo valor, etc. El bucle
termina cuando VARIABLE ha tomado todos los valores de la LISTA y
$1, $2, $3 … guardan el valor de los argumentos introducidos
no quedan más entradas en ella.
durante la llamada. $* guarda todos los argumentos. $# guarda el
Por ejemplo, si queremos crear una copia de seguridad de nuestros
número de argumentos introducidos. $? Guarda un 1 ó 0 dependien‐
archivos de texto (.pdf) situados en “/home/alumno/trabajos”,
do del éxito o fracaso del último comando utilizado.
podremos utilizar esta función. Prueba esto paso a paso:
Condicionales.
~/trabajos$ touch Iso1.pdf Iso2.pdf Hardware.pdf
Podemos utilizar instrucciones de selección del tipo if‐then‐else;
~/trabajos$ ls *.pdf
siguiendo esta estructura: Iso1.pdf Iso2.pdf Hardware.pdf
If [ condición ] ~/trabajos$ ls *.pdf > lista
then
instrucciones
else ~/trabajos$ nano for1
instrucciones
fi #!/bin/bash
Si se cumple la condición se ejecutarán las instrucciones dentro # Este script es un ejemplo para saber
# cómo funciona FOR.
de “then”, y si no se cumple, se ejecutarán las instrucciones conteni‐
das en “else”. En las condiciones podemos introducir operadores
echo
numéricos: ‐lt(lower than), ‐eq(equal), ‐nq(not equal), ‐gt(greater
echo ”Realizando copias de seguridad...”
than); operadores para cadenas: == (igual), != (distinto); u operadores echo
lógicos: ‐a(and), ‐o(or), !(not). LISTA=`cat lista`
Podremos utilizar operadores unarios: (‐f ficheros, ‐d directo‐ for i in $LISTA
rios, ‐r permiso de lectura, ‐w permiso de escritura, ‐x permiso de do
ejecución). Por ejemplo, si queremos saber si existe el archivo de cp “$i” “$i”.bak
mensajes localizado en “/var/log”, escribiremos: echo “$i ---> copiado a $i.bak”
done
#!/bin/bash echo
echo ”Se han realizado las copias”
echo "Este script comprueba la existencia del
archivo de mensajes." echo
echo "Comprobando..."
if [ -f /var/log/messages ] ~/trabajos$ ./for1
then
echo "/var/log/messages existe."
fi Realizando copias de seguridad...
echo
echo "...hecho." Iso1.pdf ---> copiado a Iso1.pdf.bak
Iso2.pdf ---> copiado a Iso2.pdf.bak
Instrucciones de Iteración. Hardware.pdf ---> copiado a Hardware.pdf.bak
Estas instrucciones son del tipo for‐each. Ejecutarán una lista de Se han realizado las copias
comandos por cada valor en la lista.
~/trabajos$ ls *.pdf*
for VARIABLE [in LISTA] Iso1.pdf Iso2.pdf Hardware.pdf
do Iso1.pdf.bak Iso2.pdf.bak Hardware.pdf.bak
instrucciones
done
Puedes comprobar lo que hace línea por línea el script, escri‐
biendo (es muy aclaratorio):
40
Implantación de Sistemas Operativos
~$ bash –x for1
3. Diferencias entre grep y sed.
PREGUNTAS. 4. ¿Qué funciones de sed hemos estudiado? Pon ejemplos.
5. En qué consiste un run level y cómo podemos determinar lo
1. Diferencias entre grep y find. que se ejecuta, o no, al pasar ese nivel.
2. Crea un archivo con nombres de alumnos y ciclos. 6. Describe cómo funciona el paso de un run level a otro.
a. Mostrar los nombres de los alumnos que empie‐ 7. Para que se usa el “/etc/init.d”.
cen por “p”. 8. Diferencias entre cron y at; define su funcionamiento bási‐
b. Mostrar todos los alumnos del ciclo ASIR. co.
c. Separar tres ficheros con alumnos de cada ciclo.
d. Hacer nuevos ficheros ordenados alfabéticamen‐ BIBLIOGRAFÍA.
te.
e. Muestra todos los alumnos que se llamen “Pepe” Garrels, M. Bash Guide for Beginners. Version 1.11.
de los tres ciclos (ASIR, DAW, SMR).
41
Tema Siete
Linux III
Administración en Red
CONFIGURACIÓN DE LA RED ASIGNACIÓN DE PUERTA DE ENLACE Y ENROUTAMIENTO
Antes de nada configura la tarjeta de red de tu máquina virtual Para ello, utilizaremos el comando route, que sirve para modi‐
como bridge, según se dijo en el Tema Tres (página 15): Cada máqui‐ ficar la tabla de rutas de nuestra máquina. Cualquier máquina necesita
na virtual tendrá un identificador IP independiente; habrá que dos rutas por defecto: una de entrada y otra de salida.
configurar cada una de ellas como si fuera una máquina nueva. Ahora sólo tenemos la ruta de entrada (la introducida con
ifconfig), y para verla podemos escribir:
ASIGNACIÓN DE DIRECCIÓN IP Y MÁSCARA DE RED
/# route -n
192.168.5.120 0.0.0.0 255.255.0.0 eth2
Tradicionalmente se utiliza el comando ifconfig. Cuando lo
introducimos en la consola, nos muestra la configuración de las dife‐ Esa ruta que aparece se ha creado al configurar el interfaz con
rentes interfaces de red existentes. Habrá dos epígrafes principales, ifconfig. Tendremos que añadir una ruta hacia nuestra puerta de
uno ethX (donde X puede ser cualquier número), y el otro lo; ethX enlace (gateway – gw) que nos comunique con la red por defecto
hará referencia al puerto Ethernet y su número (X), donde aparecerán 0.0.0.0 (Internet). La dirección de la puerta de enlace es conocida y
descritas las características de nuestra tarjeta de red; y lo, se referirá nos la tienen que suministrar; en nuestro caso será 192.168.5.254:
a la dirección loopback, 127.0.0.1. Esta dirección de red es igual para
todas las máquinas (además, no existe rango de red para ella), y la /# route add default gw 192.168.5.254
utilizan para comunicarse consigo mismas.
Además, con ifconfig podremos editar las configuraciones Obtendremos ahora la ruta de entrada y salida si volvemos a
de las tarjetas de red, aunque hoy día existen cientos de aplicaciones escribir:
gráficas sobre cualquier escritorio que nos permitirán configurarlo sin
recurrir a la consola de comandos. /# route -n
Primero tendremos que asignar la dirección y la máscara de red 192.168.5.120 0.0.0.0 255.255.0.0 eth2
de nuestro equipo a nuestra tarjeta. El valor de ethX visto al hacer 0.0.0.0 192.168.5.254 0.0.0.0 eth2
ifconfig será necesario ahora. Por ejemplo, si nuestra red es la
Para comprobar la conectividad de nuestra puerta de enlace
192.168.5.0/16 (clase B), y decidimos escoger la IP 120, escribiremos:
utilizaremos la utilidad ping (Packet INternet Groper). ping com‐
/# ifconfig eth2 192.168.5.120 netmask 255.255.0.0 prueba esto enviando paquetes ICMP de solicitud y de respuesta, así,
podremos diagnosticar el estado, velocidad y calidad de la red que
Ahora ya tenemos introducidos estos valores y el puerto está abier‐ acabamos de establecer:
to y es operativo. Si queremos deshabilitar el puerto introducimos:
/# ping 192.168.5.254
64 bytes from 192.168.254: icmp_seq=1 ttl=254 time=1.04ms
/# ifconfig eth2 down
Y nos aparecerán líneas como la de arriba, donde:
Y si queremos volver a abrirlo (con la misma configuración in‐
troducida antes):
icmp_seq=1 hace referencia al Internet Control Message
/# ifconfig eth2 up Protocol (ICMP), un sub–protocolo de control y notifica‐
ción de errores del Internet Protocol (IP), y al número de
42
Implantación de Sistemas Operativos
paquete enviado. Estos mensajes de petición harán que
ping pueda determinar si el host está disponible. Todos se basan en un programa cliente y en un demonio ejecu‐
TTL (Time To Live), Tiempo de Vida. El TTL es un campo en tado en la máquina objeto.
la estructura del paquete del protocolo IP. Nos indica el
número de nodos que puede atravesar un paquete antes Telnet.
de ser descartado por la red o ser devuelto a su origen. Sin
este campo, los paquetes que fueran enviados a rutas no Es un protocolo de comunicación que permite abrir una shell en
existentes o a direcciones erróneas, estarían circulando una máquina remota. Toda la información va sin cifrar. El cliente que
por la red indefinidamente, utilizando ancho de banda sin utiliza es telnet y el demonio se llama telnetd. Es recomendable
ningún motivo. no utilizar este protocolo siendo root.
time es el tiempo en milisegundos que ha tardado el La forma de usarlo es (suele utilizarse el puerto el 23):
router en devolver el paquete.
~$ telnet dirección [puerto]
ASIGNACIÓN DE SERVIDORES DNS
Por ejemplo:
Domain Name System (DNS) asocia diferente información con
nombres de dominios. Se encarga (entre otras cosas) de traducir los ~$ telnet 192.168.5.130
nombres que utilizamos en identificadores binarios que sean com‐
SSH (Secure SHell).
prensibles para los computadores, con el propósito de poder localizar
y direccionar esos equipos. Por ejemplo, cuando queremos acceder a
Es un protocolo de comunicación seguro y cifrado entre un
un dominio ponemos su nombre, no su dirección IP, lo que hacen las
cliente y un servidor. Se puede utilizar para:
DNS es asociar ese nombre a una dirección. Los servidores DNS con‐
testan las peticiones de los clientes (son los que piden la traducción de
Abrir una shell en una máquina remota (similar a telnet).
sus nombres a binario), es decir, traducen los nombres que introducen
a binario para que puedan conectarse con sus máquinas. Transferir ficheros.
Las direcciones DNS se almacenan en el archivo de texto Realizar conexiones cifradas para otros y encapsular proto‐
/etc/resolv.conf. Podremos introducir en el fichero las direc‐ colos (ssh tunneling).
ciones de nuestros servidores DNS (las que se dan abajo corresponden
a los servidores de Google), de esta forma: Si no está instalado habrá que ejecutar apt-get update y
apt-get install openssh-server.
nameserver 8.8.8.8 Requiere de un cliente y un servidor; cliente: ssh, demonio:
nameserver 8.8.4.4 sshd. Hay muchas aplicaciones gráficas que utilizan conexión ssh
para Windows y Linux, como el PuTTY, por ejemplo.
ASIGNACIÓN DE FICHEROS DE NOMBRES LOCALES Se utiliza escribiendo (normalmente suele utilizarse el puerto 22):
En las redes pequeñas o privadas podemos no disponer de ser‐ ~$ ssh [argumentos] dirección
vidores DNS. Podemos evitar el uso de direcciones IP y utilizar
nombres de máquinas. Sólo tendremos que escribir la relación de Los argumentos principales son:
direcciones IP y sus nombres en /etc/hosts.
-l Uso de un usuario diferente en la conexión remota.
GESTIÓN REMOTA DE EQUIPOS -p Uso de un puerto diferente en el servidor
Consiste en abrir una shell en una máquina remota, utilizando SSH – Abrir una Shell en una máquina remota.
como bus de conexión una red de comunicaciones.
Es útil para aquellos equipos destinados como servidores que Siguiendo con el ejemplo utilizado en “Configuración de la Red”,
no suelen tener monitor ni teclado. imagina que tenemos un ordenador más conectado a nuestra red,
Para realizar la gestión remota de equipos existen diferentes cuya dirección es 192.168.5.130. Imagina también que en dicho orde‐
mecanismos: nador existe un usuario que tiene el mismo nombre que el que
nosotros estamos utilizando, es decir, si he ingresado como “alumno”
y quiero conectarme a esa otra máquina, tendré que hacerlo también
telnet
como “alumno” (por tanto, “alumno” tiene que existir como cuenta
rlogin
ssh
43
Implantación de Sistemas Operativos
de usuario en la máquina remota). Para abrir una shell en esa máqui‐ OTROS COMANDOS
na tendremos que escribir:
ping.
alumno@mvirtual:~$ ssh 192.168.5.130
Como se ha dicho antes, ping envía un pequeño paquete de
Ahora nos pedirá confirmación de conexión y luego nos pedirá datos o sonda hacia el destino que hayamos indicado. Se utiliza para
la contraseña de “alumno” (siempre que quieras abrir una shell probar si una máquina responde, pudiendo comprobar si dicha má‐
en otra máquina tendrás que conocer la contraseña del usuario quina se ha caído o no. ping utiliza el protocolo ICMP. Con ping
con el que nos conectemos). podremos controlar diferentes parámetros (número de sondas, tama‐
Una vez establecida la conexión, estaremos en el “home” de ño, ttl, etc.).
“alumno” de la máquina a la que nos hemos conectado. Para
salir de la shell, habrá que escribir exit. mtr.
Si por el contrario el usuario “alumno” no existe en la máquina Realiza un trazado de la ruta de conexión, combina los coman‐
a la que nos vamos a conectar, sino que existe el usuario “Peter”, dos ping y traceroute. Dado un destino de la conexión, ofrece
tendremos que utilizar el argumento –l (y conocer la contraseña de datos sobre cada salto (router) cruzado por los paquetes hasta el
Peter para abrir una shell en su máquina). Escribiremos: destino. Cada salto es sondeado utilizando ping. Este comando es
muy útil para testear instalaciones de red complejas, con varios
alumno@mvirtual:~$ ssh –l Peter 192.168.5.130 routers y por tanto, varias subredes.
Tras confirmar la conexión e introducir la contraseña de Peter, netstat.
habremos abierto una shell en esa máquina y el prompt será de
esta forma: Permite monitorizar la lista y el estado de las conexiones de una
máquina. Además, también muestra otros aspectos de la configura‐
Peter@mvirtual:~$_
ción de red (ip, tabla de rutas, etc.). netstat utiliza los siguientes
argumentos:
SSH – Transferencia de Ficheros.
–t muestra las conexiones TCP.
Para realizar transferencia de ficheros se utiliza el comando
-l muestra las conexiones en modo escucha (servicios).
scp. Se utiliza para transferir ficheros de forma segura, funciona
sobre una conexión ssh. -s muestra las estadísticas.
Para enviar ficheros a una máquina remota:
nmap.
~$ scp /ruta/local usuario@máquina:/ruta/destino
Es una potente herramienta de análisis de redes y máquinas. Es
Por ejemplo, si quiero enviar mi trabajo de ISO (Iso2.pdf) a la compleja de manejar, sobre todo en modo consola. Existen interfaces
otra máquina conectada a mi red: gráficas para su uso, como Zenmap. Es fundamental para cualquier
administrador de servidores y redes. Para su uso se puede visitar:
~$ scp /home/alumno/Iso2.pdf alumno@192.168.5.130:/home/alumno http://www.insecure.org
Aunque tiene muchos usos, algunos de ellos:
Para recoger ficheros de una máquina remota:
~$ scp usuario@máquina:/ruta/destino /ruta/local Rastreo de máquinas activas en una red que cumplan cier‐
tas características.
Por ejemplo, si quiero recoger el resumen de ISO (IsoR.pdf) de Descubrimiento de servicios.
la otra máquina conectada a mi red: Descubrimiento del tipo de sistema operativo, versión, etc.
de una máquina (fingerprinting).
~$ scp alumno@192.168.5.130:/home/alumno/IsoR.pdf /home/alumno Descubrimiento del hardware de red de una máquina o má‐
quinas.
44
Implantación de Sistemas Operativos
nc (Netcat). FTP
Netcat vale para todo. Su idea es muy básica: crear un socket o Es un protocolo de transferencia de ficheros, normalmente uti‐
conexión TCP/IP en crudo entre un cliente y un destino. Se utiliza para liza el cliente ftp y el demonio ftpd. Existen muchos clientes con
muchos objetivos: depurar aplicaciones, comprobar el estado de un interfaz gráfica. Se instala utilizando el comando apt-get o similar.
servicio, uso remoto de scripts, etc.
Por ejemplo, se puede utilizar para: Este servicio tiene un directorio raíz, por ejemplo:
/home/ftp.
Chat para dos: Podemos arrancar un nc como servidor: Cada usuario puede poseer un directorio.
Los usuarios anónimos tienen una cuenta especial de sólo
~$ nc –l –p 2323 lectura.
HTTP
Nos conectamos a él en otra máquina:
Es un protocolo de transferencia de ficheros HTML. Normal‐
~$ nc máquina-servidor 2323 mente utiliza como cliente: firefox, lyx, chrome, etc., y como demonio,
apache, lighthttpd, etc. Se instala utilizando el comando apt-get o
similar.
Consola remota: Creamos un servidor en el puerto 2323.
Este servicio tiene un directorio raíz, por ejemplo:
~$ nc –l –p 2323 –e /bin/bash /var/www.
Bajo este directorio suele exportarse la totalidad de la web,
Nos conectamos a ella: y alberga archivos de extensión .html.
~$ nc máquina-servidor 2323
45
Tema Ocho
Windows Server 2008
Gestión Local
INTRODUCCIÓN PREPARACIÓN DEL ENTORNO FÍSICO
¿QUÉ ES UN SERVIDOR? Para ello no vale una sala cualquiera. Para que el servidor esté
en condiciones óptimas y esté en funcionamiento 24x7 habrá que
Un servidor es una máquina que ejecuta procesos servidores o tener en cuenta una serie de cuestiones para poder tomar las medidas
servicios. Ya que a priori no se necesita ninguna cualidad especial, adecuadas. Habrá que proteger el sistema del calor, del agua y del
cualquier máquina podría funcionar como un servidor. fuego, de los ruidos eléctricos y de la electricidad estática, de los
cortes de corriente, y regular y proteger el acceso físico
Características.
Protección contra el calor: Es un factor fundamental. La
Un único servidor puede ejecutar varios servicios, siempre te‐ maquina va a estar trabajando 24x7, y eso genera mucho
niendo en cuenta que quizá dichos servicios necesiten requerimientos calor, un calor que perjudicará a las máquinas; por ello, es
hardware especiales. Lo normal es que un servidor requiera: importante que esa temperatura se pueda rebajar. Aun‐
que lo más sencillo es contar con aire acondicionado, hay
Disponibilidad de servicios 24x7. que tener en cuenta soluciones estructurales que puedan
Seguridad. crear sistemas de refrigeración y ventilación constantes sin
elementos mecánicos y que puedan solventar problemas
Alto rendimiento (tanto software como hardware).
aislados de falta de corriente eléctrica. Es recomendable
que la sala esté lo más fría que sea posible.
¿QUÉ ES UN SERVICIO?
Protección contra el agua y el fuego: Tiene que haber un
Un servicio es un proceso que atiende peticiones de otros pro‐ sistema de control de incendios, teniendo en cuenta que
cesos llamados clientes, procesándolas y enviando una respuesta. habrá que contar con extintores de fuego eléctrico que no
Los servicios pueden requerir grandes recursos hardware, y hay dañen los equipos electrónicos. Se puede contar con cá‐
cientos de tipos distintos: correo, ficheros, web, autenticación,… maras de vacío y sobre todo evitar que la sala tenga un
diseño inadecuado (como evitar que las cañerías y bajan‐
WINDOWS 2008. ANTECEDENTES tes pasen por el CPD). También habrá que tener en cuenta
la humedad, puesto que con el calor, puede ser un foco de
Fue anunciado por Microsoft en mayo de 2007. Aunque el ker‐ proliferación de hongos que podrían llegar dañar física‐
nel estaba basado en su predecesor, Windows 2003 Server, salió mente los componentes de los equipos.
habiendo sufrido cambios significativos, siguiendo la rama de desarro‐ Ruidos eléctricos: Hay que evitar todo tipo de interferencias
llo iniciada con Windows NT. Está orientado a servidores y pensado y no instalar las fases eléctricas mezcladas, preparando la
para optimizar sus requerimientos. instalación para evitar los cortes de corrientes (SAI), hasta
que se puedan utilizar los equipos diesel.
Acceso físico: Habrá que controlar la entrada y la salida a la sa‐
INSTALACIÓN Y ARRANQUE
la, la hora y el tiempo de estancia. El acceso estará controlado
e impedido con barreras físicas. El acceso físico garantiza el
Todo servidor tiene que cumplir con una serie de requisitos
control total del CPD, por lo que es un lugar al que no se debe‐
(preparación del entorno físico, montaje hardware de la máquina,
ría poder entrar. Además, tu CPD no tendría por qué estar ni
instalación del sistema software y configuración inicial, arranque y
en tu edificio, ni en tu ciudad, ni siquiera en tu país.
configuración de otros parámetros).
46
Implantación de Sistemas Operativos
Configuración del sistema (zona horaria, nombre del servi‐
Contar con todas estas medidas es algo caro, por lo que montar dor, etc.).
un CPD no sólo implica comprarse una máquina e instalar un sistema
operativo. Este hecho hace que la alternativa de la virtualización Instalación en Modo Desatendido.
(Tema Tres) sea algo digno a tener en cuenta económicamente, aun‐
que externalizar las necesidades del CPD, inevitablemente implicará Permite la instalación sin contestar preguntas, por lo que se tra‐
externalizar la información de tu propia empresa. ta de un modo de instalación no interactivo. Nos será de utilidad si se
tiene que repetir la instalación en múltiples equipos. Se basa en intro‐
MONTAJE HARDWARE DE LA MÁQUINA ducir al instalador un fichero con las respuestas a todas las preguntas
que nos hará durante el proceso de instalación, estructurado siguien‐
Hay que hacer una elección correcta de los componentes, te‐ do un esquema de etiquetas en XML. Para ello, habrá que incluir dicho
niendo en cuenta el presupuesto, relacionando calidad precio, la fichero en el propio CD.
optimización del rendimiento de los servicios y las compatibilidades El fichero podrá generarse manualmente desde cualquier editor
del sistema operativo con respecto al hardware. Todo esto tiene que de texto, o bien usando un programa llamado Windows System Ima‐
estar documentado, cuanto más se documente, mejor. Hay que do‐ ge Manager (lo más recomendable), que aunque no forma parte de la
cumentar todo: instalación, errores, montaje, problemas de montaje, instalación básica, se encuentra en la base de datos de Microsoft
cómo funciona la máquina, evolución de rendimiento, etc. Así podre‐ llamada TECHNET (donde se encuentra toda la información para que
mos conocer los rendimientos de la máquina. Recuerda que los cualquier administrador resuelva sus dudas) y su licencia es gratuita.
reportes podrán automatizarse, generando scripts para generar in‐ Hay otra base de datos para desarrolladores llamada MSDN, donde se
formes lanzados, por ejemplo, por cron, y así poder monitorizar el encuentra toda la información útil para poder programar cosas para
sistema. Microsoft.
Si las máquinas donde se quiere instalar el sistema operativo
INSTALACIÓN DEL SISTEMA SOFTWARE tienen hardware muy distinto, será más recomendable instalarlo así.
La primera elección será la del sistema operativo, ¿cuál es el Método de Clonación.
mejor sistema operativo para gestionar el hardware de la máquina?
Habrá que atender a muchas variables a la hora de elegirlo: factores Para ello habrá que crear una maqueta (una imagen de ese
económicos, familiarización de uso, compatibilidades… Después habrá equipo) en un soporte de almacenamiento ajeno. Así, tendremos una
que instalar un sistema de base de datos y demás aplicaciones, cuya copia byte a byte de lo que contiene ese equipo. Si volcamos esa
elección también dependerá de muchos factores. imagen en otros discos, tendremos exactamente lo mismo, por lo que
En este tema vamos a hablar de Windows Server 2008. Este sis‐ si esos equipos tienen un hardware muy distinto, puede que los dri‐
tema se suministra en varias ediciones: vers no funcionen, aunque si son ligeramente parecidos, funcionará.
Así, tendremos clonado no sólo el sistema operativo, sino también las
Web Edition. aplicaciones que tuviera instalado el sistema operativo original.
Standard Edition. Para hacer esto hay varias herramientas: Norton Ghost o Acro‐
Enterprise Edition. nis. Ghost arranca el equipo y puede comunicarse con la unidad de
Datacenter Edition. red donde tiene la maqueta, pasando cada byte de ésta al disco duro.
Ten en cuenta que con la clonación, la IP, el nombre del equipo,
Técnicamente, a nivel de Kernel, no existe ninguna diferencia etc., serán el mismo, y eso será un problema. Lo tendrás que cambiar
entre las diferentes ediciones. Elegir una u otra te impondrá unas u a mano, o si no, utilizar alguna aplicación como por ejemplo Acronis,
otras limitaciones, pero será el fabricante el que las imponga, ven‐ que te permitirá asignar esas características automáticamente.
diendo licencias más limitadas en servicios por precios más reducidos. Por lo tanto, si las máquinas donde se quiere instalar el sistema
Para instalarlo habrá que introducir el CD de la distribución, o operativo tienen hardware muy distinto, no será recomendable insta‐
iniciar la instalación desde una carpeta compartida de red. Para arran‐ larlo así.
car el instalador habrá que reiniciar el equipo y seguir los siguientes
pasos del asistente: SECUENCIA DE ARRANQUE
Inicio del instalador. Ha sido modificada notablemente con respecto a Windows
Aceptar los términos de la licencia. 2003. El nuevo sistema es más versátil, pues permite el arranque en
Particionar y formatear el disco. sistemas sin BIOS, y más portable, permitiendo arrancar el kernel en
Copiar los archivos y librerías. todo tipo de arquitecturas (no sólo x86). Windows utiliza el archivo
47
Implantación de Sistemas Operativos
“bcd.log” en lugar del tradicional “boot.ini”. La secuencia de arranque estructurado en categorías. Cada categoría se puede dividir en más
consta de: categorías o en entradas. Las entradas están formadas por un nombre,
un tipo y unos datos. Dentro de la categoría HKEY_CLASSES_ROOT,
Control del sistema por la BIOS. tenemos cientos de categorías, y si por ejemplo, si nos metemos en la
Lectura y ejecución del registro de inicio maestro (MBR, Mas‐ categoría FirefoxHTML, tendremos dos entradas:
ter Boot Record). El MBR es el primer sector de un disco
duro, que comienza el proceso de inicio del equipo. El MBR Nombre Tipo Datos
contiene la tabla de particiones del disco y una pequeña ab (Predeterminado) REG_SZ Firefox HTML Document
cantidad de código ejecutable llamado código de inicio prin‐ ab FriendlyTypeName REG_SZ Firefox HTML Document
cipal, desde donde se carga BootMgr (Boot Manager).
BootMgr controla el proceso de arranque (detecta las op‐ Aunque el administrador pueda acceder al registro de Win‐
ciones de arranque para elegir el kernel) y muestra las dows, éste está destinado principalmente a las aplicaciones, que serán
opciones del menú (si existen). las que lo lean y las que escriban en él, dejando allí sus parámetros de
BootMgr llama a WinLoad.exe para que aloje al kernel ele‐ configuración.
gido en memoria.
Se carga el archivo del kernel (new technology operating Categorías Principales.
system kernel, “ntoskrnl.exe”) byte a byte, es ejecutado y
pasa a segundo plano hasta la primera llamada al sistema. HKEY_CLASSES_ROOT. Parámetros sobre ficheros, librerías y sus
relaciones.
Personalización del Arranque. HKEY_CURRENT_USER. Parámetros del usuario activo de la sesión.
HKEY_LOCAL_MACHINE. Parámetros locales de la máquina y el siste‐
Para personalizar el arranque editaremos el Boot Configuration ma.
Data (fichero “bcd.log”). Este fichero es binario (es decir, no está HKEY_USERS_USERS. Parámetros de los usuarios.
codificado con códigos alfanuméricos), por lo que habrá que modifi‐ HKEY_CURRENT_CONFIG. Parámetros del software y el hardware
carlo con un programa que pueda modificar el fichero correctamente. instalado.
Para ello utilizaremos el programa “bcedit.exe”. “bcd.log” está ubica‐
do en “\boot”, y está oculto. CONFIGURACIÓN DE LA RED
Antes, el fichero era el “boot.ini” y era un fichero plano que se
podía editar directamente y que contenía las características de nues‐ Configurar la red, junto con el nombre del servidor, es un paso
tro arranque. inicial básico. Su configuración depende del rol de la máquina dentro
“bcd.log” enumera y localiza las particiones arrancables del sis‐ de la red (Servidor web, router, firewall, Proxy, etc.), y podremos
tema, y también podrá gestionarse desde la interfaz gráfica. configurarlo a través del “Centro de Redes” que se encuentra en el
“Panel de Control”. Allí habrá que seleccionar “Administrar Conexio‐
nes de Red”, “Red de Área Local”, “Propiedades”. Después,
ADMINISTRACIÓN
seleccionaremos “Protocolo IPv4” y configuraremos sus propiedades.
Para nuestro centro pondremos, por ejemplo: IP 192.168.5.111;
INTRODUCCIÓN
Máscara 255.255.255.0 y puerta de enlace 192.168.5.254.
La configuración básica siempre necesitará lo siguiente:
La administración se encargará de que el sistema esté siempre
funcionando. Para ello, todo tendrá que estar optimizado (configura‐
Dirección IP del servidor.
ción del software, hardware y las comunicaciones del servidor) para
Máscara de Subred.
poder explotar la máquina a su rendimiento óptimo.
Puerta de enlace.
REGISTRO DE WINDOWS Servidores DNS.
Es una base de datos jerarquizada que contiene los principales Aunque para los roles antes mencionados, hará falta una confi‐
parámetros de configuración del sistema. Es una especie de “/etc”, guración más compleja.
donde se encuentran las directivas del sistema, de cada usuario, de
seguridad, etc. Se trata de un archivo binario, con el que podrás confi‐ UTILIDADES DE ADMINISTRACIÓN
gurar todo el sistema.
Se puede modificar con la utilidad “regedit.exe”. Al abrirlo, ve‐ Las herramientas que permiten analizar y monitorizar el estado
mos que muestra la base de datos jerarquizada en forma de árbol, y funcionamiento de la máquina reciben el nombre de utilidades de
administración. Todas ellas son fundamentales para cualquier admi‐
48
Implantación de Sistemas Operativos
nistrador. Entre ellas veremos la consola de administración, el visor de varios registros predeterminados y nos dará la posibilidad de que
eventos, el monitor de rendimiento y alertas, el programador de podamos definir nuestros propios registros nuevos. Además, las
tareas, y el generador de informes. aplicaciones también cuentan con registros separados para sus even‐
tos, pudiendo crear su propio evento.log (visualizado a través del
Consola de Administración. “Visor de Eventos”).
Dentro de todos los registros que aparecen en el panel izquier‐
La Microsoft Management Console (MMC) es una herramienta do del visor de sucesos, los registros más importantes son los tres
utilizada para crear, guardar y abrir colecciones de herramientas primeros:
administrativas, llamadas consolas. Las consolas contienen elementos
como complementos, extensiones de complementos, controles de Aplicación. El registro de aplicación contiene los sucesos re‐
monitor, tareas, asistentes y documentación requerida para adminis‐ gistrados por aplicaciones o programas. Por ejemplo, un
trar la mayoría de los componentes hardware, software y de red de programa de base de datos podría registrar un error de ar‐
Windows. Se pueden agregar elementos a una consola MMC existente chivo en el registro de aplicación. Serán los programadores
o bien crear nuevas consolas y configurarlas para administrar un los que decidirán qué sucesos se supervisarán.
componente específico del sistema; serán una especie de scripts Seguridad. El registro de seguridad guarda sucesos como in‐
visuales que podremos guardar como archivos independientes. tentos de inicio de sesión válidos y no válidos, además de
Para abrir MMC, habrá que pinchar en “Inicio” y a continuación, sucesos relacionados con el uso de recursos, como la crea‐
en “Ejecutar”, escribir “mmc”. ción, apertura o eliminación de archivos u otros objetos.
Toda MMC tiene dos paneles, y su estructura será la misma pa‐ Un administrador podrá especificar los sucesos que se re‐
ra cada una de las utilidades de administración que veremos a gistrarán en el registro de seguridad. Por ejemplo, si
continuación. habilitaste la auditoría de inicio de sesión, se registrarán
en el registro de seguridad los intentos de inicio de sesión
Panel Izquierdo. Complementos añadidos. en el sistema.
Panel Derecho. Detalles del complemento seleccionado. Sistema. El registro del sistema contiene sucesos registra‐
dos por componentes del sistema Windows. Por ejemplo,
Consola de Administración. Usuarios y Grupos Locales el error de la carga de un controlador u otro componente
del sistema durante el inicio quedará registrado en el re‐
El sistema tiene una base de datos de usuarios y grupos. Esta gistro del sistema. Los tipos de sucesos registrados por los
base de datos es local a la máquina, que no la compartirá con ninguna componentes del sistema estarán predeterminados por
otra, por lo que si creamos un usuario en una máquina, sólo existirá Windows.
en ella (cambiará cuando hablemos en el Tema Nueve de los Domi‐
nios; se entiende por DOMINIO una serie de máquinas Windows que Cada uno de estos registros almacena eventos de tipo informa‐
toman a una como referencia (llamada controlador de dominio) y que ción, advertencia o error (aunque los eventos referidos a la seguridad
comparten información entre ellas). podrán tener más tipos, como autenticaciones fallidas), con la hora,
Cuando creamos un usuario (“Panel de Administración/ Herra‐ fecha, usuario, categoría, suceso y equipo donde se produjo la inci‐
mientas administrativas/ Usuarios y Grupos”), nos pedirá un nombre y dencia. Podremos buscar información dentro de esos registros,
un dominio. Si ponemos un dominio distinto al local, el usuario se creando vistas personalizadas o aplicando Filtros.
creará en la máquina controladora del dominio que pongamos (así
podremos crear un servidor de usuarios). Las VISTAS son filtros permanentes que quedan registrados
Para gestionar usuarios y grupos locales, utilizaremos la consola y que permanentemente se van a cargar asociadas a un
predefinida: “Administración de Equipo”, aunque podremos agregar nombre. Son por tanto, mecanismos de recuperación de
este complemento en una MMC nueva. También tendremos que eventos con ciertos parámetros comunes (un script con el
asignar a estos usuarios una contraseña. nombre de esa búsqueda). Las vistas se podrán exportar
Las contraseñas están condicionadas por unas fuertes restric‐ de un PC a otro. Por ejemplo, podremos tener vistas sobre
ciones de seguridad, que pueden limitarse desde el panel de el registro de seguridad para almacenar la información de
“Directiva de Seguridad Local”, con lo que habrá que ser muy cuida‐ los errores; o la vista para almacenar los eventos sobre el
doso para no poner el peligro la seguridad del sistema. apagado del sistema.
Los FILTROS son búsquedas, como un “grep”. En el árbol
Visor de Eventos. de la consola habrá que seleccionar el registro que se
desee filtrar. En el menú ver, buscar FILTRO, y allí especifi‐
Este visor muestra los registros de eventos (tablas donde se al‐ car las características que se desean.
macenan sucesos ocurridos en el sistema) y su contenido. Cuenta con
49
Implantación de Sistemas Operativos
Sobre cada registro podremos: ‐ Enviar un correo.
‐ Mostrar un mensaje.
Modificar su configuración. Disparadores (desencadenadores). Cualquier situación que
Buscar eventos por diferentes criterios. provoque la ejecución de una tarea. Hay muchos de ellos,
Exportarlos a un fichero o base de datos (.evt –binario–, entre los que se pueden nombrar: según programación, al
.txt, .csv). Si hacemos esto, podremos almacenarlos, algo iniciar o apagar sesión, al iniciar el sistema, o al estar inac‐
fundamental para futuras auditorías. tivo. Hay que tener en cuenta que no existe un disparador
al apagar el sistema, y si queremos hacerlo tendremos que
Monitor de Rendimiento y Alertas. buscar el id. evento 1074, con origen “USER32” (un módu‐
lo del kernel) y cuyo registro sea “sistema”.
Monitorizar el rendimiento es una tarea básica de cualquier
administrador. Un mal rendimiento es indicativo de un mal funciona‐ Generador de Informes
miento, lo que implica ofrecer un mal servicio a tus clientes. Aunque
Windows 2008 ofrece diferentes herramientas para esta labor, noso‐ El generador de informes hace “fotografías” del sistema en un
tros veremos el Monitor de Rendimiento (“Rendimiento”, en momento dado en base a unos parámetros configurados a priori (por
“Herramientas administrativas” del “Panel de Control”). tanto no es a tiempo real). Estos parámetros trabajan con los mismos
El monitor de rendimiento nos permitirá agregar diferentes pa‐ elementos que el monitor de rendimiento, es decir, con los contado‐
rámetros a monitorizar, cada uno de ellos con un contador distinto. El res y con los conjuntos recopiladores de datos.
monitor de rendimiento trabaja con contadores, y éstos a su vez,
trabajan con los recopiladores de datos. Es decir, los recopiladores de GESTIÓN DE LA INFORMACIÓN
datos están registrando la información que utilizarán los contadores,
para que luego el monitor pueda mostrarlos. Así, podremos definir. SISTEMA DE FICHEROS NTFS
CONTADOR. Aquellos parámetros de diferente índole que El sistema de ficheros NTFS tiene mejoras significativas con res‐
son representados en una gráfica y que podremos monito‐ pecto a FAT32, entre los que se encuentran los permisos de archivos y
rizar. Con ellos podremos visualizar datos sobre un carpetas (podremos hacer una mejor gestión de permisos y listas de
componente software o hardware. Los contadores son uti‐ control de acceso), el cifrado (seguridad), la compatibilidad con volú‐
lizados por el monitor de rendimiento. menes de gran tamaño, la administración de archivos dispersos, mejor
Conjunto RECOPILADOR DE DATOS. Un conjunto de conta‐ recuperación frente a fallos y configuraciones avanzadas vía software.
dores con una configuración específica (para registrar
eventos). Según su objetivo, los contadores utilizados se NTFS. Permisos
utilizarán de una forma u otra.
El nivel de permisos NTFS controla el acceso final a un fichero o
Hay que tener en cuenta que el monitor de rendimiento nos carpeta de todos los usuarios, y tiene como fin asegurar la seguridad e
mostrará los parámetros contenidos en el contador sobre una gráfica integridad del sistema de ficheros. Los permisos son reglas asociadas a
que podremos exportar, y nos permitirá monitorizar parámetros a archivos o carpetas con usuarios o grupos, y todo fichero contenido
tiempo real de cualquier sistema, tanto local como remoto. Sólo en una carpeta, heredará los permisos de ésta.
tendrá una labor de visualización, pues para ejecutar acciones con Hay diferentes permisos en Windows, aunque realmente son
ellos se utilizarán los recopiladores de datos. operaciones que se van a permitir o denegar:
Programador de Tareas. Control Total: Podremos leer archivos o carpetas, ejecutar
binarios, y cambiar y mover elementos.
El programador de tareas permite al servidor lanzar tareas de Modificar: Podremos cambiar elementos existentes pero no
forma automática. Es el equivalente a “cron” de Linux. crearlos nuevos.
Nos permitirá asociar las tareas a lanzar (acciones) a un evento Leer y Ejecutar: Podremos leer elementos existentes y eje‐
concreto (disparadores), lo que le permitirá obtener al administrador cutar archivos binarios.
un aviso en tiempo real del evento en cuestión. Así, podremos definir: Leer: Podremos leer elementos existentes.
Escribir: Es similar a modificar, pero no podremos borrarlos.
Acciones. Lo que se ejecutará cuando la tarea se dispare.
Hay tres tipos de acciones dentro del administrador de ta‐
reas:
‐ Inicio de un programa.
50
Implantación de Sistemas Operativos
Windows recomienda asignar permisos a grupos en vez de a confundir con los permisos NTFS. En caso de contradicción con los
usuarios, ya que no considera muy eficaz el mantener cuentas de permisos NTFS, siempre se aplicarán los permisos más restrictivos.
usuario directamente. Los permisos son:
NTFS. Herencia de Permisos. Control Total.
Cambiar.
Todo archivo o carpeta posee una ACL (Access Control List). Ca‐ Leer.
da entrada en la ACL relaciona cada actor (usuario o grupo) con las
operaciones que tiene permitidas o denegadas. Una ACL puede here‐ Mecanismos.
dar entradas de sus antecesores, pero si están heredadas no podrán
eliminarse, tan sólo podrán denegarse. Windows recomienda utilizar Para poder exportar la información utilizaremos la carpeta “Ac‐
“denegar” sólo en casos especiales, como para: ceso Público”, o en el menú propiedades, “Compartir”. Si hacemos
esto último, conseguiremos más exactitud en la configuración de
Excluir un subconjunto de un grupo que tiene permisos usuarios y permisos, pues podremos elegir los usuarios y los permisos.
permitidos. Al compartir dos ficheros con SAMBA, tendrás un NAS (ver más
Excluir un permiso especial cuando ya se haya concedido adelante).
control total a un usuario o grupo.
Uso Desconectado.
En caso de que nos interese editar por completo una ACL ten‐
dremos que romper la herencia respecto de sus antecesores. Para Windows permite el uso desconectado de archivos y carpetas
hacerlo, habrá que irse a las opciones avanzadas dentro de la pestaña compartidas. Los cambios que se hayan realizado se sincronizarán tras
de seguridad una vez estando en propiedades. Una vez dentro, en la una nueva conexión. Será necesario habilitar el servicio en el Panel de
pestaña de “Permisos”, habrá que deseleccionar el recuadro “Heredar Control del servidor y del cliente.
del objeto principal las entradas de permisos relativas a los objetos
secundarios…”. Una vez hecho esto, podremos elegir copiar toda la ALMACENAMIENTO
ACL de nuestro antecesor o borrarla para crear una nueva. De cual‐
quier forma, la ACL ahora pertenecerá a ese elemento de forma Según el uso, se podrán utilizar unos u otros dispositivos de al‐
completa. macenamiento. Para su uso continuado, utilizaremos discos
Es recomendable romper la herencia en los niveles más altos, magnéticos, mientras que para su uso puntual, utilizaremos discos
aunque habrá que tenerlo siempre en cuenta a la hora de ahorrarnos ópticos y cintas magnéticas.
el trabajo. Sin embargo, hay otras tecnologías de almacenamiento, bien
Hay que tener en cuenta que ante un conflicto entre permisos, hardware o módulos software del propio Windows, que servirán
siempre se aplicará el más restrictivo. como sustitutos de dicho hardware.
EXPORTAR INFORMACIÓN Raid (Redundant Array of Independent Disks).
La información almacenada en una máquina Windows 2008 es Es un conjunto de discos magnéticos independientes que fun‐
normalmente exportada a través de la red. Pueden utilizarse muchos cionan coordinados y que ofrecen servicio como si fueran uno solo
servicios de red externos para hacer esto: NFS, FTP, SSH, HTTP. Nor‐ (son por tanto dispositivos hardware). Para que funcionen como un
malmente, en Windows utilizaremos el protocolo SMB. El antiguo todo, necesitan del gobierno de una controladora, que optimizará la
SMB (ahora CIFS) es un sistema de transferencia de ficheros que velocidad de acceso y la repartición de bytes en cada disco (el cómo se
proviene de la antigua implementación GNU SAMBA de Linux. SMB repartan definirán el NIVEL DEL RAID). Esta configuración permitirá
nos permitirá, por tanto, compartir recursos, como ficheros, directo‐ obtener menores tiempos de acceso, tolerancia a fallos e integridad
rios o impresoras a través de una red. SMB viene de serie en todos los de datos.
sistemas Windows, por lo que se ha convertido a la fuerza en un Aunque hay muchos niveles, vamos a ver tres de ellos:
estándar.
RAID 0. Es el más sencillo. La información se divide en tiras
Permisos. (stripes) que se almacenan en paralelo en dos discos (no
hay información duplicada).
Estos permisos sólo se aplican a los usuarios que acceden al re‐ ‐ Ventajas: Maximizamos el tiempo de acceso,
curso compartido a través del servicio de compartición de SMB. No pues podremos hacer lecturas paralelas (ya que
51
Implantación de Sistemas Operativos
so unidades físicas independientes). De hecho, A nivel de almacenamiento, el objetivo ideal para cualquier ad‐
reducimos el tiempo de acceso a la mitad. ministrador es que cada componente funcione íntegramente con el
‐ Inconvenientes: No tiene tolerancia de fallos. Si sistema y no implique una traba para el cálculo. Para esto, el RAID no
perdemos un disco, perdemos la mitad de la in‐ es muy válido, pues es poco flexible, de forma que se recurre a las
formación. redes.
RAID 1. Discos en espejo. Cada byte que guardamos en un
disco, se guarda también en el otro; todos los discos de es‐ Redes SAN (Storage Area Network).
te RAID tendrán la misma información. Este nivel no
mejora la velocidad de acceso de lectura. Son conjuntos de discos conectados en una red local. De esta
‐ Ventajas: Tiene tolerancia a fallos, como mucho, forma, si queremos más espacio, lo único que tenemos que hacer es
un fallo. Si perdemos un disco, no perdemos in‐ conectar otro disco a la red.
formación, pues está duplicada en el resto de Estos discos estarán organizados por un sistema de ficheros
discos. único que se encargará de resolver la ubicación de cada uno de los
‐ Inconvenientes: Desperdiciamos el doble de es‐ bloques de información repartidos entre todos los discos. Es decir, las
pacio. Si compro dos discos de 500Gb, sólo solicitudes se harán al sistema de ficheros, pero este generará una
tendré 500Gb de almacenamiento. solicitud hacia el disco en red que tenga el bloque. Por tanto, el siste‐
RAID 5. Esta configuración reparte un código de paridad so‐ ma de ficheros gestiona los discos a bajo nivel (orientado a bloques).
bre todos los discos. Este nivel no duplica información, La red de discos se monta a través de una topología Fiber Chan‐
sino que para cada conjunto de stripes reparte entre los nel (FB) o una red iSCSI sobre una infraestructura de cables par
demás discos una tira más que asegure la integridad de las trenzado (utiliza el protocolo iSCSI; los mensajes se meten dentro de
tiras anteriores. En el caso de que falle uno de los discos, un datagrama IP, nada de TCP).
se podrá reconstruir la información del mismo a partir de Funciona de la siguiente forma:
los códigos de paridad distribuidos entre los demás discos.
Para ello utiliza un mecanismo similar al que utilizaba la La aplicación accede al sistema de ficheros.
función HASH (si dos archivos generan cadenas HASH idén‐ El sistema de ficheros accede a su mapa y llama al driver
ticas, serán el mismo archivo). iSCSI.
‐ Ventajas: Al repartir la información mejora los El driver iSCSI sabe que tiene que comunicarse por la red,
tiempos de acceso (a diferencia de los niveles 3 y esperando mensajes para confirmar donde está la infor‐
4 que dejan los códigos de paridad en un único mación que se le ha ubicado en el mapa.
disco y, por tanto, crean un cuello de botella). iSCSI se comunica con la red para pedir la información, se
Además, no desperdiciamos espacio y tenemos hace con ella, la compila, se la pasa al sistema de ficheros
tolerancia a fallos, como máximo, de un disco. Si y éste a la aplicación.
perdemos más de un disco, no podremos recupe‐
rar la información. La red iSCSI no debería compartir nada con la red local y debe‐
‐ Inconvenientes: Necesitamos más discos para ría tener su propio switch.
montar un RAID5, al menos 3, por lo que será Este es un sistema muy flexible; lo único que tenemos que ha‐
más caro. cer para ampliarlo, es añadir más nodos a la red. Además, cada nodo
podrá tener un sistema RAID en su interior.
Cuando montemos un RAID en nuestro equipo sólo veremos un
disco, es decir, siempre se verá como una unidad de bajo nivel. El Redes NAS (Network Attached Storage).
sistema operativo no accede ni controla los discos, sino que será la
controladora la que se encargará de ello. Son un conjunto de discos conectados en una red local, al igual
Windows 2008 tiene mecanismos para emular RAID (ver más que la SAN, pero conceptualmente está por encima del sistema de
adelante “Almacenamiento. Windows 2008”). ficheros, a diferencia de la SAN.
NAS se basa en un servicio de ficheros: acepta mensajes asocia‐
Almacenamiento. Redes. dos a ficheros que trabaja con rutas (lee, escribe, cierra, abre, elimina,
etc., mensajes de alto nivel).
En la última década se han utilizado otros tipos de sistemas de Funciona de la siguiente manera:
almacenamiento para mejorar la escalabilidad, es decir que pueda
crecer en tamaño y que siga funcionando (crecimiento en cuanto a El cliente accede al servicio de ficheros (NFS, SMB, etc.).
volumen de datos, así como en cuanto a su capacidad de cálculo).
52
Implantación de Sistemas Operativos
Una vez se ha dado la orden al servicio de ficheros, éste rendimiento, pero ni son tolerantes a errores, ni
desvía la petición al sistema de ficheros de cada uno de los se pueden ampliar ni reflejar.
nodos de la red. ‐ Volumen Reflejado (similar a RAID1): Volumen to‐
lerante a errores que duplica la información en
Como se dijo más arriba, dos equipos comunicados con SAMBA, dos discos físicos. Crea redundancia de datos al
forman un NAS. Además, al igual que el SAN, cada nodo podrá tener utilizar dos volúmenes idénticos llamados espe‐
un sistema RAID en su interior. jos.
‐ RAID‐5: Volumen tolerante a errores con datos y
Diferencias entre SAN y NAS. paridades distribuidas, en tres o más discos físi‐
cos, de forma intermitente en bandas. La paridad
En las redes SAN, la aplicación accede directamente al sis‐ es un valor calculado que se utiliza para recons‐
tema de ficheros, y la ruta se queda en el mapa. A partir truir datos cuando se produce un error. No se
de ahí, la red iSCSI trabajará con bloques, bytes, etc., por podrán reflejar ni extender.
lo que debajo del mapa, las rutas no tendrán ninguna utili‐
dad. Conceptualmente estará “por debajo” del sistema Para administrar los volúmenes dinámicos hay que acceder al
de ficheros (orientado a bloques). “Administrador de Discos” del Panel de Control.
En las redes NAS, el servicio de ficheros deriva al sistema de
ficheros la petición del cliente, por lo que trabajará con ru‐ BACKUPS
tas. Conceptualmente está “por encima” del sistema de
ficheros (orientado a ficheros). Los respaldos son una copia de un conjunto total o parcial de
los datos del servidor. Los hay de dos tipos, que con compatibles y
Almacenamiento. Windows 2008 complementarios.
Windows 2008 tiene mecanismos para emular el funcionamien‐ Backup de archivos. Consiste en respaldar los archivos del
to de los RAID a nivel software, donde el árbitro será el sistema sistema de ficheros, pero no la estructura lógica.
operativo que tratará los discos conectados como si fuera un RAID. Backup de sistema. Crear una imagen exacta, byte a byte,
Esto tiene como ventaja principal el ahorro de dinero. Sin em‐ del sistema de ficheros con todo su contenido.
bargo, tiene algunos inconvenientes. Este método, donde el kernel
maneja la circuitería, es más lento, pues en un RAID real, la controla‐ Antiguamente, los respaldos se hacían sobre cintas magnéticas,
dora lo hace a través del hardware directo; por tanto la emulación pudiendo caber varios de ellos en una sola cinta. Actualmente, el
tendrá un bajo rendimiento. Además, Windows no deja instalar nada soporte puede ser cualquier otra cosa. A partir de un sistema de
del sistema (ni service pack, ni librerías, etc.) sobre estas unidades ficheros se puede hacer un backup:
RAID emuladas.
Para ello, Windows 2008 distingue entre: Normal. Se copia todo el sistema de ficheros cada vez que
se modifica un archivo dentro del mismo, independiente‐
Discos Básicos. Aquellos discos físicos que contienen parti‐ mente de si se modificaron, o no, el resto de ficheros. Al
ciones o volúmenes básicos. hacer esto, cada backup ocupará lo mismo que la totalidad
Discos Dinámicos. Los discos dinámicos ofrecen una funcio‐ del sistema, sin embargo, te garantizará la restauración
nalidad de la que carecen los discos básicos, como la más limpia y rápida, pues sólo necesitaremos el último ba‐
posibilidad de crear volúmenes repartidos entre varios dis‐ ckup realizado para ello.
cos (volúmenes distribuidos y seccionados) y de crear Incremental. Parte de un backup completo, donde a partir
volúmenes tolerantes a errores (volúmenes reflejados y del mismo, sólo se respaldarán aquellos ficheros que ten‐
RAID5). Todos los volúmenes de los discos dinámicos se gan el atributo de modificado. Hay muchas maneras de
consideran volúmenes dinámicos (similares a las particio‐ conocer si un archivo ha sido modificado o no (por ejem‐
nes), y son los siguientes: plo, a través de la comparación de sus cadenas HASH),
‐ Volumen Distribuido: Su espacio abarca más de pero algo normal es que el sistema de ficheros incorpore
un disco físico, es decir, la información del mismo un bit que indique si los ficheros han sido, o no, modifica‐
podrá estar repartida en varios discos. No son to‐ dos. Así, cuando hagamos el respaldo, el sistema buscará
lerantes a errores, pero se pueden reflejar. aquellos con ese bit y los copiará, quitándoles el bit una
‐ Volumen Seccionado (similar a RAID0): Almacena vez hayan sido respaldados. Obviamente, este tipo de res‐
datos en stripes en dos o más discos, que se asig‐ paldo ocupará menos espacio que el normal, sin embargo,
nan de forma equitativa y alternada. Mejora el si quisiéramos reconstruir el sistema por completo, ten‐
53
Implantación de Sistemas Operativos
dríamos que cargar la copia total y cada una de las copias Hyper–V no requiere del sistema host para funcionar, es decir,
incrementales realizadas hasta el punto de restauración. no tienes que cargar en memoria ni el kernel ni las librerías de en‐
Por ejemplo, podríamos programar respaldos normales torno gráfico del sistema operativo. Al evitar esto, ya estás
cada semana y un incremental cada día. optimizando el recurso de la memoria; casi todo el espacio de la
Diferencial. Parte de un backup normal, y copia a partir de misma estará dedica a las máquinas guests.
ahí todos los archivos modificados, pero tras cada respaldo Hyper–V es ideal para Datacenters con alta disponibilidad.
diferencial, el bit que señala que se ha modificado un ar‐
chivo no se elimina, por lo que aunque esos archivos ya no Virtual PC.
se vuelvan a modificar, se copiarán en las subsiguientes
copias diferenciales. Lo malo es que si tenemos un sistema Es un monitor a nivel de procesos, basado en un Virtual Moni‐
que sufra muchas modificaciones, tendremos copias dife‐ tor (similar a VMware o Parallels). Funciona sobre el sistema operativo
renciales de un tamaño similar o superior al original. Lo (en nuestro caso, Windows 2008) como un sistema host, por lo que
bueno es que, en caso de pérdida, sólo necesitaremos el gran parte de nuestra memoria quedará ocupada por el kernel del
backup completo y el último diferencial. sistema operativo, rebajando el rendimiento de nuestra plataforma
virtual (en este sentido, Hyper–V es más eficiente).
Windows 2008 posee un asistente de backups llamado Win‐ Virtual PC está pensado para entornos de escritorio y contextos
dows Server Backup. Tendremos que elegir un backup u otro en más limitados que Hyper–V.
función de su uso así como de las facilidades, y coste, que tendremos
al hacer una restauración (no sólo del sistema, sino quizás de archivos PREGUNTAS.
o carpetas sueltas) en el futuro.
1. ¿Qué es un servidor y qué tipo de máquinas pueden ser
VIRTUALIZACIÓN servidores?
2. ¿Qué parámetros o requisitos básicos debe observar cual‐
La virtualización está muy presente en Windows 2008 (ya se vio quier servidor?
algo de virtualización en el tema 3, página 13), que incorpora dos 3. Describe brevemente las precauciones básicas en relación al
mecanismos o modos de hipervisor: entorno físico del servidor.
4. ¿En qué consiste el proceso de instalación desatendida?
Hyper–V. A nivel de sistema operativo. 5. Describe la secuencia de arranque de Windows 2008.
Virtual PC. A nivel de aplicación. 6. Comenta las diferencias entre los archivos de configuración
de arranque de 2008 y de su antecesor, el 2003.
Hyper–V. 7. ¿Cuál es la función del Bootmgr?
8. Describe la estructura del registro de Windows 2008.
Está alojado dentro del kernel del Windows 2008, por lo que es 9. ¿Qué aspectos tendremos que configurar en relación a la
un hipervisor a nivel de sistema operativo. Hyper–V, funciona direc‐ conectividad de nuestra máquina?
tamente sobre el hardware, es decir, la propia plataforma sustituye al 10. Describe brevemente las herramientas administrativas para
sistema operativo, que tiene únicamente lo necesario para alojar realizar auditorías.
máquinas guest sobre él (ni siquiera cuenta con una interfaz gráfica). 11. Describe la estructura interna del visor de sucesos.
Este mecanismo está sólo disponible para arquitecturas x86 de 12. ¿Qué es una vista y cómo funciona y se relaciona con el fil‐
64 bits (no lo soportan los de 32 bits). tro?
La virtualización está asistida desde el propio hardware a través 13. ¿Qué relación existe entre monitor de rendimiento, los con‐
de mecanismos como Intel–VT. Los fabricantes de procesadores y tadores y los recopiladores de datos?
placas implementan repertorios de instrucciones para que el hardwa‐ 14. ¿Cómo definirías un contador y un conjunto recopilador de
re pueda adaptarse mejor a estos modelos de hipervisores, donde los datos?
esquemas tradicionales de llamadas al sistema se verán modificados 15. Diferencias entre disparadores y acciones.
al tener directamente sobre el hardware un hipervisor, y no un siste‐ 16. Enumera las acciones y sus tipos en el administrador de ta‐
ma operativo. Esto, obviamente hará que el sistema tenga un mayor reas y al menos tres disparadores.
rendimiento y optimizará los tiempos de migración y recuperación de 17. ¿Qué es y para qué sirve una consola de administración?
los sistemas virtualizados.
54
Tema Nueve
Windows Server 2008
Gestión en Red
INTRODUCCIÓN nar diferentes servicios a la vez, y por tanto, capaz de crear el contex‐
to global que define los Dominios. Además, Active Directory, permitirá
Windows 2008 está diseñado para funcionar como anfitrión de coordinar varios controladores de dominio para que, en caso de fallo
servicios en una red. Veremos lo fundamental para su gestión en red, de uno de ellos, el dominio pueda seguir funcionando.
comenzando por definir lo que es un DOMINIO. El controlador de dominio almacena los datos de todas las má‐
quinas, por lo que todas ellas tendrán que solicitar sus credenciales al
¿QUÉ ES UN DOMINIO? controlador. En un dominio, todos los objetos confiarán en las cre‐
denciales emitidas por el controlador, donde un protocolo llamado
Como se introdujo en el Tema 8, para Microsoft, un dominio es KERBEROS (ver más adelante), se encargará de que dicha credencial
un conjunto de equipos conectados en red con ciertos parámetros sea fiable; es decir, que no haya sido cambiada, que haya sido emitida
comunes. Microsoft lo define como: por ese dominio, y que no haya sido monitorizada. Por tanto, el con‐
trolador emitirá en todo el dominio credenciales válidas.
Un grupo de equipos que forman parte de una red y
comparten una base de datos de directorio común. Un SERVICIO DE NOMBRES Y DHCP
dominio se administra como una unidad con reglas y
procedimientos comunes. Cada dominio tiene un nombre Se ha definido un dominio como un contexto común de objetos,
único. donde cada uno de ellos tendrá su propia dirección IP. El dominio
utilizará cada uno de estos objetos a través de su nombre, y no a
Es decir, un dominio crea un entorno de equipos/impresoras través de su IP, por lo que el servicio de nombres será fundamental
para que los usuarios los utilicen y puedan acceder a ellos libremente, para su funcionamiento. Lo normal es que todo controlador de domi‐
pudiendo utilizar todos los recursos englobados dentro del mismo. En nio sea a su vez un servicio de nombres.
un dominio, usuarios y sus relaciones, objetos o recursos (equipos, Windows posee un servicio de DNS (Domain Name System, se
impresoras...), privilegios de acceso, etc., se configuran de forma vio por encima en el Tema 7), que habrá que instalar de forma explíci‐
global, formando un contexto común arbitrado por el controlador de ta, es decir, no viene instalado por defecto. Básicamente, DNS traduce
dominio. los nombres en direcciones IP, por lo que podremos asociarlas a los
nombres de las máquinas. En la década de los 90, Microsoft creó un
Controlador de Dominio. servicio de nombres llamado WINS (Windows Internet Name Service),
un servicio de software que, al igual que DNS, asignaba dinámicamen‐
El controlador almacenará una base de datos de usuarios y ob‐ te direcciones IP a nombres de equipo, permitiendo a los usuarios
jetos, siendo el anfitrión de todos los servicios en una red: nombres, tener acceso a los recursos por su nombre, en vez de a través de
web y Active Directory. direcciones IP difíciles de reconocer y recordar. Debido a su incompa‐
Aunque se verá más adelante, Active Directory es un servicio de tibilidad, quedó obsoleto, aunque Microsoft sigue utilizándolo.
directorio que almacena información acerca de los objetos de una red En “Administrar nuestro servidor”, habrá que agregar nueva fun‐
y la pone a disposición de los usuarios y administradores de la misma. cionalidad para instalar DNS. Una vez instalado, habrá que configurarlo.
Active Directory da a los usuarios acceso a los recursos permitidos en
cualquier punto de la red mediante un único proceso de inicio de DOMAIN NAME SYSTEM (DNS)
sesión. Proporciona a los administradores de red una vista jerárquica
intuitiva de la red y un punto de administración único para todos sus DNS es un protocolo jerárquico. DNS se basa en zonas cuya ad‐
objetos. Active Directory es una herramienta capaz de poner a funcio‐ ministración está delegada a servidores concretos. Por ejemplo,
55
Implantación de Sistemas Operativos
supongamos que existe un servidor DNS raíz con pocos nombres (sólo podremos añadir cualquier registro A adicional. Con esto, ya
alberga los “.com”, “.net”, “.org”, “.es”, “.fr”, etc.). Cada uno de estos tendremos nuestro servicio DNS en marcha.
nombres se corresponderá con una zona que estará administrada en
un DNS distinto, un DNS que almacenará los nombres de cada una de DYNAMIC HOST CONFIGURATION PROTOCOL (DHCP)
las zonas anteriores. Es decir, la zona “.es” tendrá muchos más nom‐
bres, y esos nombres podrán ser zonas, como “ejemplo.es”, que serán Este es otro de los servicios con los que podremos complemen‐
administradas a su vez por otro servidor DNS. Podríamos decir, por tar a nuestro controlador de dominio, aunque no es fundamental.
tanto, que cada zona es una base de datos que contiene registros El protocolo DHCP permite la asignación dinámica de direccio‐
donde se indican los recursos que almacena. nes IP y otros datos como la máscara de subred o la puerta de enlace,
Cuando alguien administra una zona, es libre de crear todas las haciendo posible una administración de red cómoda, flexible, segura y
subzonas o recursos en ella como quiera. Nada nos impedirá crear una confiable. DHCP asignará ámbitos de direcciones (creará una reserva o
zona DNS de ámbito privado, donde los nombres se resolverán utili‐ pool) de donde los diferentes nodos obtendrán su dirección de red. Es
zando el controlador de dominio. decir, en vez de configurar a mano los datos a nivel IP (dirección IP,
Algunos de los registros de las bases de datos de las zonas, son: máscara, puerta de enlace) de las máquinas de tu dominio, cada una
de ellas se lo preguntará a una tercera utilizando el protocolo DHCP
SOA (Start of Authority). Este registro indica que ese servicio (trabaja en la capa 2 de enlace), evitando conflictos de direcciones y
es el propietario de una zona DNS, especificado su inicio ayudando a conservar el uso de las direcciones IP de clientes en la red.
de autoridad. Incluye el nombre primario del servidor, el Por ejemplo, el router de nuestras casas viene equipado con este
mail del administrador de dominio, el número de serie del protocolo, así, cada vez que arranca nuestra máquina, le pedirá al
dominio, y varios temporizadores encaminados a la actua‐ servicio DHCP los datos IP.
lización de la zona. Este protocolo simplifica mucho las cosas, pero habrá máquinas
NS (Name Server). Indica los servicios principales y secunda‐ concretas que no podrán conseguir su IP mediante DHCP, como los
rios autorizados para esa zona. servidores. Sin embargo, al tomar como base las direcciones MAC
A (Address). Indica la IP de un recurso (recuerda que trabaja en la capa 2 del modelo TCP/IP), podremos
PTR (Pointer). Indica el nombre de un equipo si la consulta hacer que un servidor tenga siempre la misma IP. ¿Cómo? Asociare‐
es una dirección IP (es decir, búsquedas inversas). Si no, mos siempre esa IP con la dirección MAC del servidor y
dirige el puntero a otra información. conseguiremos que siempre quede reservada para él, aunque se
asigne dinámicamente.
Además, existen muchos más registros, como CNAME (indica un Debido a que el DHCP se descubre por mensajes de difusión,
nombre canónico para un alias), MX (indica el intercambiador de tener varios servicios de ellos funcionando en la misma subred IP
correo) y SRV. podría ser problemático, pues podría haber solapes de ámbitos (es
decir, que dos servicios DHCP le den la misma dirección IP a un mismo
Configurar el Servicio de DNS equipo).
Una vez instalado DNS, tendremos que crear (al menos) una zo‐ Configurar el Servicio de DHCP
na de resolución directa, con al menos los registros SOA y NS.
Además, podremos crear zonas de resolución inversa. La instalación es similar a la del servicio de DNS. Debemos agre‐
Para terminar de configurar nuestra zona, tendremos que crear gar una nueva funcionalidad en “Administrar nuestro servidor”. A
un primer recurso de tipo A con el nombre de nuestra zona. Una vez partir de aquí arrancará un sencillo asistente de instalación.
creado éste, podremos crear todos los recursos tipo A que queramos. Para su configuración no requeriremos el uso de servicios de
Tu DNS no conocerá todo el mapa de Internet. Él no administra‐ WINS, ni la compatibilidad con IPv6, sino que sólo tendremos que
rá los “.com” por lo que tendrá que enviar la petición a otro DNS. La crear nuestro ámbito de direcciones ofrecidas, indicando el:
forma para ello variará, pero lo que está claro es que tendremos que
tener correctamente configurado otros servicios a los que reenviar las Rango de direcciones.
peticiones en caso de que nuestro servicio no sepa resolverlas. Máscara.
Puerta de enlace.
Instalación. Nos vamos a “Administrador del Servidor”, le da‐
mos a “Funciones” y luego a “Servicio DNS”. Ahí lo instalamos. Las IP concedidas a las diferentes MAC se verán en el “Conteni‐
En el panel DNS, a la derecha se crearán 2 registros de inicio, do de ámbito”, “Concesiones de direcciones”. El servicio permite otras
uno SOA y otro NS. Además, tendremos que crear un primer re‐ configuraciones más avanzadas como la asignación del nombre de la
gistro tipo A con la IP del servidor, si no, no funcionará. Después máquina y la IP a través de la dirección MAC (para hacer esas reservas
que se comentaron antes).
56
Implantación de Sistemas Operativos
Una vez finalizado el asistente de instalación, el servicio estará la, Zentyal, tiene una interfaz web para conectar un servidor para
listo para utilizarse. controlar todo desde un panel gráfico, pero está muy lejos a nivel de
Este protocolo será especialmente útil, por ejemplo, en una ofi‐ fiabilidad de la versión Windows). No será nada sencillo configurar
cina en la que se arranquen guest de vez en cuando. De esta forma, estos servicios de forma manual y por separado, y luego integrarlos.
podremos decir que los host tengan IP fijas y dejaremos que los guest Active Directory es la solución de Microsoft para la creación de
virtuales pidan sus IP por DHCP (así, todas tendrán una IP correcta). dominios; más que un servicio, es un conjunto de servicios para per‐
Hay que tener en cuenta que DHCP funciona a nivel de enlace (capa mitir que toda la información de usuarios, objeto e impresoras, sea
2), es decir, no traspasará un router, por lo que habrá que instalar accesible desde las demás máquinas del dominio, evitando acumular
DHCP en cada red (interno a la subred IP). esa información en cada una de las máquinas. Cualquier usuario podrá
Las redes WiFi utilizan el protocolo DHCP para no tener que acceder a cualquier máquina sin necesidad de tener cuenta de usuario
configurar la IP de cada terminal a mano. en ella. Para esto serán necesarios varios servicios de los que veremos
los siguientes (aunque básicamente, Active Directory es un conjunto
ACTIVE DIRECTORY de los dos últimos):
Active Directory es un servicio de directorio que almacena in‐ DNS (Domain Name System). Es el protocolo de resolución
formación acerca de los objetos de una red y la pone a disposición de de nombres, utilizado para resolver la ubicación a nivel de
los usuarios y administradores de la misma. Active Directory da a los red a partir de un nombre. Active Directory requiere siem‐
usuarios de red acceso a los recursos permitidos en cualquier punto pre este servicio para resolver la ubicación de los
de la red mediante un único proceso de inicio de sesión, proporcio‐ elementos registrados en su base de datos, aunque se ins‐
nando a los administradores una vista jerárquica e intuitiva de la red, tala a parte de Active Directory. Puesto que DNS no exige
y un punto de administración único para todos sus objetos. muchos recursos, normalmente el controlador de dominio
El servicio de directorio Active Directory para Windows cataloga también será nuestro servicio de nombres a la hora de
la información acerca de todos los objetos de una red, incluidos usua‐ configurar un dominio.
rios, equipos e impresoras, y distribuye la información por toda la red. DHCP (Dynamic Host Configuration Protocol). Se instala a
Además, proporciona un modo coherente para dar nombre, describir, parte.
buscar, tener acceso, administrar y asegurar información sobre estos LDAP (Lightweight Directory Access Protocol). Es el protoco‐
recursos individuales. La seguridad está integrada en Active Directory lo de acceso principal de Active Directory, como tal, tendrá
mediante la autenticación de inicio de sesión y el control de acceso. Con que ser instalado tanto en el cliente como en el servidor.
Active Directory sólo habrá que iniciar la sesión una vez para encontrar y Por decirlo de forma sencilla, LDAP regula el acceso a los
utilizar fácilmente los recursos de cualquier parte de la red. contenedores creados por Active Directory con toda la in‐
Active Directory usa objetos para representar recursos de red formación de usuarios y objetos. Se entiende por
como usuarios, grupos y equipos. Estos objetos (como un usuario, una contenedor, cualquier tabla que contiene nombres de
impresora o un programa) son las entidades que conforman una red. elementos, cada uno de ellos cos sus características; es
Por ejemplo, un objeto de usuario puede contener valores para atri‐ decir, una base de datos muy simple. Un servicio LDAP da
butos como el nombre, apellidos y nombre de inicio de sesión del acceso a ese contenedor (o base de datos ligera) donde se
usuario. Por fines organizativos, los objetos se colocarán en “contene‐ almacenan las entidades y sus propiedades. Active Direc‐
dores” (o unidades organizativas), como, por ejemplo, la unidad tory utiliza este protocolo para almacenar información de
organizativa del departamento de mercadotecnia o un contenedor de usuarios, objetos, configuraciones, directivas, etc. Lo pri‐
objetos relacionados, como impresoras. El acceso a estos contenedo‐ mero para crear un dominio será montar este servicio.
res estará reglado por LDAP (ver más adelante), y así cualquier usuario Estándar de Autenticación Kerberos. Es un estándar (es de‐
podrá acceder a la información contenida en ellos. cir, un diseño, no una implementación); un mecanismo de
Aunque Active Directory sólo está disponible actualmente en autenticación utilizado para comprobar la identidad de
controladores de dominio de Windows, se podrán incluir al dominio usuarios o hosts. Es un protocolo para permitir una comu‐
estaciones de trabajo UNIX. Aunque tendrán acceso total a los recur‐ nicación confiable y segura. Con él, sabremos que los
sos compartidos dentro del dominio, sólo aquellas máquinas basadas actores son quienes dicen ser y nadie podrá seguir o copiar
en Windows con el software de cliente Active Directory podrán utilizar la comunicación, permitiendo que dos entidades en una
Active Directory para solicitar información acerca de estos recursos red puedan mostrar sus identidades de manera segura,
compartidos. evitando que sean usurpadas. Cuando queramos recupe‐
Sin embargo, se podrán montar dominios sin Active Directory a rar información del Active Directory de forma remota nos
través de paquetes y aplicaciones (será necesario un servidor SAMBA, garantizará su fiabilidad. Algo parecido a Kerberos se utili‐
servidor DNS, servidor LDAP y estándar Kerberos) sobre Linux, pero za para evitar la monitorización de las páginas de los bancos.
tendremos que configurarlos de forma aislada (la distribución españo‐
57
Implantación de Sistemas Operativos
CONCEPTOS ción, tendríamos varios árboles de igual importancia, sin que uno de
ellos sea raíz de otro, teniendo entonces un bosque de dominio.
Controlador de Dominio.
Ejemplo – Árbol de dominio único. Si creamos un dominio cuyo
Máquina que centraliza la ejecución de los servicios del Active nombre es IES.COM, la máquina controladora se llamará
Directory (la máquina donde se instala ese directorio). Es decir, la DC1.IES.COM. Después acoplaremos el resto de máquinas al
máquina donde se instale el Active Directory, será el controlador de dominio, que se llamarán PCX.IES.COM. Una vez hecho esto,
dominio. podremos crear cuentas de usuarios e impresoras en el contro‐
lador, para que los usuarios puedan loguearse en cualquier PC y
Árbol de Dominio. acceder a cualquier información del dominio desde cualquier
terminal. Incluso, aunque uno de los PC tenga un NAS, cualquier
Estructura conceptual que representa controladores en forma usuario desde otro PC podrá acceder a las carpetas en red
de árbol y sus máquinas asociadas. Requiere uno o varios controlado‐ siempre que tenga permisos para ello, pues su identificación es‐
res de dominio. Una vez montado un árbol de dominio, podrá ser tará firmada por DC1. Los usuarios serán globales. Si DC1 se cae,
configurado a través de comandos mediante la PowerShell (una inter‐ todo dejará de funcionar. Para evitarlo, podremos introducir
faz de línea de comandos con posibilidad de escritura y conjunción de una controladora adicional, DC2, donde tendremos que activar
comandos por medio de módulos de visual Basic), que permitirá hacer el Active, y configurarlo como controlador de dominio para uno
scripts y macros para automatizar tareas, incluso de forma remota. que ya existe. DC2 tardará un rato en sincronizarse, pero cuan‐
Por ejemplo, podríamos automatizar la creación de todas las cuentas do lo haga, tendrá la misma información que DC1.
de usuarios con un script que leyera los nombres de un archivo. La Aunque tener más controladores no mejora el rendimiento, la
PowerShell será fundamental para sacarle todo el partido al servidor. naturaleza de la organización podrá requerir de más dominios.
Todo árbol de dominio está compuesto por:
Ejemplo – Dominio raíz y dominios delegados. Si queremos crear
Uno o varios controladores raíz. Todos estos controladores subdominios, lo primero que tendremos que hacer será comprar
tendrán una base de datos con el mismo contenido. Si son otra máquina server, instalar Windows 2008 y ponerle un nombre
varios controladores, esta réplica nos permitirá tener tole‐ al dominio, en nuestro ejemplo, ADMIN. Ahora tendremos que
rancia a fallos. De forma automática, al crear un instalar Active Directory, para convertirla en la controladora de
controlador adicional en un dominio ya existente, se crea‐ un dominio nuevo. Aunque dicho dominio sea nuevo, será dele‐
rá una réplica de la base de datos y ambos controladores gado del dominio IES.COM, y estará por debajo jerárquicamente.
se comunicarán. NO EXISTEN DIFERENCIAS entre un con‐ El nuevo dominio se llamará ADMIN.IES.COM., y el controlador
trolador de dominio primario y uno secundario, aunque si DC.ADMIN.IES.COM. En los permisos entra la política de grupos, y
la información de un usuario es creada en el controlador sus restricciones vendrán dadas por los grupos a los que pertene‐
secundario, esta información tardará un tiempo en estar ce.
sincronizada con el primario, y si las máquinas tienen co‐ A nivel de DNS funciona de forma jerárquica. Si no tiene la di‐
mo DNS primario la del controlador creado en primer rección, le pregunta al controlador de nivel superior.
lugar, podría tardar un tiempo hasta que se comuniquen
entre controladores, creando retardos y negaciones tem‐ INSTALACIÓN
porales. Cada máquina podrá ser configurada como se
desee para preguntar en primer lugar a un controlador o a Antes de instalar Active Directory habrá que tener en cuenta
otro. unas cuestiones previas. Tendremos que configurar la red (TCP/IP) con
Máquinas asociadas a ese dominio. Introduciendo el DNS una dirección IP estática; tener instalado el servicio DNS (si se ha
del controlador y el nombre del dominio, se unirán al configurado previamente, lo mejor será borrar la zona de resolución
mismo. directa para evitar problemas posteriores); ponerle un nombre a la
Controladores de dominios hijos. máquina desde “Propiedades del Equipo” (siempre minúsculas, sin
espacios ni tildes); y configurar el DNS primario con la IP del controla‐
Bosque de Dominio. dor del dominio (la alternativa podría ser, por ejemplo, 8.8.8.8, el DNS
de google).
Estructura conceptual que representa un conjunto de árboles Para iniciar la instalación ejecutaremos el comando dcpromo
de dominio de similar importancia (no comparten raíz). Cuando tene‐ (Domain Controler PROMOtion). Una vez ejecutado, arrancará el
mos un conjunto de dominios, tendremos un árbol, y esos dominios instalador. Lo primero que nos preguntará es si queremos crear un
tendrán una jerarquía relacionada. Si tuviéramos dominios sin rela‐ controlador en un bosque existente (agregándolo como controlador
en un dominio existente, o creando un controlador como raíz de
58
Implantación de Sistemas Operativos
dominio en un dominio nuevo, por ejemplo, ADMIN.IES.COM, es ma jerarquizada. Aunque tienen la apariencia de directo‐
decir, el segundo controlador de IES.COM), o crearlo en un bosque rios en árbol, no son tal cosa, sino, tal y como se ha venido
nuevo (haciendo referencia al ejemplo anterior, sería el dominio diciendo, una estructura organizativa de la base de datos.
IES.COM). Los contenedores se utilizan para organizar elementos
Habrá una serie de pasos más entre los que estarán la elección (agrupar y contener a otros objetos); son propios de la ba‐
del nombre del dominio; localización de las bases de datos (la ubica‐ se de datos y por tanto no tendrán reflejo fuera de ella.
ción de los ficheros que van a almacenar la información de esa base Ten en cuenta que no influirá el cómo organices los conte‐
datos que guarda el Active Directory, por defecto en los directorios nedores con las relaciones existentes entre ellos. Además,
NTDS y SYSVOL de la raíz, pero podría interesar que esa base de datos aunque borremos un contenedor, no borraremos todos los
esté en una unidad RAID); y contraseña del usuario administrador (el objetos contenidos en el mismo.
administrador tendrá el poder de crear nuevos objetos y de unir Marco derecho: Una vez pinchado en uno de los contene‐
máquinas a él). Una vez concluida la instalación podremos exportar su dores de la izquierda, su contenido aparecerá en la
configuración para un modo desatendido. derecha. Hay que tener en cuenta que aquí también podrá
aparecer cualquier contenedor que esté contenido dentro
Asociar máquinas a ese dominio. de otro.
Para unir una máquina con Windows XP a un dominio no me Los usuarios y los grupos son objetos de la base de datos, don‐
hará falta acceder al sistema operativo Windows 2008, pues funciona de los objetos “grupo” relacionan distintos objetos “usuario”. Esto, sin
como servidor. embargo, no implica que los “usuarios” estén contenidos en “grupos”,
Lo primero, en “Propiedades” de “Mi PC”, cambio el nombre del sólo relacionados. Es decir, si eliminamos un grupo, no eliminaremos
equipo: le pongo un nombre, elijo un grupo (Workgroups) y le pongo los objetos relacionados con él, sino los permisos asociados a ese
el nombre del dominio creado. Una vez hecho esto te pedirá el nom‐ grupo. Por tanto, un objeto grupo no contiene a objetos usuario.
bre y clave de alguien con privilegios de administrador. Una vez Todo objeto está identificado por un SID único, y como objetos,
introducido, la máquina estará unida al dominio (te lo comunicará por los usuarios y grupos tendrán el suyo propio.
pantalla) y tendrás que reiniciarla para poder acceder a todos los Para crear un nuevo usuario o grupo simplemente habrá que
recursos del mismo. pulsar el botón derecho sobre el contenedor que queramos, y elegir
nuevo usuario o grupo (con su login, nombre, etc., o ámbito y tipo
USUARIOS Y GRUPOS distribuido para grupos), y tener cuidado con las contraseñas (directi‐
vas de seguridad). De los usuarios podremos elegir la caducidad de su
La gestión de los usuarios y los grupos es bastante compleja con contraseña, el horario de acceso a cualquier equipo del dominio, la
Active Directory, ya que entrarán en juego las políticas de grupos que capacidad de disco y el control remoto.
se verán en el 2º curso del ciclo.
Al crear un dominio, podremos tener un espacio común de INTERNET INFORMATION SERVER (IIS)
usuarios globales, con una base de datos global de usuarios, donde
tanto usuarios como grupos serán objetos de la misma. Con este servicio podremos convertir nuestro Windows 2008 en
La identidad de un usuario se compartirá entre todas las má‐ un servidor web. La versión libre es Apache.
quinas y procesos del dominio, y estará basada en un certificado de IIS engloba servicios de software que admiten la creación, con‐
confianza (según el estándar Kerberos) expedido por el controlador de figuración y administración de sitios Web, además de otras funciones
dominio (kerberos asegurará que estos certificados no puedan ser de Internet. Entre los Servicios de Internet Information Server se
emitidos por ninguna otra máquina). Es decir, los procesos decidirán, incluyen el Protocolo de transferencia de noticias a través de la red
en base a la identidad del solicitante, si podrán o no hacer algo. El (NNTP), el Protocolo de transferencia de archivos (FTP), el Protocolo
sistema operativo comparará la identidad del cliente que arranca el simple de transferencia de correo (SMTP), el protocolo de transferen‐
proceso con la identidad de su base de datos, y en base a eso, podrá o cia de hipertexto (HTTP), etc.
no llevar a cabo las acciones que se proponga. Tal y como se concibió Internet, cada una de nuestras máquinas
Para la gestión de los usuarios y grupos utilizaremos una conso‐ podría funcionar como un servidor web, con una dirección IP fija y
la de administración predefinida: “Usuarios y equipos del Active propia, pudiendo exportar su ruta absoluta al resto de usuarios conec‐
Directory”. Una vez dentro, veremos que está compartimentada en tados a la red. Por ejemplo, si un cliente solicitara leer en nuestra
dos marcos: máquina, “index.html”, el servicio web, cuya ruta absoluta podría ser
“C:\miweb”, le daría la ruta “C:\miweb\index.html”, llamando y leyendo
Marco izquierdo: Donde se encuentran los “contenedores” directamente sobre los archivos estáticos de nuestro disco.
o unidades organizativas del Active Directory. Muestra el En la realidad, no contamos con una IP fija, y si queremos que
contenido de la base de datos del Active Directory de for‐ nuestros contenidos estén al alcance de todos, habrá que recurrir a un
59
Implantación de Sistemas Operativos
servidor con IP fija para alojarlos en la red. Actualmente, el servidor IIS es compatible con módulos .NET, como Visual Basic Script, y
web no lee contenidos de un fichero estático, sino que funciona me‐ ASP, y permite la gestión de diferentes sitios web.
diante la generación dinámica de contenidos, trabajando sobre
procesos que están ejecutándose en la máquina. Cuando un cliente Instalación. Para instalarlo, en la consola principal, habrá que
hace una petición vía HTTP, el servidor web preguntará a esas aplica‐ buscar las funciones y pulsar “agregar nueva función”. Seleccio‐
ciones en ejecución acerca de la ubicación de dicha petición. Las namos el componente IIS e iniciamos la instalación (según la
aplicaciones accederán a una base de datos donde se encontrará el distribución nos pedirá, o no, el disco de instalación). Y ya esta‐
contenido solicitado, añadiéndole código HTML para mandársela al rá listo. Para acceder a él, buscaremos “Administrador de
servidor web que se encargará de enviar dicha información al cliente Internet Information Services (IIS)” en “Herramientas Adminis‐
que verá el resultado de dicho montaje en su navegador. trativas”. Cuando nos metamos, veremos que por defecto ha
IIS permite ser gestionado desde la MMC como un componente creado, en “Sitios”, “Default Web Site”, una página web que
más y permite su administración de forma remota (crucial para el podremos modificar, y que si estamos conectados en red con
caso de los servidores). otros equipos, podrán ver accediendo a nuestro servidor.
Por defecto, el directorio “raíz” del servidor será “C:\inetpub”,
donde se encontrará todo el árbol de ficheros relacionado con el servicio
web. Entre los directorios que encontraremos dentro de esta carpeta, PREGUNTAS.
están:
1. Instala el servicio DNS.
C:\inetpub\ftproot\> Donde se encuentra las cuen‐ 2. Instala el Active Directory.
tas de usuario con acceso FTP. 3. Añade una máquina a un dominio.
C:\inetpub\wwwroot\> Donde está el contenido web 4. Añade dos máquinas al dominio.
de nuestro servidor. 5. Instala el servicio IIS.
C:\inetpub\mailroot\> Que es el directorio raíz de
los usuarios con servicio de mail.
60
Tema Diez
Seguridad
CRIPTOGRAFÍA patrones que harían más sencillo desentramarlo. Por tanto, para darle
robustez a nuestro algoritmo podríamos añadirle la clave “n”. De esta
La criptografía es un conjunto de técnicas que estudia la modifi‐ forma, cuando quisiéramos cifrar un mensaje con nuestro algoritmo,
cación de la información en base a unas reglas acordadas entre un sumaríamos “n” posiciones a cada carácter. Con esto conseguiríamos
emisor y un receptor, y que nadie más conoce. De esta forma, podre‐ que aunque nuestro algoritmo fuese público, no fuera posible desen‐
mos ocultar el contenido de un mensaje a receptores no autorizados. tramar nuestros mensajes codificados (aunque podrían conseguir
Ten en cuenta que la criptografía no oculta la señal (de eso se encarga descifrarse mediante la búsqueda de patrones a base de fuerza bruta).
la Esteganografía, que hace que el mensaje se transmita sin que El secreto estaría en la clave, no en el algoritmo. Por tanto, la robus‐
denuncie siquiera su existencia) sino el contenido que transporta la tez del cifrado debería residir en el secreto de la clave, no en el del
señal. Además de ocultar dicho contenido, la criptografía no asegura algoritmo.
nada más, ni siquiera que el mensaje no sea manipulado, sólo lo hará
ilegible para aquellos usuarios no autorizados. TIPOS DE CIFRADO
ELEMENTOS Existen básicamente dos tipos de cifrados, que se diferencian
en la gestión que hacen de sus claves.
La criptografía trabaja con:
Cifrado simétrico.
Mensajes en claro. Es decir, el mensaje que queremos Cifrado asimétrico.
transmitir antes de que sea cifrado.
Algoritmo de cifrado. El conjunto de instrucciones que se Cifrado Simétrico.
aplicarán al mensaje para modificarlo. Los algoritmos pue‐
den incorporar “puertas traseras” (aquellos mecanismos Este tipo de cifrados son del tipo del ejemplo que hemos visto
que nos permitirán descifrarlo sin el uso de claves). antes, es decir, una vez cifrado un mensaje, sólo podrá ser descifrado
Clave. Elemento variable que, aplicado al algoritmo, hará aplicando la misma clave (es decir, si n=3, restaré tres posiciones a
que éste varíe en cómo modificará el mensaje en claro pa‐ cada carácter y ya tendré mi mensaje en claro); por tanto, en el cifra‐
ra su cifrado. do simétrico, emisor y receptor cifrarán y descifrarán con la misma
clave. Esto supone un problema claro, ¿cómo acuerdo dicha clave de
Mensaje cifrado. Aquello en lo que se convierte el mensaje
forma segura? Ya que la robustez de mi cifrado está basada en el
en claro después de haber sido sometido a las modifica‐
secreto de la clave, distribuirla a mi receptor de forma segura será
ciones del algoritmo reguladas por la clave.
complicado. A pesar de que este cifrado es el más seguro y rápido (en
tiempo de cálculo), cuenta con ese problema, además de la incomodi‐
FUNCIONAMIENTO
dad de tener que generar una clave distinta para cada uno de los
receptores de nuestros mensajes cifrados. Como alternativa, y para
El algoritmo toma el mensaje y la clave, procesándolo y cifrán‐
solucionar estos problemas, apareció en la última década del siglo XX
dolo en función de ésta, y expulsando por su salida el mensaje cifrado.
el cifrado asimétrico.
Por ejemplo, el cifrado César aumenta en 3 cada código de cada
carácter. Es decir, si ciframos de esta forma la palabra “ala”, al proce‐
Cifrado Asimétrico.
sarla con nuestro algoritmo (sumar 3 a cada carácter), tendremos en
nuestra salida el siguiente mensaje cifrado: “dod”. Si nuestro algorit‐
Con este cifrado, el emisor y el receptor cifran y descifran con
mo se hiciera público, todo el mundo podría descifrar nuestros
claves distintas. Cuando quiera cifrar un mensaje generaré un par de
mensajes, y la seguridad de nuestro código estaría a expensas de que
claves mellizas (es decir, se generarán al mismo tiempo y una será
nuestro algoritmo nunca fuera descubierto. Además, si nuestro algo‐
dependiente de la otra):
ritmo hiciera siempre las mismas modificaciones, al final alumbraría
61
Implantación de Sistemas Operativos
Clave pública. Aquella que publicaremos para que todo el tamaño. Además, lo normal es que para dos cadenas diferentes sea
mundo la utilice para cifrar los mensajes que vayan desti‐ muy difícil que la función hash genere una misma cadena de salida.
nados a nosotros (es decir, lo normal es que se utilice para La cadena “hash” de un fichero o mensaje es su huella digital, es
cifrar). decir, si dos mensajes generan diferentes “hash”, no serán el mismo
Clave privada. Que será la única clave del par que podrá mensaje.
descifrar los mensajes cifrados con nuestra clave pública
(es decir, lo normal es que se utilice para descifrar). Ejemplo. Si Juan recibe un mensaje de Pepe, ¿cómo puede ase‐
gurarse que nadie tocó el fichero durante la transmisión? Para
No obstante, aunque lo lógico será cifrar con nuestra clave pú‐ asegurar la integridad tendrá que hacer lo siguiente. Pepe quie‐
blica y descifrar con la privada, podremos cifrar con la privada, y así, re enviar un mensaje a Juan. Lo primero que tiene que hacer es
cualquiera que tenga la pública podrá descifrar nuestro mensaje. Es calcular la cadena hash del mensaje en claro. Luego, adjunta la
decir, podremos descifrar o cifrar con una u otra, sin que importe si es huella digital y el mensaje, y cifra el conjunto con la clave públi‐
pública o privada. ca de Juan. Cuando Juan recibe el paquete, lo descifra con su
Este cifrado tiene la ventaja de que no tendremos que generar clave privada, separando la huella digital del mensaje en claro.
claves distintas para cada uno de los receptores de nuestros mensajes Para comprobar que el mensaje no ha sido manipulado por ter‐
(ya que siempre descifraré con una sola clave), y no habrá problema ceros, lo único que tendrá que hacer, será calcular la cadena
para acordar la clave de forma segura, desapareciendo el problema de hash del mensaje en claro de Pepe y compararla con la huella
la distribución de las claves (los dos problemas del cifrado simétrico), digital que adjuntó Pepe. Si ambas cadenas hash son iguales, se
pudiendo consultar, para cifrar, un directorio público de claves públi‐ habrá asegurado la integridad.
cas (por ejemplo, en Internet).
Sin embargo, el cifrado asimétrico será más lento (en tiempo de FIRMA DIGITAL
cálculo) que el cifrado simétrico, y podrá romperse a través de la factori‐
zación (es menos segura que el cifrado simétrico, que sólo podremos Aún habiendo garantizado la integridad, quedará un último
descifrar aplicando la fuerza bruta), ya que la clave pública será el resul‐ problema: Juan seguirá sin estar seguro de que ha sido Pepe quien ha
tado del producto de dos números primos de gran longitud (donde uno escrito el mensaje. El mensaje podría haber sido interceptado; alguien
de los factores de ese producto será la clave privada). Es decir, si multi‐ podría haber modificado el mensaje de Pepe, haber calculado la hash
plico los números primos 2 y 3 (uno de ellos mi clave privada), obtendré del mensaje alterado, haber cifrado el conjunto con la clave pública de
mi clave pública, 6. Si factorizo 6, obtendré pues la clave privada. Sin Juan y habérselo enviado a éste, que al recibirlo habría comprobado
embargo, la velocidad de cálculo a la hora de factorizar números con que el mensaje ha permanecido íntegro. Sin embargo, desconocería
muchísimos dígitos no es de tiempo razonable (se podría tardar más de que ha sufrido un ataque man‐in‐the‐middle, y que el mensaje de
1000 años en completar una operación semejante). Pepe ha sido suplantado.
Sólo la firma digital asegurará que un mensaje es de quien dice
Ejemplo. Si Pepe y Juan quieren comunicarse de forma cifrada, ser. La firma no es más que una función hash del mensaje, pero cifra‐
Pepe utilizará la clave pública de Juan para cifrar su mensaje. da con la clave privada del emisor. De este modo, cuando el mensaje
Cuando se lo envía a Juan, como éste ha generado el par de cla‐ sea descifrado con la clave privada del receptor, la firma se descifrará
ves, posee la clave privada (única capaz de descifrar ese con la clave pública del emisor.
código), y la utiliza para desentramar el contenido del mensaje
de Pepe. Ejemplo. En este caso, partimos de nuevo de nuestro mensaje en
claro. Obtenemos su hash, y ciframos esa hash con nuestra clave
INTEGRIDAD privada. La cadena hash (cifrada), la adjuntamos al mensaje en cla‐
ro, y el conjunto lo ciframos con la clave pública del destinatario.
Es la propiedad que denota el carácter inalterado de un mensaje Cuando el destinatario recibe el mensaje, lo descifra con su clave
durante su transmisión, se garantiza cuando puedes asegurar que el privada y obtiene una hash cifrada (es decir, una firma digital) y el
mensaje no haya sido modificado. Los tipos de cifrado vistos antes no mensaje en claro. El mensaje dice ser de Pepe, por lo que el desti‐
solucionan el problema de la integridad, pues no la garantizan, por lo natario coge la clave pública de Pepe y la utiliza para descifrar la
que habrá que combinar otras técnicas, como Hashing y funciones hash adjunta. Si consigue descifrar la hash, entonces el que la ha ci‐
resumen. frado ha sido Pepe (asegurando identidad), y si al calcular la hash
La integridad se podrá preservar con una función hash, como el del mensaje en claro coincide con la hash descifrada de Pepe, en‐
MD5 (message‐digest algorithm 5), que aplicada a un mensaje o tonces también se habrá asegurado la integridad.
fichero podrá utilizarse para crear su firma digital (o marca de agua).
Como se vio anteriormente, una función hash es aquella que toma
como entrada una cadena de bytes y genera otra de mucho menor
62
Implantación de Sistemas Operativos
CERTIFICADOS (VeriSign, Microsoft, etc.). Cuando te conectes a un sitio web,
éste proporcionará un certificado firmado por una autoridad
El último problema surge a la hora de asegurar que una clave que verificará la autenticidad de su clave pública. Una vez la
pública sea de quien dice ser. Para ello tendrá que estar certificada clave pública ha sido verificada se inicia un cifrado TLS/SSL para
por una Autoridad de Certificación (CA), creando un certificado digi‐ ocultar el tráfico hacia el sitio web.
tal. Un certificado digital asegura la relación entre el titular del
certificado y la clave pública contenida en él. Secure Sockets Layer (SSL).
Un certificado digital está compuesto de:
Estándar abierto propuesto para establecer un canal de comu‐
Datos del titular. nicaciones seguro que impida la interceptación de información
Clave pública del titular sin cifrar. crítica, como el número de las tarjetas de crédito. Principalmen‐
Número de serie. te, permite las transacciones financieras electrónicas seguras en
Fecha de expiración del certificado. el World Wide Web, aunque está diseñado para funcionar tam‐
Firma digital de la autoridad (hash de la clave pública que bién en otros servicios Internet.
acredita la autoridad, cifrada con la clave privada de la au‐
toridad). Transport Layer Security (TLS).
En realidad, cualquiera podrá emitir un certificado digital, aun‐ Protocolo estándar utilizado para asegurar las comunicaciones
que no tendrá validez a menos que haya sido autorizado por una Web en Internet o intranets. Permite a los clientes autenticar
autoridad competente. Es decir, estas autoridades de certificación servidores o, de forma opcional, a los servidores autenticar
serán autorizadas por organismos de máxima confianza, generalmen‐ clientes. También proporciona un canal seguro mediante el ci‐
te públicos. frado de las comunicaciones. TLS es la versión más reciente y
Por ejemplo, Verisign puede emitir certificados digitales autori‐ segura del protocolo SSL.
zados por un organismo autorizador (que en España es la Casa de la
Moneda y Timbre).
Utilizamos los certificados con el DNI digital y con las conexio‐ PREGUNTAS.
nes HTTPS para trámites bancarios.
1. ¿Qué es la criptografía?
Ejemplo – HTTP Secure. También denominado https. HTTPS 2. ¿Qué tipo de cifrados hay en criptografía?
acuerda la clave simétrica a través del cifrado asimétrico. Esto 3. Describe los elementos y el proceso de descifrado con cada
lo hace porque como el cifrado asimétrico es muy lento, utiliza uno de estos tipos.
mejor un canal de transmisión seguro a partir de cifrado simé‐ 4. Ventajas y desventajas de estos tipos.
trico. 5. Describir el proceso por el que podremos asegurar la inte‐
HTTPS se integra en el propio navegador, que suele traer pre‐ gridad del mensaje y la identidad del emisor.
configurado la autoridad de certificación en quien va a confiar
63