TEMA 23: El Sistema Operativo UNIX

Tema 23 – El Sistema Operativo UNIX TEMA 23: El Sistema Operativo UNIX. Índice 1 INTRODUCCIÓN________________________________________________________
Author:  Eva Acosta Parra

4 downloads 114 Views 173KB Size

Recommend Stories


1. Sistema Operativo Unix
1. Sistema Operativo Unix 1.1 Introducción al S.O. Unix y su entorno 1.2 Subsistema de Archivos 1.3 Subsistema de Procesos 1.4 Políticas de Gestión de

TEMA 5. Introducción al Sistema Operativo UNIX. Contenido
TEMA 5 Introducción al Sistema Operativo UNIX Contenido 5.1. Introducción 5.1.1. Historia 5.1.2. Arbol genealógico de Unix 5.1.3. Principios de diseñ

El sistema operativo
El sistema operativo Índice: 1. Programas informáticos 2. Uso del ordenador 3. Mantenimiento y seguridad 1. Programas informáticos 1.1. Introducción

Story Transcript

Tema 23 – El Sistema Operativo UNIX

TEMA 23: El Sistema Operativo UNIX. Índice 1 INTRODUCCIÓN___________________________________________________________________2 2 CARACTERÍSTICAS DE UNIX_______________________________________________________3 3 COMPONENTES DE UN SO UNIX ___________________________________________________3 4 ARQUITECTURA Y FUNCIONAMIENTO_____________________________________________4 4.1 El núcleo del SO (kernel)__________________________________________________________4 4.2 Los procesos en UNIX_____________________________________________________________4 4.3 El Sistema de Archivos____________________________________________________________4

4.3.1 Permisos sobre los archivos_____________________________________________5 4.4 El manejo de entrada/salida________________________________________________________6 4.5 El manejo de memoria_____________________________________________________________6 4.6 El interfaz de comunicación con el usuario____________________________________________7 5 SEGURIDAD EN UNIX______________________________________________________________8 5.1 Identificación y autentificación de usuario ____________________________________________8 5.2 Control de acciones de los usuarios__________________________________________________8 5.3 Auditoria_______________________________________________________________________9 5.4 Unix Confiables (Trusted Unix)_____________________________________________________9 6 LOS SO UNIX EN LA ACTUALIDAD_________________________________________________10

Página 1 de 10

Tema 23. Sistema Operativo UNIX

1

28/03/2011

Introducción

El término UNIX sirve para denominar una familia de sistemas operativos (de aquí en adelante los denominaré SO) con unas características y principios de diseño comunes. En 20 años, se han desarrollado más de 100 versiones diferentes de UNIX. El primer SO UNIX oficial fue desarrollado por los Laboratorios Bell de AT&T en 1970. Escrito en lenguaje máquina y se ejecutaba en los ordenadores PDP-11/20. En 1973 se rescribió el SO UNIX utilizando el lenguaje de programación C. El uso de un lenguaje de programación de alto nivel facilita su portabilidad a otras plataformas y su mantenimiento evolutivo y correctivo. AT&T vendió licencias de UNIX a universidades y otras compañías. Estas licencias permitían modificar y extender las funciones del SO. Es por ello que surgieron multitud de versiones diferentes de UNIX. Muchos fabricantes de grandes ordenadores (Minicomputadores) desarrollaron su propia versión de UNIX. Una de las versiones más famosas es el SO BSD de la Universidad de Berkeley. Esta universidad participó activamente en el proyecto ARPANET, la red predecesora de Internet, y se uso el SO BSD para experimentar las nuevas tecnologías de redes. La primera implementación de los protocolos TCP/IP se realizó para BSD y, rápidamente, pasaron al resto de versiones de UNIX. Es por ello, que UNIX siempre ha estado relacionado con las tecnologías de redes. Dado la diversidad de versiones UNIX y los peligros de incompatibilidades entre ellas, se estableció a mediados de los 80 un estándar de interfaz de aplicaciones (API) de SO basados en UNIX, denominado POSIX. El estándar POSIX también es utilizado por otros SO. También los principales fabricantes desarrollaron unas “especificaciones simples de UNIX” para asegurar la compatibilidad entre los diferentes sistemas Unix. El estándar POSIX se amplió incluyendo los comandos, seguridad... La última versión de POSIX coincide con las “especificaciones simples de UNIX”,. Todo SO que quiera denominarse oficialmente UNIX debe cumplir estas especificaciones. En la década de los 90, han aparecido versiones de SO operativos de código abierto basados en UNIX como FreeBSD y Linux. Estos SO cumplen con las especificaciones UNIX, pero no utilizan la marca UNIX. Estos SO tienen una gran aceptación, ocupando parte de la cuota de mercado de los SO Unix comerciales y son utilizados en otros ámbitos como los ordenadores personales.

