Download Sistemas Operativos 2010

Document related concepts

Proceso de arranque en Linux wikipedia , lookup

Sistema operativo wikipedia , lookup

BIOS wikipedia , lookup

Clonación de discos wikipedia , lookup

Live USB wikipedia , lookup

Transcript
UNIVERSIDAD TECNOLÓGICA DE PUEBLA
TECNOLOGÍAS DE LA INFORMACIÓN Y
COMUNICACIÓN
Sistemas Operativos
2010
Alejandra Villalva Rojas
Ana María Rosas Hernández
José David Alanís Urquieta
Eric Noé Pérez Osorno
Nélida Alicia Casas Reyes
Mayo-Agosto 2010
Sistemas Operativos
2010
ÍNDICE
I FUNDAMENTOS DEL SISTEMA OPERATIVO
2
1.1 Introducción
2
1.2 Evolución de los sistemas operativos
1.2.1 Los primeros sistemas
1.2.2 Sistemas por lotes multiprogramados
1.2.3 Sistemas de tiempo compartido
1.2.4 Sistemas de Computador Personal
1.2.5 Sistemas paralelos
1.2.6 Sistemas Distribuidos
3
3
4
5
5
6
7
1.3 Características de los sistemas operativos
1.3.1 Gestión de procesos
1.3.2 Gestión de la memoria principal
1.3.3 Gestión de archivos
1.3.4 Gestión del sistema de E/S
1.3.5 1.4 Clasificación de los sistemas operativos
1.3.6 Clasificación de los sistemas operativos
8
8
9
9
10
II INSTALACIÓN DE UN SISTEMA OPERATIVO ( Basado en LINUX).
16
2.1 Requerimientos del Sistema Linux
2.2 Procedimiento de instalación caso CentoS 4,2
2.3 Esquema de particiones
2.4 Gestores de arranque PC
2.5 Páginas de otros Sistemas Operativos Linux
16
18
29
30
31
III COMANDOS BASICOS DE LOS SISTEMAS OPERATIVOS
32
3.1 Comandos básicos
3.2 Comandos para el manejo y organización de archivos y
directorios
3.2.1 Concepto de archivo
3.2.2 Sistemas archivos
3.2.3 Directorios
3.2.4 El sistema de archivos de LINUX
3.2.5 Comandos para el manejo de directorios
3.2.6 Comandos para el majeo de archivos
32
37
3.3 Comandos para el manejo de procesos
3.3.1 Definición de proceso
62
62
37
38
40
40
43
44
Sistemas Operativos
2010
3.3.2 ID de un proceso
3.3.3 Estados de un proceso
3.3.4 Comandos relacionados con la ejecución de procesos
3.3.5 Redireccionamiento de entrada y salida estándar
3.3.6 Conexión de procesos mediante tuberías
3.3.7 Procesamiento en segundo plano
63
64
65
68
70
70
3.4 Editor vi
3.4.1 Modo comando
3.4.2 Modo de inserción
3.4.3 Modo ejecución de comandos
71
72
73
74
3.5 Administración de cuentas y grupos de usuarios
3.5.1 Comandos relacionados con la administración de cuentas y
grupos de usuarios
79
83
IV SERVICIOS DE RED
85
4.1 Herramientas de administración de los servicios
4.1.1. Herramienta de configuración de servicios
4.1.2 ntsysv
4.1.3 chkconfig
85
86
88
89
4.2 Servicio de impresión
90
4.3 Servicio web
4.3.1 Estándares empleados
4.3.2 Ventajas de los servicios web
4.3.3 Archivos de configuración de Apache
93
93
94
94
4.4 Servidor de correo electrónico: SENDMAIL
4.4.1 Comando mail
95
96
4.5 Compartir recursos entre diferentes sistemas operativos
4.5.1 Compartir Recursos en Red con Samba
4.5.2 Instalación y Configuración
4.5.3 Impresoras en Samba
4.5.4 Compartiendo directorios a través de Samba
98
98
98
100
101
4.6 Servicio de acceso remoto
4.6.1 Conexión a un servidor remoto usando ssh
107
107
Fuentes Bibliográficas
109
Sistemas Operativos
2010
UNIDAD 1
FUNDAMENTOS DEL SISTEMA OPERATIVO
1.1 Introducción
Un sistema operativo es un programa que actúa como intermediario entre el usuario de un
computador y el hardware del computador. El propósito de un sistema operativo es crear
un entorno en el que el usuario pueda ejecutar programas de forma cómoda y eficiente.
Un sistema operativo es una parte importante de casi todos los sistemas de cómputo.
Éstos últimos se pueden dividir a grandes rasgos en cuatro componentes: el hardware, el
sistema operativo, los programas de aplicación (o del usuario) y los usuarios
Figura 1.1 Perspectiva abstracta de los componentes de un sistema operativo
Un sistema operativo es similar a un gobierno. Los componentes de un sistema de
computador son su hardware, software y datos. El sistema operativo proporciona los
medios para aprovechar adecuadamente esos recursos durante el funcionamiento del
sistema de computador. Al igual que un gobierno, el sistema operativo no desempeña
ninguna función útil por sí solo; se limita a crear un entorno dentro del que otros pueden
realizar un trabajo útil.
Podemos ver al sistema operativo como un asignador de recursos. Un sistema de
computación tiene muchos recursos (hardware y software) que pueden ser necesarios para
resolver un problema: tiempo de CPU, espacio de memoria, espacio para almacenamiento
Página 2
Sistemas Operativos
2010
de archivos, dispositivos de E/S, y demás. El sistema operativo actúa como gestor de
dichos recursos y los asigna a programas y usuarios específicos según los necesiten para
sus tareas. Dado que puede haber muchas solicitudes de recursos que tal vez no se
puedan satisfacer simultáneamente, el sistema operativo debe decidir cuáles solicitudes
atenderá asignando recursos para operar el sistema de computación de manera eficiente y
justa.
1.2 Evolución de los sistemas operativos
Los sistemas operativos han evolucionado en los últimos años, a continuación se presenta
una reseña histórica que destaca diferencias y similitudes entre los sistemas:
1.2.1 Los primeros sistemas
Los primeros computadores eran máquinas con un tamaño (físico) enorme que se
ejecutaban desde una consola. El programador, que también era el operador del sistema
de computación, escribía un programa y luego operaba el programa directamente desde la
consola del operador. Primero, el programa se cargaba manualmente en la memoria
usando los interruptores del tablero frontal (una instrucción a la vez), desde cinta de papel
o desde tarjetas perforadas. Luego se oprimían los botones apropiados para establecer la
dirección de inicio y poner en marcha la ejecución del programa. Mientras el programa se
ejecutaba, el programador/operador podía vigilar su ejecución gracias a las luces de la
consola. Si se descubrían errores, programador podía detener el programa, examinar el
contenido de la memoria y los registros, y depurar el programa directamente desde la
consola. Las salidas se imprimían o se perforaban en cinta de papel o tarjetas para
imprimirse posteriormente.
El tiempo de preparación del trabajo era un verdadero problema. Mientras se estaban
montando cintas o el programador estaba operando la consola, la CPU permanecía ociosa.
Además estaban los costos de operación de electricidad, enfriamiento, programadores, y
demás. Por tanto, el tiempo de computador era extremadamente valioso, y los dueños
querían que sus computadoras se usaran lo más posible.
La solución tuvo dos aspectos: primero, se contrató un operador de computador
profesional, el programador ya no operaba la máquina. Tan pronto como terminaba un
trabajo, el operador podía iniciar el siguiente, debido a su mayor experiencia, el tiempo se
redujo. El segundo ahorro de tiempo considerable implicó la reducción del tiempo de
preparación. Los trabajos con necesidades similares se agrupaban en lotes y se
ejecutaban juntos en el computador. Por ejemplo, supongamos que el operador recibía un
trabajo en FORTRAN, uno en COBOL y otro en FORTRAN. Si los ejecutaba en ese orden,
tendría que preparar el sistema para FORTRAN (cargar las cintas del compilador, etc.),
Página 3
Sistemas Operativos
2010
luego para COBOL y luego otra vez para FORTRAN. En cambio, el operador ejecutaba los
dos programas FORTRAN como un lote y el de COBOL como un lote diferente.
Figura 1.2 Conjunto de tarjetas para un sistema por lotes sencillo
1.2.2 Sistemas por lotes multiprogramados
El spooling da origen a una importante estructura de datos: la reserva de trabajos. Como
resultado del spooling, puede haber varios trabajos ya leídos esperando en el disco, listos
para ejecutarse. Al tener reserva de trabajos en disco, el sistema operativo puede escoger
cuál trabajo ejecutará a continuación, a fin de mejorar el aprovechamiento de la CPU. Si
varios trabajos están en un dispositivo de acceso directo, como un disco, es posible la
planificación de trabajos. El aspecto más importante de la planificación de trabajos es la
capacidad de multiprogramar.
La idea es la siguiente: El sistema operativo, mantiene varios trabajos en la memoria a la
vez (Figura 1.3). Este conjunto de trabajos es un subconjunto de los que se mantienen en
la reserva de trabajos. El sistema operativo escoge uno de los trabajos que están en la
memoria y comienza a ejecutarlo. Tarde o temprano, el trabajo tendrá que esperar
mientras se lleva a cabo alguna tarea, como el montaje de una cinta o la terminación de
una operación de E/S. En un sistema sin multiprogramación, la CPU estaría ociosa. En un
sistema multiprogramado, el sistema operativo simplemente selecciona otro trabajo y lo
ejecuta. Cuando ese trabajo necesita esperar, la CPU se conmuta a otro trabajo, y así
sucesivamente. En algún momento, el primer trabajo terminará su espera y recuperará la
CPU, que nunca estará ociosa mientras haya algún trabajo que ejecutar.
Página 4
Sistemas Operativos
2010
Figura 1.3 Organización de la memoria en un sistema multiprogramado
1.2.3 Sistemas de tiempo compartido
Los sistemas por lotes multiprogramados proporcionan un entorno en el que los distintos
recursos del sistema (CPU, memoria, dispositivos periféricos) se aprovechan de manera
efectiva. No obstante, tienen ciertos problemas desde el punto de vista del usuario, por
ejemplo que el programador no puede modificar un programa durante su ejecución a fin de
estudiar su comportamiento.
El tiempo compartido, o multitareas, es una extensión lógica de la multiprogramación. Se
ejecutan múltiples trabajos mientras la CPU se conmuta entre ellos, pero la conmutación es
tan frecuente que los usuarios pueden interactuar con cada programa durante la
ejecución.
La idea del tiempo compartido se demostró ya en 1960, pero dada la dificultad y el costo
de construir tales sistemas, apenas se hicieron comunes a principios de la década de
1970. A medida que ha crecido la popularidad del tiempo compartido, los investigadores
han intentado fusionar los sistemas por lotes y de tiempo compartido. Muchos sistemas de
computador que se diseñaron primordialmente para como sistemas por lotes se han
modificado para crear un subsistema de tiempo compartido. Por ejemplo, el OS/360 de
IBM, un sistema por lotes, se modificó para apoyar la opción de tiempo compartido (TSO,
Time Sharing Option). Al mismo tiempo, son varios los casos de sistemas de tiempo
compartido a los que se ha añadido un subsistema por lotes. Hoy día, la mayoría de los
sistemas ofrecen tanto procesamiento por lotes como tiempo compartido, aunque su
diseño y uso básico tiende a ser de un tipo o del otro.
1.2.4. Sistemas de Computador Personal
Con la caída en los costos del hardware, ha vuelto a ser factible tener un sistema de
computación dedicado a un solo usuario. Estos tipos de sistemas se conocen como
computadores personales (PC, personal computer). No hay duda de que los dispositivos
de E/S han cambiado: los tableros de interruptores y los lectores de tarjetas han sido
Página 5
Sistemas Operativos
2010
reemplazados por teclados tipo máquina de escribir y ratones. Las impresoras de líneas y
perforadoras de tarjetas han cedido el paso a pantallas e impresoras pequeñas y rápidas.
Las computadoras personales aparecieron en la década de 1970. Se trata de
minicomputadoras mucho más pequeñas y económicas que los sistemas de
macrocomputador (mainframes). Durante su primera década, las CPU de los PC carecían
de las funciones necesarias para proteger el sistema operativo de los programas de
usuario. No obstante, los objetivos de estos sistemas operativos han cambiado con el
tiempo; en lugar de maximizar el aprovechamiento de la CPU y los periféricos, los sistemas
optan por maximizar la comodidad del usuario y la rapidez con que responden a sus
necesidades. Estos sistemas incluyen los PC que ejecutan Microsoft Windows y el Apple
Macintosh.
1.2.5 Sistemas paralelos
La tendencia actual es hacia los sistemas multiprocesador. Tales sistemas tienen más de
un procesador en comunicación íntima, los cuales comparten el bus del computador, el
reloj y a veces la memoria y los dispositivos periféricos. Estos sistemas están fuertemente
acoplados.
Una ventaja de construir estos sistemas es el aumento en el rendimiento. Al incrementar el
número de procesadores, esperamos realizar más trabajo en un tiempo más corto. Sin
embargo la proporción de aumento de la velocidad con n procesadores no es n, sino más
bien menor que n. Cuando varios procesadores cooperan para llevar a cabo una tarea, se
incurre en cierto “gasto extra” para mantener todos los componentes funcionando
correctamente. Este gasto extra, aunado a la contención por los recursos compartidos,
reduce la ganancia que cabría esperar de los procesadores adicionales.
Los sistemas de múltiple procesador más comunes en la actualidad siguen el modelo de
multiprocesamiento simétrico, en el que cada procesador ejecuta una copia idéntica del
sistema operativo, y estas copias se comunican entre sí cuando es necesario. Algunos
sistemas utilizan multiprocesamiento asimétrico, en el que a cada procesador se asigna
una tarea específica. Un procesador maestro controla el sistema; los demás procesadores
obtienen sus instrucciones del maestro o bien tienen tareas predefinidas. Este esquema
define una relación maestro-esclavo. El procesador maestro planifica y asigna trabajo a los
procesadores esclavos.
Un ejemplo de sistema con multiprocesamiento simétrico es la versión encoré de UNIX
para el computador Multimax. Este computador puede configurarse de modo que utilice
docenas de procesadores, todos los cuales ejecutan una copia de UNIX. La ventaja de
este modelo es que muchos procesos pueden ejecutarse simultáneamente (N procesos si
hay N CPU) sin que haya deterioro del desempeño.
Página 6
Sistemas Operativos
2010
Es importante darse cuenta de que la diferencia entre multiprocesamiento simétrico y
asimétrico puede deberse al hardware o al software. Podría existir hardware especial para
diferenciar los múltiples procesadores, o podría escribirse software que permita un solo
maestro y varios esclavos. Por ejemplo, el sistema operativo de Sun, SunOS versión 4,
ofrece multiprocesamiento asimétrico, mientras que la versión 5 (Solaris 2) es simétrica.
1.2.6 Sistemas distribuidos
En contraste con los sistemas fuertemente acoplado, los procesadores no comparten la
memoria ni el reloj. En vez de ello, cada procesador tiene su propia memoria local. Los
procesadores se comunican entre sí a través de diversas líneas de comunicación, como
buses de alta velocidad o líneas telefónicas. Solemos decir que tales sistemas están
débilmente acoplados o distribuidos.
Las razones para construir sistemas distribuidos son:
•
•
•
•
Recursos compartidos: un sistema distribuido ofrece mecanismos para compartir
archivos en sitios remotos, procesar información de una base de datos distribuida,
imprimir archivos en sitios remotos, usar equipos especializados remotos, etc.
Computación más rápida: un sistema distribuido distribuye el cálculo entre diferentes
sitios y lo ejecuta de forma concurrente.
Confiabilidad: si un sitio de un sistema distribuido falla, los sitios restantes podrían
seguir funcionando.
Comunicación: si muchos sitios están conectados a través de una red de
comunicaciones, los procesos de diferentes sitios tienen la oportunidad de intercambiar
información.
1.2.7 Sistemas de tiempo real
Se usa cuando los requisitos de tiempo de la operación de un procesador o del flujo de
datos son estrictos; por ello, a menudo se utilizan como dispositivos de control en
aplicaciones dedicadas. Los sensores envían datos al computador, el cual debe analizar
estos datos y posiblemente ajustar controles a fin de modificar las entradas de los
sensores.
Hay dos tipos de sistemas de tiempo real. Un sistema de tiempo real duro garantiza que las
tareas críticas se terminarán a tiempo. Este objetivo requiere que todos los retardos del
sistema estén limitados, desde la obtención de datos almacenados hasta el tiempo que el
sistema operativo tarda en atender cada solicitud que se le presenta. Tales restricciones de
tiempo determinan los recursos que están disponibles en este tipo de sistemas. El
almacenamiento secundario de cualquier índole suele estar limitado o ausente, y los datos
se almacenan de preferencia en memoria de corto plazo o en memoria de sólo lectura
ROM. También está ausente la mayor parte de las funciones avanzadas de los sistemas
Página 7
Sistemas Operativos
2010
operativos, ya que tienden a separar al usuario aún más del hardware, y tal separación
causa incertidumbre acerca del tiempo que una operación tarda.
Un tipo menos restrictivo es el sistema de tiempo real blando, en el que una tarea de
tiempo real crítica goza de prioridad hasta que se lleva a cabo. Al igual que los sistemas de
tiempo real duros, es preciso limitar los retardos del núcleo: no es posible mantener a una
tarea de tiempo real esperando indefinidamente a que el núcleo la ejecute. En vista de que
no apoyan el cumplimiento estricto de plazos, es riesgoso utilizarlos en control industrial y
robótica, aunque hay varias áreas en las que pueden ser útiles, como multimedia, realidad
virtual y proyectos científicos avanzados como la exploración submarina y planetaria.
1.3 Características de los sistemas operativos
Un sistema operativo crea el entorno en el que se ejecutan los programas. Los sistemas
operativos varían mucho en su estructura interna, pues se organizan según muchas
filosofías de distintas. El diseño de un sistema operativo es una tarea de gran magnitud. Es
importante definir bien los objetivos del sistema antes de iniciar el diseño.
Aunque no todos los sistemas operativos tienen la misma estructura, muchos sistemas
modernos comparten el objetivo de apoyar los tipos de componentes del sistema que se
bosquejan en las siguientes secciones.
1.3.1. Gestión de procesos
Un programa no puede hacer nada si la CPU no ejecuta sus instrucciones. Podemos
pensar en un proceso como una porción de un programa en ejecución o todo el programa.
Un proceso necesita ciertos recursos, incluidos tiempos de CPU, memoria, archivos y
dispositivos de E/S, para llevar a cabo su tarea. Estos recursos se otorgan al proceso en el
momento en que se crea, o bien se le asignan durante su ejecución. Además de los
diferentes recursos físicos y lógicos que un proceso obtiene cuando se le crea, podrían
pasársele algunos datos de inicialización (entradas).
Un programa por sí solo no es un proceso; un programa es una entidad pasiva, como el
contenido de un archivo almacenado en disco, mientras que un proceso es una entidad
activa, con un contador de programa que especifica la siguiente instrucción por ejecutar.
La CPU ejecuta una instrucción del proceso tras otra, hasta que el proceso termina.
Además en cualquier instante dado, se ejecuta cuando más una instrucción para el
proceso. Así, aunque haya dos procesos asociados al mismo programa, se considerarán
como dos secuencias de ejecución individuales.
Página 8
Sistemas Operativos
2010
El sistema operativo se encarga de las siguientes actividades relacionadas con la gestión
de procesos:
•
•
•
•
•
Crear y eliminar procesos tanto de usuarios como del sistema
Suspender y reanudar procesos
Proveer mecanismos para la sincronización de procesos
Proveer mecanismos para la comunicación entre procesos
Proveer mecanismos para manejar bloqueos mutuos (deadlocks)
1.3.2 Gestión de la memoria principal
La memoria principal es crucial para el funcionamiento de un sistema de computación
moderno. La memoria principal es una matriz grande de palabras o bytes, cuyo tamaño va
desde cientos de miles hasta cientos de millones. Cada palabra o byte tiene su propia
dirección. La memoria principal es un depósito de datos a los que se puede acceder
rápidamente y que son compartidos por la CPU y los dispositivos de E/S. El procesador
central lee instrucciones de la memoria principal durante el ciclo de obtención de
instrucciones, y lee y escribe datos de la memoria principal durante el ciclo de obtención de
datos.
A fin de mejorar tanto el grado de utilización de la CPU como la rapidez con que el
computador responde a sus usuarios, es necesario mantener varios programas en la
memoria. Hay muchos esquemas de gestión de memoria distintos que reflejan diversas
estrategias, y la efectividad de los diferentes algoritmos depende de la situación específica.
La selección de un esquema de gestión de memoria para un sistema en particular
depende de muchos factores, pero sobre todo del diseño del hardware del sistema.
El sistema operativo se encarga de las siguientes actividades de gestión de memoria:
•
•
•
Saber cuáles partes de la memoria se están usando actualmente y quién las está
usando.
Decidir cuáles procesos se cargarán en la memoria cuando se disponga de espacio.
Asignar y liberar espacio de memoria según se necesite.
1.3.3 Gestión de archivos
La gestión de archivos es uno de los componentes más visibles de un sistema operativo.
Los computadores pueden almacenar información en varios tipos distintos de medios
físicos. Los medios más comunes son cinta magnética, disco magnético y disco óptico.
Cada uno de éstos tiene sus propias características y organización física y cada medio se
controla con un dispositivo como una unidad de disco que tiene características distintas y
Página 9
Sistemas Operativos
2010
únicas. Estas propiedades incluyen la rapidez, capacidad, taza de transferencia de datos y
método de acceso (secuencial o aleatorio).
El sistema operativo implementa el concepto abstracto de archivo administrando los
medios de almacenamiento masivo y los dispositivos que los controlan. Además los
archivos normalmente se organizan en directorios con objeto de facilitar su uso. Por último,
si varios usuarios tienen acceso a los archivos, podría ser deseable controlar quién y de
qué modo puede acceder a los archivos.
El sistema operativo se encarga de las siguientes actividades relacionadas con la gestión
de archivos:
•
•
•
•
•
Crear y eliminar archivos.
Crear y eliminar directorios.
Proveer las primitivas para manipulación de archivos y directorios.
Establecer la correspondencia de los archivos con el almacenamiento secundario.
Resguardar los archivos en medios de almacenamiento estables (no volátiles).
1.3.4 Gestión del sistema de E/S
Uno de los objetivos de un sistema operativo es ocultar las peculiaridades de
dispositivos de hardware específicos de modo que el usuario no las perciba. Por ejemplo,
en UNIX, el subsistema de E/S oculta las peculiaridades de los dispositivos de E/S del
resto del sistema operativo mismo. Dicho subsistema consiste en:
•
•
•
Un componente de gestión de memoria que incluye el uso de buffers, caché y spool.
Una interfaz general con los controladores de dispositivos.
Drivers (Controladores de software) para dispositivos de hardware específico.
Sólo el driver del dispositivo conoce las peculiaridades del dispositivo específico al
que está asignado.
1.4 Clasificación de los sistemas operativos
Un sistema operativo moderno puede ser tan grande y complejo que debe ser
diseñado con mucho cuidado para que funcione correctamente y sea fácil de modificar.
Una estrategia común consiste en dividir la tarea en componentes pequeños, en lugar de
tener un sistema monolítico. Cada uno de estos módulos debe ser una porción de bien
definida del sistema, con entradas, salidas y funciones cuidadosamente especificadas. De
acuerdo a la forma en que los componentes de un sistema se conectan entre sí y se
combinan para formar un núcleo, puede mencionarse la siguiente clasificación de sistemas
operativos.
Página 10
Sistemas Operativos
2010
1.4.1 Estructura simple
Hay muchos sistemas comerciales que no tienen una estructura bien definida. Es
común que tales sistemas operativos hayan sido en un principio sistemas pequeños,
sencillos y limitados, y luego hayan crecido más allá de su alcance original. MS-DOS es un
ejemplo; originalmente fue diseñado e implementado por un puñado de personas que no
tenían idea de la popularidad que llegaría a adquirir. Se escribió con objeto de proporcionar
el máximo de funcionalidad en el mínimo de espacio, a causa del hardware limitado en el
que se ejecutaba, y por ello no se dividió con cuidado en módulos. En la figura 1.4 se
muestra su estructura.
Figura 1.4 Estructura de capas de MS-DOS
En MS-DOS, las interfaces y niveles de funcionalidad no están bien separados. Por
ejemplo, los programas de aplicación pueden acceder a las rutinas de E/S básicas para
escribir directamente en la pantalla y en las unidades de disco. Tal libertad deja al MS-DOS
a merced de programas erróneos (o mal intencionados), y causa caídas del sistema
cuando los programas de usuario fallan. Desde luego, MS-DOS también estaba limitado al
hardware de su época. Dado que el Intel 8088 para el cual fue diseñado no cuenta con
modo dual ni protección por hardware, los diseñadores del MS-DOS no tuvieron más
opción que dejar el hardware básico accesible.
Otro ejemplo de estructuración limitada es el sistema operativo UNIX original. UNIX es un
sistema que inicialmente estuvo limitado por la funcionalidad del hardware. UNIX consiste
en dos partes separables: el núcleo y los programas del sistema. El núcleo se divide a su
vez en una serie de interfaces y controladores de dispositivos que se han agregado y
ampliado con el paso de los años a medida que UNIX ha evolucionado. El sistema
operativo UNIX se puede ver como la serie de capas de la figura 1.5. Todo lo que está por
debajo de la interfaz de llamadas al sistema y arriba del hardware físico es el núcleo, que
desempeña las funciones de gestión del sistema de archivos, planificación de la CPU,
gestión de la memoria, etc., por medio de llamadas al sistema. En conjunto, esto implica
Página 11
Sistemas Operativos
2010
una enorme cantidad de funcionalidad combinada en un solo nivel. Los programadores de
sistemas utilizan las llamadas al sistema apoyadas por el núcleo para ofrecer funciones
útiles, como compilación y manipulación de archivos.
Figura 1.5 Estructura del sistema UNIX
Las llamadas al sistema definen la interfaz del programador con UNIX; el conjunto de
programas del sistema que comúnmente están disponibles definen la interfaz del usuario.
Las interfaces del programador y del usuario definen el contexto que el núcleo debe
apoyar.
1.4.2 Enfoque por capas
La modularización de un sistema se puede poner en práctica de muchas maneras; la más
atractiva es el enfoque de capas, que consiste en dividir el sistema operativo en varias
capas (niveles), cada una construida sobre las capas inferiores. La capa inferior (capa 0)
es el hardware; la capa más alta (capa N) es la interfaz con el usuario.
Una capa del sistema operativo es una implementación de un objeto abstracto que es el
encapsulamiento de datos y de operaciones que pueden manipular esos datos. En la figura
1.6 se representa una capa de sistema operativo representativa, que designamos capa M.
Esta capa, consiste de en algunas estructuras de datos y un conjunto de rutinas que las
capas de nivel superior pueden invocar. La capa M, a su vez, puede invocar operaciones
de capas de niveles más bajos.
Página 12
Sistemas Operativos
2010
Figura 1.6 Capa de un sistema operativo
La principal ventaja del enfoque de capas es la modularidad. Las capas se escogen del
modo que cada una utilice sólo funciones (operaciones) y servicios de capas de los niveles
inferiores. Esto simplifica la depuración y la verificación del sistema porque por definición
sólo utiliza el hardware básico (que se supone correcto) para implementar sus funciones.
Una vez depurada la primera capa, se puede dar por sentado su funcionamiento correcto
mientras se trabaja con la segunda capa, y así sucesivamente. Si se encuentra un error
durante la depuración de una capa en particular, sabemos que el error está en esa capa,
porque las capas inferiores ya están depuradas. Así, el diseño e implementación del
sistema se simplifica cuando el sistema se divide en capas.
El enfoque de diseño por capas se usó por primera vez en el sistema operativo THE
creado en la Technische Hogesschool Eindhoven. El sistema THE se definió en seis capas,
como se muestra en la figura 1.7
capa 5:
programas de usuario
capa 4:
buffers para dispositivos de entrada y salida
capa 3:
driver de la consola del operador
capa 2:
gestión de memoria
capa 1:
planificación de CPU
capa 0:
hardware
Figura 1.7 Estructura de capas de THE
Página 13
Sistemas Operativos
2010
Este enfoque puede utilizarse de muchas formas. Por ejemplo, el sistema Venus también
se diseñó en capas.
El principal problema del enfoque en capas tiene que ver con la definición apropiada de las
distintas capas. Puesto que una capa sólo puede usar las capas que están a un nivel más
bajo, la planificación deber ser muy cuidadosa.
El OS/2 es un descendiente del MS-DOS con las características adicionales de ser
multitareas y operar en modo dual, entre otras. A causa de su mayor complejidad y del
hardware más potente para el cual se diseñó, el OS/2 se implementó con más capas. A
diferencia de MS-DOS, OS/2 no permite el acceso directo de los usuarios a los recursos de
niveles inferiores, con lo que el sistema operativo tiene más control sobre el hardware y
más conocimiento de qué recursos está usando cada programa.
La primera versión de Windows NT, tenía una organización muy orientada a hacia las
capas. Sin embargo, el desempeño de esta versión era pobre en comparación con el de
Windows 95. En Windows NT 4.0 se remediaron algunos de estos problemas de
desempeño transfiriendo capas del espacio de usuarios al del núcleo, e integrándolas de
forma más íntima.
1.4.3 Máquinas virtuales
Conceptualmente, un sistema de computador se compone de capas. El hardware es el
nivel más bajo en todos estos sistemas. El núcleo que es ejecuta en el siguiente nivel
utiliza las instrucciones del hardware para crear un conjunto de llamadas al sistema que las
capas exteriores pueden usar. Así, los programas del sistema que están arriba del núcleo
pueden usar llamadas al sistema o instrucciones de hardware y en ciertos sentidos estos
programas no distinguen entre las dos.
Algunos sistemas llevan este esquema un paso más allá permitiendo a los programas de
aplicación invocar fácilmente los programas del sistema. Aquí también, aunque los
programas del sistema están en un nivel más alto que las demás rutinas, los programas de
aplicación podrían ver todo lo que está debajo de ellos en la jerarquía como si formara
parte de la máquina misma. Este enfoque de capas se lleva a su conclusión lógica en el
concepto de máquina virtual. El sistema operativo VM para sistemas IBM es el mejor
ejemplo del concepto de máquina virtual, porque IBM fue de los primeros que trabajaron en
esta área.
Utilizando planificación de CPU y técnicas de memoria virtual, un sistema operativo puede
crear la ilusión de que múltiples procesos se ejecutan cada uno en su propio procesador
con su propia memoria (virtual). Desde luego, lo normal es que el proceso tenga
características adicionales, como llamadas al sistema y un sistema de archivos, que el
hardware desnudo no provee. El enfoque de máquina virtual, en cambio, no proporciona
funcionalidad adicional, sino que presenta una interfaz que es idéntica al hardware
Página 14
Sistemas Operativos
2010
desnudo subyacente. Cada proceso recibe una copia (virtual) del computador subyacente
(figura 1.8).
Figura 1.8 Modelos de sistemas. (a) Máquina no virtual. (b) Máquina virtual
Página 15
Sistemas Operativos
2010
UNIDAD II
INSTALACIÓN DE UN SISTEMA OPERATIVO ( Basado en LINUX).
Objetivo: El alumno instalará la plataforma de sistemas operativos Centos 4.2
comprobando sus configuraciones en equipos de cómputo.
Introducción
Un Sistema Operativo (SO) es una colección organizada de rutinas o extensiones de
software del hardware. Estas rutinas de control hacen funcionar una computadora y
proporcionan un entorno para la ejecución de los programas. Existen otros programas que
se apoyan en el SO para poder acceder a los recursos que necesitan. Esto se lleva a cabo
a través de llamadas sistema operativo. También el SO debe brindar una forma de que el
usuario se pueda comunicar con él a través de una interfaz que le brinde una vía de
comunicación con el hardware del sistema informático.
El objetivo principal del SO es lograr que los sistemas informático se emplee de modo
eficiente y como objetivo secundario se use de manera cómoda y ofrecer servicios a los
programas y los usuarios para facilitar la tarea de programación. Para lograr esto el
hardware debe brindar algún mecanismo apropiado que impida que los usuarios
intervengan en el funcionamiento del sistema y así mismo el SO debe poder utilizar este
recurso de hardware de modo que esto se cumpla.
Instalación
Se tiene que tener en cuenta que cuanto más se conozca de su computadora menos
problemas tendrá en la instalación de GNU/Linux. Se tendrán que tener a mano una serie
de información elemental que le serán requeridas en el momento de la instalación tales
como el idioma del teclado y la zona del tiempo donde se encuentra. Aunque parezca
elemental, es aquí donde la mayoría se paraliza o pone mal los datos, lo que traerá futuros
dolores de cabeza. Es importante conocer que las diferentes distribuciones más
importantes que existen bajo Linux se instalan en forma similar.
2.1 Requerimientos del Sistema Linux
Requisitos de hardware
Para que GNU/Linux funcione correctamente se tendrá que contar con un sistema Pentium
III con disco rígido de por lo menos 20 GB con al menos 16 MB para memoria en modo
gráfico, se recomienda 2 GB en RAM.
Página 16
Sistemas Operativos
2010
Espacio en el disco duro
Antes de comenzar el proceso de instalación, deberán reunirse al menos una de las
condiciones siguientes:
•
•
Su computadora deberá tener espacio sin particionar para la instalación de Linux.
Deberá contar con una o más particiones que pueda borrar para conseguir más
espacio libre para instalar Linux.
Casi todos los sistemas operativos modernos utilizan particiones de discos, y Linux no es
una excepción. Cuando instale Linux, tendrá que trabajar con particiones de disco. Si
Linux va a compartir su sistema con otro SO, necesitará estar seguro de tener espacio
disponible suficiente en su(s) disco(s) duro(s) para la instalación.
El espacio de disco destinado a Linux debe estar separado del espacio utilizado por otros
sistemas operativos que puedan estar instalados en su sistema, como por ejemplo
Windows, OS/2, o incluso una versión diferente de Linux. Al menos dos particiones (/ y
swap) deben estar dedicadas a Linux. Hay que recordar algo muy importante a la hora de
realizar un particionamiento del disco. GNU/Linux necesita como mínimo 2 particiones. Una
principal (raíz) y otra de intercambio (swap).
Si se pensara poner dicha máquina como servidor, tendríamos que pensar en por lo menos
MB de RAM adicional por usuario en modo texto y 2 MB para modo grafico que aunque
parezca demasiado, cuando se cuenta con 100 usuarios usando el entorno gráfico se vera
que la memoria se evapora como agua en el desierto.
Si el trabajo a realizar requiere de un entorno gráfico como el KDE o el GNOME y el uso de
aplicaciones ofimáticas como el OpenOffice, los requerimientos serán mayores debido a
que estos requiere por lo menos de 3 GB para su correcto funcionamiento y de un
Pentium IV por lo menos.
Puede consultar también la lista de compatibilidad de hardware de linuxQuestions.org
disponible en: http://www.linuxquestions.org/hcl/index.php
No se trataran el tema de instalación a partir de cada una de las distribuciones ya que en
cada una de ellas existe la documentación para poder hacerlo. Lo que se tratara es la
instalación a partir de un sistema que tenga Windows instalado, que será la mayoría de las
ocasiones.
Actualmente Linux es un sistema fácil de usar. Cada distribución trae programas
seleccionados por los autores de la distribución incluidos en el cd o en el dvd, y se pueden
instalar tanto al comienzo de la instalación como luego de haber instalado el sistema
operativo debe iniciar cada vez que enciendas el ordenador; en este caso practico
instalaremos Centos 4.2.
Página 17
Sistemas Operativos
2010
2.2 Procedimiento de instalación caso CentoS 4,2
Lo primero que necesita es insertar el primer cd de instalación del sistema operativo
Centos 4.2 en la unidad óptica.
En seguida resetear la pc para asegurarse de que la unidad de CD óptica es el primer
dispositivo de arranque, lo que se puede hacer por entrar en la BIOS (normalmente se
hace pulsando la tecla eliminar en el arranque, o tecla F2, F10 según el modelo ) y el
control bajo la prioridad de CD / DVD está por encima de la unidad de disco duro, si no
cambiarlo en consecuencia y guarde los cambios
A) Introduzca el CD instalador de Linux distribución Centos , reinicie la PC y oprima
una tecla para inicializar desde la misma…espera hasta que Centos cargue la
siguiente pantalla: (Figura 2.1)
Figura 2.1 Pantalla inicial
B) Una vez que ha cargado se puede seleccionar el 'install' oprimiendo la tecla enter
para iniciar la instalación. Posteriormente Centos le preguntara si quiere empezar
con el testing; pulse la tecla Tab hasta que Skip es puesto en relieve, a continuación
pulse Intro.
Página 18
Sistemas Operativos
2010
Figura 2.2 Testing
C) El "Bienvenidos" es visualizada. Pulse el botón Next (Figura 2.3)
Figura 2.3 Iniciar instalación
Página 19
Sistemas Operativos
2010
D) Obtendrá la siguiente imagen (figura 2.4 ) para seleccionar el lenguaje, busque
Spanish (Español), pulse el botón Next
Figura 2.4 Selección del idioma
E) Centos le pedirá la configuración del teclado, esta será igual en español, continúe
oprimiendo Siguiente (figura 2 5)
Figura 2.5 Configuración del teclado
Página 20
Sistemas Operativos
2010
F) Lea y seleccione el mejor tipo de instalación que le convenga y se ajuste a sus
necesidades; en este caso le daremos Servidor para que podamos configurar
servicios en red posteriormente. (figura 2.6)
Figura 2.6 Tipo de Instalación
G)
Una vez seleccionado el Servidor Centos nos proporciona la siguiente pantalla. La
pantalla de Configuración del Particionamiento del disco aparece. Pulse la tecla Tab
(tabulador) hasta que Particionamiento Automático se pone de relieve si desea
configurar las particiones en un entorno interactivo, seleccione Participación manual
con Disk Druid.
Si quiere conservar los datos y las particiones seleccione “Particionamiento
Automático” este guardara todas las particiones y usará el espacio libre; de clic en
el botón Siguiente.
Página 21
Sistemas Operativos
2010
Figura 2.7 Tipo de partición
Una vez particionado el disco en forma automática se tendrá la siguiente pantalla
(figura 2.8), seleccione “Guardar todas las particiones y use el espacio libre
existente” para obtener un arranque dual. Continúe con el botón Siguiente.
Figura 2.8 Particionamiento automático
Página 22
Sistemas Operativos
2010
Asegúrese que la opción del check box “Revise (y modifique si lo necesita) las
particiones que ha creado” no este activada (sin palomita) para que Linux Centos no
le de la pantalla de Configuración del Disco Duro Manual.
H) Continuando con la instalación Centos nos dará la pantalla de gestor de Arranque
que por defecto se instalara el GRUB (es un administrador o gestor de arranque
múltiple, desarrollado por el proyecto GNU, GRUB en español significa Gran Gestor
de Arranque Unificado, que se usa comúnmente para iniciar uno de dos o más
sistemas operativos instalados en un mismo computador, se usa principalmente en
sistemas operativos GNU/Linux. En cambio seleccione el botón siguiente para
continuar.
Figura 2.9 Gestor de arranque
Centos da la opción de cambiar el gestor de arranque aunque este no se
recomienda, también puede agregar otros sistemas operativos adicionales con el
botón “añadir” , en caso de tener ya Windows, Centos lo reconocerá y creará las
configuraciones necesarias para que el GRUB haga un arranque dual. (figura 2.9).
I)
Después Centos presentará la pantalla de configuración de Cortafuegos, este le
dará mayor seguridad al equipo por lo tanto, se recomienda que lo configure
activando las casillas de verificación sobre el cuadro blanco, para continuar dar clic
en el botón siguiente. (figura 2.10)
Página 23
Sistemas Operativos
2010
Figura 2.10 Configuración de firewall
J) Posteriormente tenemos la pantalla de Configuración de Red; un host o anfitrión es
un ordenador que funciona como el punto de inicio y final de las transferencias de
datos. Más comúnmente descrito como el lugar donde reside un sitio web. Un host
de Internet tiene una dirección de Internet única (direción IP) y un nombre de
dominio único o nombre de host.
Figura 2.11 Configuración de los servicios de red
Página 24
Sistemas Operativos
2010
Una puerta de enlace predeterminada es un dispositivo (un router o una
computadora) que sirve como enlace entre dos redes informáticas, es decir, es el
dispositivo que conecta y dirige el tráfico de datos entre dos redes. Generalmente en
las casas, ese dispositivo es el router y Cable-Modem o DSL-Modem que conecta la
red local de la casa (LAN) con Internet (WAN). En las empresas, muchas veces es
una computadora la que dirige el tráfico de datos entre la red local y la red exterior,
y, generalmente, también actúa como servidor proxy y firewall. (fig. 11)
Este dispositivo, al conectar dos redes de IP, poseerá: una dirección IP privada: que
servirá para identificarse dentro de la red local, una dirección IP pública: que servirá
para identificarse dentro de la red exterior. Ejemplo una red compuesta por cinco
dispositivos (generalmente computadoras, pero pueden ser impresoras, etc.) y un
enrutador:
Dirección de los dispositivos:
192.168.4.3 (computadora 1)
192.168.4.4 (computadora 2)
192.168.4.5 (computadora 3)
K) La siguiente pantalla solicita el soporte extra del idioma, se recomienda volver elegir
al español y dar clic en el botón siguiente.
Figura 2.12 Soporte del idioma adicional
Página 25
Sistemas Operativos
2010
L) A continuación tiene la pantalla para predeterminar el uso de los horarios, con su
mouse vaya a dar clic sobre el país México seleccionado la región en que vive,
luego de clic en el botón siguiente. (figura 2.13)
Figura 2.13 Selección del huso horario
M) La siguiente pantalla es muy importante, ya que dará la contraseña del Root, este es
el superusuario, el principal y no deberá olvidar la contraseña ya que tiene los
derechos de configurar al mismo Centos posteriormente si se requiere.
Figura 2.14 Contraseña de root
Página 26
Sistemas Operativos
2010
N) La siguiente pantalla es para seleccionar la paquetería que se desea instalar en su
servidor Centos, observe que para una instalación completa deberá contar con los
demás cd’s que el mismo sistema se lo solicitara. Seleccione el botón siguiente.
(figura2.15)
Fig. 15 Selección de aplicaciones
Esta selección de paquetes dependerá del tipo de programas con que trabaja la
empresa como puede ser administradores de bases datos, desarrolladores de
software o paquetes de oficinas para administrativos.
O) Listo para empezar con la descarga de los archivos que configuran al Sistema
Operativo Centos, dando clic en el botón siguiente como se observa en la siguiente
pantalla. (figura 2.16)
Página 27
Sistemas Operativos
2010
Figura 2.16 Inicio de instalación
P) Por último aparecerá la pantalla de avance donde el mismo sistema pide los cd’s de
instalación por lo que vaya introduciéndolos como se lo requiere la propia
computadora. (figura 2.17)
Figura 2.17 Instalación de paquetes
Página 28
Sistemas Operativos
2010
2.3 Esquema de particiones
Estilo tradicional PC
Un disco duro puede tener un máximo de 4 particiones primarias, porque la información de
la tabla de particiones reside (junto con el código de arranque) en el MASTER BOOT
RECORD: el sector 0 del disco. Sin embargo una de las particiones primarias puede ser
designada como “partición extendida”, y ser “subdividida” en un número ilimitado de
particiones “lógicas”.
Nomenclatura Windows necesita ser instalado en una partición primaria. Linux puede ser
instalado en cualquier tipo de partición. Linux suele numerar las particiones primarias de
un disco desde 1 a 4, y reserva los números 5 y superior para las lógicas. Recordemos
entonces al particionar que cuando se llegue a crear una cuarta partición, conviene hacerla
lógica.
Nomenclatura Linux de discos y particiones como iremos viendo, en el diseño tradicional
UNIX, “todo es un fichero”. Los discos se nombran mediante su fichero de dispositivo:
IDE:
/dev/hda Disco maestro en canal IDE 0
/dev/hdb Disco esclavo en canal IDE 0
/dev/hdc Disco maestro en canal IDE 1
/dev/hdb Disco esclavo en canal IDE 1
SCSI y USB:
/dev/sda, /dev/sdbb, etc.
Las particiones de un disco se nombran mediante el nombre de dispositivo y
el número de partición:
Primarias: /dev/hda1, /dev/hda2, /dev/hda3, /dev/hda4
Lógicas: /dev/hda5, etc.
De cara a una instalación para uso generalista, propondremos un primer esquema simple y
efectivo:
Una partición para swap (memoria virtual en disco)
Una partición para el sistema (raíz de la jerarquía, es decir: / )
Una partición para los datos de los usuarios ( directorio /home )
La partición de swap se utiliza como espacio de memoria RAM virtual en disco duro. Sirve
para que, en casos de sobrecarga de trabajo, el sistema operativo pueda relegar a disco
aquellos programas que están ejecutándose pero pueden esperar.
El swap es la única partición que no tiene filesystem. Antiguamente se recomendaba un
tamaño del doble que la RAM disponible; hoy en día no es muy importante. Un GB suele
ser suficiente.
Página 29
Sistemas Operativos
2010
La partición raíz (/) es la que contiene todo el software del sistema operativo. El filesystem
recomendado y más estándar en Linux es “ext3”. Una instalación típica minimalista puede
ocupar unos 200 MB; una instalación completa con entorno gráfico suele superar el GB (a
veces varios GB porque depende de cuánto software provee la distribución)
La partición /home. es en donde todos los usuarios UNIX escriben todos sus
datos. Por tanto, la dimensionaremos según creamos que vayan a ser las
necesidades de usuario.
2.4 Gestores de arranque PC
Puede tener un disco duro puede varias particiones, cada una de ellas puede estar en el
formato que quieras. El sistema operativo Windows monta cada partición con una letra,
generalmente empezando por la C:/, en cambio Linux monta las particiones como carpetas,
de forma que la partición en la que está instalada el sistema operativo está montada en /, y
el resto de particiones las puedes montar donde quieras (aunque generalmente si son de
datos se suelen montar en /media/nombre_partición).
Para poder mantener en nuestro PC dos sistemas operativos, además de haberlos
instalado en distintas particiones necesitaremos poder elegir en el momento del arranque
entre uno u otro. Esta es la labor de los gestores de arranque. Existen varios gestores, el
propio Windows tiene el suyo. Uno de los más flexibles y el que se está convirtiendo en
estándar es GRUB (GRand Unified Bootloader).
Conceptualmente todos los gestores funcionan así: primero la BIOS del PC debe leer el
código de arranque del MBR (sector 0 del disco). Para ello deberemos antes configurar la
BIOS para que pueda arrancar del disco que queramos en concreto.
La BIOS sólo sabe arrancar el programa que se encuentra en el MBR Dicho programa es
el gestor de arranque, en su primera “etapa”: a su vez “sabe” a qué particiones tiene que ir
a leer para continuar con la carga de la siguiente etapa, y de ahí ofrecernos ya un menú
para que seleccionemos uno u otro sistema operativo.
El arranque del sistema es todo un caso. Se esta contando seguramente con dos SO en el
mismo sistema. Los programas que lo guiaran por la instalación les pedirán que indiquen
que sistema operativo quieren que inicie al encender la computadora. Con GNU/Linux se
utiliza un programa que reside en el MBR de disco rígido llamado LILO (LInux LOader) el
cual administra en que partición se encuentra cada SO y uno puede elegir, presionando la
tecla Tab, con cual SO se quiere iniciar.
Página 30
Sistemas Operativos
2010
2.5 Páginas de otros Sistemas Operativos Linux
Esta liga te lleva a la instalación de Linux Fedora
http://docs.fedoraproject.org/install-guide/f12/es-ES/html/
Esta liga te lleva a un archivo .pdf en inglés sobre sistemas operativos Windows y
Linux Red hat
http://www.sans.org/security-training/os_install2.pdf
Esta liga te lleva a ver los pasos de la instalación de Linux Ubuntu
http://www.ajpdsoft.com/modules.php?name=news&file=article&sid=154
Esta liga te lleva a ver los pasos de la instalación de Linux Centos 5.0
http://translate.google.com.mx/translate?hl=es&langpair=en%7Ces&u=http://www.
slideshare.net/poustchi/installing-linux-centos-50
Página 31
Sistemas Operativos
2010
UNIDAD III
COMANDOS BASICOS DE LOS SISTEMAS OPERATIVOS
3.1 Comandos básicos
Comando: date
Formato: date [-u] [+FORMAT] [MMDDhhmm] [[CC]YY] [.ss]
Descripción: Imprime y establece la fecha. Visualizará la fecha y hora actual tal como es
conocida por la máquina. No especificando ningún argumento o si el argumento comienza
con +, imprimirá la fecha y la hora; caso contrario, se registra o establece la fecha. La
especificación de un formato consiste en una cadena entre comillas. Los campos
particulares vienen representados entre signos de porcentaje (%) seguidos por una letra de
código.
Los descriptores de campo son:
%% Literal %.
%a
Establece abreviatura para los días de la semana (Sat...Sun).
%A Asigna nombre completo a los días de la semana (Saturday...Sunday).
%b
Establece abreviatura a los meses (Jan...Dec).
%B Asigna nombre completo a los meses (January...December).
%c
Fija fecha y hora de la forma (Sun Dec 08 08:03:30 EST 2002).
%d
Día del mes (01...31).
%D Fecha (mm/dd/yy).
%h
Igual que %b.
%H Horas de 00 a 23.
%I
Horas de 01 a 12.
%j
Día del año 001 a 365.
%k
Horas de 0 a 23.
%l
Horas de 1 a 12.
%m Mes de 01 a 12.
%M Minutos de 00 a 59.
%n
Nueva línea.
%p
Fija AM o PM.
%r
Hora en notación AM/PM.
%S Segundos de 00 a 59.
%t
Inserta carácter de tabulación horizontal.
%w Día de la semana (de domingo a sábado)
%x
Establece la representación de fecha como mm/dd/yy.
%X Establece la representación de hora como %H:%M:%S.
%y
Sólo año.
Las opciones son:
-u
Asigna el tiempo y la fecha en coordenadas universales.
MM Mes.
DD
Día del mes.
hh
Hora.
mm Minutos.
CC
Primeros dos dígitos del año (siglo).
yy
Últimos dos dígitos del año.
Página 32
Sistemas Operativos
2010
.ss
Segundos.
Nota: Sólo el superusuario (administrador del sistema) puede fijar o cambiar el sistema
horario.
Ejemplos: $ date
Wed Jun 10 18:50:06 EDT 2002
$ date +%m
06
$ date “Hoy es %d de %h. La hora exacta es %r”
Hoy es 10 de Sep. La hora exacta es 06:26:32 PM
$ date + “Mes: %m%nDía: %d%nHora: %T”
Mes: 09
Día: 10
Hora: 19:02:58
Las ordenes de date especialmente construidas se utilizan con frecuencia en guiones shell
para producir una visualización o para asignarlas, a variables del entorno. date también se
utiliza a menudo para poner una estampación (marca) de tiempo a un trabajo.
Comando: echo
Formato: echo [-ne] [argumento(s)]
Descripción: Regresa cualquier cosa que haya escrito después de echo. Escribe los
argumentos por la salida estándar, separados por espacios en blanco y terminado(s) por
una nueva línea. echo reconoce algunas anotaciones especiales:
\b
Caracter de retroceso o retroceder un caracter.
\c
Escbir la línea sin nueva línea.
\f
Salto de página o cambio de hoja.
\n
Cambio de línea o salto de línea.
\r
Retorno de carro.
\t
Caracter de tabulación o tabulador horizontal.
\\
Barra invertida o barra inclinada hacia la izquierda.
\v
Caracter de tabulación vertical.
-e
Habilita la interpretación de caracteres especiales marcados por la barra inclinada
hacia la izquierda.
-n
Elimina el salto de línea final.
Ejemplos:
$ echo Estoy contento
Estoy contento
$ SALUDO=“Hola a todos”
Variables de entorno.
$ PREGUNTA=“como estan”
$ echo $SALUDO $PREGUNTA
Hola a todos como estan
echo se utiliza para visualizar cadenas arbitrarias en la terminal y también para
visualizar el contenido de variables de entorno.
Página 33
Sistemas Operativos
2010
Comando: exit
Formato: exit
Descripción: Indica que se ha terminado la sesión y libera a la terminal para ser utilizada
por alguien más o para ingresar con un identificador distinto. La terminación o despedida
impide que gente extraña utilice la terminal y el identificador para provocar perjuicios
potenciales.
Comando: man
Formato: man [comando]
Descripción: Localiza y muestra la(s) página(s) del manual del comando especificado.
Ejemplo:
man date
El manual en línea man contiene páginas del manual para cada comando y otras
páginas acerca de las funciones internas que los progrmadores utilizan, formatos para
diferentes tipos de sistema de archivo, descripciones de hardware que puede conectarse a
su SO.
Comando: passwd
Formato: passwd [nombre del usuario]
Descripción: Cambia la contraseña del usuario (password), siempre que ya se haya
registrado. Una contraseña sólo puede ser cambiada por el propietario de la misma,
passwd pedirá que escriba la contraseña actual para probar que aún es la misma persona
que cuando se llevo a cabo el registro. Posteriormente el programa. passwd pide la nueva
contraseña dos veces para asegurarse de que sea correcta. Si se ha introducido la misma
contraseña las dos veces, la orden passwd cambiará la idea de que el sistema tiene la
contraseña y regresará luego al shell de la forma usual para aceptar la siguiente orden. Si
se comete un error, el programa passwd acabará volviendo al shell para que se pueda
intentar de nuevo. Si se cancela la ejecución del comando passwd, acabará dejando la
vieja contraseña todavía en activo. Si olvidara la contraseña, no hay manera de
recuperarla, ni aún el administrador del sistema puede hacerlo. Puede asignarle una
nueva. El administrador del sistema podrá crear una contraseña nula o variar las
contraseñas de los distintos usuarios.
Sugerencias para escribir una contraseña:
• Debe contener entre 6 y 8 caracteres.
• Debe contener, al menos, un dígito (0-9).
• Intercale dígitos, caracteres en minúscula y caracteres en mayúscula (LINUX
distingue (son diferentes) mayúsculas de minúsculas).
• Escriba una contraseña que sea fácil de recordar, sin necesidad de anotarla en
alguna parte, y que no sea predecible.
Comando: shutdown
Formato: /bin/shutdown [-t segundos] [-rkhncf] tiempo [mensaje]
Descripción: Termina todos los procesos que se estén ejecutando en el sistema de
manera ordenada. Cierra el sistema, parando todas las conexiones y esperando antes de
detenerse mientras lanza mensajes de aviso. Cuando se especifica una hora, el cierre se
realizará a la hora indicada. Sólo el superusuario o un usuario con autorización pueden
ejecutar la orden shutdown.
Las opciones son:
-t segundos Espera los segundos dados entre el mensaje de atención y las señales de
finalización de shutdown.
Página 34
Sistemas Operativos
2010
-k
Manda el mensaje de aviso pero no cierra realmente el sistema.
-r
Reinicia después de cerrar.
-n
No sincroniza antes el reseteo.
-f
Resetea sin comprobación de los archivos de sistema.
-c
Cancela un shutdown que se está ejecutando.
-h
Se detiene después de hacer el shutdown.
mensaje
Envía el mensaje a todos los usuarios.
tiempo
El argumento tiempo puede tener diferentes formatos; formato de tiempo
absoluto en la forma hh:mm, donde hh es la hora con uno o dos dígitos, y mm minutos con
dos dígitos.
Podrá utilizar el formato +m, donde m es el número de minutos en tiempo de espera.
Tenga en cuenta la palabra now como alias de +0.
shutdown –h +10
El sistema se cierra al cabo de 10 minutos.
shutdown –r now
Cierra el sistema inmediatamente y después lo vuelve a arrancar.
shutdown –h +5 “El sistema necesita un descanso”
Advierte a los usuarios del cierre del sistema para darles tiempo a terminar lo
que estén haciendo.
El comando shutdown forma parte del procedimiento de desconexión, que tiene
como finalidad mantener la sanidad del sistema cuando se arranque de nuevo. shutdown
trata de evitar que los procesos en ejecución no se vean afectados o alterados por la caída
o desconexión del sistema.
Ejemplos:
Comando: poweroff
Formato: poweroff
Descripción: Este comando se utiliza para apagar el sistema sin que se vuelva a
reinicializar.
Opciones:
-h Para el sistema para apagado. (no reinicia)
-r Reiniciar el sistema
-f reinicio rápido. No se comprobaran los sistemas de archivo al iniciar.
-q Silencioso. No se solicita mensaje.
-s Reinicio en modo monousuario. Muy util.
Comando: who
Formato:
who [opciones] [archivo]
who am i
Descripción: Informa sobre quién está en el sistema. Lista el nombre de conexión, el
nombre de la terminal y el momento de conexión para cada usuario conectado al sistema
LINUX. También puede escribir who am i y sólo se imprimirá la línea de la terminal en la
cual se escribió el comando.
-m
-q
-s
Igual que who am i.
Nombre de los usuarios y número de ellos conectados al sistema.
Ignorado. Compatibilidad con otras versiones who.
Página 35
Sistemas Operativos
2010
-i
Muestra el número de horas y minutos que un usuario ha estado inactivo. El carácter
“.” significa que el usuario ha estado inactivo menos de un minuto, y el término old, más de
24 horas.-u Igual que –i.
Ejemplos: who –q
who am i
El comando who se ocupa para saber quien se encuentra en el sistema con la
finalidad de: mandar mensajes, conocer la carga del sistema o para verificar la actividad en
el sistema antes de su cierre.
Comando: id
Formato:
id [opciones]
Descripción: Muestra información sobre la identificación dentro del sistema del usuario
que ejecuta el comando. La información que facilite consiste en nombre de usuario, UID,
nombre de grupo y GID.
Las opciones son:
-g Muestra sólo el identificador de usuario.
-n Muestra sólo el nombre de usuario o de grupo, es necesario en combinación con –u o
–g.
-r
-q Muestra UID y GID reales en lugar de efectivos, es necesario en combinación con –u
o –g.
Muestra sólo la identificación de usuario.
Comando: time
Formato:
time comando
Descripción: Facilita la información de tiempo que consume un comando. La información
que nos facilita es de tres tipos: tiempo real que transcurre desde que lanza el comando
hasta que termina, tiempo de usuario que es el tiempo que realmente a utilizado de CPU y
por último, tiempo de sistema que es el tiempo consumido en peticiones al sistema.
Las opciones son:
comando Comando que se quiere medir.
Ejemplo:
time ls –s /
Medirá el tiempo que tarde en ejecutarse un ls –l de todo el sistema de
archivos.
Comando: cal
Formato:
cal [-j] [-y] [mes] [año]
Descripción: Muestra en pantalla el calendario del año indicado, o del mes indicado.
Las opciones son:
-j
Las fechas se muestran en formato juliano enumerando los días de forma
consecutiva desde el 1 de enero.
-y
Muestra el calendario del año actual.
mes Sirve para especificar el mes que queremos ver, se puede indicar tanto por número
del 1 al 12 como por su nombre en inglés. Por defecto el valor es el del mes actual.
año Especifica el año que se quiere visualizar, de año 1 a año 9999. Los años han de ser
especificados con su número completo.
Ejemplos:
cal
Muestra en pantalla el calendario del mes actual.
cal 4 1974
Página 36
Sistemas Operativos
2010
Muestra el calendario de abril de 1974.
cal 2010
Muestra el calendario del año 2010.
Comando: clear
Formato:
clear
Descripción: Borra la pantalla completamente de la terminal en la que se este trabajando.
Comando: finger
Formato:
finger [opciones] usuarios
Descripción: Este comando se utiliza para obtener información sobre los usuarios del
sistema, muestra toda la información referente a un usuario que hay registrada en el
sistema. Si solo se invoca el comando sin ninguna opción ni nombre de usuario nos da
información referente a los usuarios actualmente conectados al sistema. Podemos pedir
información sobre usuarios de otras computadoras conectadas en red poniendo:
[email protected].
Las opciones son:
-s
Da diversa información sobre los usuarios.
-l
Muestra la misma información que la opción –s pero en formato de líneas y
además nos muestra los contenidos de los ficheros .plan y .project, si éstos
-p
existen, del directorio home del usuario.
usuarios Impide que la opción –l muestre el contenido de los archivos .plan y .project.
Se da una lista de usuarios sobre los que se demanda la información.
Ejemplo:
finger psanchez
Nos devolverá la información almacenada referente al usuario psanchez.
3.2 Comandos para el manejo y organización de archivos y directorios
3.2.1 Concepto de archivo
Archivo es un conjunto de datos con un nombre asociado y suelen residir en dispositivos
de almacenamiento secundario. Algunos sistemas operativos imponen a todos sus
archivos una estructura determinada bien definida. En Linux un archivo no es más que una
secuencia de bytes.
Los archivos son administrados por el SO. Su estructura, nombre, forma de acceso, uso,
protección e implementación son temas fundamentales en el diseño de un SO. Aquella
parte del SO que trabaja con los archivos se conoce, como un todo, como el sistema de
archivos.
Cuando un proceso crea un archivo, le da a éste un nombre. Cuando el proceso concluye,
el archivo sigue existiendo y otros procesos pueden tener acceso a él mediante su nombre.
Las reglas exactas para los nombres de archivo varían un poco de sistema a sistema,
aunque los actuales SO permiten cadenas de hasta 256 caracteres (algunos otros SO,
Página 37
Sistemas Operativos
2010
permiten cadenas de hasta 8 letras) como nombres de archivo. También es frecuente que
se permitan dígitos y caracteres especiales.
Algunos sistemas de archivos distinguen entre las mayúsculas y las minúsculas, mientras
que otros no. UNIX está dentro de la primera categoría; MS-DOS dentro de la segunda.
Así, un sistema UNIX puede tener los siguientes archivos distintos: bárbara, Bárbara,
BARBARA, BARbara y BarBaRa. En MS-DOS, todos los nombre se refieren al mismo
archivo.
La mayoría de los SO utilizan nombres de archivo con dos partes, separadas por un punto,
como en prog.c. La parte posterior al punto es la extensión de archivo e indica por lo
general algo relativo al archivo. Por ejemplo, en MS-DOS, los nombres de archivo tienen
una longitud de hasta ocho caracteres más una extensión opcional de hasta tres
caracteres. En UNIX, el tamaño de la extensión, si ésta existe, se deja al usuario; además,
un archivo puede tener incluso dos o más extensiones.
Tipos de archivos.
Muchos SO soportan varios tipos de archivos. UNIX y MS-DOS, por ejemplo, tienen:
•
Archivos regulares. Son aquellos que contienen información del usuario.
•
Archivos en ASCII. Constan de líneas de texto. En ciertos sistemas, cada línea
termina con un carácter de retorno de carro. En otros se utiliza el carácter
alimentador de línea. En ciertas ocasiones se necesitan ambos. Las líneas no
tienen que tener la misma longitud. La gran ventaja de los archivos ASCII es que
se pueden exhibir e imprimir tal cual son y pueden editarse mediante un editor de
texto común. Además, si un gran número de programas utilizan archivos en ASCII
para la entrada y salida, es fácil conectar la salida de un programa con la entrada
de otro, como en las tuberías del shell. (La exploración entre los procesos no es del
todo fácil, pero la interpretación de la información sí lo es cuando se utiliza una
convención estándar, como ASCII, para expresarla.)
•
Archivos binarios. No son archivos en ASCII. El listado de su contenido produce
una lista incomprensible de algo que parece aleatorio y sin sentido. Por lo general,
tienen cierta estructura interna.
•
Directorios. Son archivos de sistema para el mantenimiento de una estructura del
sistema de archivos.
•
Archivos especiales de caracteres. Tienen relación con la Entrada/Salida y se
utilizan para modelar dispositivos seriales de E/S, tales como las terminales,
impresoras y redes.
•
Archivos especiales de bloques. Se utilizan para modelar discos.
Todos los archivos tienen elementos o características que se asocian a él, conocidos como
atributos La información esencial de un archivo consta de: nombre, extensión, tamaño, y
fecha/hora de creación.
Los atributos pueden ser manipulados por: el usuario, el SO y/o una aplicación. Algunos
son exclusivos de alguno de los manipuladores.
Los archivos existen para poder almacenar la información y recuperarla más adelante. Los
distintos sistemas proporcionan diversas operaciones para permitir el almacenamiento y la
recuperación. Algunas de las llamadas más comunes al sistema relacionadas con los
archivos son:
Página 38
Sistemas Operativos
•
•
•
•
•
•
•
•
•
•
2010
CREAR. Construir un archivo nuevo.
DESTRUIR. Eliminar un archivo.
ABRIR. Preparar un archivo para hacer referencia a él.
CERRAR. Evitar cualquier otra referencia al archivo en tanto no se le abra otra vez.
COPIAR. Crear otra versión del archivo con un nombre nuevo.
RENOMBRAR o REBAUTIZAR. Cambiar el nombre de un archivo.
LISTAR. Imprimir o exhibir el contenido de un archivo.
BUSCAR. Especificar (mediante métodos) dónde tomar los datos de un archivo.
OBTENER ATRIBUTOS. Leer los atributos de un archivo para que él(los) proceso(s)
pueda(n) realizar su trabajo con él.
ESTABLECER ATRIBUTOS. Fijar o especificar las características (atributos) de un
archivo ya existente.
Los elementos de información individuales dentro del archivo se pueden manipular con
operaciones tales como:
• LEER. Introducir un elemento de información de un archivo a un proceso.
• ESCRIBIR. Transferir un elemento de información de un proceso a un archivo.
• MODIFICAR. Alterar un elemento de información ya existente en un archivo.
• INSERTAR o AÑADIR. Añadir un nuevo elemento de información a un archivo.
• ELIMINAR. Borrar un elemento de información de un archivo.
3.2.2 Sistemas archivos
Un sistema de archivos debemos entenderlo como aquella parte del sistema responsable
de la administración de los datos en dispositivos de almacenamiento secundario.
El sistema de archivos debe proporcionar los medios necesarios para un almacenamiento
seguro y privado de la información y, a la vez, la posibilidad de compartir esa información,
en caso de que el usuario lo desee.
En general, los sistemas de archivos contienen:
•
Métodos de acceso. Se ocupan de la forma en que se obtiene acceso a los
datos almacenados en archivos.
•
Administración de archivos. Se ocupa de ofrecer mecanismos para
almacenar, compartir y asegurar archivos, y hacer referencia a ellos.
•
Administración de almacenamiento secundario. Se ocupa de asignar espacio
a los archivos en dispositivos de almacenamiento secundario.
•
Mecanismos de integridad de archivos. Se ocupan de garantizar que no se
corrompa la información en un archivo. Cuando se asegura la integridad de los
archivos, cualquier información que deba estar en un archivo estará ahí; la
información que no deba estar en un archivo se mantiene fuera de él.
Las funciones más importantes del sistema de archivos son:
1. Los usuarios deben poder crear, modificar y eliminar archivos.
2. Los usuarios deben ser capaces de compartir sus archivos entre sí en forma
cuidadosamente controlada para aprovechar y continuar el trabajo de los demás.
Página 39
Sistemas Operativos
2010
3. El mecanismo para compartir archivos debe ofrecer varios tipos de acceso
controlado, tales como acceso para lectura, acceso para escritura, acceso para
ejecución o diversas combinaciones de éstos.
4. Los usuarios deben poder dar a sus archivos la estructura más apropiada para cada
aplicación.
5. Los usuarios deben ser capaces de ordenar la transferencia de información entre
archivos.
6. Deben ofrecerse recursos de respaldo y recuperación para evitar ya sea la pérdida
accidental o la destrucción mal intencionada de información.
7. Los usuarios deben poder hacer referencia a sus archivos mediante nombres
simbólicos en vez de tener que usar nombres de dispositivos físicos (o sea,
independencia con respecto a los dispositivos).
8. En ambientes delicados en los cuales la información debe mantenerse segura y
privada, el sistema de archivo puede ofrecer también funciones de ciframiento y
desciframiento, lo cual hace que la información sólo resulte útil a quienes está
destinada (es decir, a aquellos que poseen claves para desciframiento).
9. Lo más importante de todo: el sistema de archivos debe ofrecer una interfaz amable
con el usuario. Debe proporcionar a los usuarios una vista lógica de sus datos y de
las funciones que se puedan realizar con ellos, más que una vista física. El usuario
no deberá tener que preocuparse de los dispositivos específicos en los cuales está
almacenada la información, la forma que adoptan los datos en esos dispositivos o
los mecanismos físicos para transferir datos de esos dispositivos o hacia ellos.
3.2.3 Directorios
Un directorio no es más que un archivo especial, el cual contiene información que permite
localizar otros archivos. Es un archivo de sistema que sirve para el mantenimiento de una
estructura del sistema de archivos. Llevan un registro de los archivos almacenados en la
computadora.
Las llamadas al sistema permitidas para el manejo de los directorios tienen más variación
de sistema a sistema que las relacionadas con los archivos.
•
•
•
•
•
•
•
CREAR. Se crea un directorio el cual está vacío excepto por punto y puntopunto, los que se colocan en él en forma automática por el sistema.
ELIMINAR. Se elimina un directorio. Sólo se puede eliminar un directorio vacío.
Un directorio que sólo contenga punto y punto-punto se considera vacío ya que
éstos por lo general no se pueden eliminar.
ABRIR. Se pueden leer los directorios. Por ejemplo, para exhibir una lista de
todos los archivos de un directorio, un programa de listado abre el directorio
para leer los nombres de todos los archivos que contiene. Antes de poder leer
un directorio, éste debe ser abierto.
CERRAR. Cuando se ha leído un directorio, éste debe cerrarse para liberar el
espacio de la tabla interna.
LEER. Esta llamada regresa la siguiente entrada en un directorio abierto.
CAMBIAR DE NOMBRE. En muchos aspectos, los directorios son como los
archivos y se les puede cambiar el nombre al igual que éstos.
LIGAR. El ligado es una técnica que permite que un archivo aparezca es más de
un directorio. Esta llamada al sistema especifica un archivo existente y el
Página 40
Sistemas Operativos
•
2010
nombre de una ruta de acceso, además de crear un enlace del archivo ya
existente con el nombre especificado en la ruta de acceso. De esta forma, el
mismo archivo puede aparecer en varios directorios.
DESLIGAR. Se elimina una entrada del directorio. Si el archivo que se desea
desligar aparece sólo en un directorio (el caso normal), se elimina del sistema de
archivos. Si esta presente en varios directorios, sólo se elimina la ruta de acceso
especificada, mientras que las demás permanecen.
.
3.2.4 El sistema de archivos de LINUX.
En LINUX, todos los archivos están organizados en directorios que, a su vez, están
jerárquicamente conectados entre sí en un único sistema global de archivos conocida
como estructura de árbol invertido. Se hace referencia a un archivo, entonces, no sólo por
su nombre, sino indicando también el lugar que ocupa dentro de esta estructura de
archivos. Puede crear tantos directorios como quiera, añadiendo así más directorios a la
estructura de archivos. Las órdenes para el manejo de archivos de LINUX pueden efectuar
operaciones sofisticadas, como desplazar o copiar directorios completos junto con todos
sus subdirectorios.
En la estructura de árbol invertido no hay un tronco. El árbol se representa invertido,
con la raíz en la parte superior. Extendiéndose hacia abajo, desde la raíz, están las ramas.
Cada rama nace desde una sola rama, pero puede tener muchas ramas que desciendan
de ella. A este respecto, se puede decir que tiene una estructura padre–hijo. Cada
directorio puede tener muchos subdirectorios, pero en sí mismo es hijo de un solo
directorio padre.
/ (root)
dev
bin
home
mark
robert
Directorio
el tiempo
Archivo
chris
informes
programas
lunes
La estructura de árbol LINUX.
La estructura de archivos de LINUX se bifurca en varios directorios a partir del directorio /,
conocido como “raíz” (root). Dentro del directorio raíz hay varios directorios del sistema que
contienen archivos y programas que son los que proporcionan las características del
sistema LINUX. El directorio raíz también tiene un directorio llamado home, que puede
contener los directorios propios (home) de todos los usuarios del sistema. El directorio
propio (home) de cada usuario, a su vez, contiene todos los directorios que el usuario haya
creado para su propio uso. Cada uno de estos también podría contener directorios. Estos
directorios anidados se desprenderían del directorio propio (home) del usuario, como se
ilustra en la siguiente figura:
Página 41
Sistemas Operativos
2010
/ (root)
Directorios de sistema
dev
Directorios home
Directorios de usuario
bin
home
mark
robert
chris
informes
programas
Directorio
La estructura de archivos de LINUX empieza desde el directorio root e incluye los directorios de sistema, home y de usuario.
El directorio raíz, en el que empieza el sistema de archivos de LINUX, contiene varios
directorios del sistema. Los directorios del sistema contienen archivos y programas que se
usan para ejecutar y mantener el sistema. Muchos contienen otros programas para
ejecutar características específicas de LINUX. Por ejemplo, el directorio /usr/bin contiene
diversas órdenes LINUX que ejecutan los usuarios, tales como cp y mv.
El directorio /bin contiene interfaces para diferentes dispositivos de sistema, tales
como la impresora o la terminal. La siguiente tabla presenta una lista de los directorios de
sistema básicos.
Directorio
/
/home
/bin
/usr
/usr/bin
/usr/sbin
/usr/lib
/usr/doc
/usr/man
/usr/spool
/sbin
/var
/dev
/etc
Función
Comienza el sistema de archivos. Se conoce como la raíz.
Contiene los directorios propios (home) de los usuarios.
Contiene todas las órdenes estándar y los programas de utilidad.
Contiene los archivos y órdenes usados por el sistema. Este directorios se
descompone en varios subdirectorios.
Contiene las órdenes orientadas a los usuarios y los programas de utilidad.
Contiene las órdenes de administración de sistema.
Contiene las bibliotecas de los lenguajes de programación.
Contiene documentación de LINUX.
Contiene archivos del manual interactivo man.
Contiene archivos en formato spool, tales como los que se generan para
imprimir tareas y hacer transferencias en redes.
Contiene órdenes de administración de sistema para arrancar el sistema.
Contiene archivos que varían, tales como los archivos “mailbox” (buzón).
Contiene interfaces de archivo para dispositivos tales como la terminal y la
impresora.
Contiene archivos de configuración del sistema y cualquier otro archivo de
sistema.
Página 42
Sistemas Operativos
2010
En la siguiente figura se muestra como están organizados en la estructura de árbol.
/ (root)
Directorio
sbin
sbin
usr
bin
dev
lib
var
man
etc
spool
home
chris
robert
Directorios del sistema en LINUX.
3.2.5 Comandos para el manejo de directorios
Comando: mkdir
Formato:
mkdir [opciones] directorio
Descripción: Crea directorios.
Las opciones son:
-m modo Establece los permisos facilitados en modo del directorio en su creación.
-p
Crea los directorios padres necesarios si no existen.
directorio Directorio que se quiere crear.
Ejemplos:
mkdir –p /home/juan/documentos/cartas
Crea el directorio cartas y todos los directorios anteriores necesarios.
Comando: rmdir
Formato:
rmdir directorio
Descripción: Borra el directorio especificado.
Ejemplos:
rmdir cartas
Comando: pwd
Formato:
pwd
Descripción: Informa sobre cuál es el directorio actual en el que nos encontramos, no
tiene ningún tipo de parámetro.
Comando: cd
Formato:
cd nombre_del_directorio
Página 43
Sistemas Operativos
2010
Descripción: Cambia del directorio actual al indicado en nombre_del_directorio. Éste
puede ser cualquier directorio del sistema. Si no se indica ningún directorio cambiara al
directorio raíz del usuario que lo invoca. Admite los directorios . y .. correspondientes al
actual y al padre del actual para indicar los caminos relativos al directorio destino.
Ejemplos:
3.2.6 Comandos para el manejo de archivos
Comando: ls
Formato:
ls [opciones] archivos
Descripción: Lista los archivos indicados mostrando información sobre ellos. Si no se
pasa como parámetro ningún nombre de archivo, lista los archivos del directorio actual.
Las opciones son:
-a
Muestra todos los archivos del directorio actual incluyendo los archivos ocultos,
que en LINUX son los que comienza su nombre por punto.
-C
Muestra la lista de archivos en formato de columnas.
--color
Muestra la lista de archivos en colores según el tipo de archivo.
-x
Muestra la lista de archivos en formato de columnas ordenada por columnas.
-d
Muestra los directorios como archivos en lugar de mostrar sus contenidos.
-k
Muestra los tamaños de los archivos en kilobytes.
-l
Lista de forma extensa los archivos, con información como derechos
propietarios, fecha de creación y tamaño.
-t
Muestra ordenando por la fecha de la última modificación.
-u
Muestra ordenando por la fecha del último acceso.
-r
Muestra ordenando pero de forma inversa.
-R
Lista el contenido de los subdirectorios recursivamente.
-i
Muestra el numero de inodo de cada archivo.
-F
Formatea la salida poniendo símbolos para diferenciar entre los distintos tipos
archivos de archivos.
Lista de archivos que se quiere listar, sobre todo la utilidad de este parámetro es
usando los caracteres comodín ? y *.
Ejemplos:
ls –l
Muestra los archivos del directorio actual con el formato extendido dando toda
la información.
ls –la *.c
Muestra todos los archivos en formato extenso cuyo nombre termine en .c y
que comiencen por cualquier cadena de carácter, mostrará también los que se consideran
ocultos, que comprenden por .., y cumplan en resto de las condiciones.
3.14 Caracteres comodín y argumentos que son nombres de archivo.
Carácter comodín. Es un carácter especial que actúa como cualquier carácter en nombres
de archivos o comandos.
Los nombres de archivo son los argumentos más comunes en las ordenes. Es frecuente
que solo sepa una parte del nombre del archivo, o tal vez le interese hacer referencia a
varios nombres de archivo que tienen la misma extensión o que comienzan con el mismo
Página 44
Sistemas Operativos
2010
carácter. El shell proporciona un conjunto de caracteres especiales que buscan, hacen
coincidir y generan una lista de nombres de archivo. Estos caracteres especiales o
comodín son * y ? y los [ ]. Dado el nombre parcial de un archivo, el shell usa estos
operadores de coincidencia para buscar archivos y generar una lista con los nombres de
archivo encontrados.
El shell reemplaza el argumento del nombre parcial de archivo con la lista de nombres de
archivos que hacen coincidencia. Esta lista de nombres de archivo puede entonces
convertirse en los argumentos de órdenes tales como ls, que pueden operar sobre muchos
archivos.
Caracteres
comodín
Ejecución
Equivale a cualquier conjunto de caracteres de nombres de archivos.
*
Coincide con un solo carácter cualquiera de nombres de archivo.
?
[]
Coincide con una clase de posibles caracteres de nombres de archivo.
\
Delimita el carácter siguiente: se usa para delimitar caracteres comodín.
Ejemplos de uso de los caracteres comodines:
$ ls
doc1 doc2 doc3 doc4 docA docB docD docs document answers? lib.a mydocs
anwers?.quiz monday tuesday answers?.mid main.c mylock main.o calc.c sydoc1
answers?.final
$ ls doc*
doc1 doc2 doc3 doc4 docA docB docD docs document
$ls *day
monday tuesday
$ ls *.c
calc.c main.c
$ls doc?
doc1 doc2 doc3 doc4 docA docB docD docs
$ls ?y?oc?
mydocs mylock sydoc1
$ls *.?
calc.c lib.a
$ls doc[1As]
doc1 docA docs
$ls doc[1-3]
doc1 doc2 doc3
$ls doc[B-G]
docB docD
$ls *.[co]
main.c main.o calc.c
$ls answers\?
answers?
$ls answers\?.*
answers? answers?.quiz answers?.mid answers?.
Comando: cat
Formato:
cat [opciones] archivos
Página 45
Sistemas Operativos
2010
Descripción: Concatena la lista de archivos que se le facilita en la salida estándar. Si sólo
se le indica un archivo, lo muestra. Si se le indica, lo crea con el contenido que se escriba
en la entrada estándar finalizando con [Ctrl] [d] para grabar o [Ctrl] [c] para salir sin grabar.
Las opciones son:
archivos Lista de archivos a concatenar.
-b
Numera las líneas que no estén en blanco.
-n
Numera todas las líneas aunque estén en blanco.
-s
Elimina varias líneas en blanco consecutivas sustituyéndolas por una sola.
-V
Muestra los caracteres de control excepto final de línea y tabuladores.
-E
Muestra el carácter $ al final de cada línea.
-T
Muestra los caracteres de control de los tabuladores.
Ejemplos:
Comando: rm
Formato:
rm [opciones] archivos
Descripción: Elimina archivos y directorios del sistema de ficheros. Se utiliza tanto para
borrar archivos, enlaces y directorios. Para eliminar directorios es necesaria la opción –r.
Hay que tener mucho cuidado con la utilización de este comando pues sus acciones son
irreparables.
Las opciones son:
-f
Por defecto rm pide confirmación antes de borrar, con esta opción forzamos la
operación sin pedir confirmación.
-i
Activa el modo interactivo para solicitar confirmación antes de borrar, este modo
-r
esta por defecto.
-v
Opción para borrar los directorios y su contenido, es necesaria para borrarlos.
archivos Muestra el nombre de los archivos antes de borrarlos.
Lista de archivos que se quiere eliminar.
Ejemplos:
rm *
Borra todos los archivos del directorio actual pidiendo permiso para cada
archivo que va a borrar.
rm –rf a*
Borra todos los archivos y directorios del directorio actual cuyo nombre
empiece por a.
Comando: cp
Formato:
cp [opciones] fuente destino
Descripción: Copia archivos y directorios. Copiará fuente a destino, fuente puede ser una
lista de archivos que copiará a un directorio indicado en destino. También puede copiar un
archivo sobre otro archivo.
Las opciones son:
-a Conserva los atributos y estructuras del origen en la copia.
-b Hace copias de seguridad de archivos que van a ser sobrescritos o borrados.
-d Al copiar los enlaces simbólicos los mantiene como tales en lugar de copiar los
ficheros a los que apuntan, y preserva las relaciones de las ligaduras físicas entre
-f
archivos fuente en las copias.
-i
Borrar archivos destino existentes.
-l
Interroga sobre si sobrescribir ficheros destino existentes.
-p En lugar de hacer copiar archivos que no son directorios, crea ligaduras físicas.
Preserva los permisos, el propietario y el grupo, así como los SUID Y SGID, además
Página 46
Sistemas Operativos
2010
también conserva el tiempo de última modificación y de último acceso.
Copia directorios recursivamente descendiendo en su árbol de directorios hijos. Es la
opción que se debe indicar si se pretende copiar un directorio.
Hace enlaces simbólicos en vez de copias de archivos que no sean directorios. Todos
los nombres de archivos origen deben ser absolutos (empezar por ‘/’) a menos que los
archivos de destino estén en el directorio de trabajo. Esta opción simplemente
-u produce un mensaje de error en sistemas que no admitan enlaces simbólicos.
No copia un archivo no-directorio si el destino ya existe y tiene el mismo tiempo de
-v modificación o más reciente.
-x Muestra el nombre de cada archivo antes de copiarlo.
Se salta subdirectorios que estén en sistemas de archivos diferentes de aquél en el
que empezó la copia.
Ejemplos:
cp –R */tmp
Copia el contenido del directorio actual así como sus subdirectorios de forma
recursiva al directorio /tmp.
cp –a *.txt /home/jgarcía
Copia todos los archivos *.txt del directorio actual al directorio /home/jgarcía
conservando los mismos permisos que los archivos originales.
cp /usr/bin/joe
Copia el archivo joe del directorio /usr/bin al directorio actual.
-r
-R
-s
Comando: mv
Formato:
mv [opciones] origen destino
Descripción: Mueve archivos y directorios. El comando en sí lo que realiza es la copia del
origen en el destino y el borrado del origen. También es el comando que se utiliza para
renombrado de archivos y directorios por ser similar el efecto que se produce.
Las opciones son:
Por defecto mv pregunta antes de borrar algo, con esta opción eliminamos esta
-f
confirmación.
-i
Con esta opción mv pregunta antes de borrar algo, está opción está por defecto.
origen
Archivo que se quiere mover. Se puede dar también una lista de archivos origen
destino
que serán movidos con su mismo nombre en un directorio que se dará como
destino.
Nombre del destino. Si se ha dado una lista de archivos origen el destino tendrá
que ser un directorio.
Ejemplos:
mv carta.txt carta.doc
Cambia de nombre el archivo carta.txt a carta.doc.
Comando: ln
Formato:
ln [-s] origen destino
Descripción: Crea un enlace a un archivo, con el fin de poder acceder a un archivo con
más de un nombre. Se pueden utilizar estos enlaces para copiar archivos sin ocupar
espacio en disco. Podemos tener dos tipos de enlaces, los simbólicos y los fijos. Los
enlaces fijos o ligaduras físicas crean una nueva entrada en el directorio pero no crean un
nuevo inodo, sino que a esa nueva entrada se le asigna en número de inodo de origen. Las
ligaduras simbólicas crean un fichero especial cuyo contenido es origen.
La opciones son:
-s
Crea un enlace simbólico.
Página 47
Sistemas Operativos
2010
Archivo al que se quiere crear un enlace de ligadura. Se puede dar también una
lista de archivos origen que serán enlazados con su mismo nombre en un
destino directorio que se dará como destino.
Nombre del enlace que se quiere crear y después de la creación del enlace y que
tras la creación del enlace se podrá utilizar para referirse al archivo origen. Si se
ha dado una lista de archivos origen, el destino tendrá que ser un directorio.
Ejemplos:
ln –s documento.txt trabajo.txt
Crea un enlace simbólico o ligadura simbólica del archivo documento.txt en el
enlace trabajo.txt.
origen
Comando: more
Formato:
more [opciones] archivos
Descripción: Se utiliza para paginar texto que no cabe en la pantalla y, por tanto, se
desplaza sin poderlo ver. Se utiliza a través de un redireccionamiento o una pipe para
formatear el resultado de otro comando como cat o ls.
Las opciones son:
-n Establece el tamaño de las páginas que muestra a n líneas.
-c Cambia el formato en que muestra las páginas en la pantalla, escribiendo las líneas
una a una y desplazando.
-q Cambia el aviso por omisión para el desplazamiento de las páginas.
-s Supone varias líneas en blanco consecutivas y las cambia por una sola.
Comandos más útiles de more.
Comandos básicos.
h
Despliega información de ayuda.
Espacio Despliega la pantalla siguiente
q
Para salir del programa
Comandos avanzados.
Retorno
Para avanzar un renglón.
n
Para avanzar n renglones
Retornos
d
Para avanzar (hacia abajo) media pantalla.
u
Para retroceder (hacia arriba) media pantalla.
nf
Para avanzar n pantallas.
b
Para retroceder una pantalla.
nb
Para retroceder n pantallas.
v
Arranca el editor vi usando el archivo el archivo que sé este exhibiendo.
/modelo
Busca el modelo especificado, hacia abajo.
n
Repite el comando de búsqueda anterior.
comando Ejecuta el comando del intérprete de comandos especificado.
=
Despliega el número de renglón en uso.
.
Repite el comando anterior.
No oprimir Retorno después de ningún comando, excepto de / y 
Ejemplos:
ls –l | more
Lista los archivos del directorio actual y se los pasa al comando more para
que lo pagine y lo muestre página a página.
Comando: less
Página 48
Sistemas Operativos
2010
Formato: less [-cmsCM] [-xtab] [+comando] [archivo...]
Descripción: Al igual que more y pg, less es un programa de paginación. En trabajos
sencillos less funciona como los otros dos programas. No obstante, para los usuarios
avanzados less es mucho más refinado. Una de sus principales ventajas es que hace fácil
desplazarse hacia atrás o hacia adelante de un archivo.
El programa less despliega el contenido de los archivos que se especifiquen. Los datos se
despliegan pantalla por pantalla. Después de escribirse cada pantalla, se verá un indicador
en la esquina inferior izquierda. El primer indicador le muestra el nombre del archivo. Cada
uno de los indicadores subsecuentes será un signo de dos puntos :.
Comandos
Descripción
básicos
H
Despliega información de ayuda.
Espacio
Avanza una pantalla.
q
Para salir del programa.
Comandos
más
avanzados
Retorno
Avanza un renglón.
nRetorno
Avanza n renglones.
b
Retrocede una pantalla.
y
Retrocede un renglón.
ny
Retrocede n renglones.
d
Avanza (hacia abajo) media pantalla.
u
Retrocede (hacia arriba) media pantalla.
g
Va al primer renglón.
ng
Va al renglón n.
G
Va al último renglón.
np
Va al renglón que represente el n porciento en el archivo.
v
Arranca el editor vi usando el archivo que se esté exhibiendo.
/modelo
Busca hacia abajo el modelo especificado.
?modelo
Busca hacia arriba el modelo especificado.
n
Repite el comando de búsqueda previo.
!comando
Ejecuta el comando del intérprete de comandos especificado.
=
Despliega el número de renglón y el nombre de archivo en uso.
-opcion
Cambia la opción especificada.
_opcion
Despliega el valor actual de opcion.
No oprimir retorno después de ningún comando excepto, /,? Y !.
Existen un gran número de opciones que se pueden utilizar de arrancar less, las
tres más útiles son:
-s Remplaza múltiples renglones en blanco por uno solo, lo que es útil para condensar
una salida que contenga renglones en blanco sin significado.
-c Despliega cada pantalla de datos nueva de arriba abajo (borra la pantalla).
-M Hace que el indicador muestre aún más información: el nombre del archivo, el número
de renglón y el porcentaje desplegado.
Ejemplos:
less –M memo
esto muestra: memo line 48/75 93%
less +G memo
Página 49
Sistemas Operativos
2010
despliega el archivo memo con la posición inicial al final del archivo.
less +/Harley memo
despliega el mismo archivo comenzando con una búsqueda de la palabra Harley.
less +37 memo
un número después de + hace que less arranque en ese renglón.
less +37g memo
esto hace lo mismo que la opción anterior.
less –x5 memo
la opción –x seguida de un número hace que less establezca los tabuladores en el
intervalo regular especificado. En este caso los tabuladores se configuran a cada
cinco espacios.
Comando: chgrp
Formato:
chgrp [opciones] grupo archivos
Descripción: Permite el cambio del grupo propietario de un archivo o directorio. Para
cambiar la propiedad de grupo de un archivo o directorio hay que ser el propietario de
dicho archivo o ser el usuario root.
Las opciones son:
Muestra detalladamente la acción de cambio de grupo propietario para archivo o
-c
directorio en el que se realice la acción.
Anula los mensajes de error de los archivos o directorios a los que no puede
-f
cambiar el grupo propietario.
Muestra detalladamente los cambios de grupo propietario.
-v
Cambia recursivamente la propiedad de grupo en los directorios y sus
-R
contenidos.
grupo
archivos En grupo se indica cuál será el nuevo propietario.
En archivos se indica la lista de archivos y directorios a los que se le quiere
cambiar el grupo propietario.
Ejemplo:
chgrp invitados p*
Cambia el grupo propietario a invitados de todos los archivos que comiencen
por la letra p dentro del directorio actual.
Comando: chmod
Formato:
chmod [opciones] modo archivos
Descripción: Permite el cambio de los permisos o modo de los archivos y directorios. Los
permisos de un archivo o directorio permiten controlar el acceso a los mismos. Existen tres
niveles de permisos, los de propietario, grupo y otros. Así los permisos de propietario
afectan al propietario del archivo o directorio, los permisos de grupo afectan al grupo
propietario y, por último, otros afectan al resto de usuarios del sistema.
Dentro de cada nivel de permisos existen tres tipos de derechos de lectura r de escritura w
y de ejecución x. En archivos, los derechos de lectura y escritura permitirán leer y escribir
el archivo respectivamente y el derecho de ejecución ejecutar si se trata de un fichero que
contiene código ejecutable.
En directorios, el derecho de lectura permite hacer un /s sobre el directorio y ver su
contenido, el derecho de escritura permite crear nuevos archivos y directorios en él, así
como borrar y, por último, el derecho de ejecución permite poder cambiar el directorio
Página 50
Sistemas Operativos
2010
actual por ése con el comando cd. Sólo se puden cambiar los permisos de un archivo o
directorio si es el usuario propietario o si es usuario root.
Las opciones son:
-c
Muestra detalladamente la acción de cambio de permisos a cada archivo en el
que se realice la acción.
-f
Anula los mensajes de error de los archivos a los que no puede cambiar los
-v
permisos.
-R
Muestra detalladamente los cambios de permisos.
modo
Cambia recursivamente los permisos en los directorios y sus contenidos.
En modo se indica cuáles van a ser los nuevos permisos o modo. Estos permisos
se agrupan en tres grupos de derechos u, g, o, correspondiéndose con usuario
propietario, grupo propietario y otros respectivamente, además, existe el grupo a
que, además está por defecto y que modifica a los tres. Y los tipos de derechos
que se pueden modificar son r, w, x, lectura escritura y ejecución,
respectivamente. Para formar el modo al que se quiere cambiar, primero se
archivos indica el tipo de derechos que se quiere cambiar u,g,o, luego la acción a tomar, +
para poner derechos, - para quitarlos, y los derechos que se van a ver afectados
por el cambio r, w, x.
En archivos se indica la lista de éstos a los que se les quiere cambiar los
permisos.
se quitan los derechos de lectura y escritura al grupo propietario y se quitan todos los
derechos a otros. Obsérvese que los distintos cambios de permisos se separan por comas.
Comando: chown
Formato:
chown [opciones] usuario archivos
Descripción: Permite el cambio de usuario propietario de un archivo o directorio. Para
cambiar el propietario de un archivo o directorios hay que ser el propietario de dicho
archivo o ser el usuario root. Si se cambia la propiedad de un archivo sin ser el root ya no
se podrá volver a obtener dicha propiedad, esta acción la tendrá que hacer el nuevo
propietario o el root.
Las opciones son:
-c
Muestra detalladamente la acción de cambio de propietario para cada archivo o
directorio en el que se realice la acción.
-f
Anula los mensajes de error de los archivos o directorio a los que no puede
-v
cambiar el propietario.
-R
Muestra detalladamente los cambios de propietario.
usuario Cambia recursivamente el usuario propietario en los directorios y sus contenidos.
archivos En usuario se indica cuál va a ser el nuevo propietario.
En archivos se indica la lista de archivos y directorios a los que se quiere cambiar
el propietario.
Ejemplos:
chown psanchez tabla.txt
Cambia el propietario de tabal.txt al usuario psanchez.
Comando: du
Formato:
du [opciones] archivos
Página 51
Sistemas Operativos
2010
Descripción: Informa sobre la cantidad de espacio que ocupan en disco los archivos y
directorios indicados como parámetros. Si no se da ningún parámetro se da la información
del directorio actual.
Las opciones son:
-a
Muestra para cada archivo su tamaño.
-b
Muestra los tamaños en bytes.
-k
Muestra los tamaños en kilobytes.
-x
Muestra sólo la información referente a los sistemas de archivos actualmente
-L
montados.
Muestra la información del espacio ocupado por el archivo al que apunta una
-s
ligadura en lugar de mostrar el espacio que ocupa la ligadura en sí.
Muestra el tamaño que ocupa cada subdirectorio en conjunto con la suma de
archivos todo lo que ocupa su contenido.
Lista de directorios y archivos sobre los que se demanda la información referente
a su tamaño.
Ejemplos:
du –s /var
Muestra el tamaño total ocupado por el directorio /var y todo su contenido.
Comando: file
Formato:
file [opciones] archivos
Descripción: Da información sobre un archivo referente al tipo de archivo. Así nos dará
información sobre si un archivo es ejecutable, de datos, de texto.
Las opciones son:
Muestra para cada archivo su tamaño.
-c
Muestra los tamaños en bytes.
-z
Muestra los tamaños en kilobytes.
-L
Muestra sólo la información referente a los sistemas de archivos
-f archilista
actualmente montados.
-m
Muestra la información del espacio ocupado por el archivo al que
apunta una ligadura en lugar de listar el espacio que ocupa la ligadura
archivos
en sí.
Lista de directorios y archivos sobre los que se demanda la información
referente a su tipo.
Ejemplo:
file /etc/profile
Nos indica el tipo de archivo que es el archivo file /etc/profile, que en este
caso es de texto.
Comando: head
Formato:
head –líneas archivos
Descripción: Muestra la cantidad de primeras líneas indicadas de una lista de archivos.
Las opciones son:
-líneas
Cantidad de líneas que queremos que se muestre.
archivos
Lista de archivos separados por comas que se pretende que se muestre el
número de líneas indicado, por defecto diez.
Comando: tail
Formato:
tail [opciones] archivo
Descripción: Muestra las últimas líneas del archivo que se le pasan como parámetro. Por
defecto muestra las diez últimas líneas.
Página 52
Sistemas Operativos
2010
Las opciones son:
Número desplazamiento dentro del archivo, en número de líneas, a partir de los
offset
cuales queremos que se muestre el archivo. Si el número va precedido del signo
+, mostrará a partir de ese número de líneas, si va precedido del signo –,
-f
mostrará a partir de ese número de últimas líneas.
archivo
Muestra el crecimiento de un archivo, sólo termina con la combinación de teclas
[Ctrl] [C].
Archivo que se quiere procesar.
Comando: wc
Formato:
wc [opciones] [archivo(s)]
Descripción: La orden wc (word counter) es un contador de líneas, palabras y caracteres
de un archivo. Para wc, una palabra es una cadena de caracteres delimitada por espacios
en blanco, tabuladores o retornos de carro existentes en el archivo.
Las posibles opciones son:
-l Visualizará el número de líneas.
-w Visualizará el número de palabras.
-c Visualizará el número de caracteres.
Si a wc no se le especifica ninguna opción, tomará por defecto las tres anteriores,
visualizando en orden el número de líneas, palabras y caracteres.
Ejemplo:
$ wc ftemp
253 939 6728 ftemp
En el caso anterior, wc está indicando que el archivo ftemp tiene 253 líneas, 939 palabras y
6728 caracteres. Obviamente, la orden wc sólo puede ser utilizada para procesar archivos
de texto.
Comando: su
Formato:
su [–] [usuario]
Descripción: La orden su (switch user) permite cambiar nuestro identificador de usuario.
Cuando se invoca, nos pide la palabra clave (password) del usuario al que queremos
cambiar. Si a su no le pasamos como parámetro ningún nombre de usuario, asumirá que
deseamos convertirnos en el administrador del sistema (root). Obviamente, si no
conocemos la palabra clave del usuario, la orden fallará. La opción – se emplea para
indicar a su que se tomen los parámetros de inicio (directorio de arranque, ruta de
búsqueda de archivos, variables del entorno, etc.) definidos por el usuario al que nos
convertiremos. Por defecto estos parámetros no se toman.
Ejemplo:
$ su – lucas
password:
$ id
uid=519(lucas) gid=519(lucas) grupos=519(lucas)
Comando: sort
Formato:
sort [opciones] [+campo] [archivo(s)]
Descripción: Ordena líneas compuestas por campos, separados por tabuladores, aunque
podemos especificar cualquier tipo de separador de campo. Si a sort no le pasamos ningún
archivo como parámetro, tomará su entrada de la entrada estándar. Con esta orden
Página 53
Sistemas Operativos
2010
podemos ordenar las líneas de uno o varios archivos según un campo en particular. Esta
ordenación no produce ninguna modificación en los archivos tratados.
Ejemplo:
$ Cat > desord
uno
dos
tres
cuatro
[Ctrl-d]
$ sort desord
cuatro
dos
tres
uno
$ cat > numeros
101
112
10
373
64
19
1111
[Ctrl-d]
$ sort numeros
10
101
1111
112
19
373
64
Podemos observar, a tenor de los resultados, que algunos números aparecen ordenados
aparentemente al revés. La razón es que sort, por defecto, ordena las palabras según los
caracteres ASCII que la componen. Si lo que deseamos es ordenar según el valor
numérico asociado a esos caracteres, debemos utilizar la opción –n (ordena
numéricamente), tal y como se muestra a continuación:
$ sort –n numeros
10
19
64
101
112
373
1111
Los campos separadores utilizados por defectos son los tabuladores, y en algunas
versiones de sort, también los espacios en blanco, pero también podemos decirle que
utilice cualquier tipo de separador específico, utilizando para ello la opción –t y a
Página 54
Sistemas Operativos
2010
continuación el separador. Como ejemplo vamos a ordenar el archivo que figura a
continuación, denominado sortfich, por el último campo.
$ cat sortfich
blanco:73:Marte:1543:Manuel
verde:17:Jupiter:1968:Sebastian
azul:24:Venus:1970:Ana
rojo:35:Neptuno:1122:Javier
amarillo:135:Tierra:1234:Raul
Como podemos apreciar, los distintos campos están separados por dos puntos. Eso no es
ningún problema para sort, ya que podemos especificar el carácter de separación de
campos que deseemos.
$ sort –t: +4 sortfich
azul:24:Venus:1970:Ana
rojo:35:Neptuno:1122:Javier
blanco:73:Marte:1543:Manuel
amarillo:135:Tierra:1234:Raul
verde:17:Jupiter:1968:Sebastian
En el caso del ejemplo, el último campo es el número 4, por eso en las opciones de sort
hemos puesto un +4. Obsérvese que la numeración de campos comienza por el cero.
Comando: grep
Formato:
grep [opciones] patrón [archivo(s)]
Descripción: Permite buscar cadenas de caracteres en los archivos que le indiquemos.
grep toma el patrón que deseamos buscar como primer argumento y el resto de los
argumentos los toma como nombres de archivos. En caso de que el elemento que
deseemos buscar se componga de más de una palabra, ese elemento deberemos incluirlo
entre comillas dobles. Una vez buscado el patrón, se visualizan todos los archivos que lo
contienen.
Con grep podemos utilizar varias opciones; las tres más comunes son las que se citan a
continuación:
-i Indica a grep que se ignoren mayúsculas y minúsculas. Se busca el patrón y no se
diferencia entre letras mayúsculas y minúsculas.
-v Visualiza por pantalla las líneas que no contienen el patrón especificado.
-n Muestra por pantalla el número de línea en que se encuentra el patrón.
Ejemplos:
$ grep NULL *
depura.c:
argn = strtoul (argum, (char **)NULL, 16);
depura.c:
argn = strtoul (argum, (char **)NULL, 16);
depura.c:
DirecDeParada = strtoul (&orden[1], (char **)NULL, 16);
depura.c:
R[reg] = strtoul (cadena, (char **)NULL, 16);
desen.c:
if ((pf = fopen (programa, “r”)) == NULL)
En este caso, grep busca el patrón NULL en todos los archivos del directorio actual.
Recordemos que el asterisco sustituye a cualquier cadena de caracteres, y en este caso a
todos los archivos del directorio en el que estemos situados.
$ grep –n main /home/chan/spro/*.c
/home/chan/spro/desen.c:21:main (int argc, char *argv[])
/home/chan/spro/desen.c:46:} /* Fin de main */
Página 55
Sistemas Operativos
2010
/home/chan/spro/ensa.c:30:main()
/home/chan/spro/ensa.c:42:} /* Fin de main */
/home/chan/spro/gen.c:3:main()
/home/chan/spro/principal.c:19:void main (int argc, char *argv[])
/home/chan/spro/principal.c:53:} /* Fin de main */
En el caso anterior, al colocar la opción –n se visualiza el número de línea del archivo
donde se encuentra el patrón buscado.
Comando: find
Formato: find directorio(s) criterios_de_seleccion opcion_de_comando
Descripción: El comando find se utiliza para examinar la jerarquía de directorios en
búsqueda de archivos. Para esta búsqueda pueden indicarse ciertos criterios. Además,
también puede aparecer el nombre del archivo encontrado en pantalla o ejecutarse con un
comando.
Puesto que el comando find examina sistemáticamente los directorios y sus subdirectorios,
se ha convertido en una herramienta indispensable para el usuario y especialmente para el
administrador del sistema.
Las posibilidades del comando find no solo pueden utilizarse para la búsqueda de archivos
individuales, sino que también pueden utilizarse para guardar datos o eliminar archivos
dispersos por el sistema de archivos.
Estructura y modo de funcionamiento del comando find
El comando find examina los directorios y sus subdirectorios de forma recursiva en
búsqueda de archivos o incluso directorios. Para ello find se vale de tres datos distintos:
•
¿En qué directorio debe iniciarse la búsqueda de archivos?.
•
¿Cuáles son los criterios de selección para esta búsqueda?.
•
Que debe hacer al encontrar un archivo o un directorio que cumple con los criterios
de selección?
El primero y el tercero son indispensables pero el segundo puede omitirse, en cuyo caso
se encontrarían todos los archivos.
Como parámetros pueden indicarse varios directorios a partir de los cuales se iniciara la
búsqueda. La opción de comando más sencilla es print. Con este se muestra el nombre de
ruta de todos los archivos encontrados.
El ejemplo siguiente muestra como visualizar todos los archivos que se encuentran bajo el
directorio actual. Con el primer parámetro del comando find se determinara cual es el punto
de partida para la búsqueda del directorio actual. La opción -print indica que debe
indicarse el nombre de ruta del archivo encontrado.
Página 56
Sistemas Operativos
2010
Los archivos encontrados se visualizaran mediante sus nombres de ruta relativos. S i como
punto de inicio para la búsqueda se especifica un nombre de ruta absoluto, en la salida
aparecerán también los nombres de ruta absolutos.
Durante la búsqueda, find examina también los subdirectorios bajo el directorio de inicio.
Aquí se tiene también en cuenta, lógicamente, los derechos de acceso de los directorios.
Un directorio solo podrá examinarse cuando el usuario posea derechos de lectura y
ejecución para dicho directorio. Si no es así se enviara un mensaje de error a través del
canal de errores.
Criterios de selección para archivos y directorios
Si no se introducen opciones de selección el comando find encontrara todos los archivos,
siempre que lo permitan las autorizaciones para todo el directorio. Con las opciones de
selección se delimita el numero de archivos . Las siguientes opciones de selección pueden
utilizarse para delimitar la búsqueda.
Opción
Significado
-name
Búsqueda por nombre de archivo
-type
Búsqueda por tipo de archivo
-user
Selección por propietario del archivo
-group
Selección por pertenencia a grupo
-size
Selección por tamaño del archivo
-atime
Selección por fecha del último acceso
-mtime
Selección por fecha de la última modificación del archivo
-ctime
Selección por fecha de creación del archivo
-perm
Selección por derechos de acceso
-links
Selección por numero de referencias del archivo
Con todas las opciones excepto –name , -type, -user, -group y perm, aparecen cifras como
parámetros , adicionales tras el nombre de opción.
Ante la cifra puede aparecer también un signo más (+) o un signo menos (-).
Un signo más significa siempre “mayor que” y un signo menos significa siempre “menor
que” es decir, el dato +3 significa que se permiten valores mayores que 3, y el dato -5 que
solo se admiten valores menores que 5.
Página 57
Sistemas Operativos
2010
Con la opcion –name seguido de un nombre de archivo se define que nombre de archivo
debe tener el archivo que se buscara. La figura siguiente muestra algunos ejemplos.
En lugar de nombres de archivo fijos, también pueden utilizarse plantillas de búsqueda
para los nombres de archivo. en ese caso, el comando find accede a los mismos símbolos
especiales que el shell en la expansión del nombre de archivo.
Para que sea el comando find el que interprete los símbolos especiales y no el shell, estos
deben protegerse del shell mediante comillas o comillas invertidas.
adams:-$ find . –name abraham -print
./abraham
./mi_primer/abraham
adams:-$ find . –name ”A-Z]*” -print
./Verdura
./Fruta
./Sortdat
./ListaUsuarios
./mi_segundo/k
./mi_segundo/m
./mi_segundo/s
adams:-$ find . –name “*t “ -print
./Fruta
./Sortdat
adams:-$
Opcion name
En ningún caso debe olvidar introducir como mínimo la opcion –print.
Sin la opcion –print el comando find ejecuta la búsqueda de archivos, pero no muestra
nada en pantalla al encontrar los archivos deseados.
Selección por el tipo de archivo
Hasta ahora conocemos solo tres tipos de archivos diferentes:
1. Archivos Normales
2. Carpetas
3. Archivos de Dispositivo
El tipo de archivo también puede ser un criterio de selección en la búsqueda por el árbol de
archivos. En la siguiente lista se resumen los tipos de archivos que find diferencia con las
letras identificadas por cada uno de ellos:
Página 58
Sistemas Operativos
Letra identificativa
2010
Tipo de a archivo
f
Archivo Normal
d
Directorio
c
Archivo de dispositivo orientado a caracteres
b
Archivo de dispositivo orientado a bloques
p
Canalizaciones con nombre o FIFO
En este momento no trataremos en detalle de los llamados archivos FIFO. Se utilizan para
el intercambio de datos entre procesos que no se encuentran en relación directa entre
procesos principales y secundarios. Por otra parte, funcionan como las conocidas
canalizaciones.
Las opciones de selección –name y –type pueden combinarse tal como se muestra en la
siguiente figura. En este caso, deben cumplirse ambos criterios a la vez. Se dice que
ambos criterios de selección se vinculan con un Y lógico.
adams:-$ find . –type d -print
.
./.term
./mi_primer
./mi_segundo
adams:-$ find . –type d -name “*Z*” -print
./mi_segundo
adams:-$
combinación de - name y – type
La opción - user permite la selección de los archivos que pertenecen a un propietario
determinado. Para ello se especifica el nombre del propietario como siguiente parámetro
tras la opcion - userTambién podría suceder que se buscaran archivos que pertenecieran a usuarios que no se
conocieran en el sistema como propietario habitual.
En este caso, en el lugar en el que normalmente aparecería un nombre de usuario en el
comando ls-l, aparece solo un nombre de usuario.
Dichos números de usuario son también admisibles como parámetro tras la opcion –user.
En la siguiente figura encontrara ejemplos para la búsqueda de archivos por nombres de
archivo y ejemplos para la opcion –group.
La opcion - group tiene una estructura similar a al de la opcion - user.
Página 59
Sistemas Operativos
2010
Con – group el criterio de selección será la pertenencia del archivo a un grupo
determinado.
Para los archivos pertenecientes a un grupo que en el sistema no se conoce mediante un
nombre de grupo, se especificara como parámetro siguiente solo el numero de
identificación del grupo.
adams:-$ find / - user hugo -print 2>/dev/null>lista
adams:-$ cat lista
/tmp/lista
/var/spoll/mail/hugo
/home/hugo
/home/hugo/.kermrc
/home/hugo/.less
/home/hugo/.lessrc
/home/hugo/.term
/home/hugo/.term/termrc
/home/hugo/abraham
/home/hugo/verdura
/home/hugo/mi_primer
/home/hugo/mi_primer/passwd
/home/hugo/mi_primer/group
/home/hugo/mi_primer/abraham
/home/hugo/mi_primer/zebraham
-rwxr-xr-x
1hugo
sys
98 May 5 13:49 keymap*
-rwxr-xr-x
1hugo
sys
211 May 5 13:49 local*
adams:-$ find . –group sys -print
./mi_segundo/K
./mi_segundo/M
./mi_segundo/S
./mi_segundo/keymap
./mi_segundo/local
./mi_segundo/0
./mi_segundo/cdrom
Con frecuencia puede resultar útil al usuario buscar archivos especialmente grandes o solo
archivos vacíos. La opcion –size permite la búsqueda de archivos según su tamaño.
Tras la opcion –size se indican los datos de tamaño que pueden representarse en una cifra
de bloque o en una cifra de bytes. Si no se indica lo contrario, la cifra tras la opcion se
interpretara como cifra de bloque.
Cada bloque tiene un tamaño de 512 caracteres. Para averiguar el numero de caracteres a
partir del numero de bloque, debe multiplicarse por 512 la cifra tras la opcion –size. Con el
siguiente comando se realizaría la búsqueda de todos los archivos que tengan
exactamente 5120 caracteres:
find . –size
10 -print
Página 60
Sistemas Operativos
2010
También puede incorporarse a la cifra el carácter c si el valor debe interpretarse como
numero de caracteres. La búsqueda anterior también podría activarse de la siguiente
forma:
find . –size 5120c -print
El comando find gana flexibilidad con una ampliación que ya hemos mencionado al
principio del capitulo. Si delante de la cifra aparece un signo menos, se buscaran todos los
archivos menores que el dato en bytes o bloques. Con un signo mas delante de la cifra se
buscaran solo archivos mayores que dicho valor.
Para buscar todos los archivos mayores que 200 KB, podría utilizarse el siguiente
comando:
find . –type f -size +200k -print
En este caso, no se utilizara la letra c, sino la letra k para indicar que el valor debe
interpretarse como referencia a KB. Como criterio adicional se indica también el tipo de
archivo. Normalmente, el resto de tipos de archivo no son tan grandes.
Mediante las tres marcas de tiempo introducidas para cada archivo, se registra
internamente en segundos cuando se creo, se accedió y se modifico el archivo por ultima
vez. El comando find no soporta esta precisión.
El comando find y sus tres opciones, -atime, -mtime y –ctime, consultan solo con exactitud
en periodos de 24 horas. Para las tareas que debe llevar a cabo es normalmente
suficiente.
Como ya explicamos con la opcion –size, delante de los datos de las opciones –atime, mtime y - ctime pueden aparecer signos más o menos para indicar que se permite un valor
o menor que la cifra del día.
A continuación se muestra un ejemplo del comportamiento del comando find con la opcion
–mtime:
find . –mtime -3 -print
Opciones del comando find
Las opciones se ejecutan para cada archivo encontrado. Junto con las opciones de
comando –print que muestra el nombre de ruta del archivo encontrado, con la opcion de
comando –exec puede ejecutarse el comando introducido tras esta. Los comandos que
aparezcan tras
-exec se ejecutaran sin previa comprobación. La opcion de comando –
ok plantea al usuario la pregunta de si realmente desea ejecutar el comando.
La ejecución sin pregunta de constatación con la opcion de comando –exec la
especificación de un comando tras la opcion –exec debe someterse a algunas reglas que
exponemos a continuación:
Página 61
Sistemas Operativos
2010
La opcion de comando –exec debe ser la ultima opcion.
El comando tras la opcion de exec debe cerrarse mediante el parámetro \; puesto que el
punto y coma es un carácter especial para el shell, debe protegerse del shell con una barra
diagonal si en el comando tras la opcion –exec debemos referirnos al nombre de archivo
encontrado , se utiliza el signo {}.
El siguiente comando muestra el formato del comando ls para cada archivo encontrado:
find . –user hugo -exec ls -l {} \;
El punto y coma debe reconocerse también como parámetro. Una forma habitual de utilizar
el comando find y la opcion –exec es la supresión de archivos que se encuentran en
directorios diferentes pero que cumplen unos criterios comunes. Si se deseara suprimir
todos los archivos a los que no se han accedido desde hace dos semanas se utilizaría el
comando:
find . –type f -atime +13 -exec rm {} \;
Para la opción de comando –ok, se aplican las mismas normas que para la opción –exec,
pero con la opcion –ok se indica en pantalla el comando completo para cada archivo
encontrado y se pregunta si el comando correspondiente debe ejecutarse de la forma
indicada. El comando tras la opcion –ok solo se ejecutara si se responde y a la pregunta.
adams:-$ find . –exec echo <<archivo: << {} \;
3.3 Comandos para el manejo de procesos
3.3.1 Definición de proceso.
En esencia, un proceso o tarea es una instancia de un programa en ejecución. Es la
unidad más pequeña de trabajo individualmente planificable por un SO. Un SO de
multiprogramación se encarga de seguir la pista a todos los procesos activos y les asigna
recursos del sistema de acuerdo a políticas ideadas para satisfacer objetivos de
rendimiento de diseño.
Todo el software ejecutable de la computadora, inclusive el SO, se organiza en varios
procesos secuenciales, o en forma breve procesos. Un proceso es tan sólo un programa
en ejecución, lo que incluye los valores activos del contador, registros y variables del
programa. De manera conceptual, cada proceso tiene su propia CPU virtual. Por supuesto,
la realidad es que la verdadera CPU alterna entre los procesos; pero para comprender el
sistema, es mucho más fácil pensar en un conjunto de procesos en ejecución (seudo)
paralela, que pensar en llevar un registro de la forma en que alterna la CPU de programa
en programa. Esta rápida alternancia se llama multiprogramación.
Página 62
Sistemas Operativos
2010
Si la CPU alterna entre los procesos, la velocidad a la que se ejecuta un proceso no será
uniforme y es probable que no se pueda reproducir si los mismos procesos se ejecutan de
nuevo. Así, los procesos no deben programarse con hipótesis implícitas acerca del tiempo.
Por ejemplo, consideremos un proceso de Entrada/Salida que inicializa el movimiento de
una cinta magnética, ejecuta un ciclo inútil 1000 veces para que la cinta alcance su
velocidad de trabajo y después proporciona un comando que lee el prime registro. Si la
CPU decide alternar con otro proceso durante este ciclo, podría ocurrir que el proceso de la
cinta no se ejecutara sino hasta que el primer registro hubiera pasado por la cabeza de
lectura. Cuando un proceso tiene requisitos críticos en tiempo real como en este ejemplo,
es decir, cuando dos sucesos deben ocurrir en un lapso dado en milisegundos, hay que
tomar medidas especiales para garantizar que dichos sucesos ocurran. Sin embargo, lo
normal es que la mayoría de los procesos no sean afectados por la multiprogramación
subyacente de la CPU o las velocidades relativas de procesos distintos.
La diferencia entre un proceso y un programa es sutil, pero también crucial. Podríamos
utilizar la siguiente analogía para aclarar este punto. Consideremos un científico de la
computación con una mente culinaria, que está cocinando el pastel de cumpleaños de su
hija. El tiene una receta para un pastel de cumpleaños y una cocina bien abastecida con
los ingredientes necesarios: harina, huevo, azúcar, extracto de vainilla, etc. En esta
analogía, la receta es el programa (es decir, un algoritmo expresado en cierta notación
adecuada), el científico de computación es el procesador (CPU) y los ingredientes del
pastel son los datos de entrada. El proceso es la actividad en la que el cocinero lee la
receta, busca los ingredientes y cocina el pastel.
Imaginemos ahora que el hijo del científico entra corriendo, llorando y diciendo que lo ha
picado una abeja. El científico registra el punto de la receta donde se quedó (el estado del
proceso activo se resguarda), busca un libro de primeros auxilios y comienza a seguir las
instrucciones de éste. Aquí vemos que el procesador alterna de un proceso (cocinar) a otro
de mayor prioridad (administrar cuidado médico), cada uno con un programa distinto
(recetario vs). Libro de primeros auxilios). Después de atender la picadura, el científico
regresa al punto donde se encontraba.
La idea clave es que un proceso es una actividad de cierto tipo. Tiene un programa,
entrada, salida, y estado. Un solo procesador puede ser compartido entre varios procesos,
con cierto algoritmo de planificación, que se utiliza para determinar cuando detener el
trabajo en un proceso y dar servicio a otro distinto.
3.3.2 ID de un proceso
LINUX identifica los procesos mediante un entero único denominado ID de proceso. Al
nivel más bajo, un proceso nuevo se crea mediante una llamada al sistema1 con fork. El
proceso que ejecuta la solicitud para la creación de un proceso recibe el nombre de
proceso padre y el proceso creado se conoce como proceso hijo. Los dos procesos
tienen el mismo entorno, las mismas especificaciones de manejo de señales, los mismos
Ids de grupo y de usuario y la misma clase y prioridad de planificador, pero diferentes IDs
de proceso.
1
Una llamada al sistema es el llamado a una subrutina que hace que el núcleo proporcione algún servicio a un programa.
Página 63
Sistemas Operativos
2010
LINUX asocia cada proceso con un usuario particular conocido como propietario del
proceso, el cual tiene ciertos privilegios. Cada usuario tiene un número de identificación
único que se conoce como ID del usuario.
3.3.3 Estados de un proceso
El estado de un proceso indica la condición en que éste se encuentra en un momento
determinado. Muchos SO’s permiten alguna forma de los estados que aparecen en la tabla
3.1
Estado
Nuevo (new)
Ejecución
(running)
Bloqueado
(blocked)
Listo (ready)
Hecho (done)
Significado
Creación del proceso.
Ejecución de las instrucciones del proceso.
Proceso en espera de un evento, como una
operación de E/S.
Proceso en espera de ser asignado al
procesador.
Proceso terminado y recuperación de sus
recursos.
Tabla 3.1: Estados de los procesos.
XXXXXXXXXXXXXXXSEl diagrama de estados es una representación gráfica de los
estados permitidos de un proceso, así como de las transiciones permitidas entre éstos.
Estados del proceso.
Aunque cada proceso es una unidad independiente, con su propio contador de programa y
estado interno, es frecuente que los procesos deban interactuar con otros. Un proceso
podría generar cierta salida que fuera utilizada por otro.
Cuando un proceso se bloquea, lo hace porque desde el punto de vista lógico no puede
continuar; esto ocurre, por lo general, porque espera ciertos datos que no están
disponibles todavía. También es posible que se detenga un proceso que conceptualmente
esté listo y que se pueda ejecutar, debido a que el SO ha decido asignar la CPU a otro
proceso en cierto momento. Estas dos condiciones son totalmente distintas. En el primer
caso, la suspensión es inherente al problema (no se puede procesar la línea de comando
del usuario hasta que ésta sea escrita). En el segundo caso, es un aspecto técnico del
sistema (no existe la CPU suficiente para darle a cada proceso su propio procesador
privado).
En ejecución
1
3
2
Bloqueado
Listo
4
1. BLOQUEADO. El proceso se bloquea en espera de
datos.
2. EXPIRACIÓN DEL TIEMPO. El planificador elige otro
proceso.
3. DESPACHAR. El planificador elige este proceso.
4. DESPERTAR. Los datos están disponibles.
Un proceso puede estar en ejecución, bloqueado o listo.
Las transiciones entre estos estados se muestran en la figura.
Página 64
Sistemas Operativos
2010
En la figura vemos un diagrama de estados que muestra los tres que puede tener un
proceso:
a) En ejecución (utiliza la CPU en el instante dado).
b) Listo (ejecutable, se detiene en forma temporal para que se ejecute otro proceso).
c) Bloqueado (no se puede ejecutar debido a la ocurrencia de algún evento externo).
Desde el punto de vista lógico, los dos primeros estados son similares. En ambos
casos, el proceso desea ejecutarse, sólo que en el segundo caso, no existe CPU
disponible para él. El tercer estado es distinto de los otros puesto que el proceso no se
puede ejecutar, incluso aunque la CPU no tenga labores que realizar.
Son posibles cuatro transiciones entre estos estados, como lo muestra la figura. La
transición 1 ocurre cuando un proceso descubre que no puede continuar. En ciertos
sistemas, el proceso debe ejecutar una llamada al sistema para pasar al estado de
bloqueo. Lo más frecuente es que un proceso lea de un tubo o archivo especial (por
ejemplo, una terminal) y que no existan datos disponibles, por lo que el proceso se bloquea
en forma automática.
La transición 2 y 3 se deben al planificador de proceso (una parte del SO), sin que el
proceso sepa de ellas. La transición ocurre cuando el planificador decide que el proceso en
ejecución ya ha sido ejecutado el tiempo suficiente y que es hora de que otro proceso
tenga tiempo de CPU. La transición 3 ocurre cuando los demás procesos han tenido su
parte y es tiempo de que el primer proceso vuelva a ejecutarse. El tema de la planificación,
es decir, decidir cuál proceso debe ejecutarse, cuándo y por cuánto tiempo, es muy
importante. Se han diseñado muchos algoritmos con la intención de balancear las
demandas en competencia por eficacia del SO como un todo y equidad para los procesos
individuales.
La transición 4 aparece cuando ocurre el evento externo por el que espera un proceso
(como la llegada de nuevos datos). Si no existe otro proceso en ejecución en ese
momento, se produce la transición 3 en forma inmediata y el proceso comienza su
ejecución. En caso contrario, tendría que esperar en estado listo por un momento, hasta
que la CPU esté disponible.
3.3.4 Comandos relacionados con la ejecución de procesos. JAZMIN
Existen ciertas órdenes que tardan mucho tiempo en ejecutarse y sin embargo no son
interactivas; como ejemplo podemos poner la compilación de un programa o la
comprensión de un archivo de datos. En estos casos, UNIX proporciona la posibilidad de
ejecutar órdenes en segundo plano (batch). Al ejecutar un proceso en segundo plano, el
shell devuelve el prompt inmediatamente y podemos seguir trabajando en la terminal aun
cuando la orden batch siga ejecutándose. Para poner una orden trabajando en batch, la
línea de órdenes debe acabar con un símbolo ampersand (&). El ampersand dice al shell
que ejecute la orden, pero que no se quede esperando al proceso hijo. De este modo,
podremos mandar compilar un programa en segundo plano y mientras tanto seguir
haciendo otras cosas.
Página 65
Sistemas Operativos
2010
Comando: ps
Formato:
ps [opciones]
Descripción: Informa acerca de los procesos que en ese momento se están ejecutando en
el sistema. Si no le pasamos ninguna opción, sólo nos ofrecerá un pequeño informe de los
procesos asociados a nuestra terminal. En el sistema BSD, esta orden funciona de forma
diferente como lo hace en UNIX System V. Las opciones más comunes para este último
son:
-e Informa de todos los procesos que hay en el sistema.
-f Proporciona una lista completa de cada proceso, incluyendo el identificador de cada
uno de ellos (PID) y el identificador del proceso padre (PPID).
-l Da listados largos y completos que contiene muchos detalles de los procesos de los
que informa, incluyendo prioridad, valor nice y tamaño de la memoria.
Ejemplo ps –ef
UID
Root
Root
Root
Root
Root
Root
Root
Root
Root
Root
Root
etc.
Root
Chan
0
1
2
4
3332
3288
3291
3296
3301
3304
3329
PPID C
0
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
1
0
1
0
1
0
STIME
12:04:19
12:04:19
12:04:19
12:04:19
12:04:46
12:04:33
12:04:34
12:04:34
12:04:36
12:04:37
12:04:45
TTY
?
?
?
?
?
?
?
?
?
?
?
TIME
0:00
0:00
0:00
0:00
0:00
0:00
0:00
0:00
0:00
0:00
0:00
COMMAND
swapper
/etc/init
/pagedaemon
netisr
/etc/vtdaemon
/etc/rlbdaemon
/etc/sockregd
/etc/syslogd
/etc/portmap
/etc/inetd
/etc/ptydaemon
3313
4025
1
1
12:04:39
12:23:22
?
Tyy0
0:07
0:02
/etc/rwhod –s
ksh
PID
0
0
Analicemos cada uno de los campos anteriores:
UID
Nombre del usuario propietario del proceso.
PID
Identificador del proceso.
PPID
Identificador del proceso padre.
C
Índica la cantidad de recursos de CPU que el proceso ha utilizado
recientemente. El núcleo utiliza esta información para calcular la prioridad.
Este campo puede ser modificado con la orden nice.
STIME
Instante de comienzo del proceso.
TTY
Terminal asociado al proceso. Es el terminal usado por el proceso para
operaciones de lectura y escritura estándar. Algunos procesos no están
asociados a ningún terminal, en cuyo caso la columna de TTY de la salida
contiene el símbolo de interrogación, ?.
TIME
Tiempo de CPU asignado al proceso.
COMMAND Nombre del programa que contiene la imagen del proceso.
Las opciones más comunes para la versión BSD difieren, como hemos indicado
anteriormente, de la versión System V, y son las siguientes:
l Formato de presentación extendido.
u Muestra el nombre de usuario y el tiempo de inicio.
Página 66
Sistemas Operativos
2010
m Muestra información relacionada con la memoria.
a Muestra también los procesos de otros usuarios.
x Muestra también los procesos que no tienen ningún terminal asociado.
Comando: kill
Formato:
kill [-señal] PID [PID...]
Descripción: Envía señales a uno o varios procesos identificados por su PID. Esta orden
también existe como llamada al sistema para poder ser invocada desde programa. Una
señal es una interrupción software que se envía a un proceso, de forma asíncrona, para
informarle de algún evento. Cuando un proceso recibe una señal puede tratarla de tres
formas diferentes:
1. Ignorar la señal.
2. Invocar la rutina de tratamiento por defecto proporcionada por el núcleo.
3. Invocar una rutina propia que se encargara de tratar dicha señal.
Cada señal tiene asociado un número entero positivo que la identifica. En el caso
UNIX System V existen 19 diferentes, numeradas del 1 al 19. Estas son:
1. SIGHUP: Hanguh. Es enviada a todos los procesos asociados a un mismo terminal
cuando este se conecta. La acción por defecto es terminar la ejecución de los
procesos que la recibe.
2. SIGINT: Interrupción. Es enviada a todos los procesos asociados a un mismo
terminal cuando se pulsa la tecla de interrupción. Por defecto, provoca la
terminación de los procesos que la reciben.
3. SIGQUIT: Salir. Es similar a SIGINT, pero en este caso se envía cuando pulsamos
la tecla de salida Ctrl-\ (en LINUX Ctrl-4).
4. SIGILL: Instrucción ilegal. Se envía a cualquier proceso que intente ejecutar una
interrupción ilegal. Por defecto termina la ejecución del programa que la recibe.
5. SIGTRAP: Es enviada cuando se ejecutan instrucciones paso a paso en un
programa. Su acción por defecto también es terminar el proceso que la recibe.
6. SIGIOT: Fallo hardware.
7. SIGEMT: Fallo hardware.
8. SIGFPE: Es enviada cuando el hardware detecta un error en una operación en
coma flotante. Por defecto, termina la ejecución del proceso que la recibe.
9. SIGKILL: Provoca la terminación del proceso. Esta señal no puede ser ignorada.
10. SIGBUS: Error de acceso a memoria.
11. SIGSGV: Violación de segmento de memoria.
12. SIGSYS: No se usa.
13. SIGPIPE: Intento de escritura en una tubería en la cual no hay nadie leyendo.
14. SIGALARM: Es enviada al proceso cuando alguno de sus temporizadores llega a
cero. Provoca por defecto la terminación del proceso.
15. SIGTERM: Indica a un proceso que debe terminar su ejecución. Puede ser ignorada.
16. SIGUSR1: Reservada para el usuario.
17. SIGUSR2: Reservada para el usuario.
18. SIGCLD: Se envía la padre de un proceso si éste muere.
19. SIGPWR: Fallo de alimentación.
La orden kill, como hemos dicho, se utiliza para enviar señales. El que envía la señal debe
ser el propietario de los procesos o el administrador del sistema. Por defecto, kill envía la
señal número 15 al proceso especificado, con intención de terminar su ejecución. Esta
señal número 15 lo máximo que hace es avisar al proceso que termine por si mismo, pero
Página 67
Sistemas Operativos
2010
el proceso puede ignorarla. Si queremos eliminar el proceso definitivamente, lo mejor es
enviarla la señal número 9, que no se puede ignorar.
Ejemplo: ps
PID
644
661
677
678
679
1809
2432
2663
TTY
pts/0
pts/0
pts/0
pts/0
pts/0
pts/0
pts/0
pts/0
STAT
S
S
S
S
S
S
S
R
TIME
0:00
7:20
0:00
0:12
0:00
0:00
0:00
0:00
COMMAND
bash
/usr/bin/galeon-bin
/usr/bin/galeon-bin
/usr/bin/galeon-bin
/usr/bin/galeon-bin
tail –f /tmp/wine.log.wl4c8q
/usr/bin/galeon-bin
ps a
Imaginemos que queremos eliminar el proceso tail cuyo PID es el 1809. La forma de
hacerlo sería:
kill –9 1809
Veamos como al invocar de nuevo ps ya
eliminar.
PID
TTY
STAT
TIME
644
pts/0
S
0:00
661
pts/0
S
7:20
677
pts/0
S
0:00
678
pts/0
S
0:12
679
pts/0
S
0:00
2432
pts/0
S
0:00
2663
pts/0
R
0:00
no aparece el proceso que acabamos de
COMMAND
bash
/usr/bin/galeon-bin
/usr/bin/galeon-bin
/usr/bin/galeon-bin
/usr/bin/galeon-bin
/usr/bin/galeon-bin
ps a
3.3.5 Redireccionamiento de entrada y salida estándar
Cada proceso nuevo se crea con tres archivos abiertos2 que se conocen como entrada
estándar (teclado), salida estándar (pantalla) y salida de error estándar. Todos los
comandos de Linux, así como los programas de aplicación, aceptan entrada desde la
entrada estándar y colocan la salida en la salida estándar. Todos los mensajes de
diagnóstico se colocan de manera automática en la salida de error estándar.
Cuando se registra un usuario por primera vez, los archivos de entrada, salida y error
estándares se anexan a la terminal del usuario; cualquier programa que ejecute (o
proceso que cree) hereda la terminal del usuario así como los tres archivos abiertos.
2
Linux trata del mismo modo a los archivos y dispositivos, por lo que un archivo abierto puede ser un archivo
almacenado en un disco (o en algún otro medio de almacenamiento secundario) o un dispositivo (como una terminal).
Página 68
Sistemas Operativos
2010
Linux asocia la entrada del teclado con un archivo llamado stdin, y asocia la salida de la
terminal con un archivo llamado stdout. Cualquier usuario de Linux puede redireccionar la
entrada y salida para que en vez de que provenga de o vaya hacia la terminal, provenga de
un archivo o vaya hacia un archivo.
La tabla 3.2 muestra los símbolos de redireccionamiento y su significado empleados en
Linux.
Símbol Significado
o
<
Se usa para redireccionar la entrada en un comando o programa a fin de
que provenga de un
archivo y no de la terminal, es decir, en vez de que la entrada provenga
del teclado de la terminal,
viene de un archivo. Por ejemplo, el siguiente comando envia por correo
electrónico el archivo info
al usuario jperez.
mail jperez < info
En vez de volver a escribir el contenido del archivo info hacia el comando
mail, se utiliza dicho
archivo como la entrada (stdin) hacia el comando mail.
>
Se emplea para redireccionar la salida de un programa hacia un archivo,
es decir, en vez de que la salida vaya a la pantalla de la terminal, se
coloca en un archivo. Por ejemplo, el siguiente comando guarda la hora y
fecha actuales en el archivo fecha:
date > fecha
En lugar de que el comando date despliegue la hora y fecha actuales en
la pantalla de la terminal las envía al archivo fecha. Linux crea o
sobreescribe el archivo a la derecha del símbolo >, por lo que debe
tenerse cuidado de no destruir información útil de esta manera.
>>
Se usa para añadir información a un archivo existente. Por ejemplo, el
siguiente comando agrega
la fecha actual a un archivo llamado reporte:
date >> reporte
Tabla 3.2: Símbolos de redireccionamiento de la E/S estándares.
A continuación se presenta un ejemplo más extenso. Suponga que el archivo ventas
contiene en el primer campo de cada línea de texto un código de identificación de cliente.
date > reporte_ventas
sort < ventas >> reporte_ventas
mail jperez smaldonado < reporte_ventas
La primera línea coloca la salida del comando date (fecha) en el archivo reporte_ventas. La
segunda línea utiliza el archivo ventas como entrada hacia el comando sort (ordenar) y
añade la salida al archivo reporte_ventas. La última línea envía por correo electrónico el
archivo reporte_ventas a los usuarios jperez y smaldonado.
Página 69
Sistemas Operativos
2010
Nota: Si se redirecciona un mismo archivo como entrada y salida hacia un comando, lo
más probable es que se destruya el contenido del archivo.
3.3.6 Conexión de procesos mediante tuberías.
Aunque cada proceso (programa o comando) es una entidad independiente, con su propio
contador de programa y estado interno, es usual que los procesos deban interactuar con
otros. Con frecuencia es necesario utilizar la salida de un proceso como entrada de otro, o
dicho de otra manera, un proceso podría generar cierta salida que fuera utilizada por otro.
Por ejemplo, en el comando:
cat Capitulo1 Capitulo2 Capitulo3 | grep programa
el primer proceso, que ejecuta cat, concatena tres archivos. El segundo proceso, que
ejecuta grep, selecciona e imprime en la salida estándar todas las líneas que contienen la
palabra “programa” desde la salida generada por el primer proceso (concatenación de los
archivos Capitulo1, Capitulo2 y Capitulo3 ).
En vez de introducir cada comando por separado y guardar los resultados en archivos
intermedios, puede conectar una secuencia de comandos por medio de una tubería. El
carácter de tubería de Linux es una barra vertical ( | ).
El término tubería es apropiado. La salida del programa a la izquierda de la tubería (la
barra vertical) se envía por la tubería y se emplea como la entrada del programa situado a
la derecha. Con las tuberías es posible conectar varios procesos. La tabla 3.3 muestra
algunos ejemplos.
Comando
sort ventas | lp
cat ventas* |
sort | lp
ls –l | less
ls | tee3 datos |
more
who > fusu |
pico
Acción
Ordena el archivo ventas y lo imprime.
Imprime una lista ordenada de los datos de todos los archivos
con nombres que comienzan con ventas.
Despliega en la pantalla la salida del comando ls –l
Coloca una copia del listado de archivo generado por ls en el
archivo datos, mientras se ve el listado por medio del paginador
more.
Escribe la salida del comando who en el archivo fusu y dicho
archivo lo recibe como entrada el editor de texto pico.
Tabla 3.3: Ejemplos de comandos que emplean tuberías ( | ).
3.3.7 Procesamiento en segundo plano
Linux permite correr un comando en segundo plano al mismo tiempo que se ejecuta un
comando en primer plano, es decir, el Shell permite correr un proceso e iniciar otro antes
de que se complete el primero; al hacer esto, el primer proceso queda en segundo plano.
3
El comando tee divide la salida de una tubería en uno o más archivos. Esto permite que se capture lo que se está
enviando hacia la salida estándar y se coloque esa salida en un archivo mientras todavía se permite que la salida fluya por
la salida estándar.
Página 70
Sistemas Operativos
2010
Para colocar un proceso en segundo plano es necesario utilizar el símbolo & como último
carácter de la línea que contiene el comando que se desea que corra en segundo plano.
Por ejemplo, al introducir el siguiente comando:
sort ventas > ventas.ord &
verá un número en la pantalla que corresponde al PID del proceso que se colocó en
segundo plano.
Por lo general, cuando se ejecuta un comando, el shell suspende operaciones hasta que
éste se completa. Si se agrega el símbolo & al final de una cadena de comandos, ésta
correrá simultáneamente con el shell, el cual continúa su operación tan pronto como se
ejecuta el comando de segundo plano. A menos que se use un redireccionamiento de E/S
con el comando de segundo plano, tanto el comando de segundo plano como el shell
actual esperarán una entrada de la terminal y producirán una salida hacia la misma. A
menos que el comando de segundo plano se encargue de la propia E/S, la sintaxis para el
procesamiento en segundo plano es:
cadena_de_comando [archivo_de_entrada] archivo_salida &
Por ejemplo, para copiar una serie de archivos cuyos nombres terminan con los caracteres
.txt a un subdirectorio llamado antiguos y, sin esperar a que termine ese proceso, imprimir
una lista ordenada de los datos en todos los archivos cuyo nombre empiece con ventas, se
escribe:
cp *.txt antiguos &
cat ventas* | sort | lp
Notas:
1. Se colocan trabajos en segundo plano cuando:
a) Se quiere esperar a que un programa termine antes de arrancar otro.
b) Se tiene una serie de tareas y por lo menos una de ellas debe correr por sí misma.
En tal caso, se inicia ésa y se coloca en segundo plano.
2. Todos los procesos hijos se aniquilan cuando mueren sus padres. Como el proceso en
segundo plano es hijo del shell del usuario, se aniquila de manera automática después
de que el usuario termina una sesión.
3.4 Editor vi
Un editor de texto es simplemente un programa usado para la edición de archivos que
contienen texto, como una carta, un archivo en C o un archivo de configuración del
sistema, mientras que hay muchos editores de texto en Linux, el único editor que está
garantizado encontrar en cualquier sistema UNIX y es el vi “visual editor” .
Este es el editor estándar usado por todos los sistemas UNIX, el cual sirve para escribir y
modificar archivos.
La manera de entrar al editor es a través de la línea de comandos tecleando “vi” y después
el nombre del archivo o desde el menú de programas.
Página 71
Sistemas Operativos
2010
El editor vi tiene 3 modos de trabajo
-Modo Comando
-Modo Inserción
- Modo Ejecución de Comandos
Cada uno de los cuales cuenta con sus propios comandos, que ha continuación se
explican:
3.4.1 Modo comando
Para activar este modo se presiona la tecla ESC, y entonces queda listo para recibir
instrucciones las cuales tienen categorías en base a la función que desempeñan.
enseguida se muestra un listado de las categorías del modo comando con sus comandos
respectivos.
Movimientos del cursor
h
Desplaza el cursor una localidad hacia la izquierda.
j
Desplaza el cursor una localidad hacia abajo
k
Desplaza el cursor una localidad hacia arriba.
l
Desplaza el cursor una localidad hacia la derecha.
w ó e Desplaza el cursor una palabra a la derecha.
b
Desplaza el cursor una palabra hacia la izquierda
$
Desplaza el cursor al final de la línea .
O
Desplaza el cursor al principio de la línea.
G
Desplaza el cursor al final del documento.
lG
Desplaza el cursor al principio del documento.
nG
Desplaza el cursor a la línea n dentro del documento.
ctrl.-f Una pantalla hacia delante.
ctrl.-b Una pantalla hacia atrás.
Reemplazo de texto
r
ns
R
cw
ncw
c$
cO
cc
ncc
Reemplaza la letra sobre el cursor por la que sea presionada después de la letra
Cambia n letras partiendo de la posición del cursor.
Reemplaza todo texto deseado a partir de la posición del cursor.
Cambia la palabra que se encuentra el cursor.
Cambia n palabras empezando con la que se encuentra sobre el cursor
Cambia todo el texto a partir del cursor y hasta el final de la línea.
Cambia todo el texto a partir del cursor y hasta el inicio de la línea.
Cambia el texto de una línea completa.
Cambia el texto de n líneas completas.
Borrado de texto
Página 72
Sistemas Operativos
x
nx
dw
ndw
d$ ó D
d0
dd
ndd
2010
Borra el carácter que se encuentra sobre el cursor.
Borra n caracteres partiendo de la posición del cursor.
Borra una palabra que se encuentra sobre o a la derecha del cursor.
Borra n palabras que se encuentran sobre o a la derecha del cursor.
Borra el texto de la posición del cursor al final de la línea.
Borra el texto de la posición del cursor al inicio de la línea.
Borra la línea donde se encuentra el cursor.
Borra n líneas a partir de donde se encuentra el cursor.
3.4.2 Modo de inserción
Para activar este modo se presiona cualquiera de las teclas que permiten introducir texto al
documento las cuales son:
I
I
A
A
O
O
Entra al modo de inserción de texto.
Inserta el texto al principio de la línea.
Añade texto una posición delante de la del cursor.
Añade texto al final de la línea.
Abre una línea para inserción de texto bajo la posición del cursor.
Abre una línea para inserción de texto sobre la posición del cursor.
3.4.3 Modo ejecución de comandos
Para activar este modo se presiona la tecla ESC y uno de los siguientes caracteres :,/,? ó !.
Más adelante se verá el uso de cada uno de ellos.
Una vez activado este modo se pueden realizar las siguientes funciones:
Búsqueda
/patrón
Busca un patrón de caracteres a partir de la
posición el cursor hasta el final del archivo.
? patrón
Busca un patrón de caracteres partiendo de
la posición del cursor hasta el inicio del archivo
n
Repite la última búsqueda o busca la siguiente
ocurrencia.
N
Repite la última búsqueda o busca la siguiente
ocurrencia en sentido contrario.
l
Reemplazo
:s/patrón/cadena/[g]
Busca la cadena patrón en la línea actual y al
encontrarlo lo reemplaza por cadena. Si la
opción “g” esta puesta hará un reemplazo
Página 73
Sistemas Operativos
2010
global en la línea de los contrario solo
reemplazará la primera ocurrencia.
Copiado
:inicio,final co posición
Copia el texto a partir de la línea inicio hasta
la línea final y lo posiciona en el lugar posición
Movimiento
:inicio ,final m posición
Mueve el texto que se encuentra entre las
líneas inicio y final posicionándolo a partir de
la línea posición.
Salvar
:w
Salva el contenido actual del buffer (archivo)
y continua trabajando en el editor.
:w archivo l
Salva el contenido actual del buffer (archivo)
en uno nuevo llamado archivo l.
:x
Salva el contenido actual del sistema y sale
del editor.
:q!
Sale del editor sin salvar el trabajo o
modificaciones recientes.
Ejecución de comandos UNIX
:! Comando
Una vez que le da la tecla de “!” sale del vi y
permite que el comando sea ejecutado
después de lo anterior retorna al editor.
Otros
:set number
:ser nonumber
u
Activa la numeración de líneas.
desactiva la numeración de líneas.
Elimina el último comando que se realizó.
La sintaxis de vi es:
vi nombre del archivo
Página 74
Sistemas Operativos
2010
Por ejemplo inicie vi tecleando
/home/larry# vi test
Inmediatamente aparecerá algo parecido a
~
~
“test” [New file]
La columna de caracteres “-“ indica que esta al final del archivo
Insertando texto
•
Orden “i”
Está ahora en el modo ordenes, para poder insertar texto en el archivo, pulse <i> (lo que le
hará entrar en el modo de inserción), y empiece a escribir.
Now is the for all gob men to come to the aid of the party
~
~
Mientras inserta texto, puede escribir tantas líneas como desee (pulsando <return>
después de cada una) y puede corregir los errores con la tecla de borrado de carácter.
Para salir del modo de inserción y volver al modo de ordenes solo pulse <esc>. Mientras
esta en modo ordenes puede usara las teclas del cursor para moverse por el archivo.
Cuando solo se tiene una línea e intenta moverse hacia abajo muy probablemente vi emita
un pitido.
•
Orden “a” Insertar texto comenzando detrás de la posición actual del cursor, en
lugar de la posición actual del cursor.
Por ejemplo, use la tecla de cursor a la izquierda para desplazar el cursor sobre las
palabras “good” y “men”
Now is the for all gob_men to come to the aid of the party
~
~
Pulse <a> para iniciar el modo de inserción y escriba
Now is the for all gob women to come to the aid of the party
~
Página 75
Sistemas Operativos
2010
~
•
orden “o”
Para insertar texto en la línea de debajo de la actual
Por ejemplo, pulse <o> y teclee otra línea o dos:
Now is the for all gob women to come to the aid of the party
Afterwards, we’ ll go out for pizza and beer.
~
~
Borrando texto
Desde el modo de ordenes, la orden “x” borra el caracter debajo del cursor. Si pulsa
“x” cinco veces terminara con>
Now is the for all gob women to come to the aid of the party
Afterwards, we’ ll go out for pizza and_
~
~
Ahora pulse <a>, inserte algún texto seguido de <esc>:
Now is the for all gob women to come to the aid of the party
Afterwards, we’ ll go out for pizza and Diet coke.
~
~
orden dd
Se utiliza para borrar líneas enteras.
Por ejemplo para borrar la segunda línea, mueva el cursor en la segunda línea y pulse la
tecla d dos veces (dd).
•
Now is the for all gob women to come to the aid of the party
~
~
orden dw
Borra la palabra sobre la que se encuentra el cursor.
Por ejemplo, situé el cursor sobre la palabra “good” y pulse <dw>.
•
Now is the for all women to come to the aid of the party
~
~
Página 76
Sistemas Operativos
2010
Modificando texto
•
Orden R
Se utiliza para sustituir sesiones de texto
Por ejemplo, Situé el cursor en la primera letra de la palabra “party” y pulse <R>, y escriba
la palabra “hungry”.
Now is the for all gob_men to come to the aid of the hungry
~
~
El uso de la orden R para editar texto es bastante parecido al uso de las ordenes “i” y “ a”,
pero “R” sobrescribe texto en lugar de insertarlo.
•
Orden
Sustituye un único carácter situado debajo del cursor
Por ejemplo, situé el cursor al comienzo de la palabra “now” y escriba “r” seguido c,
obtendrá:
c_ow is the for all gob_men to come to the aid of the party
~
~
La orden “~” cambia de mayúsculas a minúsculas o viceversa la letra donde se
encuentra el cursor.
Por ejemplo, situé el cursor sobre la “o” de “Cow”, y repetidamente pulsa <~>, .
•
Cow is the for all gob_men to come to the aid of the party
~
~
Ordenes de movimiento
Además de utilizar las teclas del cursor para moverse por el documento, en vi
existen las ordenes h, j, k y l, para mover el cursor a la izquierda, abajo, arriba y
derecha respectivamente.
•
•
•
Orden w
Mueve el cursor al comienzo de la siguiente palabra.
Orden b
Lo lleva al comienzo de la palabra anterior
Orden 0 (cero).
Mueve el cursor al comienzo de la línea actual.
Página 77
Sistemas Operativos
2010
Orden $
Lo lleva al final de la línea.
• Orden <ctrl-F>
Avanza el cursor una pantalla hacia delante
• Orden <ctrl-B>
Regresa una pantalla atrás.
• Orden G
Lleva el cursor al final del archivo, puede también desplazarse una línea
arbitraria; por ejemplo, pulsando la orden 10G, llevara el cursor a la linea 10 del
archivo, para desplazarse al comienzo pulse 1G.
•
Puede también asociar ordenes de desplazamiento con otras ordenes como es el
borrado. Por ejemplo, la orden d$ borrara todo desde la posición del cursor al final de la
línea; dG borrara todo desde la posición del cursor al final del archivo.
Guardando archivos y saliendo del editor vi
Orden :q!
Al pulsar “:” , El cursor se desplazara a la ultima línea de la pantalla. (Esta en
modo de ultima línea).
Cow is the for all gob_men to come to the aid of the party
~
~
•
:
•
•
•
Orden :wq
Salva el archivo y sale de vi
Orden ZZ (desde el modo de ordenes, sin “:”) Es equivalente a la orden :wq
Orden :w
Salva los cambios sin salirse de vi.
Editando otro archivo
Orden :e
Se utiliza para abrir otro archivo. Por ejemplo, para dejar de editar el archivo
test y en su lugar editar el archivo test2
•
Cow is the for all gob_men to come to the aid of the party
~
~
:e test2
Si utiliza la orden :e sin salvar primero el archivo, obtendrá el mensaje de error
No write since last change (“:edit !” overrides)
Página 78
Sistemas Operativos
2010
Lo cual significa que vi no quiere editar otro archivo hasta que salve el primero
Orden :e!
Indica al editor que realmente se desea editar otro archivo sin salvar los cambios
en el primero.
•
Incluyendo otro archivo
Orden :r
Puede incluir el contenido de otro archivo en el archivo que esta editando.
Por ejemplo, para editar los archivos test y test2, estando editado el test
•
Cow is the for all gob_men to come to the aid of the party
~
~
:r test2
Ahora tendremos dos archivos, el archivo test2 se inserta en la posición actual del cursor.
Ejecutando comandos del interprete
Se pueden ejecutar comandos del interprete desde editor vi con las siguientes
ordenes:
Orden :r!
Funciona como la orden :r, pero en lugar de leer un archivo, inserta la salida de
un comando dado en el archivo en la posición actual del cursor. Por ejemplo, la
orden :r! ls –F . Muestra en el archivo el listado del directorio donde se encuentra
ubicado.
• Orden :!
Se utiliza para salir a un interprete de comandos desde vi, es decir, ejecutar
desde dentro de vi y volver al editor una vez finalice. Por ejemplo, si usa la orden:
:! ls –F
La orden ls –F sera ejecutada, y los resultados mostrados en la pantalla, pero no
insertados en el archivo de edición.
• :shell.
Con esta orden vi inicia una instancia de comandos, permitiéndole
temporalmente dejar a vi “parado” mientras ejecuta otras ordenes. Simplemente
salga del intérprete de comandos usando la orden exit, para regresar a vi.
•
3.5 Administración de cuentas y grupos de usuarios
Una de las principales responsabilidades del administrador del sistema Linux es mantener
las cuentas de usuarios y de grupos de usuarios. Ello incluye dar de alta nuevas cuentas,
eliminar las que nos se utilicen, establecer los mecanismos de comunicación con los
usuarios, etc.
Página 79
Sistemas Operativos
2010
Existe 3 tipos de usuarios:
•
•
•
Usuario Normal, es un individuo particular que puede entrar en el sistema, con más
o menos privilegios que harán uso de los recursos del sistema. Como indicador en el
prompt utiliza el símbolo $ (dólar). Ejemplo: raul, sergio, mrodriguez, etc. También
se les conoce como usuarios de login.
Usuarios de Sistema, son usuarios propios del sistema vinculados a las tareas que
debe realizar el sistema operativo, este tipo de usuario no puede ingresar al sistema
con un login normal. Ejemplo: mail, ftp, bin, sys, proxy, etc. También se le conoce
como usuarios sin login.
root (superusuario), todo sistema operativo GNU/Linux cuenta con un
superusuario, que tiene los máximos privilegios que le permitirán efectuar cualquier
operación sobre el sistema, su existencia es imprescindible ya que se encarga de
gestionar los servidores, grupos, etc.
En todas las operaciones con usuarios se ven implicados 3 archivos en donde se guardan
la información concerniente a los usuarios y a los grupos a que pertenecen:
•
•
•
/etc/passwd: guarda información de los usuarios del sistema como: nombres,
directorio home, shell.
/etc/group: almacena la información sobre los grupos existentes en el sistema.
/etc/shadow: contiene las contraseñas cifradas de los usuarios además de otros
datos para su validación.
Archivo /etc/passwd
El archivo passwd almacena los usuarios creados en el sistema y tiene el siguiente
formato:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
clases:x:1000:1000:LinuxCentro:/home/clases:/bin/bash
Cada línea esta separada en campos, el separador de campo son los dos puntos (:), y
cada campo representa lo siguiente:
•
Login: el nombre del usuario. No puede haber dos nombres iguales.
Página 80
Sistemas Operativos
•
•
•
•
•
•
2010
Contraseña cifrada: si no se utiliza el fichero de shadow, las contraseñas cifradas se
almacenan en este campo. Si utilizamos el fichero de shadow, todos los usuarios
existentes en este fichero deben existir también en el de shadow y en este campo se
pone el carácter “x”.
User ID: número de identificación del usuario. Es el número con el cual el sistema
identifica al usuario. El 0 es el único que está reservado para el root.
Group ID: el número de grupo al cual pertenece el usuario. Como un usuario puede
pertenecer a más de un grupo, este GID es del grupo primario.
Comentarios: campo reservado para introducir los comentarios que queramos sobre
el usuario. Se suele utilizar para poner el nombre completo o algún tipo de
identificación personal.
Directorio home: el directorio home del usuario es donde éste podrá guardar todos
sus ficheros, generalmente se encuentran dentro del directorio /home y el nombre
de cada directorio es similar al de cada usuario.
Intérprete de comandos: un intérprete de comandos (shell ) es un programa que se
encarga de leer todo lo que escribimos en el teclado y ejecutar los programas o
comandos que le indiquemos. Hay decenas de ellos, aunque el más utilizado es, sin
duda, el bash (GNU Bourne-Again SHell). Si en este campo está: /bin/false ó
/bin/nologin el usuario no podrá tener acceso a su shell y no podrá ejecutar
comandos.
Archivo /etc/group
El archivo group almacena la información de los grupos del sistema, y tiene el siguiente
formato:
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
clases:x:502:
Al igual que el archivo anterior cada línea está separada en campos el separador de
campo son los dos puntos (:), y cada campo representa lo siguiente:
•
Nombre del grupo. Por defecto con los comandos habituales se crea un grupo con el
mismo nombre que el usuario creado, aunque pueden existir otros grupos con
nombres específicos.
Página 81
Sistemas Operativos
•
•
•
2010
Contraseña cifrada: la contraseña de un grupo se utiliza para permitir que los
usuarios de un determinado grupo se puedan cambiar a otro o para ejecutar algunos
programas con permisos de otro grupo, siempre que se disponga de la contraseña.
Group ID: número de identificación del grupo. Es el número con el cual el sistema
identifica internamente a los grupos. El 0 es el único que está reservado para el
grupo del root (los administradores).
Lista de usuarios: los nombres de los usuarios que pertenecen al grupo, separados
por comas. Aunque todos los usuarios deben pertenecer a un determinado grupo
(especificado en el cuarto campo del fichero de passwd), este campo se puede
utilizar para que usuarios de otros grupos también dispongan de los mismos
permisos que tiene el que se está referenciando.
Archivo /etc/shadow
El archivo shadow se encarga de almacenar las contraseñas cifradas del usuario, y tienen
el siguiente formato:
root:$1$qvZCDFha$8CsNHHB/QDYlx3wDnZWzp/:12829:0:99999:7:::
bin:*:12829:0:99999:7:::
daemon:*:12829:0:99999:7:::
clases:$1$8Ne4Ij4r$th9obKXkR7iTZGj26jGUc/:12831:0:99999:7:::
Igual que los archivos anteriores cada línea esta separada en campos el separador de
campo son los dos puntos (:), y cada campo representa lo siguiente:
•
•
•
•
•
•
•
•
•
Login: debe ser el mismo nombre que se utiliza en el fichero de passwd.
Contraseña cifrada.
Días que han pasado, desde el 1 de enero de 1970, hasta que la contraseña ha sido
cambiada por última vez.
Días que deben pasar hasta que la contraseña pueda ser cambiada.
Días que han de pasar hasta que la contraseña deba ser cambiada.
Días antes de caducar la contraseña en el que se avisará al usuario de que debe
cambiarla.
Días que pueden pasar después de que la contraseña caduque, antes de
deshabilitar la cuenta del usuario (si no se cambia la contraseña).
Días, desde el 1 de enero de 1970, desde que la cuenta está deshabilitada.
Campo reservado.
En sistemas UNIX es muy común representar las fechas a partir del número de segundos
transcurridos desde el 1 de enero de 1970.
Página 82
Sistemas Operativos
2010
3.5.1 Comandos relacionados con la administración de cuentas y grupos de usuarios
Comando: useradd
Formato: useradd [-opciones] usuario
Descripción: Este comando se utiliza para dar de alta a nuevos usuarios en el sistema. Si
no se proporcionan argumentos, tomará determinados valores por defecto, dichos valores
se pueden consultar con la opción –D y están almacenados en el directorio
/etc/default/useradd
Ejemplo
# useradd –g Usuarios –c “Norma Roldan” normita
En este ejemplo se creó la cuenta normita y se asigno al grupo Usuarios
Algunas de las opciones más comunes de este comando son:
- u: permite especificar el UID.
- c: añade los valores a la sección de comentarios.
- d: permite especificar el directorio de trabajo, creará automáticamente el directorio
señalado.
- s: permite establecer el shell.
Ejemplos:
# useradd -u 501 alexvira
# useradd –c “Luis Ramos” luis
# useradd –d /home/soft msantos
# useradd –s /bin/false operador1
crea el usuario alexvira con su UID 501
crea el usuario luis rellenando el
comentario con “Luis Ramos”
crea el usuario msantos con su directorio
de trabajo “soft”
crea el usuario operador1 desactivando la
posibilidad de ejecutar un shell
Una vez creado el usuario debemos agregarle una contraseña con la orden:
# passwd normita
O dejar la cuenta sin password para que el usuario la establezca:
#passwd –d normita
Comando: userdel
Formato: userdel [-opciones] usuario
Descripción: Este comando permite eliminar usuarios del sistema. Por ejemplo, si
queremos eliminar al usuario normita, se escribe lo siguiente:
#userdel normita
Página 83
Sistemas Operativos
2010
Si queremos eliminar también su directorio HOME, debemos emplear la opción –r. Es
aconsejable eliminar las cuentas de usuarios que ya no se conectan al sistema, ya que
éstas pueden ser agujeros en la seguridad.
Comando: groupadd
Formato: groupadd [-opciones] grupo
Descripción: Con esté comando podemos dar de alta un nuevo grupo en el sistema por
ejemplo, si queremos dar de alta al grupo de usuarios de captura utilizamos la orden:
# groupadd captura
Si quiere añadir un grupo supervisor con GID 601:
# groupadd –g 601 supervisor
Comando: newgrp
Formato: newgrp [-opciones] grupo
Descripción: Comando que permite que un usuario pueda cambiarse de grupo. Por
ejemplo el usuario normita que pertenece al grupo captura, quiere cambiarse al grupo
programadores
#newgrp programadores
Comando: gpasswd
Formato: gpasswd [-opciones] grupo
Descripción: Permite administrar los grupos. Se puede utilizar para añadir y eliminar
usuarios, señalar un administrador e indicar un password para el grupo.
El administrador del sistema es el encargado de nombrar a un administrador por grupo.
Dicho administrador puede ser un usuario cualquiera del sistema. El administrador de
grupo tendrá el permiso de incluir nuevos usuarios en su grupo. Solo root puede establecer
quién será de un grupo. Por ejemplo para definir al usuario normita como administrador
del grupo captura utilizamos la orden:
#gpasswd –A normita captura
Ejemplos:
# gpasswd admin
cambia el passwd del grupo admin
# gpasswd -a juan admin añade el usuario juan al grupo admin
Comando: groupdel
Formato: groupdel [-opciones] grupo
Descripción: Este comando permite eliminar un grupo del sistema, el grupo no podrá ser
eliminado si este es el grupo primario de un usuario.
Ejemplo:
# groupdel admin
Página 84
Sistemas Operativos
2010
UNIDAD IV
SERVICIOS DE RED
4.1 Herramientas de administración de los servicios
Los servicios son aplicaciones que se ejecutan independientemente del usuario y de que
éste haya iniciado la sesión en el equipo. Normalmente se asocia los servicios sólo a
servicios de red, pero los servicios proporcionan una gran funcionalidad al sistema
operativo. Estas aplicaciones se registran como servicios y los controla el administrador de
servicios.
El administrador de servicios permite establecer los servicios que se van a ejecutar al
iniciar el sistema, y nos permite parar, ejecutar o reanudar los servicios que están activos
actualmente en el sistema.
Hay diferentes métodos de administrar el acceso a los servicios del sistema. Debe decidir
qué método le gustaría usar en función del servicio, la configuración del sistema y el nivel
de conocimientos que tenga de Linux.
La forma más fácil de denegar el acceso a un servicio es desactivándolo. Los servicios en
la jerarquía /etc/rc.d se pueden configurar para iniciarse o detenerse con tres aplicaciones
diferentes:
•
Herramienta de configuración de servicios — una aplicación gráfica que muestra
una descripción de cada servicio, muestra si los servicios se han iniciado en el
momento del arranque (para los niveles de ejecución 3, 4, y 5), y permite que los
servicios sean arrancados, detenidos o reiniciados.
•
ntsysv: una aplicación basada en texto que permite configurar cuáles servicios son
arrancados al momento de arranque para cada nivel de ejecución. Los cambios no
toman efecto de inmediato para los servicios no xinetd. Los servicios que no son
xinetd no pueden ser arrancados, detenidos o reiniciados usando este programa.
•
chkconfig: utilidad de línea de comandos permite activar o desactivar servicios para
los diferentes niveles de ejecución. Los cambios no toman efecto de inmediato
para los servicios no xinetd. Los servicios no xinetd no pueden ser arrancados,
detenidos o reiniciados usando esta utilidad.
•
setup:
Niveles de ejecución
Antes de configurar el acceso a servicios, deberá entender qué son los niveles de
ejecución en Linux. Un nivel de ejecución es un estado o un modo que los servicios
incluídos en el directorio /etc/rc.d/rc<x>.d definen, donde <x> es el número del nivel de
ejecución.
Página 85
Sistemas Operativos
2010
Red Hat Linux utiliza los siguientes niveles de ejecución:
•
0 — Parada
•
1 — Modo de un usuario
•
2 — No se utiliza (definido por el usuario)
•
3 — Modo completo de multiusuario
•
4 — No se utiliza (definido por el usuario)
•
5 — Modo completo de multiusuario (con una pantalla de conexión basada en X)
•
6 — Rearranque
Si usa una pantalla de texto para el ingreso al sistema, estará operando a nivel de
ejecución 3. Si usa una pantalla gráfica para ingresar al sistema, estará operando a nivel
de ejecución 5.
El nivel de ejecución por defecto se puede cambiar si se modifica el fichero /etc/inittab, que
contiene una línea junto a la parte superior del fichero con el siguiente aspecto:
id:5:initdefault:
Cambie el número de esta línea para reflejar el nivel de ejecución que desee. El cambio no
tendrá efecto hasta rearrancar el sistema.
Para cambiar el nivel de ejecución inmediatamente, use el comando telinit seguido del
número del nivel de ejecución. Debe ser usuario root para poder usar este comando.
4.1.1. Herramienta de configuración de servicios
La Herramienta de configuración de servicios es una aplicación gráfica desarrollada por
Red Hat para configurar qué servicios SysV en /etc/rc.d/init.d se inician en el momento del
arranque (para los niveles de ejecución 3, 4, y 5) y cuáles servicios xinetd están activados.
También le permite arrancar, detener y rearrancar servicios SysV así como rearrancar
xinetd.
Para arrancar la Herramienta de configuración de servicios desde el escritorio, vaya al
botón Menú principal (en el Panel) => Configuración del servidor => Servicios o
escriba el comando redhat-config-services en el intérprete de comandos (por ejemplo, en un
XTerm o un terminal de GNOME ).
Página 86
Sistemas Operativos
2010
Figura 4.1 Herramienta de configuración de servicios
La Herramienta de configuración de servicios muestra el nivel de ejecución así como
también el nivel de ejecución en el cual está modificando actualmente. Para modificar otro
nivel de ejecución, seleccione Editar nivel de ejecución desde el menú desplegable y
seleccione los niveles 3, 4, o 5.
La Herramienta de configuración de servicios muestra los servicios de /etc/rc.d/init.d y los
servicios controlados por xinetd. Haga click en un servicio para mostrar una breve
b
descripción del servicio y también para ver el estado del mismo. Si el servicio no es xinetd,
la ventana de estado muestra si el servicio se está ejecutando o no. Si el servicio es
controlado por xinetd, la ventana de estado mostrará la frase servicio xinetd.
xinetd
Para arrancar, detener o rearrancar un servicio inmediatamente, seleccione el servicio y
haga click en el botón adecuado (o elija la acción correspondiente en el menú desplegable
Acciones). Si el servicio es xinetd, los botones de acción estarán desactivados porque no
pueden ser arrancados o detenidos individualmente.
Si activa o desactiva un servicio xinetd marcando o desmarcando la casilla de verificación al
lado del nombre del servicio, debe seleccionar Archivo => Guardar cambios desde el
Página 87
Sistemas Operativos
2010
menú desplegable para reiniciar xinetd e inmediatamente activar/desactivar el servicio xinetd
que usted cambió. También se configura xinetd para recordar la configuración. Puede
activar/desactivar más de un servicio xinetd a la vez y guardar los cambios cuando haya
terminado.
Por ejemplo, imagine que verifica rsync para activarlo a nivel de ejecución 3 y luego guarda
los cambios. El servicio rsync se activará de inmediato. La próxima vez que arranque xinetd,
rsync estará todavía activado.
Aviso
Cuando guarde los cambios de los servicios xinetd, xinetd es reiniciado y los cambios
toman efecto de inmediato. Cuando guarda cambios a otros servicios, el nivel de
ejecución es reconfigurado, pero los cambios no serán efectivos de inmediato.
Para activar un servicio no xinetd para que se inicie en el momento de arranque del sistema
para el nivel de ejecución seleccionado actualmente, marque la casilla de verificación al
lado del nombre del servicio en la lista. Después de configurar el nivel de
d ejecución,
aplique los cambios seleccionando Archivo => Guardar cambios desde el menú
desplegable. La configuración del nivel de ejecución es modificada, pero el nivel de
ejecución no es reiniciado; por tanto los cambios no toman efecto de inmediato.
Porr ejemplo, asuma que está configurando un nivel de ejecución 3. Si cambia el valor para
el servicio anacron de marcado a desmarcado y luego selecciona Guardar cambios,
cambios el nivel
de ejecución 3 cambia y entonces anacron no es iniciado al momento de arranque. Sin
embargo, el nivel de ejecución 3 no es reinicializado, por tanto anacron todavía estará
ejecutándose. Llegados a este punto, seleccione una de las siguientes opciones:
1. Detener el servicio anacron — Detenga el servicio seleccionándolo de la lista y
haciendo
ciendo click en el botón Parar el servicio . Aparecerá un mensaje para indicar que
se ha detenido correctamente el servicio.
2. Reinicializar el nivel de ejecución — Reinicializar el nivel de ejecución escribiendo
en el intérprete de comandos del shell el com
comando telinit 3 (donde 3 es el número de
nivel de ejecución). Esta opción es recomendada si cambia el valor Comenzar al
arrancar de más de un servicio y quiere activar los cambios inmediatamente.
3. No es necesario que detenga el servicio anacron. Puede esperar
ar a que se rearranque
el sistema para detener el servicio. La próxima vez que se arranque el sistema, se
inicializará el nivel de ejecución sin que se ejecute el servicio anacron.
4.1.2 ntsysv
La utilidad ntsysv provee una interfaz sencilla para activar y desactivar servicios. Puede
usar ntsysv para activar o desactivar un servicio xinetd. También puede usar ntsysv para
configurar los niveles de ejecución. Por defecto, únicamente el nivel de ejecución actual es
Página 88
Sistemas Operativos
2010
configurado.
onfigurado. Para configurar un nivel de ejecución diferente, especifique uno o más niveles
con la opción --level. Por ejemplo, el comando ntsysv --level 345 configura los niveles de
ejecución 3, 4, y 5.
programa
rama de instalación en modo texto.
La interfaz ntsysv funciona de forma similar al prog
Utilice las flechas arriba y abajo para desplazarse por la lista. La barra espaciadora
selecciona o anula la selección de servicios, y también sirve para "pulsar" los botones
Aceptar y Cancelar.. Para desplazarse en la lis
lista
ta de servicios y entre los botones Aceptar
y Cancelar,, use la tecla [Tab]. Un asterisco, *,, significa que el servicio está activado. Con
la tecla [F1] se mostrará una breve descripción de cada servicio.
Aviso
Los servicios manejados por xinetd son afectados de inmediato por ntsysv. Para
todos los demás servicios, los cambios no toman efecto de inmediato. Usted debe
detener o arrancar el servicio individual con el comando service daemon stop. En el
ejemplo anterior, sustituya daemon por el nombre
e del servicio que desee detener,
por ejemplo httpd. Reemplace stop por start o restart para arrancar o reiniciar el
servicio.
4.1.3 chkconfig
El comando chkconfig puede ser usado para activar y desactivar servicios. Si usa el
comando chkconfig --list, verá una lista de los servicios del sistema y si están iniciados (on) o
detenidos (off) en los niveles de ejecución 0
0-6.
6. Al final de la lista, verá una sección para los
servicios manejados por xinetd.
Si usa chkconfig --list para realizar una consulta a u
un
n servicio manejado por xinetd, verá si el
servicio xinetd está activado (on) o desactivado (off). Por ejemplo, el comando chkconfig --list
finger retorna la salida siguiente:
finger
on
Como se muestra, finger está activado como un servicio xinetd. Si xinetd está ejecutándose,
finger estará activo.
Si usa chkconfig --list para consultar un servicio /etc/rc.d, verá las configuraciones del servicio
para cada nivel de ejecución. Por ejemplo, el comando chkconfig --list
list anacron devuelve la
siguiente salida:
anacron
0:off 1:off 2:on
3:on
4:on
5:on
Página 89
Sistemas Operativos
2010
6:off
también puede ser usado para configurar un servicio para que comience (o no) en
un nivel de ejecución específico. Por ejemplo, desactive nscd en los niveles de ejecución 3,
4, y 5, usando el comando siguiente:
chkconfig
chkconfig --level 345 nscd off
Aviso
Los servicios gestionados por xinetd están afectados por chkconfig. Por ejemplo, si se
está ejecutando xinetd, finger está deshabilitado y se ejecuta el comando chkconfig
finger on y se activa de inmediato finger sin tener que reiniciar xinetd de forma manual.
El resto de los cambios no se producen inmediatamente tras haber usado chkconfig
manualmente. Deberá parar y rei
reiniciar
niciar el servicio individual con el comando service
daemon stop. En el ejemplo anterior, reemplace daemon con el nombre del servicio
que desea parar; por ejemplo, httpd. Reemplace stop start o con restart para iniciar o
reiniciar el sistema .
4.2 Servicio de impresión
El sistema de impresión de Linux al igual que su antecesor Unix, funciona a grandes
rasgos de la siguiente manera:
El comando lpr copia el archivo a imprimir en el directorio de spool indicado en el archivo
printcap y crea en dicho directorio un archivo de control en el que indica: el archivo (del
directorio de spool) a imprimir, el usuario que solicitó ese servicio de impresión, los
parámetros que se le pasaron en la línea de comandos, entre otros; y ahí termina su
función.
A continuación
inuación entra en juego un daemon llamado lpd. Este programa se activa
periódicamente y comprueba si hay archivos de control en el directorio de spool y en caso
de que los haya realiza las siguientes acciones para cada uno de dichos archivos:
1. Imprime la página de banner, si ésta no se encuentra suprimida, pasándola a través del
filtro de salida si hay alguno definido.
2. Si se indicó al comando lpr que tenía que emplear algún filtro de impresión en concreto
(ej.: lpr -t)
t) se ejecuta el filtro indicado en la correspondiente entrada del archivo printcap; si
Página 90
Sistemas Operativos
2010
no se indicó ningún filtro al comando lpr, se ejecuta el indicado por el parámetro 'if' del
archivo printcap.
3. Cuando se ejecuta el filtro, se redirecciona su entrada estándar al archivo a imprimir (el
creado por lpr en el directorio de spool) , y su salida estándar a:
- la entrada estándar del filtro de salida (si éste está definido en el archivo printcap) y la
salida de dicho filtro al dispositivo de impresión asociado a esta impresora (orden 'lp' del
printcap).
- al dispositivo de impresión indicado en el archivo printcap.
El servicio de impresión recoge las solicitudes locales o remotas para obtener copias sobre
papel y las dirige hacia una cola de trabajos. Como la impresora es un dispositivo más
lento que los procesadores, el servicio selecciona el trabajo de impresión correspondiente
según sus reglas de control y lo dirige hacia la impresora correspondiente cuando ésta
queda libre para realizar la tarea.
Un servicio de impresión consta de los siguientes componentes:
r El proceso servidor que recoge los trabajos de los clientes.
r Una serie de utilidades de gestión, que permitan controlar los trabajos pendientes.
r Instalar un controlador de dispositivo para cada impresora definida, ya sea local o
remota, donde se indiquen las características básicas del aparato (tipo de papel, calidad de
impresión, etc.).
r Una cola de impresión para cada dispositivo definido, donde se dispongan los trabajos
que están pendientes de impresión. Cada cola debe tener un nombre único en el sistema y
ser designada mediante alias.
Posteriormente debe seleccionarse el controlador correspondiente al modelo de la
impresora y el tipo de filtro necesario para los datos que se desea enviar al dispositivo.
A continuación se describen las características principales de los 2 tipos de servicios de
impresión más utilizados LPRng y CUPS.
LPRng: El servicio de impresión LPR de siguiente generación (LPRng) es una evolución de
las clásicas utilidades lpr del Unix de Berkeley (BSD), actualmente en desuso. A
continuación se muestra la tabla de características del servicio.
Paquete RPM: LPRng
Servicio: lpd
Fichero de configuración: /etc/printcap
Fichero de control de acceso: /etc/hosts.lpd
Los siguientes son los mandatos que brinda el servicio LPRng:
Página 91
Sistemas Operativos
Mandato
lpd
lpc
lpr
lpq
Lprm
2010
Descripción
Servicio de impresión
Controla las funciones báscias del servicio de impresión
Manda un trabajo de impresión a la cola
Lista el contenido de los trabajos pendiente de una cola
Elimina un trabajo de impresión
CUPS: El Servicio de Impresión Común para Unix (CUPS) brinda el soporte de una capa
de impresión portátil para sistemas Unix, ofreciendo interfaces de comandos compatibles
con los servicios de Unix System V y los de Unix BSD. Este servicio es el utilizado
actualmente en la mayoría de distribuciones de Linux.
Las características principales de CUPS son:
r Utiliza el Protocolo para Impresión en Internet (IPP) como base para la gestión de los
trabajos de impresión.
r Garantiza la compatibilidad con Unix System V (lp) y con Unix BSD (lpr).
r Soporta interfaz vía web.
r Ofrece contabilidad y cuotas de trabajos y de páginas impresas.
r Permite usar servicio de directorios para impresoras conectadas en red.
r Soporta clientes IPP y LPD.
r Brinda servicios de autentificación de usuarios y comunicación encriptada.
El protocolo IPP suministra métodos para la autentificación segura de los usuarios y la
posibilidad de codificar la información mediante capas SSL/TLS. Estas características
pueden ser configuradas tanto en las impresoras, como en el servidor CUPS.
DHCP.
Dynamic Host Configuration Protocol (DHCP), Protocolo de configuración dinámica de
servidor, es un protocolo de red para asignar automáticamente información TCP/IP a
equipos cliente. Cada cliente DHCP se conecta un servidor DHCP centralizado que
devuelve la configuración de red del cliente, incluida la dirección IP, el gateway y los
servidores DNS.
Motivos para usar el protocolo DHCP
DHCP es útil para proporcionar de un modo rápido la configuración de red del cliente. Al
configurar el sistema cliente, el administrador puede seleccionar el protocolo DHCP y no
especificar una dirección IP, una máscara de red, un gateway o servidor DNS. El cliente
recupera esta información desde el servidor DHCP. DHCP también es útil si un
administrador desea cambiar las direcciones IP de muchos sistemas. En lugar de volver a
configurar todos los sistemas, puede modificar un archivo de configuración DHCP en el
servidor para establecer el nuevo conjunto de direcciones IP. Si los servidores DNS de una
Página 92
Sistemas Operativos
2010
organización cambian, los cambios también se aplicarán en el servidor DHCP, no en todos
los clientes DHCP. Una vez que se reinicie la red en los clientes (o reinicie los clientes), se
aplicarán los cambios.
Además, si un portátil o cualquier tipo de equipo móvil se configuran para DHCP, podrá
desplazarse entre distintas oficinas sin tener que volver a configurarlo, siempre y cuando
cada oficina tenga un servidor DHCP que permita su conexión a la red.
4.3 Servicio web
Un servicio web (en inglés, Web service) es un conjunto de protocolos y estándares que
sirven para intercambiar datos entre aplicaciones. Distintas aplicaciones de software
desarrolladas en lenguajes de programación diferentes, y ejecutadas sobre cualquier
plataforma, pueden utilizar los servicios web para intercambiar datos en redes de
ordenadores como Internet. La interoperabilidad se consigue mediante la adopción de
estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la
arquitectura y reglamentación de los servicios Web. Para mejorar la interoperabilidad entre
distintas implementaciones de servicios Web se ha creado el organismo WS-I, encargado
de desarrollar diversos perfiles para definir de manera más exhaustiva estos estándares.
4.3.1 Estándares empleados
•
•
•
•
•
•
•
Web Services Protocol Stack: Así se denomina al conjunto de servicios y protocolos
de los servicios Web.
XML (Extensible Markup Language): Es el formato estándar para los datos que se
vayan a intercambiar.
SOAP (Simple Object Access Protocol) o XML-RPC (XML Remote Procedure Call):
Protocolos sobre los que se establece el intercambio.
Otros protocolos: los datos en XML también pueden enviarse de una aplicación a
otra mediante protocolos normales como HTTP (Hypertext Transfer Protocol), FTP
(File Transfer Protocol), o SMTP (Simple Mail Transfer Protocol).
WSDL (Web Services Description Language): Es el lenguaje de la interfaz pública
para los servicios Web. Es una descripción basada en XML de los requisitos
funcionales necesarios para establecer una comunicación con los servicios Web.
UDDI (Universal Description, Discovery and Integration): Protocolo para publicar la
información de los servicios Web. Permite comprobar qué servicios web están
disponibles.
WS-Security (Web Service Security): Protocolo de seguridad aceptado como
estándar por OASIS (Organization for the Advancement of Structured Information
Standards). Garantiza la autenticación de los actores y la confidencialidad de los
mensajes enviados.
Página 93
Sistemas Operativos
2010
4.3.2 Ventajas de los servicios web
•
•
•
•
•
Aportan interoperabilidad entre aplicaciones de software independientemente de sus
propiedades o de las plataformas sobre las que se instalen.
Los servicios Web fomentan los estándares y protocolos basados en texto, que
hacen más fácil acceder a su contenido y entender su funcionamiento.
Al apoyarse en HTTP, los servicios Web pueden aprovecharse de los sistemas de
seguridad firewall sin necesidad de cambiar las reglas de filtrado.
Permiten que servicios y software de diferentes compañías ubicadas en diferentes
lugares geográficos puedan ser combinados fácilmente para proveer servicios
integrados.
Permiten la interoperabilidad entre plataformas de distintos fabricantes por medio de
protocolos estándar y abiertos. Las especificaciones son gestionadas por una
organización abierta, la W3C, por tanto no hay secretismos por intereses
particulares de fabricantes concretos y se garantiza la plena interoperabilidad entre
aplicaciones.
Cuando un usuario se conecta a un servicio de Internet utilizando un navegador, lo hace
especificando una dirección al estilo http://www.sitio.com. Esta dirección se llama URL y si
se descompone en sus elementos se obtendrá:
<método>://<servidor>/<directorio absoluto>
<método> : es la cadena de caracteres http
<servidor>: es el nombre del computador al cual se ésta conectando
<directorio absoluto>: en este caso es / y representa el directorio raíz
Para que el servidor remoto obedezca esta solicitud de servicio debe manejar el protocolo
http dentro de sus servicios instalados. La información se transmite en formato HTML o
lenguaje de marcas de hipertexto.
Todo el servicio web se logra gracias al protocolo http en el servidor como ya se dijo, el
cual es manejado y administrado por un software llamando servidor web. En Linux se llama
Apache.
El servidor Apache se desarrollo en NCSA que es el Centro Nacional de Aplicaciones para
Supercomputadoras en el año de 1995.
4.3.3 Archivos de configuración de Apache
Apache maneja dentro del servidor una serie de directorios en donde residen las páginas
web y los programas de aplicaciones orientadas a la web, cuya ubicación puede variar
según la distribución de Linux o las especificaciones que se dan en el momento de
compilarlo.
La manera de averiguar si existe Apache dentro del servidor, si se usó rpm para instalarlo
es:
Página 94
Sistemas Operativos
2010
$ rpm –q httpd
en caso de existir el sistema responde:
httpd -2.0.54-10 pero puede variar según la versión
Cuando se compila Apache desde los códigos fuentes este viene en formato .gz como
este: httpd -2.0.54.tar.gz
La manera de compilarlo es:
gunzip httpd-2.0.54.tar.gz
aparece el archivo .tar en cual se debe descomprimir
tar xvf httpd-2.0.54.tar
aparece el directorio httpd-2.0.54 al cual debe entrar
cd httpd-2.0.54
y se ejecutan estos comando como usuario root:
./configure –prefix=/www
make
make install
El parámetro –prefix determina en qué directorio debe quedar Apache.
En el caso de Fedora, Apache viene localizado en /var/www y el archivo de configuración
en /etc/httpd/conf/httpd.conf y para arrancar el servicio se puede hacer de varias
maneras:
/sbin/service httpd start
/etc/rc.d/init.d/httpd start
debe aparecer OK en color verde en la pantalla
Para detener Apache ejecutar:
/sbin/service httpd stop
/etc/rc.d/init.d/httpd stop
Si requiere saber el estatus del servicio web ejecutar:
/sbin/service httpd status
/etc/rc.d/init.d/httpd status
4.4 Servidor de correo electrónico: SENDMAIL
El correo electrónico es una de las aplicaciones más usadas a nivel mundial, pues fue un
servicio escogido libremente por los usuarios de Internet, lo cual determinó el auge de la
computación personal de Internet.
SMTP o Simple mail Transfer Protocol es un protocolo de TCP/IP encargado de la
transmisión de correos. POP3 e IMAP son protocolos diseñados para la gestión de lso
correos y manejos de las bandejas en los agentes de los clientes. Sendmail no es un
Página 95
Sistemas Operativos
2010
programa orientado a que lo use el usuario directamente, pero se puede usar, lo cual se
hará en este momento solamente para conocer algunos aspectos de su funcionamiento y
recibir el correo con el programa de texto mail que viene en Linux
Sendmail viene ya preinstalado para uso básico así que sólo se mencionará los pasos de
comprobación como se ha hecho con las otras plataformas:
Comprobar si está instalado: rpm –q sendmail
Editar como usuario root el archivo de configuración de Sendmail /etc/mail/sendmail.cf
sólo como ejercicio de comprobación sin hacer cambios. Este es un archivo muy complejo
que es preferible no tocar al menos que sea experto.
Para arrancar Sendmail existen 2 formas:
/sbin/service sendmail start
/etc/rc.d/init.d/sendmail start
debe aparecer OK en color verde en la pantalla
Para detener Apache ejecutar:
/sbin/service sendmail stop
/etc/rc.d/init.d/sendmail stop
Si requiere saber el estatus del servicio web ejecutar:
/sbin/service sendmail status
/etc/rc.d/init.d/sendmail status
Activar Sendmail para enviarle un correo al usuario manual:
/usr/sbin/sendmail manual
La pantalla queda en un renglón en blanco y el sistema espera los comandos para enviar
el mensaje para lo cual se introducen los datos aquí y se debe terminar con . (punto)
4.4.1 Comando mail
El programa de correo más sencillo que hay se denomina mail y se suele hallar en el
directorio / bin. Este programa no tiene un editor a pantalla completa y no requiere el
sistema X Window. El comando mail, parecido al programa mailx que se distribuye con
otras versiones de UNIX , soporta las características básicas necesarias para redactar,
enviar, enumerar y leer mensajes.
Utilice el redireccionamiento con prudencia. ¡No es una idea muy buena que digamos
enviar a alguien el contenido del diccionario del sistema !
Para crear y enviar correo con mail, siga estos pasos:
1. En la línea de comandos, introduzca la palabra mail seguida de la dirección de
correo electrónico de destino, de este modo :
Página 96
Sistemas Operativos
2010
# mail
2. El comando mail responderá con la indicación Subject. Introduzca una breve línea
relativa al asunto:
Subject: Proyecto de Programación Nexus.
3. Pulse Intro y escriba el texto de su mensaje:
¡Tengo una oportunidad inmejorable! La empresa con la que hablamos el miércoles
está interesada en contratar tu equipo de programación. Por favor, llámame para
confirmar si puedes atenderles.
4. Cuando haya terminado de escribir el texto, introduzca un punto (.) en una línea
sola para enviar el mensaje:
EOT
5. El programa mail responde imprimiendo las letras EOT (fin de texto) y enviando el
mensaje.
Utilice el comando mail para recuperar el correo del directorio /var/spool/mail.
Para leer el correo, utilice el comando mail en la línea de comandos, así:
# mail
Cuando utiliza el comando mail, éste imprime una versión corta del mensaje y luego
enumera los mensajes. El signo & es una indicación de la línea de comandos. Utilice in
comando de una sola letra (véase la Tabla 17.2) para leer, eliminar, guardar o responder
al mensaje de correo en curso, lo cual se sabe por un signo mayor que (>). Por defecto, los
mensajes guardados se almacenan en un archivo llamado mbox del directorio de inicio. La
tabla 17.2 enumera los comandos más habituales del programa mail ; para obtener una
lista completa de los comandos mail , remítase a la página man correo.
Comandos habituales del programa mail
Tecla
+
?
R
d
h
n
q
r
t
x
Acción
Moverse al siguiente mensaje y enumerarlo
Moverse al mensaje anterior y enumerarlo
Imprimir una lista de los comandos mail
Responde al remitente
Eliminar mensaje en curso
Volver a imprimir la lista de mensajes (después de enumerar un mensaje)
Ir al mensaje siguiente y enumerarlo
Salir y guardar los mensajes en el buzón predeterminado, mbox.
Responder al remitente y a todos los destinatarios.
Escribir o enumerar el mensaje en curso.
Salir y no guardar los mensajes de mbox.
Página 97
Sistemas Operativos
2010
4.5 Compartir recursos entre diferentes sistemas operativos
4.5.1 Compartir Recursos en Red con Samba
Samba es una suite de aplicaciones Unix que habla el protocolo SMB (Server Message
Block). Este protocolo, funciona a nivel de la capa de presentación del modelo OSI de
TCP/IP.
Muchos sistemas operativos, incluidos Windows y OS/2, usan SMB para operaciones de
red cliente−servidor. Mediante el soporte de este protocolo, Samba permite a los
servidores Unix entrar en acción, comunicando con el mismo protocolo de red que los
productos de Microsoft Windows. De este modo, una máquina Unix con Samba puede
enmascararse como servidor en tu red Microsoft y ofrecer los siguientes servicios:
· Compartir uno o más sistemas de archivos.
· Compartir impresoras, instaladas tanto en el servidor como en los clientes.
· Ayudar a los clientes, con visualizador de Clientes de Red.
· Autentificar clientes logeándose contra un dominio Windows.
· Proporcionar o asistir con un servidor de resolución de nombres WINS.
Samba es la idea de Andrew Tridgell, quien actualmente lidera el equipo de desarrollo de
Samba development desde su casa de Canberra, Australia. El proyecto nació en 1991
cuando Andrew creó un programa servidor de ficheros para su red local, que soportaba un
raro protocolo DEC de Digital Pathworks.
Aunque él no lo supo en ese momento, aquel protocolo más tarde se convertiría en SMB.
Unos cuantos años después, él lo expandió como su servidor SMB particular y comenzó a
distribuirlo como producto por Inte rnet bajo el nombre de servidor SMB.
Entre otras cosas, Microsoft añadió al protocolo soporte para enlaces simbólicos y duros
así como también soporte para ficheros de gran tamaño. Por mera coincidencia esto
ocurrió por la misma época en que Sun Microsystems hizo el lanzamiento de WebNFS
(una versión extendida de NFS), protocolo NetBIOS, el cual a su vez trabaja sobre
NetBEUI (acrónimo de NetBIOS Extended User Interface, que se traduce como Interfaz de
Usuario Extendida de NetBIOS), IPX/SPX (acrónimo de Internet Packet
Exchange/Sequenced Packet Exchange, que se traduce como Intercambio de paquetes
interred/Intercambio de paquetes secuenciales) o NBT, aunque también puede trabajar
directamente sobre TCP/IP.
4.5.2 Instalación y Configuración
La versión más actual de samba es la 3.5.3. Necesitará tener instalados los siguientes
paquetes, que seguramente vienen incluidos en los discos de instalación de su distribución
predilecta:
· samba: Servidor SMB.
· samba-client: Diversos clientes para el protocolo SMB.
· samba-common: Ficheros necesarios para cliente y servidor.
Consulte a la base de datos RPM del sistema si se encuentran instalados estos paquetes,
utilizando el siguiente mandato:
Página 98
Sistemas Operativos
2010
rpm -q samba samba-client samba-common
Si utiliza CentOS 4 o White Box Enterprise Linux 4, solo bastará realizar lo siguiente para
instalar o actualizar la programática necesaria:
yum -y install samba samba-client
Para la mayoría de los casos la configuración de Samba como servidor de archivos es
suficiente.
Configuración
Para comenzar la configuración es necesario tener una cuenta en la máquina Linux y otra
en la máquina Windows, con la misma contraseña ó clave de acceso. Dado que este
usuario no va a tener acceso al Shell entonces, no es necesario que tenga password por
medio del comando passwd, es suficiente con definir /bin/false como shell ó bien definirla
en /sbin/nologin, como se muestra a continuación:
useradd -s /sbin/nologin usuario-windows
smbpasswd -a usuario-windows
A menos que se necesite que esta misma cuenta, tenga acceso a otros servicios como
Telnet, SSH, etc, entonces debe realizarse lo siguiente:
useradd -s /bin/bash usuario-windows
passwd usuario-windows
smbpasswd -a usuario-windows
El fichero lmhosts
NetBios significa Network Basic Input/Output System, desarrollado por IBM en la década
de los 80 para compartir recursos entre computadoras. El sistema fue desarrollado como
una API básica de comunicación entre sistemas de computadoras.
NetBIOS posee la característica de poder resolver nombres mediante la asociación con
direcciones IP correspondientes. Para fines prácticos el nombre NetBIOS debe tener un
máximo de 11 caracteres.
Normalmente tomaremos como referencia el nombre corto del servidor o el nombre corto
que se asigno como alias a la interfaz de red. Este lo estableceremos en el fichero
/etc/samba/lmhosts, en donde encontraremos lo siguiente:
127.0.0.1 localhost
Debemos añadir entonces el nombre que hayamos elegido asociado a la dirección IP que
se tenga dentro de la red local. Opcionalmente podrá añadir también los nombres y
dirección IP del resto de las máquinas que conformen la red local. La separación de
espacios se hace con un tabulador. Ejemplo:
127.0.0.1 localhost
192.168.1.5 server
Página 99
Sistemas Operativos
2010
192.168.1.6 client
Parámetros principales del fichero smb.conf.
Modifique el fichero /etc/samba/smb.conf con cualquier editor de texto. Dentro de este
notará que la información que le será de utilidad viene comentada con un símbolo # y los
ejemplos con ; (punto y coma), siendo estos últimos los que tomaremos como referencia.
Empezaremos por establecer el grupo de trabajo editando el valor del parámetro
workgroup asignando un grupo de trabajo deseado:
workgroup = MIGRUPO
Opcionalmente puede establecer con el parámetro netbios name otro nombre distinto para
el servidor si acaso fuese necesario, pero siempre tomando en cuenta que dicho nombre
deberá corresponder con el establecido en el fichero
/etc/samba/lmhosts:
netbios name = server
El parámetro server string es de carácter descriptivo. Puede utilizarse un comentario breve
que de una descripción del servidor.
server string = Servidor Samba %v en %L
Parámetros útiles para la seguridad.
La seguridad es importante y esta se puede establecer primeramente estableciendo la lista
de control de acceso que definirá que máquinas o redes podrán acceder hacia el servidor.
El parámetro hosts allow sirve para determinar esto. Si la red consiste en máquinas con
dirección IP desde 192.168.1.1 hasta 192.168.1.254, el rango de direcciones IP que se
definirá en hosts allow será 192.168.1., de modo tal que solo se permitirá el acceso dichas
máquinas. Note por favor el punto al final de cada rango. Modifique ésta de manera que
quede del siguiente modo:
hosts allow = 192.168.1. 127.
El parámetro interfaces permite establecer desde que interfaces de red del sistema se
escucharán peticiones. Samba no responderá a peticiones provenientes desde cualquier
interfaz no especificada.
Esto es útil cuando Samba se ejecuta en un servidor que sirve también de puerta de
enlace para la red local, impidiendo se establezcan conexiones desde fuera de la red local.
interfaces = 192.168.1.254/24
4.5.3 Impresoras en Samba.
Las impresoras se comparten de modo predeterminado, así que solo hay que realizar
algunos ajustes. Si se desea que se pueda acceder hacia la impresora como usuario
invitado sin clave de acceso, basta con añadir public = Yes en la sección de impresoras,
Página 100
Sistemas Operativos
2010
por otra parte es necesario prevenir problemas con sistemas operativos viejos, ó versiones
anteriores de Windows como 95, 98 y ME, como son:
print command = lpr -P %p -o raw %s -r
lpq command = lpstat -o %p
lprm command = cancel %p-%j
Por último es posible que se requiera un usuario que pertenezca al grupo que realizan
tareas de administración en las impresoras, así la sección [printers] quedará como sigue:
[printers]
comment = Impresoras.
path = /var/spool/samba
printable = Yes
browseable = No
writable = no
printable = yes
public = Yes
print command = lpr -P %p -o raw %s -r
lpq command = lpstat -o %p
lprm command = cancel %p-%j
printer admin = fulano, @opers_impresion
4.5.4 Compartiendo directorios a través de Samba.
Para los directorios o volúmenes que se irán a compartir, en el mismo fichero de
configuración encontrará distintos ejemplos para distintas situaciones particulares. En
general, puede utilizar el siguiente ejemplo que funcionará para la mayoría:
comment = Comentario que se le ocurra
path = /cualquier/ruta/que/desee/compartir
El volumen puede utilizar cualquiera de las siguientes opciones:
Opción Descripción
guest ok Define si ser permitirá el acceso como usuario invitado. El valor puede ser Yes o
No.
public Es un equivalente del parámetro guest ok, es decir define si ser permitirá el acceso
como usuario invitado. El valor puede ser Yes o No.
browseable Define si se permitirá mostrar este recurso en las listas de recursos
compartidos. El valor puede ser Yes o No.
writable Define si ser permitirá la escritura. Es el parámetro contrario de read only. El valor
puede ser Yes o No. Ejemplos:
«writable = Yes» es lo mismo que «read only = No». Obviamente «writable = No» es lo
mismo que «read only= Yes»
Página 101
Sistemas Operativos
2010
valid users Define que usuarios o grupos pueden acceder al recurso compartido. Los
valores pueden ser nombres de usuarios separados por comas o bien nombres de grupo
antecedidos por una @. Ejemplo: fulano, mengano, @administradores.
write list Define que usuarios o grupos pueden acceder con permiso de escritura. Los
valores pueden ser nombres de usuarios separados por comas o bien nombres de grupo
antecedidos por una @. Ejemplo: fulano, mengano, @administradores.
admin users Define que usuarios o grupos pueden acceder con permisos administrativos
para el recurso. Es decir, podrán acceder hacia el recurso realizando todas las operaciones
como superusuarios.
Los valores pueden ser nombres de usuarios separados por comas o bien nombres de
grupo antecedidos por una @. Ejemplo: fulano, mengano, @administradores.
directory mask Es lo mismo que directory mode. Define que permiso en el sistema tendrán
los subdirectorios creados dentro del recurso. Ejemplos: 1777
create mask Define que permiso en el sistema tendrán los nuevos ficheros creados dentro
del recurso. Ejemplo: 0644
Por ejemplo para compartir el recurso denominado ftp, que esta en el directorio
/var/ftp/pub, con los siguientes premisos activados: 755 para el directorio en general y todo
fichero que sea puesto en su interior tendrá permiso 644.
[ftp]
comment = Directorio del servidor FTP
path = /var/ftp/pub
guest ok = Yes
read only = Yes
write list = fulano, administrador
directory mask = 0755
create mask = 0644
Opciones para cliente o servidor Wins.
Puede habilitar convertirse en servidor WINS o bien utilizar un servidor WINS ya existente.
Se puede ser un servidor WINS o un cliente WINS, pero no ambas cosas a la vez.
.
Si se va ser el servidor WINS, debe habilitarse lo siguiente:
wins support = Yes
Si se va a utilizar un servidor WINS ya existente, debe des comentar la siguiente línea y
especificar qué dirección IP utiliza dicho servidor WINS:
wins server = 192.168.1.1
Iniciar el servicio y añadirlo al arranque del sistema.
Si iniciará Samba por primera vez realice lo siguiente:/sbin/service smb start
Página 102
Sistemas Operativos
2010
Si va a reiniciar el servicio, realice lo siguiente:
/sbin/service smb restart
Para que Samba inicie automáticamente cada vez que inicie el servidor solo ejecute el
siguiente mandato:
/sbin/chkconfig smb on
Accediendo hacia Samba.
Modo Texto
Smbclient.
Indudablemente el método más práctico y seguro es el mandato smbclient. Este permite
acceder hacía cualquier servidor Samba o Windows® como si fuese el mandato ftp en
modo texto.
Para acceder al cualquier recurso de alguna máquina Windows® o servidor SAMBA
determine primero que volúmenes o recursos compartidos posee está utilice el mandato
smbclient del siguiente modo:
smbclient -U usuario -L alguna_maquina
Lo cual le devolvería más menos lo siguiente:
Domain=[MI-DOMINIO] OS=[Unix] Server=[Samba 3.0.7-1.3E]
Sharename Type Comment
--------------- ---------- ----------------homes Disk Home Directories
etlogon Disk Network Logon Service
ftp Disk ftp
IPC$ IPC IPC Service (Servidor Samba 3.0.7-1.3E en mi-servidor)
ADMIN$ IPC IPC Service (Servidor Samba 3.0.7-1.3E en mi-servidor)
epl5900 Printer Created by redhat-config-printer 0.6.x
hp2550bw Printer Created by redhat-config-printer 0.6.x
Anonymous login successful
Domain=[MI-DOMINIO] OS=[Unix] Server=[Samba 3.0.7-1.3E]
Server Comment
----------- --------------mi-servidor Servidor Samba 3.0.7-1.3E en mi-servidor
Workgroup Master
---------------- ------MI-DOMINIO MI-SERVIDOR
La siguiente corresponde a la sintaxis básica para poder navegar los recursos compartidos
por la máquina Windows® o el servidor SAMBA:
smbclient //alguna_maquina/recurso -U usuario
Ejemplo:
smbclient //LINUX/FTP -U jbarrios
Después de ejecutar lo anterior, el sistema solicitará se proporcione la clave de acceso del
usuario jbarrios en el equipo denominado LINUX.
smbclient //LINUX/FTP -U jbarrios
Página 103
Sistemas Operativos
2010
added interface ip=192.168.1.254 bcast=192.168.1.255 nmask=255.255.255.0
Password:
Domain=[miusuario] OS=[Unix] Server=[Samba 2.2.1a]
smb: \>
Pueden utilizarse virtualmente los mismos mandatos que en el interprete de ftp, como
serían get, mget, put, del, etc.
Montaje de unidades de red.
Si necesita poder visualizar desde GNU/Linux a las máquinas con Windows® e interactuar
con los directorios compartidos por estás, necesitará realizar algunos pasos adicionales.
De manera predeterminada, y por motivos de seguridad, solo root puede utilizar los
mandatos smbmnt y smbumount. Deberá entonces establecer permisos de SUID a dichos
mandatos. Puede hacerlo ejecutando, como root lo siguiente:chmod 4755 /usr/bin/smbmnt
chmod 4755 /usr/bin/smbumount.
Para acceder hacia una máquina Windows® determine primero que volúmenes o recursos
compartidos posee está. utilice el mandato smbclient del siguiente modo:smbclient -N -L
alguna_maquina lo cual le devolvería más menos lo siguiente:
Anonymous login successful
Domain=[MI-DOMINIO] OS=[Unix] Server=[Samba 3.0.7-1.3E]
Sharename Type Comment
--------------- ------- -------------homes Disk Home Directories
netlogon Disk Network Logon Service
ftp Disk ftp
IPC$ IPC IPC Service (Servidor Samba 3.0.7-1.3E en mi-servidor)
ADMIN$ IPC IPC Service (Servidor Samba 3.0.7-1.3E en mi-servidor)
epl5900 Printer Created by redhat-config-printer 0.6.x
hp2550bw Printer Created by redhat-config-printer 0.6.x
Anonymous login successful
Domain=[MI-DOMINIO] OS=[Unix] Server=[Samba 3.0.7-1.3E]
Server Comment
--------- ------mi-servidor Servidor Samba 3.0.7-1.3E en mi-servidor
Workgroup Master
--------- ------MI-DOMINIO MI-SERVIDOR
En el ejemplo anterior hay un volumen compartido llamado algún_volumen. Si queremos
montar este, debemos crear un punto de montaje. Éste puede crearse en cualquier
directorio sobre el que tengamos permisos de escritura.
Para montarlo, utilizamos entonces la siguiente línea de mandato:
smbmount //alguna_maquina/algún_volumen /punto/de/montaje/
Si la máquina Windows® requiere un usuario y una clave de acceso, puede añadir a lo
anterior las opciones
Página 104
Sistemas Operativos
2010
-username=el_necesario
-password=el_requerido
-workgroup=MIGRUPO
Si la distribución de GNU/Linux utilizada es reciente, también puede utilizar el ya conocido
mandato mount del siguiente modo:
mount -t smbfs -o username=el_necesario, password=el_requerido
//alguna_maquina/algún_volumen /punto/de/montaje/
Si se genera una cuenta pcguest, similar a la cuenta nobody, podemos montar volúmenes
SMB sin ingresar una clave de acceso pero con privilegios restringidos, o aquellos que
definamos a un volumen accedido por un usuario invitado. Esto sería el método por
elección para compartir volúmenes en una red de área local. Puede generarse una cuenta
pcguest o bien dejar que el sistema tome al usuario nobody. Si opta por lo primero, solo de
de alta la cuenta NO asigne clave de acceso alguna. Montar volúmenes remotos como
usuarios invitado es muy sencillo. Un ejemplo real sería:
mount -t smbfs -o guest //LINUX/FTP //var/ftp
Lo anterior monta un volumen SAMBA de una máquina con GNU/Linux en otra máquina
con GNU/Linux. Puede añadirse también una entrada en /etc/fstab de modo que sólo tenga
que ser tecleado mount /punto/de/montaje. Esta línea sería de modo similar al
siguiente://LINUX/FTP /var/ftp smbfs user,auto,guest,ro,gid=100 0 0
Recuérdese que el volumen compartido debe estar configurado para permitir usuarios
invitados:
[FTP]
comment = Programática libre (RPMS)
path = /var/ftp/pub
public = Yes
guest ok = Yes
Modo gráfico
Desde el entorno de GNOME.
Si utiliza GNOME 2.x o superior, éste incluye un módulo para Nautilus que permite acceder
hacia los recursos compartidos a través de Samba sin necesidad de modificar cosa alguna
en el sistema. Solo hay que hacer clic en Servidores de red en el menú de GNOME.
Desde Windows.
Por su parte, desde Windows deberá ser posible acceder sin problemas hacia Samba
como si fuese hacia cualquier otra máquina con Windows. Vaya, ni Windows ni el usuario
notarán siquiera la diferencia.
Página 105
Sistemas Operativos
2010
Uniendo máquinas al dominio del Controlador Primario de Dominio.
El controlador de dominio permite utilizar a Samba como servidor de autenticación y
servidor de archivos que además permite almacenar el perfil, preferencias y documentos
del usuario en el servidor automáticamente sin la intervención del usuario.
Creando manualmente cuentas de máquinas
Bajo algunas circunstancias será necesario crear cuentas de máquinas (trust accounts o
cuentas de confianza) a fin de permitir unirse al dominio. El procedimiento es simple:
/usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -c "Cuenta de máquina" -M
maquina-windows$
smbpasswd -a maquina-windows$
Es de resaltar que las cuentas de máquinas deben incluir obligatoriamente un símbolo $ al
final del nombre.
Windows 95/98/ME y Windows XP Home
Ya que los sistemas con Windows 95/98/ME y Windows XP Home no incluyen una
implementación completa como miembros de dominio, no se requieren cuentas de
confianza.
El procedimiento para unirse al dominio es el siguiente:
• Acceder hacia Menú de inicio → Configuraciones → Panel de control → Red
• Seleccione la pestaña de Configuración
• Seleccione «Cliente de redes Microsoft»
• Haga clic en el botón de propiedades
• Seleccione Acceder a dominio de Windows NT y especifique el dominio correspondiente.
• Clic en todos los botones de «Aceptar» y reinicie el sistema
• Acceda con cualquier usuario que haya sido dado de alta en el servidor Samba y que
además cuente con una clave de acceso asignada con smbpasswd.
Windows 2000/2003 y Windows XP Profesional
• Clic derecho en el icono de «Mi PC».
• Seleccionar «Propiedades»
• Haga clic en la pestaña de «Identificación de red» o «Nombre del sistema».
• Clic en el botón de «Propiedades».
• Clic en el botón «Miembro de dominio»
• Ingrese el nombre del dominio y el nombre de la máquina y haga clic en el botón de
«Aceptar»
• Aparecerá un diálogo que preguntará por una cuenta y clave de acceso con privilegios de
administración en el servidor.
Página 106
Sistemas Operativos
2010
Especifique la root y la clave de acceso que asignó a la cuenta de root con el mandato
smbpasswd (NO LA CLAVE DE ACCESO DE ROOT EN EL SISTEMA).
• Espere algunos segundos.
• Deberá mostrarse un mensaje emergente de confirmación que dice «Bienvenido a MIDOMINIO»
• Reinicie el sistema
• Acceda con cualquier usuario que haya sido dado de alta en el servidor Samba y que
además cuente con una clave de acceso asignada con smbpasswd.
4.6 Servicio de acceso remoto
Tradicionalmente Linux ha utilizado una serie de comandos para conectarse de manera
remota a un servidor como son el cado de telnet para hacer conexión, ftp para transportar
archivos remotamente y otros como rlogin para conexión remota, y rsh para el manejo de
líneas de comando de manera remota, los cuales tienen el inconveniente de no ser
seguros debido a que la información no se transporta de manera encriptada.
ssh en cambio usa el algoritmo de encriptación pública RSA que es un estándar en la
industria. Con ssh toda la comunicación será encriptada con la conveniencia adicional de
poder interactuar de manera gráfica a través de a través de Xwindows pues es la variable
de entorno DISPLAY que puede ser compartida.
El programa servidor tiene un archivo de configuración en /etc/ssh/ssh_config y que
también se puede administrar desde Webmin.
Igualmente, puede ser activado usando los comandos:
/sbin/service sshd start
/etc/rc.d/init.d/sshd start
debe aparecer OK en color verde en la pantalla, y para detener el servicio:
/sbin/service sshd stop
/etc/rc.d/init.d/sshd stop
Para usar ssh se requiere que esté instalado openssh-server como servidor y opensshclients como cliente, lo cual se peude ver con los comandos:
$ rpm –q openssh-server
$ rpm –q openssh-clients
4.6.1 Conexión a un servidor remoto usando ssh
La manera de conectarse a un servidor remoto es:
$ ssh usuario@servidor
Página 107
Sistemas Operativos
2010
Por ejemplo ssh [email protected]
Desde ese comente se es usuario remoto del servidor Linux.domain.com.co, en este caso
como usuario manuel, el cual debe estar creado como tal en el servidor remoto y aparece
el prompt [manuel@linux]$
Muchas veces no es necesario entrar a un servidor para ejecutar un comando sino basta
indicarlo de manera directa y remota. Por ejemplo si se quiere ver qué programas .conf
existen en el directorio remoto /etc se usa el siguiente comando:
$ ssh Linux.domain.com.co ls/etc/*.conf
A continuación, el sistema remoto pide la contraseña y si ésta es correcta, ejecuta el
comando mostrando los archivos del caso.
Página 108
Sistemas Operativos
2010
Fuentes Bibliográficas
Bandel David, Napier Robert, Linux Edición Especial, 6ta Edición,
Prentice Hall, España, 1999
Dávila Sguerra, Manuel GNU/Linux y el Software libre y sus múltiples aplicaciones
Alfaomega, México, 2009
Eckstein Robert, Collier−Brown David, Kelly Peter, Usando Samba,
Primera Edición, Noviembre de 1999
http://www.linuxparatodos.net/portal/staticpages/index.php?page=13como-samba:
Página 109