Página 2 de 10

Tema 23. Sistema Operativo UNIX

2

28/03/2011

Características de UNIX

Las características genéricas de los SO UNIX son: 

Es portable. El código en lenguaje C del SO puede ser compilado para diferentes plataforma hardware.



Multitarea: Permite la ejecución simultánea de varios procesos compartiendo uno o más procesadores.



Multiusuario: El mismo SO puede dar servicio a varios usuarios simultáneamente.



Estandarizado. Cumplir de una serie de estándares, como POSIX, que aseguran que haya una serie de comandos y programas comunes en todos los SO UNIX.



Estar orientado a trabajar en red.

Existen una serie de principios comunes que rigen el diseño de los SO UNIX, estos son: 

Todo se maneja como una cadena de texto ASCII de 8 bits o como elementos que las generan: los periféricos, los ficheros, los comandos...



Los sistemas se compone de pequeños módulos. Cada módulo realiza una sola función y la realiza eficientemente.



Los módulos colaboran entre ellos para dar lugar a sistemas complejos. El SO Unix proporciona potentes y, a la vez, simples mecanismos de comunicación entre programas y/o comandos. Como son las “tuberías” y los “redireccionamientos”. Aplica los principios de ingeniería sobre reutilización del software.

Al ser un sistema autocontenido, capaz de modificarse a si mismo, se convirtió desde un principio en una herramienta de aprendizaje e investigación que ha adoptado rápidamente todos las innovaciones en SO

3

Componentes de un SO Unix

Los sistemas UNIX se componen de varios módulos normalmente empaquetados juntos. Además del núcleo del SO, incluye: 3.1 - Un entorno de desarrollo: La mayoría de implementaciones de Unix contienen un entorno de desarrollo suficiente para recrear el sistema a partir del código fuente. El entorno de desarrollo incluye:Un compilador de C, por ejemplo gcc, librerias de desarrollo... Esto facilita el mantenimiento y adaptación del SO. 3.2 - Documentación: Aunque en sentido estricto no sea parte del SO, Unix se caracteriza por proporcionar toda su documentación. 3.3 - Una serie de comandos y programas comunes: Todos los sistemas Unix disponen de una serie de comandos y programas iguales. Los Unix hacen poca distinción entre los comandos, que son llamadas al Kernel, de los programas. Muchos de estos comandos y programas vienen recogidos en las especificaciones estándares de Unix. Por ejemplo: 

Manejo de ficheros y directorios: Ls, mkdir, cd...



Edición y visualización de texto: emacs, vi, more...



Procesado de texto: cat, echo, grep...



Administración del sistema: su, chmod, kill...

Página 3 de 10

Tema 23. Sistema Operativo UNIX

4

28/03/2011

Arquitectura y funcionamiento

4.1

El núcleo del SO (kernel)

El núcleo de los SO UNIX (kernel) se clasifica como de tipo monolítico, es decir se ejecuta como un solo proceso. Pero en él se pueden encontrar dos partes principales: 

el núcleo dependiente de la máquina, se encarga de las interrupciones, los manejadores de dispositivos de bajo nivel y parte del manejo de la memoria, y



el núcleo independiente, que es igual en todas las plataformas e incluye el manejo de llamadas del sistema, la planificación de procesos, el manejo de señales, la paginación e intercambio, el manejo de discos y del sistema de archivos.

El kernel se carga en memoria principal al arrancar el SO y no puede descargarse a memoria secundaria. Tradicionalmente, y en casi todos los SO Unix: IriX, Linux…, la arquitectura del Kernel es monolítica. Es decir, toda las funciones del SO las realiza un gran proceso con privilegios de sistema. Existen unos pocos UNIX con arquitectura de microkernel, por ejemplo MacOX. En esta arquitectura el kernel sólo realiza las funciones básicas: E/S de bajo nivel, comunicación entre procesos, señales… y el resto de funciones las realizan módulos del SO ejecutados en modo usuario. La arquitectura de microkernel en teoría es más flexible y segura que la monolítica, pero tiene un menor rendimiento. Gran parte del kernel de los diferentes UNIX es compartido y está escrito en C. Lo que favorece la portabilidad del kernel entre plataformas. 4.2

Los procesos en UNIX

El manejo de procesos en UNIX es por prioridad y round robin. En algunas versiones se maneja también un ajuste dinámico de la prioridad de acuerdo al tiempo que los procesos han esperado y al tiempo que ya han usado el CPU. Existen dos tipos de procesos. Los procesos del sistema y de usuario. Los procesos de sistema tienen los permisos siguientes: 

Pueden acceder directamente al hardware.



Pueden acceder a cualquier posición de memoria



Pueden acceder a las tablas internas del Kernel

Generalmente, sólo el kernel se ejecuta como proceso de sistema, el resto de procesos de usuario sólo pueden acceder a su espacio de memoria y para el resto de funciones deben solicitárselo al kernel a través de llamadas al SO. Esto mejora la seguridad del sistema. El SO provee facilidades a los procesos, como:

4.3



Comandos para la comunicación entre procesos (creación de 'pipes' entre procesos),



Comandos para la creación de otros procesos o hilos( Ej: La llamada 'fork')



Comandos para la sincronización de procesos concurrentes, con el uso de “semáforos”, etc. El Sistema de Archivos Página 4 de 10

Tema 23. Sistema Operativo UNIX

28/03/2011

El sistema de archivos de UNIX, desde el punto de vista del usuario, tiene una organización jerárquica o de árbol invertido que parte de un directorio raíz conocida como "/" (diagonal). En que los nodos pueden ser tanto ficheros como directorios. Existen tres tipos de archivos: 1. Archivos de texto ordinarios, en donde los usuarios almacenan datos. 2. Programas, archivos que almacenan codigo de maquina y pueden ser ejecutados. 3. Archivos especiales, archivos que hacen referencia a los dispositivos del sistema como terminales o impresoras. La estructura de directorios varía según el SO UNIX que sea. Aunque existe un estructura estándar adoptada por los SO LINUX y BSD. Por ejemplo: En /dev/ se almacenan los dispositivos, en /bin/ los binarios comunes a todos los usuarios... La estructura interna de ficheros está definida en el estándar POSIX. Se basa en una estructura de datos denominada, en Linux, i-node (information node). Cada objeto que puede aparecer en el sistema de ficheros: un directorio, un fichero plano... tiene un inode asociado donde se almacena sus características (permisos, fechas, tamaño...). Cada i-node se identifica por un número entero y en los directorios se almacenan el nombre (o nombres) del objeto con su i-node. El i-node mantiene en una estructura jerárquica de apuntadores a los bloques donde se almacenan los datos. El sistema de ficheros mantiene una estructura de datos denominada “superbloque” con una descripción general del mismo: i-nodes, bloques libres… Existen diferentes sistemas de archivos en UNIX, todos se basan en los i-nodes, pero organizan y gestionan de forma diferentes los bloques de datos. Un sistema de ficheros muy común es Ext2. 4.3.1

Permisos sobre los archivos

La protección de archivos en UNIX se maneja por medio de una cadena de permisos de nueve caracteres, divididos en tres grupos de tres caracteres cada uno: RWX- RWX- RWX. El primer grupo especifica los permisos del dueño del archivo. El segundo grupo especifica los permisos para aquellos usuarios que pertenecen al mismo grupo de trabajo que el dueño y finalmente el tercer grupo indica los permisos para el resto del mundo. En cada grupo de tres caracteres pueden aparecer las letras RWX en ese orden indicando permiso de leer (READ), escribir (WRITE) y ejecutar (EXECUTE). Por ejemplo, la cadena completa RWXR-XR-- indica que el dueño tiene todos los permisos, los miembros de su grupo de trabajo tienen permisos de lectura y ejecución y el resto del mundo sólo tienen permiso de lectura. El comando UNIX para gestionar los permisos “chmod”.

Página 5 de 10

Tema 23. Sistema Operativo UNIX

4.4

28/03/2011

El manejo de entrada/salida

Derivado de su principio de diseño, el SO maneja todo como flujo de bytes, los dispositivos son considerados como archivos especiales receptores/emisores de flujo de datos que se acceden mediante “descriptores de archivos” cuyos nombres se encuentran generalmente en el directorio '/dev'. Los dispositivos se identifican por una tripleta de datos: 1. El número mayor, indica el driver que gestiona el dispositivo. 2. El número menor, indica el dispositivo en cuestión de entre todos los que maneja el driver. 3. El tipo de dispositivo, indica si las operaciones son de caracteres o de bloques. Para cada proceso en UNIX, el SO mantiene una tabla de archivos abiertos (donde el archivo puede ser cualquier dispositivo de entrada/salida). Esa tabla tiene entradas que corresponden a los descriptores, los cuales son números enteros obtenidos por medio de la llamada a la llamada del sistema 'open' . El sistema de entrada/salida se divide en dos sistemas complementarios: el estructurado por bloques y el estructurado por caracteres. El primero se usa para manejar cintas y discos magnéticos, y emplea bloques de tamaño fijo para leer o escribir. El segundo se utiliza para atender a las terminales, líneas de comunicación e impresoras, y funciona byte por byte. En UNIX es posible ejecutar llamadas al sistema de entrada/salida de dos formas: síncrona y asíncrona. 

El modo síncrono es el modo normal de trabajo. El proceso tras hacer las peticiones de lectura o escritura espera a que la operación de entrada / salida finalice..



En el modo asíncrono, el proceso no se detiene al hacer las peticiones de E/S. Existen las rutinas del SO que permiten saber el estado de las operaciones de E/S. Esto permite a un proceso sea capaz de supervisar el estado de varios dispositivos.

Todo programa o comando tiene una entrada estándar “stdin”, una salida estándar “stdout” y una salida para los errores “stderr”. Por defecto “stdin” es el teclado, y “stdout” y “stderr” la pantalla. Estos atributos se pueden modificar para que los programas se comuniquen entre ellos. 4.5

El manejo de memoria

Actualmente todos los sistemas UNIX utilizan el manejo de memoria virtual, es decir parte de las imágenes de los procesos pueden almacenarse en memoria secundaria. El esquema más usado es la paginación por demanda con política de reemplazo LRU. En todos los sistemas UNIX se usa una partición de disco duro para el área de intercambio. Esa área se reserva al tiempo de instalación del sistema operativo. Una regla muy difundida entre administradores de sistemas es asignar una partición de disco duro que sea al menos el doble de la cantidad de memoria real de la computadora. Con esta regla se permite que se puedan intercambiar flexiblemente todos los procesos que estén en memoria RAM en un momento dado por otros que estén en el disco. Los procesos que forman parte del kernel no pueden ser intercambiados a disco.

Página 6 de 10

Tema 23. Sistema Operativo UNIX

4.6

28/03/2011

El interfaz de comunicación con el usuario

El SO UNIX como cualquier SO dispone de una serie de interfaces de comunicación con los usuarios. A diferencia de los SO Windows, en UNIX existe una gran variedad de interfaces, que se pueden clasificar en dos tipos: 

De tipo texto. Se compone de la Línea de comandos, también denominada la shell de unix. Es el interfaz tradicional de UNIX. Traduce los comandos de los usuarios en llamadas al Kernel para que haga alguna acción. El término “shell” proviene de que el interfaz oculta los detalles del funcionamiento complejo del SO. En Unix no existe un único programa que actúe como shell, sino que un usuario puede cambiar de shell. Por ejemplo, el shell genérico de Linux es el programa “Bash”. Cada shell diferente puede utilizar una sintaxis diferente, aunque existen una serie de características y comandos estándares en todos los shell de Unix, recogidos por el estándar POSIX. El lenguaje que proporciona la shell, sirve tanto como lenguaje de comandos interactivos como lenguaje de script para el sistema. En Unix todavía su uso es común, incluso con las interfaces gráficas.



De tipo gráfico. Son interfaces compuestas de elementos gráficos como ventanas, botones... que se manejan principalmente con el ratón. Son interfaces más amigables, intuitivas y fáciles de usar que las de texto. Se componen de : -

Un sistema de ventanas X. Es un marco de trabajo y un protocolo para desarrollar interfaces gráficas de usuario. Está soportado por todos los SO UNIX y otros SO. Esta basado en una arquitectura cliente/servidor con clientes ligeros y hace transparente el uso de la red. Permite tener terminales remotas gráficas.

-

Un “entornos de escritorio”, como kde o Gnome. Es el conjunto de software que encargado de generar la interfaz gráfica de usuario. Se basa en el concepto de “escritorio”. Un componente importante es el sistema de gestión de ventanas, es el software que se ocupa del formato y posición de los elementos que componen la interfaz gráfica. Se ejecuta sobre el sistema de ventana X.

Página 7 de 10

Tema 23. Sistema Operativo UNIX

5

28/03/2011

Seguridad en UNIX

Los sistemas UNIX al ser sistemas multiusuario utilizados en entornos de red, la seguridad es un factor crítico. Los sistemas Unix fueron conocidos por los graves problemas de seguridad que tenían, pero han evolucionado hasta convertirse en SO muy seguros. El principal problema de seguridad en los Unix, es su falta de configuración. Las configuraciones por defecto son inseguras, hay que configurar la seguridad a las características particulares de cada instalación. 5.1

Identificación y autentificación de usuario

En los SO Unix clásico, el nombre de usuario y su contraseña se almacenan en un fichero, generalmente “/etc/passwd”, junto a otra información como el identificador de usuario, su grupo, información administrativa... Para asegurar la privacidad de las contraseñas están cifradas utilizando un algoritmo DEC. Un usuario será identificado cuando su nombre aparezca en el fichero de contraseñas y autentificado si la contraseña introducida coincide con la contraseña asignada a ese nombre. El sistema clásico de autentificación es muy vulnerable actualmente, por ello existe paquetes que mejoran la seguridad de la autentificación:

5.2



Contraseñas “shadow”: Todo los usuarios tienen permisos de lectura sobre el fichero passwd, lo que supone un riesgo. Con las contraseñas “shadow” las contraseñas se almacenan en otro fichero, al que sólo pueden acceder usuarios con privilegios de root



Envejecimiento de contraseñas: El SO obliga a los usuarios a cambiar de contraseñas cada cierto tiempo. Control de acciones de los usuarios

El sistema de control de acciones básico de los UNIX se basa el sistema de control de acceso a ficheros. Una vez que el usuario está autentificado, entra al sistema con un número de usuario –UID- que los identifica y con un número de grupo –GID- al que pertenece. Como he indicado anteriormente, en Unix, los elementos del SO son ficheros organizados dentro del sistema de ficheros del SO. Cada fichero tiene un propietario, y una serie de permisos establecidos sobre él. Cada vez que un usuario o proceso quiere acceder a un archivo, el sistema de gestión de archivos comprueba que tenga permisos sobre el archivo. Los procesos tienen un usuario propietario y los mismos permisos que ese usuario. Los permisos de acceso a los ficheros se establecen a nivel de propietario, grupo y el resto de usuarios. Por ejemplo, un fichero ejecutable puede tener como permisos: rwx r-x ---, de forma que el propietario tiene acceso total al fichero, los usuarios del mismo grupo pueden leerlo y ejecutarlo y el resto de usuarios no tienen ningún permiso sobre él. Existe un grupo especial, el de usuarios “root” con acceso total a todos los ficheros. El sistema clásico de control de acciones puede ser mejorado añadiendo la funcionalidad de listas de control de acceso, que permite asignar el acceso a los ficheros a nivel de usuarios y grupos individualmente. Similar al sistema de control de acceso de los SO Windows.

Página 8 de 10

Tema 23. Sistema Operativo UNIX

5.3

28/03/2011

Auditoria

Todos los sistemas Unix proporcionan funciones de registro de las acciones de los usuarios, aunque en algunos Unix esta función venga deshabilitada por defecto. Este servicio no es común para todas las versiones de Unix al utilizar programas y ficheros de log diferentes. Los ficheros de logs son de texto plano, lo que facilita su consulta, y sólo los usuarios con permiso de root tienen acceso. Los sistemas clásicos de auditoría, almacena sólo la información sobre los procesos ejecutados por los usuarios y consumo de CPU. Su finalidad es contabilizar el uso de CPU. Existen sistemas de auditoría más avanzados que almacenan toda la información sobre las actividades de los usuarios: programas ejecutados, llamadas al sistemas, intentos de conexión, cambios en el estado de los objetos de SO... El principal inconveniente de los sistemas de auditoría, es el volumen de espacio de almacenamiento que consumen y la dificultad de buscar información relevante entre tanta información que almacenan, aún con herramientas especiales para ello. 5.4

Unix Confiables (Trusted Unix)

En ambientes de seguridad extrema, los sistemas unix no son válidos. Es por ello, que se creo una serie de recomendaciones para mejorar la seguridad en los sistemas Unix. Son las recomendaciones para Unix Confiables. Los SO que implementan están recomendaciones, dejan de ser estrictamente SO Unix. Las características principales de estos sistemas son: 

Desaparece la figura de superusuario con permisos para todo. Se sustituye por una serie de usuarios administradores con permisos limitados.



Control de acceso obligatorio, que se combina con el control de acceso clásico. Los objetos y usuario del sistema se clasifican en niveles de seguridad: confidencial, público... Los usuarios sólo pueden acceder a los objetos con nivel de seguridad igual o menor al suyo.



Sistemas de auditoria exhaustivos. Se almacenan todas las acciones de los usuarios.

Página 9 de 10

Tema 23. Sistema Operativo UNIX

6

28/03/2011

Los SO Unix en la actualidad

Existen varias familias del sistema operativo UNIX que han evolucionado de manera independiente a lo largo de los años. Cada familia se distingue no tanto por sus diferencias técnicas como por sus diferencias en propiedad intelectual. Existen Unix propietarios y Unix de código abierto –open source-. Las más relevantes actualmente son: GNU/Linux: SO basado en UNIX y libre. Se compone de las herramientas del proyecto GNU más el kernel Linux. Existen multitud de distribuciones diferentes, como Debian Red hat..., con diferentes usos y licencias de uso. GNU/Linux tiene un origen independiente, por lo que se considera un 'clónico' de UNIX y no un UNIX en el sentido histórico. BSD – Berckeley Software Distribution- , la universidad de Berckeley fue una de las primeras entidades en adquirir una licencia de Unix de AT&T e iniciar un desarrollo propio. Del proyecto BSD han surgido multitud de SO especializados como FreeBSD, NetBSD, OpenBSD... Con la aparición de SO Unix libres, muchos SO propietarios han desaparecido, como el AIX de IBM. Aunque todavía quedan Unix propietarios, ligados a los servidores de sus fabricantes. Solaris, el Unix de Sun, conocido por su estabilidad. Parte de su código es open-source. HP-UX, el Unix de HP

Página 10 de 10

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.