Operación de Sistema Operativo Multiusuario

Anuncio
Manual Teórico-Práctico del Módulo
Autocontenido Específico
Operación de Sistema Operativo Multiusuario
PARA LA CARRERA DE
PROFESIONAL TÉCNICO-BACHILLER EN
INFORMÁTICA
ecbc
Educación Capacitación
Basadas en Competencias
Contextualizadas
Capacitado por
Conalep
PARTICIPANTES
Director General
Efrén Castillo Saavedra
Secretario de Desarrollo Académico y de Capacitación
Marco Antonio Norzagaray
Director de Diseño de Curricular de la Formación Ocupacional
Gustavo Flores Fernández
Coordinadores de Área:
Ma. Cristina Martínez Mercado
Grupo de Trabajo para el Diseño del Módulo
Especialistas de Contenido
Consultores Formo Internacional,S.C.
Revisor de contenido
Sandra Luz Lozano Ramírez
Revisión Pedagógica
Patricia Toledo
Revisores de la Contextualización
Agustín Valerio
Armando Guillermo Prieto Becerril
Tecnologías de la información
Manual del curso – módulo Autocontenido Específico
“Operación de Sistema Operativo Multiusuario”
Informática.
D.R. © 2006 CONALEP.
Prohibida la reproducción total o parcial de esta obra, incluida la
portada, por cualquier medio sin autorización por escrito del
CONALEP. Lo contrario representa un acto de piratería intelectual
perseguido por la Ley Penal.
E-CBCC
Av. Conalep N° 5, Col. Lázaro Cárdenas, C.P. 52140 Metepec, Estado de México.
2
Operación de Sistema Operativo Multiusuario
ÍNDICE
Participantes
I.
Mensaje al alumno
II.
Como utilizar este manual
III.
Propósito del módulo autocontenido
V.
Especificaciones de evaluación
VI.
Mapa curricular del módulo autocontenido
Capítulo 1 Manejo de ambiente de sistema operativo multiusuario.
Mapa curricular de la unidad de aprendizaje
1.1.1. Sistema operativo multiusuario
1.1.2.
6
7
9
10
11
12
13
14
14
17
20
24
31
31
38
• Definición de sistema operativo
• Desarrollo histórico de los sistemas operativos
• Estructura de un sistema operativo
• Funciones y características de los sistemas operativos
• Definición de multitartea
• Tipos de Sistemas operativos y proveedores más comunes.
Caracteristicas de unix.
38
39
43
43
48
47
47
47
50
56
56
58
59
60
60
62
63
63
64
66
66
66
67
70
70
70
• Entorno de UNIX
• Interfases
1.2.1.
1.2.2.
Inicio de una sesion unix
• Ejecución de las órdenes
• Tipo de Operadores
Archivos unix
• Sistema de archivos
• Nombres de directorios
• Manipulación de archivos y directorios.
1.3.1
1.3.2
1.4.1
1.4.2
Editor
• Editor vi.
• Cambios de ventana
• Salir de vi
Manejo de contenido
• Ordenes más importantes en modo EX.
• Marcas de posición.
• Mover bloques.
• Recuperación de archivos
• La calculadora
SHELL
• Funciones del intérprete de órdenes
• Modos de invocar una orden.
• Histórico de órdenes
Redireccion de entrada y salida.
• Redirección de entrada y salida.
• Redirección de errores.
Operación de Sistema Operativo Multiusuario
3
1.4.3
2.1.1
Filtros.
• Orden FIND.
• Editor de flujo de SED.
• Prácticas de ejercicio y Listas de Cotejo
• Resumen
• Autoevaluación de conocimientos
• Capítulo 2 Administración de procesos de sistema operativo multiusuario.
• Mapa curricular de la unidad de aprendizaje
Uso de shell
• Variables especiales de shell (funciones en programas de shell).
• Señales y orden trap.
2.1.2
Red.
• Servicios de red..
• Resolución de nombres y direcciones
• Conexión remota.
2.2.1
2.2.2
2.3.1
Parada y arranque del sistema unix
• Acciones de INIT después del arranque.
• Identificadores de proceso grupo de procesos.
Administracion de los usuarios y grupos
• Añadir usuarios al sistema.
• Medidas de seguridad en un sistema UNIX.
Sistema de archivos
• Almacenamiento
• Estructura del sistema de archivos.
2.3.2
Ordenes para administrar el sistema de archivos
• Montaje de un sistema de archivos.
• Información del Espacio en disco
• Copias de seguridad
Prácticas de ejercicio y Listas de Cotejo
Resumen
Autoevaluación de conocimientos
Glosario de Términos E-CBNC
Glosario de Términos Técnicos
Referencias Documentales
4
71
71
71
75
103
104
106
107
108
109
116
118
118
142
142
144
144
145
147
147
148
150
150
152
154
154
154
155
159
184
185
187
189
194
Operación de Sistema Operativo Multiusuario
I. MENSAJE AL ALUMNO
¡CONALEP TE DA LA BIENVENIDA AL
CURSO-MÓDULO
AUTOCONTENIDO
ESPECÍFICO OPERACIÓN DE SISTEMA
OPERATIVO MULTIUSUARIO
EL CONALEP, a partir de la Reforma
Académica 2003, diseña y actualiza sus
carreras, innovando sus perfiles, planes y
programas
de
estudio,
manuales
teórico-prácticos, con los avances
educativos, científicos, tecnológicos y
humanísticos predominantes en el
mundo globalizado, acordes a las
necesidades del país para conferir una
mayor competitividad a sus egresados,
por lo que se crea la modalidad de
Educación y Capacitación Basada en
Competencias Contextualizadas, que
considera las tendencias internacionales
y
nacionales
de
la
educación
tecnológica, lo que implica un reto
permanente en la conjugación de
esfuerzos.
Este manual teórico práctico que apoya
al módulo autocontenido, ha sido
diseñado bajo la Modalidad Educativa
Basada en Competencias
Operación de Sistema Operativo Multiusuario
Contextualizadas, con el fin de ofrecerte
una alternativa efectiva para el
desarrollo de conocimientos, habilidades
y actitudes que contribuyan a elevar tu
potencial productivo y, a la vez que
satisfagan las demandas actuales del
sector laboral, te formen de manera
integral con la oportunidad de realizar
estudios a nivel superior.
Esta modalidad requiere tu participación
y que te involucres de manera activa en
ejercicios y prácticas con simuladores,
vivencias y casos reales para promover
un aprendizaje integral y significativo, a
través de experiencias. Durante este
proceso deberás mostrar evidencias que
permitirán evaluar tu aprendizaje y el
desarrollo de competencias laborales y
complementarias requeridas.
El conocimiento y la experiencia
adquirida se verán reflejados a corto
plazo en el mejoramiento de tu
desempeño laboral y social, lo cual te
permitirá llegar tan lejos como quieras
en el ámbito profesional y laboral.
5
II.
¾
¾
¾
¾
¾
6
COMO UTILIZAR ESTE MANUAL
Las instrucciones generales que a
continuación se te pide que realices,
tienen la intención de conducirte a
que
vincules
las
competencias
requeridas por el mundo de trabajo
con tu formación de profesional
técnico.
Redacta cuales serían tus objetivos
personales al estudiar este módulo
ocupacional.
Analiza el Propósito del módulo
autocontenido optativo que se indica
al principio del manual y contesta la
pregunta ¿Me queda claro hacia
dónde me dirijo y qué es lo que voy a
aprender a hacer al estudiar el
contenido del manual? si no lo tienes
claro pídele al docente que te lo
explique.
Revisa el apartado especificaciones de
evaluación son parte de los requisitos
que debes cumplir para aprobar el
módulo. En él se indican las evidencias
que debes mostrar durante el estudio
del curso -módulo ocupacional para
considerar que has alcanzado los
resultados de aprendizaje de cada
unidad.
Es fundamental que antes de empezar a
abordar los contenidos del manual
tengas muy claros los conceptos que a
continuación
se
mencionan:
competencia
laboral,
unidad
de
competencia
(básica,
genéricas
específicas), elementos de competencia,
criterio de desempeño, campo de
aplicación, evidencias de desempeño,
evidencias de conocimiento, evidencias
por producto, norma técnica de
¾
¾
¾
¾
institución
educativa,
formación
ocupacional,
módulo
ocupacional,
unidad de aprendizaje, y resultado de
aprendizaje.
Si
desconoces
el
significado de los componentes de la
norma, te recomendamos que consultes
el apartado glosario de términos, que
encontrarás al final del manual.
Analiza el apartado «Normas Técnicas
de competencia laboral, Norma técnica
de institución educativa».
Revisa el Mapa curricular del módulo
autocontenido
transversal.
Está
diseñado
para
mostrarte
esquemáticamente las unidades y los
resultados de aprendizaje que te
permitirán
llegar
a
desarrollar
paulatinamente
las
competencias
laborales que requiere la ocupación
para la cual te estás formando.
Realiza la lectura del contenido de cada
capítulo y las actividades de aprendizaje
que se te recomiendan. Recuerda que
en la educación basada en normas de
competencia
laborales
la
responsabilidad del aprendizaje es tuya,
ya que eres el que desarrolla y orienta
sus conocimientos y habilidades hacia el
logro de algunas competencias en
particular.
En el desarrollo del contenido de cada
capítulo, encontrarás ayudas visuales
como las siguientes, haz lo que ellas te
sugieren efectuar. Si no haces no
aprendes, no desarrollas habilidades, y
te será difícil realizar los ejercicios de
evidencias de conocimientos y los de
desempeño.
Operación de Sistema Operativo Multiusuario
Imágenes de Referencia
Estudio individual
Investigación documental
Consulta con el docente
Redacción de trabajo
Comparación de resultados
con otros compañeros
Repetición del ejercicio
Trabajo en equipo
Contextualizaciòn
Realización del ejercicio
Resumen
Observación
Consideraciones sobre seguridad e
higiene
Investigación de campo
Portafolios de evidencias
Operación de Sistema Operativo Multiusuario
7
III. PROPÓSITO DEL MÓDULO AUTOCONTENIDO ESPECÍFICO
Al finalizar el módulo, el alumno operará un sistema operativo multiusuario
mediante comandos de UNÍX que le permitan, crear, abrir, compartir, buscar y
administrar archivos y monitorear procesos para la realización de tareas en el
procesamiento de información.
8
Operación de Sistema Operativo Multiusuario
IV. ESPECIFICACIONES DE EVALUACIÓN
Durante el desarrollo de las prácticas de
ejercicio también se estará evaluando el
desempeño. El docente mediante la
observación directa y con auxilio de una lista
de cotejo confrontará el cumplimiento de los
requisitos en la ejecución de las actividades y
el tiempo real en que se realizó. En éstas
quedarán registradas las evidencias de
desempeño.
Las autoevaluaciones de conocimientos
correspondientes a cada capítulo además de
ser
un
medio
para
reafirmar
los
conocimientos sobre los contenidos tratados,
son también una forma de evaluar y recopilar
evidencias de conocimiento.
Al término del módulo deberás presentar
un Portafolios de Evidencias1, el cual estará
integrado por las listas de cotejo
correspondientes a las prácticas de
ejercicio,
las
autoevaluaciones
de
conocimientos que se encuentran al final
de cada capítulo del manual y muestras de
los trabajos realizados durante el desarrollo
del módulo, con esto se facilitará la
evaluación del aprendizaje para determinar
que se ha obtenido la competencia laboral.
Deberás asentar datos básicos, tales
como: nombre del alumno, fecha de
evaluación, nombre y firma del evaluador
y plan de evaluación.
1El portafolios de evidencias es una compilación de
documentos que le permiten al evaluador, valorar los
conocimientos, las habilidades y las destrezas con que
cuenta el alumno, y a éste le permite organizar la
documentación que integra los registros y productos de
sus competencias previas y otros materiales que
demuestran su dominio en una función específica
(CONALEP.
Metodología
para
el
diseño
e
instrumentación de la educación y capacitación basada
en competencias, Pág. 180).
Operación de Sistema Operativo Multiusuario
9
VI.
MAPA CURRICULAR DEL MÓDULO AUTOCONTENIDO ESPECÍFICO
Operación de Sistema
Operativo
Multiusuario
Módulo
108 hrs.
Unidad de
Aprendizaje
1. Manejo de
ambiente de
sistema operativo
multiusuario.
55 hrs.
2. Administración de
procesos de
sistema operativo
multiusuario
53 hrs.
1.1 Analizar la evolución de sistema operativo multiusuario y conceptos con
base a sus antecedentes.
1.2 Abrir sesiones de UNIX por medio de comandos y archivos.
Resultados
de
Aprendizaje
1.3 Manejar editores de introducción de texto mediante comandos de
ejecución.
1.4 Manejar el shell de UNIX mediante instrucciones de usuario.
2.1 Utilizar comandos con sus opciones por medio de instrucciones UNIX.
2.2 Manejar la administración de cuentas de UNIX con base a permisos
establecidos de usuarios.
2.3 Organizar la información de archivos y discos mediante el sistema de
archivos.
10
10 hrs.
10 hrs.
15 hrs.
20 hrs.
18 hrs.
18 hrs.
17 hrs.
Operación de Sistema Operativo Multiusuario
MANEJO DE AMBIENTE DE SISTEMA OPERATIVO MULTIUSUARIO.
Al finalizar la unidad, el alumno manejará un sistema operativo
multiusuario de acerdo con las VII.
características de entorno y los comandos
del sistema operativo UNIX.
Operación de Sistema Operativo Multiusuario
11
MAPA CURRICULAR DEL MÓDULO AUTOCONTENIDO ESPECÍFICO
Operación de Sistema
Operativo
Multiusuario
Módulo
108 hrs.
Unidad de
Aprendizaje
1. Manejo de
ambiente de
sistema operativo
multiusuario.
55 hrs.
Resultados
de
Aprendizaje
12
2.Administración de
procesos de
sistema operativo
multiusuario
53 hrs.
1.1 Analizar la evolución de sistema operativo multiusuario y conceptos con
base a sus antecedentes.
1.2 Abrir sesiones de UNIX por medio de comandos y archivos.
10 hrs.
1.3 Manejar editores de introducción de texto mediante comandos de
ejecución.
1.4 Manejar el shell de UNIX mediante instrucciones de usuario.
15 hrs.
2.4 Utilizar comandos con sus opciones por medio de instrucciones UNIX.
2.5 Manejar la administración de cuentas de UNIX con base a permisos
establecidos de usuarios.
2.6 Organizar la información de archivos y discos mediante el sistema de
archivos.
18 hrs.
18 hrs.
10 hrs.
20 hrs.
17 hrs.
Operación de Sistema Operativo Multiusuario
SUMARIO
¾
¾
¾
¾
¾
¾
¾
¾
¾
SISTEMA OPERATIVO MULTIUSUARIO
CARACTERISTICAS DE UNIX
INICIO DE UNA SESION UNIX
ARCHIVOS UNIX
EDITOR
MANEJO DE CONTENIDO
SHELL.
REDIRECCION DE ENTRADA Y SALIDA
COMANDOS AVANZADOS
RESULTADO DE APRENDIZAJE
1.1.
Analizar la evolución de sistema operativo multiusuario y conceptos con base a sus
antecedentes.
1.1.1. SISTEMA OPERATIVO
MULTIUSUARIO.
•
Definición de sistema operativo
Introducción a los sistemas operativos
Definiciones de los sistemas operativos.
Un sistema operativo es un programa que
actúa como intermediario entre el usuario
y el hardware de un computador y su
propósito es proporcionar un entorno en
el cual el usuario pueda ejecutar
programas. El objetivo principal de un
sistema operativo es lograr que el sistema
de computación se use de manera
cómoda ,y el objetivo secundario es que el
hardware del computador se emplee de
manera eficiente. Un sistema Operativo
(SO) es en sí mismo un programa de
Operación de Sistema Operativo Multiusuario
computadora. Sin embargo, es un
programa muy especial, quizá el más
complejo
e
importante
en
una
computadora. El SO despierta a la
computadora y hace que reconozca al
CPU, la memoria, el teclado, el sistema de
vídeo y las unidades de disco. Además,
proporciona la facilidad para que los
usuarios
se
comuniquen
con
la
computadora y sirve de plataforma a
partir de la cual se corren programas de
aplicación.
Cuando enciendes una computadora, lo
primero que ésta hace es llevar a cabo
unautodiagnóstico llamado auto prueba
de encendido (Power On Self Test,
POST).Durante la POST, la computadora
identifica su memoria, sus discos, su
teclado, su sistema de vídeo y cualquier
otro dispositivo conectado a ella. Lo
13
siguienteque la computadora hace es
buscar un SO para arrancar (boot).
Una vez que la computadora ha puesto en
marcha su SO, mantiene al menos parte
de éste en su memoria en todo momento.
Mientras la computadora esté encendida,
el sistema operativo tiene 4 tareas
principales:
•
•
•
•
•
14
Proporcionar ya sea una interfaz de
línea de comando o una interfaz
gráfica al usuario, para que este
último se pueda comunicar con la
computadora.
Interfaz de línea de comando: tú
introduces palabras y símbolos
desde
el
teclado
de
la
computadora, ejemplo, el MS-DOS.
Interfaz gráfica del Usuario (GUI),
seleccionas las acciones mediante el
uso de un Mouse para pulsar sobre
figuras
llamadas
iconos
o
seleccionar opciones de los menús.
Administrar los dispositivos de
hardware en la computadora.
Cuando corren los programas,
necesitan utilizar la memoria, el
monitor, las unidades de disco, los
puertos
de
Entrada/Salida
(impresoras, módems, etc.). El SO
sirve de intermediario entre los
programas y el hardware.
Administrar
y
mantener
los
sistemas de archivo de disco. Los
SO agrupan la información dentro
de compartimientos lógicos para
almacenarlos en el disco. Estos
grupos
de
información
son
llamados archivos. Los archivos
pueden contener instrucciones de
programas o información creada
•
por el usuario. El SO mantiene una
lista de los archivos en un disco, y
nos proporciona las herramientas
necesarias
para
organizar
y
manipular estos archivos.
Apoyar a otros programas. Otra de
las funciones importantes del SO es
proporcionar servicios a otros
programas. Estos servicios son
similares a aquéllos que el SO
proporciona directamente a los
usuarios. Por ejemplo, listar los
archivos, grabarlos a disco, eliminar
archivos, revisar espacio disponible,
etc. Cuando los programadores
escriben
programas
de
computadora, incluyen en sus
programas
instrucciones
que
solicitan los servicios del SO. Estas
instrucciones son conocidas como
"llamadas del sistema"
¿Qué es un sistema operativo?
Un sistema operativo es el programa que
oculta la verdad del hardware al
programador y presenta una vista simple y
agradable de los archivos nominados que
pueden leerse y escribirse. El sistema
operativo resguarda al programador del
hardware del disco y presenta una interfaz
simple orientada al archivo, también
disimula mucho del trabajo concerniente a
interrupciones, relojes o cronómetros,
manejo de memoria y otras características
de
bajo
nivel.
La función del sistema operativo es la de
presentar al usuario con elequivalente de
una máquina ampliada, o máquina virtual,
Operación de Sistema Operativo Multiusuario
que sea más fácil de programar que el
hardware implícito.
El sistema operativo es una parte
importante de casi cualquier sistema de
computación. Un sistema de computación
puede dividirse en cuatro componentes:
a.- El hardware
b-El sistema operativo
c-Los programas de aplicación
d-Los usuarios.
a-El hardware
Unidad Central de Procesamiento (UCP),
memoria y dispositivos de entrada y salida
(E/S)) proporciona los recursos de
computación básicos.
c-Los programas de aplicación
(Compiladores, sistemas de bases de
datos, juegos devideo y programas para
negocios) Definen la forma en que estos
recursos se emplean para resolver los
problemas de computación de los
usuarios.
d-Usuarios
Puede haber distintos usuarios (personas,
máquinas, otros computadores) que
intentan resolver problemas diferentes;
por lo tanto, es posible que haya
diferentes programas de aplicación.
b-El sistema operativo
Operación de Sistema Operativo Multiusuario
El sistema operativo controla y coordina el
uso del hardware entre los diversos
programas de aplicación de los distintos
usuarios.
Podemos ver al sistema operativo como
un asignador de recursos. Un sistema de
computación tiene muchos recursos
(hardware y software) que pueden
requerirse para resolver un problema:
tiempo de la UCP, espacio de memoria,
espacio de almacenamiento de archivos,
dispositivos de E/S, etc. El sistema
operativo actúa como el administrador de
estos recursos y los asigna a usuarios y
programas concretos según los necesiten
las tareas de los usuarios.
Puesto que pueden surgir conflictos en las
solicitudes de recursos, el sistema
operativo debe decidir a qué solicitudes se
les asignarán para que el sistema de
computación pueda funcionar de manera
eficiente
y
justa.
En términos generales, no hay una
definición
de
sistema
operativo
completamente adecuada. Los sistemas
operativos existen porque son una manera
razonable de solucionar el problema de
crear un sistema de computación
utilizable.
Objetivos para la creación de los sistemas
Operativos.
•
•
Transformar el complejo hardware
de una computadora en una
máquina accesible al usuario.
Lograr el mejor uso posible de los
recursos. Hacer eficiente el uso del
recurso.
15
El objetivo fundamental de los sistemas de
computación es ejecutar losprogramas de
los usuarios y facilitar la resolución de sus
problemas.
El hardware se construye con este fin,
pero como éste no es fácil de utilizar, se
desarrollan programas de aplicación que
requieren ciertas operaciones comunes,
como el control de dispositivos de E/S. las
funciones comunes de control y de
asignación de recursos se integran para
formar un solo fragmento de software:el
sistema operativo.
•
Desarrollo
histórico
sistemas operativos.
de
los
En un principio, solo existía el hardware
del
computador.
Los
primeros
computadores eran (físicamente) grandes
máquinas que se operaban desde una
consola. El programador escribía un
programa
y
luego
lo
controlaba
directamente desde la consola. En primer
lugar,
el
programa
se
cargaba
manualmente en la memoria, desde los
interruptores del tablero frontal (una
instrucción en cada ocasión), desde una
cinta de papel o desde tarjetas perforadas.
Luego se pulsaban los botones adecuados
para establecer la dirección de inicio y
comenzar la ejecución del programa.
Mientras
este
se
ejecutaba,
elprogramador-operador
lo
podía
supervisar observando las luces en la
consola, sise descubrían errores, el
programador podía detener el programa,
examinar elcontenido de la memoria y los
registros
y
depurar
el
programa
16
directamente desdela consola. La salida
del programa se imprimía, o se perforaba
en cintas depapel o tarjetas para su
impresión
posterior.
Sin embargo, con este procedimiento se
presentaban
ciertos
problemas.
Supongamosque un usuario se había
registrado para usar una hora de tiempo
del computadordedicada a ejecutar el
programa que estaba desarrollando, pero
se topaba con algúnerror difícil y no podía
terminar en esa hora. Si alguien más
habíareservado el siguiente bloque de
tiempo, usted debía detenerse, rescatar lo
quepudiera y volver mas tarde para
continuar. Por otra parte, si el programa
seejecutaba
sin
problemas,
podría
terminar en 35 minutos; pero como pensó
quenecesitaría la maquina durante más
tiempo, se registro para usarla una hora,
ypermanecería
inactiva
durante
25
minutos.
Conforme transcurrió el tiempo, se
desarrollaron
software
y
hardwareadicionales;
empezaron
a
popularizarse los lectores de tarjetas,
impresoras de líneasy cintas magnéticas;
se diseñaron ensambladores, cargadores y
ligadores parafacilitar las tareas de
programación, y se crearon bibliotecas de
funcionescomunes, de manera que estas
podían copiarse a un nuevo programa sin
tener queescribirlas de nuevo.
Las rutinas que efectuaban operaciones de
E/S tenían una importancia especial.Cada
nuevo dispositivo de E/S poseía sus
propias características, lo querequería una
cuidadosa programación. Así mismo, para
cada uno de ellos seescribía una subrutina
especial,
la
cual
se
denominaba
Operación de Sistema Operativo Multiusuario
manejador dedispositivos. Este sabe como
deben
de
usarse
los
buffers,
indicadores,registros, bits de control y bits
de estado para cada dispositivo. Cada tipo
dedispositivo tenía su propio manejador.
Una tarea sencilla, como leer un
carácterde un lector de cinta de papel,
podía conllevar complicadas secuencias
deoperaciones
específicas
para
el
dispositivo. En lugar de tener que
escribircada vez el código necesario,
bastaba usar el manejador de dispositivo
de labiblioteca.
el casodel Hardware, las generaciones han
sido marcadas por grandes avances en
loscomponentes utilizados, pasando de
válvulas (primera generación) atransistores
(segunda
generación),
a
circuitos
integrados (tercera generación),a circuitos
integrados de gran y muy gran escala
(cuarta
generación).
Cadageneración
Sucesiva de hardware ha ido acompañada
de reducciones substancialesen los costos,
tamaño, emisión de calor y consumo de
energía, y porincrementos notables en
velocidad y capacidad.
Más tarde aparecieron los compiladores
de FORTRAN, COBOL y otros lenguajes,
loque facilito la tarea de programación,
pero hizo más complejo elfuncionamiento
del computador. Por ejemplo, al preparar
la ejecución de unprograma en FORTRAN,
el programador primero necesitaba cargar
en el computadorel compilador de
FORTRAN,
que
generalmente
se
conservaba en una cinta magnética,por lo
que había que montar la cinta adecuada
en la unidad correspondiente. Elprograma
se leía a través del lector de tarjetas y se
escribía en otra cinta.El compilador de
FORTRAN producía una salida en lenguaje
ensamblador,
que
luegotenia
que
ensamblarse, para esto era necesario
montar otra cinta con elensamblador, y su
salida debía enlazarse con las rutinas de
apoyo de lasbibliotecas. Finalmente, el
programa objeto, en código binario,
estaba listopara ejecutarse; se cargaba en
memoria y se depuraba desde la consola
comoantes.
Generación Cero (década de 1940) Los
primeros sistemas computacionales no
poseían sistemas operativos. Losusuarios
tenían completo acceso al lenguaje de la
maquina. Todas lasinstrucciones eran
codificadas a mano.
Los Sistemas Operativos, al igual que el
Hardware
de
los
computadores,
hansufrido una serie de cambios
revolucionarios llamados generaciones. En
Operación de Sistema Operativo Multiusuario
Primera Generación (década de 1950)
Los sistemas operativos de los años
cincuenta fueron diseñados para hacer
masfluida la transición entre trabajos.
Antes de que los sistemas fueran
diseñados,se
perdía
un
tiempo
considerable entre la terminación de un
trabajo y elinicio del siguiente. Este fue el
comienzo
de
los
sistemas
de
procesamiento
porlotes,
donde
los
trabajos se reunían por grupos o lotes.
Cuando el trabajoestaba en ejecución,
este tenia control total de la maquina. Al
terminar cadatrabajo, el control era
devuelto al sistema operativo, el cual
limpiaba y leíae iniciaba el trabajo
siguiente.
Al inicio de los 50's esto había mejorado
un poco con la introducción detarjetas
17
perforadas (las cuales servían para
introducir los programas delenguajes de
máquina), puesto que ya no había
necesidad
de
utilizar
lostableros
enchufables.
Además el laboratorio de investigación
General
Motors
implementó
el
primersistema operativo para la IBM 701.
Los
sistemas
de
los
50's
generalmenteejecutaban una sola tarea, y
la transición entre tareas se suavizaba
paralograr la máxima utilización del
sistema. Esto se conoce como sistemas
deprocesamiento por lotes de un sólo
flujo, ya que los programas y los datos
eransometidos en grupos o lotes.
La introducción del transistor a mediados
de los 50's cambió la imagenradicalmente.
Se crearon máquinas suficientemente
confiables las cuales seinstalaban en
lugares especialmente acondicionados,
aunque sólo las grandesuniversidades y las
grandes corporaciones o bien las oficinas
del gobierno sepodían dar el lujo de
tenerlas.
Para poder correr un trabajo (programa),
tenían que escribirlo en papel (enFORTRAN
o en lenguaje ensamblador) y después se
perforaría en tarjetas.Enseguida se llevaría
la pila de tarjetas al cuarto de
introducción al sistemay la entregaría a
uno de los operadores. Cuando la
computadora terminara eltrabajo, un
operador se dirigiría a la impresora y
desprendería la salida y lallevaría al cuarto
de salida, para que la recogiera el
programador.
18
Segunda Generación (a mitad de la
década de 1960)
La característica de los sistemas operativos
fue
el
desarrollo
de
los
sistemascompartidos
con
multiprogramación, y los principios del
multiprocesamiento. Enlos sistemas de
multiprogramación, varios programas de
usuario se encuentran almismo tiempo en
el almacenamiento principal, y el
procesador se cambia rápidamentede un
trabajo a otro. En los sistemas de
multiprocesamiento
se
utilizan
variosprocesadores en un solo sistema
computacional, con la finalidad de
incrementarel poder de procesamiento de
la maquina.
La independencia de dispositivos aparece
después.
Un
usuario
que
desea
escribirdatos en una cinta en sistemas de
la
primera
generación
tenia
que
hacerreferencia especifica a una unidad de
cinta
particular.
En
la
segunda
generación,el programa del usuario
especificaba tan solo que un archivo iba a
ser escritoen una unidad de cinta con
cierto número de pistas y cierta densidad.
Se desarrollo sistemas compartidos, en la
que
los
usuarios
podían
acoplarsedirectamente con el computador
a través de terminales. Surgieron sistemas
detiempo real, en que los computadores
fueron utilizados en el control de
procesosindustriales. Los sistemas de
tiempo real se caracterizan por proveer
unarespuesta inmediata.
Operación de Sistema Operativo Multiusuario
Tercera Generación (mitad de década
1960 a mitad década de 1970)
Se inicia en 1964, con la introducción de
la familia de computadoresSistema/360 de
IBM.
Los
computadores
de
esta
generación
fueron
diseñados
comosistemas para usos generales. Casi
siempre
eran
sistemas
grandes,
voluminosos,con el propósito de serlo
todo para toda la gente. Eran sistemas de
modos
múltiples,algunos
de
ellos
soportaban simultáneamente procesos
por
lotes,
tiempocompartido,
procesamiento
de
tiempo
real
y
multiprocesamiento.
Eran
grandes
ycostosos,
nunca
antes
se
había
construido algo similar, y muchos de
losesfuerzos de desarrollo terminaron muy
por arriba del presupuesto y mucho
despuésde lo que el planificador marcaba
como fecha de terminación.
Estos
sistemas
introdujeron
mayor
complejidad
a
los
ambientes
computacionales;una complejidad a la
cual, en un principio, no estaban
acostumbrados losusuarios.
Cuarta Generación (mitad de década de
1970 en adelante)
Los sistemas de la cuarta generación
constituyen
el
estado
actual
de
latecnología. Muchos diseñadores y
usuarios se sienten aun incómodos,
despuésde sus experiencias con los
sistemas operativos de la tercera
generación.
Operación de Sistema Operativo Multiusuario
Con la ampliación del uso de redes de
computadores y del procesamiento en
línealos usuarios obtienen acceso a
computadores alejados geográficamente a
travésde varios tipos de terminales.
Los sistemas de seguridad se han
incrementado mucho ahora que la
informaciónpasa a través de varios tipos
vulnerables de líneas de comunicación. La
clavede cifrado esta recibiendo mucha
atención; han sido necesario codificar
losdatos personales o de gran intimidad
para que; aun si los datos son expuestos,
no sean de utilidad a nadie mas que a los
receptores adecuados.
• Estructura de un sistema operativo
En esta unidad examinaremos cuatro
estructuras
distintas
que
ya
han
sidoprobadas, con el fin de tener una idea
más extensa de cómo esta estructuradoel
sistema operativo. Veremos brevemente
algunas estructuras de diseños desistemas
operativos.
Estructura modular.
También llamados sistemas monolíticos.
Este tipo de organización es con muchola
mas común; bien podría recibir el
subtitulo de "el granembrollo". La
estructura consiste en que no existe
estructura alguna. Elsistema operativo se
escribe
como
una
colección
de
procedimientos, cada uno delos cuales
puede llamar a los demás cada vez que así
lo requiera. Cuando seusa esta técnica,
cada procedimiento del sistema tiene una
interfaz biendefinida en términos de
19
parámetros y resultados y cada uno de
ellos es librede llamar a cualquier otro, si
este ultimo proporciona cierto cálculo
útilpara el primero. Sin embargo incluso
en este tipo de sistemas es posible teneral
menos algo de estructura. Los servicios
(llamadas al sistema) que proporcionael
sistema operativo se solicitan colocando
los parámetros en lugares biendefinidos,
como en los registros o en la pila, para
después ejecutar unainstrucción especial
de trampa de nombre "llamada al núcleo"
o"llamada al supervisor".
Esta
organización
sugiere
una
organización básica del sistema operativo:
Esta instrucción cambia la máquina del
modo usuario al modo núcleo ytransfiere
el control al sistema operativo, lo que se
muestra en el evento (1)de la figura 1. El
sistema operativo examina entonces los
parámetros de lallamada, para determinar
cual de ellas se desea realizar, como se
muestra en elevento (2) de la figura 1. A
continuación, el sistema operativo analiza
unatabla que contiene en la entrada k un
apuntador al procedimiento que realiza
lak-esima llamada al sistema. Esta
operación que se muestra en (3) de la
figura1, identifica el procedimiento de
servicio, al cual se llama. Por ultimo,
lallamada al sistema termina y el control
regresa al programa del usuario.
En este modelo, para cada llamada al
sistema existe un procedimiento deservicio
que se encarga de él. Los procedimientos
utilitarios hacen cosasnecesarias para
varios procedimientos de servicio, por
ejemplo buscar los datosde los programas
del usuario. La siguiente figura muestra
este procedimiento detres capas
Figura 1. La forma en que debe hacerse
una llamada al sistema: (1) el programadel
usuario es atraído hacia el núcleo. (2) el
sistema operativo determina elnúmero del
servicio solicitado. (3) el sistema operativo
localiza
y
llama
alprocedimiento
correspondiente al servicio. (4) el control
regresa al programadel usuario.
20
1.- un programa principal que llama al
procedimiento del servicio solicitado.
2.- un conjunto de procedimientos de
servicio que llevan a cabo las llamadas
alsistema.
3.- un conjunto de procedimientos
utilitarios que ayudan al procedimiento
deservicio.
(Para ver el gráfico faltante haga click en
el menú superior "BajarTrabajo")
Figura 2. Un modelo de estructura simple
para un sistema monolítico.
(Para ver el gráfico faltante haga click en
el menú superior "BajarTrabajo")
Estructura por microkernel.
Las funciones centrales de un SO son
controladas por el núcleo (kernel)mientras
que la interfaz del usuario es controlada
por el entorno (shell). Porejemplo, la parte
Operación de Sistema Operativo Multiusuario
más importante del DOS es un programa
con el nombre"COMMAND.COM" Este
programa tiene dos partes. El kernel, que
semantiene en memoria en todo
momento, contiene el código máquina de
bajo nivelpara manejar la administración
de hardware para otros programas que
necesitanestos servicios, y para la segunda
parte del COMMAND.COM el shell, el cual
es elinterprete de comandos
Las funciones de bajo nivel del SO y las
funciones de interpretación decomandos
están separadas, de tal forma que puedes
mantener el kernel DOScorriendo, pero
utilizar una interfaz de usuario diferente.
Esto es exactamentelo que sucede cuando
cargas Microsoft Windows, el cual toma el
lugar del shell,reemplazando la interfaz de
línea de comandos con una interfaz
gráfica delusuario. Existen muchos "shells"
diferentes en el mercado, ejemplo:NDOS
(Norton DOS), XTG, PCTOOLS, o inclusive
el mismo SO MS-DOS a partir de laversión
5.0 incluyó un Shell llamado DOS SHELL.
Estructura por anillos concéntricos (capas).
El sistema por "capas" consiste en
organizar el sistema operativo comouna
jerarquía de capas, cada una construida
sobre la inmediata inferior. Elprimer
sistema construido de esta manera fue el
sistema
THE
(TechnischeHogeschool
Eindhoven), desarrollado en Holanda por
E. W. Dijkstra (1968) y susestudiantes.
El sistema tenia 6 capas, como se muestra
en la figura 3. La capa 0 trabaja conla
asignación del procesador y alterna entre
los
procesos
cuando
ocurren
lasinterrupciones
o
expiran
los
cronómetros. Sobre la capa 0, el sistema
Operación de Sistema Operativo Multiusuario
consta deprocesos secuénciales, cada uno
de los cuales se podría programar sin
importarque varios procesos estuvieran
ejecutándose en el mismo procesador, la
capa
0proporcionaba
la
multiprogramación básica de la CPU.
La capa 1 realizaba la administración de la
memoria. Asignaba el espacio dememoria
principal para los procesos y un recipiente
de palabras de 512K seutilizaba para
almacenar partes de los procesos
(páginas) para las que no existíalugar en la
memoria principal. Por encima de la capa
1, los procesos no debíanpreocuparse si
estaban en la memoria o en el recipiente;
el software de la capa1 se encargaba de
garantizar que las páginas llegaran a la
memoria cuandofueran necesarias.
La capa 2 se encargaba de la
comunicación entre cada proceso y la
consola deloperador. Por encima de esta
capa, cada proceso tiene su propia
consola deoperador.
La capa 3 controla los dispositivos de E/S y
guarda en almacenes (buffers) losflujos de
información entre ellos. Por encima de la
capa 3, cada proceso puedetrabajar con
dispositivos
exactos
de
E/S
con
propiedades
adecuadas,
en
vez
dedispositivos
reales
con
muchas
peculiaridades. La capa 4 es donde
estaban losprogramas del usuario, estos
no tenían que preocuparse por el proceso,
memoria,consola o control de E/S. el
proceso operador del sistema se localizaba
en lacapa 5
Una generalización mas avanzada del
concepto de capas se presento en el
sistemaMULTICS. En lugar de capas,
21
MULTICS estaba organizado como una
serie de anillosconcéntricos, siendo los
anillos interiores los privilegiados. Cuando
unprocedimiento de un anillo exterior
deseaba llamar a un procedimiento de
unanillo
interior,
debió
hacer
el
equivalente a una llamada al sistema
anillos estaba mas presente duranteel
tiempo de ejecución y era reforzado por el
hardware. La ventaja delmecanismo de
anillos es su facilidad de extensión para
estructurar subsistemasdel usuario.
Mientras que el esquema de capas de THE
era en realidad un apoyo al diseño,debido
a que todas las partes del sistema estaban
ligadas entre si en un soloprograma
objeto, en MULTICS, el mecanismo de
5
El operador
4
Programas del usuario
3
Control de entrada/salida
2
Comunicación operador-proceso
1
Administración de la memoria y del disco
0
Asignación del procesador y multiprogramación
Figura . Estructura del sistema operativo.
22
Operación de Sistema Operativo Multiusuario
Estructura cliente – servidor
Una tendencia de los sistemas operativos
modernos es la de explotar la idea
demover el código a capas superiores y
eliminar la mayor parte posible delsistema
operativo para mantener un núcleo
mínimo. El punto de vista usual esel de
implantar la mayoría de las funciones del
sistema operativo en losprocesos del
usuario. Para solicitar un servicio, como la
lectura de un bloquede cierto archivo, un
proceso del usuario (denominado proceso
cliente) envía lasolicitud a un proceso
servidor, que realiza entonces el trabajo y
regresa larespuesta. En este modelo, que
se muestra en la figura 4, lo único que
hace
elnúcleo
es
controlar
la
comunicación entre los clientes y los
servidores. Alseparar el sistema operativo
en partes, cada una de ellas controla una
facetadel sistema, como el servicio a
archivos, servicios a procesos, servicio
aterminales o servicio a la memoria, cada
parte
es
pequeña
y
controlable.
Ademáscomo todos los servidores se
ejecutan como procesos en modo usuario
y no en modonúcleo, no tienen acceso
directo al hardware. En consecuencia si
hay un erroren el servidor de archivos,
éste puede fallar, pero esto no afectará
engeneral a toda la máquina.
(Para ver el gráfico faltante haga click en
el menú superior "BajarTrabajo")
Figura 4. El modelo Cliente-servidor.Otra
de las ventajas del modelo cliente-servidor
es su capacidad de adaptaciónpara su uso
en los sistemas distribuidos (figura 5).
Si un cliente se comunica con un servidor
mediante mensajes, el cliente nonecesita
Operación de Sistema Operativo Multiusuario
saber si el mensaje se maneja en forma
local, en su máquina, o si seenvía por
medio de una red a un servidor en una
máquina remota. En lo querespecta al
cliente, lo mismo ocurre en ambos casos:
se envió una solicitud yse recibió una
respuesta.Para ver el gráfico faltante haga
click en el menú superior "BajarTrabajo")
Figura 5. El modelo cliente-servidor en un
sistema distribuido.
• Funciones y características de los
sistemas operativos.
Funciones de los sistemas operativos.
1.- Aceptar todos los trabajos
conservarlos hasta su finalización.
y
2.- Interpretación de comandos: Interpreta
los
comandos
que
permiten
al
usuariocomunicarse con el ordenador.
3.- Control de recursos: Coordina y
manipula el hardware de la computadora,
comola memoria, las impresoras, las
unidades de disco, el teclado o el Mouse.
4.- Manejo de dispositivos de E/S:
Organiza
los
archivos
en
diversosdispositivos de almacenamiento,
como discos flexibles, discos duros,
discoscompactos o cintas magnéticas.
5.- Manejo de errores: Gestiona los errores
de hardware y la pérdida de datos.
6.- Secuencia de tareas: El sistema
operativo debe administrar la manera en
quese reparten los procesos. Definir el
23
orden. (Quien
después).
va
primero
y
quien
•
7.- Protección: Evitar que las acciones de
un usuario afecten el trabajo queesta
realizando otro usuario.
8.- Multiacceso: Un usuario se puede
conectar a otra máquina sin tener
queestar cerca de ella.
9.- Contabilidad de recursos: establece el
costo que se le cobra a un usuariopor
utilizar determinados recursos.
Características de los sistemas operativos.
En general, se puede decir que un Sistema
Operativo
tiene
las
siguientescaracterísticas:
•
•
•
•
Conveniencia.
Un
Sistema
Operativo hace más conveniente el
uso de una computadora.
Eficiencia. Un Sistema Operativo
permite que los recursos de la
computadora se usen de la manera
más eficiente posible.
Habilidad para evolucionar. Un
Sistema
Operativo
deberá
construirse de manera que permita
el desarrollo, prueba o introducción
efectiva de nuevas funciones del
sistema sin interferir con el servicio.
Encargado de administrar el
hardware. El Sistema Operativo se
encarga de manejar de una mejor
manera
los
recursos
de
la
computadora en cuanto a hardware
se refiere, esto es, asignar a cada
proceso una parte del procesador
para poder compartir los recursos.
•
•
•
•
Relacionar dispositivos (gestionar a
través del kernel). El Sistema
Operativo se debe encargar de
comunicar
a
los
dispositivos
periféricos, cuando el usuario así lo
requiera.
Organizar datos para acceso rápido
y seguro.
Manejar las comunicaciones en red.
El Sistema Operativo permite al
usuario manejar con alta facilidad
todo lo referente a la instalación y
uso de las redes de computadoras.
Procesamiento por bytes de flujo a
través del bus de datos.
Facilitar las entradas y salidas. Un
Sistema Operativo debe hacerle
fácil al usuario el acceso y manejo
de
los
dispositivos
de
Entrada/Salida de la computadora.
•
Definición de sistema operativo
de red
Los
sistemas
operativos
siguen
evolucionando. Los sistemas operativos
distribuidos están diseñados para su uso
en un grupo de ordenadores conectados
pero independientes que comparten
recursos. En un sistema operativo
distribuido, un proceso puede ejecutarse
en cualquier ordenador de la red
(normalmente, un ordenador inactivo en
ese momento) para aumentar el
rendimiento de ese proceso.
Modalidades de trabajo de los sistemas
operativos.
Sistemas operativos por lotes.
24
Operación de Sistema Operativo Multiusuario
La secuencia por lotes o procesamiento
por lotes en microcomputadoras, es
laejecución de una lista de comandos del
sistema
operativo
uno
tras
otro
sinintervención del usuario.
•
En los ordenadores más grandes el
proceso de recogida de programas y
deconjuntos de datos de los usuarios, la
ejecución de uno o unos pocos cada vez
yla entrega de los recursos a los usuarios.
Procesamiento por lotes tambiénpuede
referirse al proceso de almacenar
transacciones
durante
un
cierto
lapsoantes de su envío a un archivo
maestro, por lo general una operación
separada que se efectúa durante la noche
•
Los sistemas operativos por lotes (batch),
en los que los programas erantratados por
grupos (lote) en ves de individualmente.
La función de estossistemas operativos
consistía en cargar en memoria un
programa de la cinta yejecutarlo. Al final
este, se realizaba el salto a una dirección
de memoriadesde donde reasumía el
control del sistema operativo que cargaba
el siguienteprograma y lo ejecutaba. De
esta manera el tiempo entre un trabajo y
el
otrodisminuía
considerablemente.
(Para ver el gráfico faltante haga click en
el menú superior "BajarTrabajo")
•
•
•
•
•
•
•
•
Requiere que el programa, datos y
órdenes al sistema sean remitidos
todos juntos en forma de lote.
Permiten
poca
o
ninguna
interacción usuario/programa en
ejecución.
Mayor potencial de utilización de
recursos que procesamiento serial
simple en sistemas multiusuarios.
No conveniente para desarrollo de
programas por bajo tiempo de
retorno y depuración fuera de línea.
Conveniente para programas de
largos tiempos de ejecución (Ej.,
análisis estadísticos, nóminas de
personal, etc.)
Se
encuentra
en
muchos
computadores
personales
combinados con procesamiento
serial.
Planificación
del
procesador
sencilla, típicamente procesados en
orden de llegada.
Planificación de memoria sencilla,
generalmente se divide en dos:
parte
residente
del
S.O.
y
programas transitorios.
No requieren gestión crítica de
dispositivos en el tiempo.
Suelen
proporcionar
gestión
sencilla de manejo de archivos: se
requiere poca protección y ningún
control de concurrencia para el
acceso.
Sistema de procesamiento por lotes
Algunas otras características con que
cuentan los Sistemas Operativos por
lotesson:
Sistemas
operativos
compartido.
de
tiempo
El tiempo compartido en ordenadores o
computadoras consiste en el uso de
unsistema por más de una persona al
Operación de Sistema Operativo Multiusuario
25
mismo tiempo. El tiempo compartido
ejecutaprogramas separados de forma
concurrente, intercambiando porciones de
tiempoasignadas
a
cada
programa
(usuario). En este aspecto, es similar a la
capacidadde multitareas que es común en
la mayoría de los microordenadores o
lasmicrocomputadoras. Sin embargo el
tiempo
compartido
se
asocia
generalmente conel acceso de varios
usuarios a computadoras más grandes y a
organizaciones deservicios, mientras que
la multitarea relacionada con las
microcomputadorasimplica la realización
de múltiples tareas por un solo usuario.
Los principales recursos del sistema, el
procesador, la memoria, dispositivos
deE/S, son continuamente utilizados entre
los diversos usuarios, dando a cadausuario
la ilusión de que tiene el sistema dedicado
para
sí
mismo.
Esto
traecomo
consecuencia una gran carga de trabajo al
Sistema Operativo, principalmenteen la
administración de memoria principal y
secundaria.
Características de los Sistemas Operativos
de tiempo compartido:
•
•
•
•
26
Populares
representantes
de
sistemas
multiprogramados
multiusuario, Ej.: sistemas de
diseño asistido por computador,
procesamiento de texto, etc.
Dan la ilusión de que cada usuario
tiene una máquina para sí.
La mayoría utilizan algoritmo de
reparto circular.
Los programas se ejecutan con
prioridad
rotatoria
que
se
incrementa con la espera y
•
•
•
disminuye después de concedido el
servicio.
Evitan monopolización del sistema
asignando tiempos de procesador
(time slot).
Gestión de memoria: proporciona
protección a programas residentes.
Gestión
de
archivo: debe
proporcionar protección y control
de acceso debido a que pueden
existir múltiples usuarios accesando
un mismo archivo.
Sistemas operativos de tiempo real.
Un sistema operativo en tiempo real
procesa
las
instrucciones
recibidas
alinstante, y una vez que han sido
procesadas muestra el resultado. Este
tipotiene relación con los sistemas
operativos monousuarios, ya que existe un
solooperador y no necesita compartir el
procesador entre varias solicitudes.
Su característica principal
es dar
respuestas rápidas; por ejemplo en un
casode peligro se necesitarían respuestas
inmediatas para evitar una catástrofe.
Los Sistemas Operativos de tiempo real,
cuentan con las siguientes características:
•
•
Se dan en entornos en donde
deben ser aceptados y procesados
gran cantidad de sucesos, la
mayoría
externos
al
sistema
computacional, en breve tiempo o
dentro de ciertos plazos.
Se utilizan en control industrial,
conmutación telefónica, control de
vuelo, simulaciones en tiempo real.,
aplicaciones militares, etc.
Operación de Sistema Operativo Multiusuario
•
•
•
•
•
•
•
•
•
Su objetivo es proporcionar rápidos
tiempos de respuesta.
Procesa ráfagas de miles de
interrupciones por segundo sin
perder un solo suceso.
Un proceso se activa tras ocurrencia
de suceso, mediante interrupción.
Un proceso de mayor prioridad
expropia recursos.
Por tanto generalmente se utiliza
planificación expropiativa basada
en prioridades.
Gestión
de
memoria
menos
exigente que tiempo compartido,
usualmente procesos son residentes
permanentes en memoria.
Población de procesos estática en
gran medida.
Poco movimiento de programas
entre almacenamiento secundario y
memoria.
La gestión de archivos se orienta
más a velocidad de acceso que a
utilización eficiente del recurso.
Sistemas operativos de red.
La principal función de un sistema
operativo de red es ofrecer un
mecanismopara transferir archivos de una
máquina a otra. En este entorno, cada
instalaciónmantiene su propio sistema de
archivos local y si un usuario de la
instalaciónA quiere acceder a un archivo
en la instalación B, hay que copiar
explícitamenteel
archivo
de
una
instalación a otra.
Internet proporciona un mecanismo para
estas transferencias, a través delprograma
Operación de Sistema Operativo Multiusuario
protocolo de transferencias de archivos
FTP (File Transfer Protocol).
Suponga que un usuario quiere copiar un
archivo A1, que reside en la instalaciónB, a
un archivo A2 en la instalación local A.
Primero, el usuario debe invocarel
programa FTP, el cual solicita al usuario la
información siguiente:
a) El nombre de la instalación a partir de
la cual se efectuará latransferencia del
archivo (es decir la instalación
b) La información de acceso, que verifica
que el usuario tiene los privilegiosde
acceso apropiados en la instalación
B Una vez efectuada esta comprobación,
el usuario puede copiar el archivo A1 de
Ba A2 en A, ejecutando "get A1 to A2"
En este esquema, la ubicación del archivo
no es transparente para el usuario; tiene
que saber exactamente donde esta cada
archivo.
Además
los
archivos
no
secomparten realmente, porque un
usuario solo puede copiar un archivo de
unainstalación a otra. Por lo tanto pueden
existir varias copias del mismoarchivo, lo
que representa un desperdicio de espacio.
Así mismo, si semodifican, estas copias no
serán consistentes.
Los Sistemas Operativos de red son
aquellos sistemas que mantienen a dos o
máscomputadoras unidas a través de
algún medio de comunicación (físico o
no), con el objetivo primordial de poder
compartir los diferentes recursos y la
información del sistema.
27
El primer Sistema Operativo de red estaba
enfocado a equipos con un procesador
Motorola 68000, pasando posteriormente
a procesadores Intel como Novell
Netware.
Los Sistemas Operativos de red más
ampliamente
usados
son:
Novell
Netware,Personal Netware, LAN Manager,
Windows NT Server, UNIX, LANtastic.
Entre los diferentes Sistemas Operativos
distribuidos
que
existen
tenemos
lossiguientes: Sprite, Solaris-MC, Mach,
Chorus, Spring, Amoeba, Taos, etc.
Características de los Sistemas Operativos
distribuidos:
•
Sistemas operativos distribuidos.
•
En un sistema operativo distribuido los
usuarios
pueden
acceder
a
recursosremotos de la misma manera en
que lo hacen para los recursos locales. La
migraciónde datos y procesos de una
instalación a otra queda bajo el control
del
sistemaoperativo
distribuido.
Permiten distribuir trabajos, tareas o
procesos,
entre
un
conjunto
deprocesadores. Puede ser que este
conjunto de procesadores esté en un
equipo oen diferentes, en este caso es
transparente para el usuario. Existen
dosesquemas básicos de éstos. Un sistema
fuertemente
acoplado
es
aquel
quecomparte la memoria y un reloj global,
cuyos tiempos de acceso son similarespara
todos los procesadores. En un sistema
débilmente acoplado los procesadoresno
comparten ni memoria ni reloj, ya que
cada uno cuenta con su memoria local.
•
•
Los sistemas distribuidos deben de ser
muy
confiables,
ya
que
si
un
componentedel sistema se descompone
otro componente debe de ser capaz de
reemplazarlo.
28
Colección de sistemas autónomos
capaces
de
comunicación
y
cooperación
mediante
interconexiones
hardware
y
software.
Proporciona
abstracción
de
máquina virtual a los usuarios.
Objetivo clave es la transparencia.
Generalmente proporcionan medios
para la compartición global de
recursos.
Servicios añadidos: denominación global,
sistemas
de
archivos
distribuidos,
facilidades para distribución de cálculos (a
través de comunicación deprocesos
internodos, llamadas a procedimientos
remotos, etc.).
Sistemas operativos multiprocesadores.
En los sistemas multiprocesador, los
procesadores comparten la memoria y
elreloj. Se incrementa la capacidad de
procesamiento
y
la
confiabilidad,
soneconómicos.
•
•
Multiprocesamiento simétrico: Cada
procesador ejecuta una copia del
sistema operativo.
Multiprocesamiento
asimétrico:
Cada procesador tiene asignado
Operación de Sistema Operativo Multiusuario
una tarea específica, existe un
procesador master que asigna
tareas a los procesadores esclavos.
Multiproceso: Las computadoras que
tienen
más
de
un
CPU
son
llamadasmultiproceso.
Un
sistema
operativo multiproceso coordina las
operaciones
de
lascomputadoras
multiprocesadores. Ya que cada CPU en
una computadora demultiproceso puede
estar ejecutando una instrucción, el otro
procesador quedaliberado para procesar
otras instrucciones simultáneamente.
Al usar una computadora con capacidades
de
multiproceso
incrementamos
suvelocidad de respuesta y procesos. Casi
todas
las
computadoras
que
tienencapacidad de multiproceso ofrecen
una gran ventaja.
Los
primeros
Sistemas
Operativos
Multiproceso realizaban lo que se conoce
comoMultiproceso asimétrico. Una CPU
principal retiene el control global de
lacomputadora, así como el de los otros
procesadores. Esto fue un primer
pasohacia el multiproceso pero no fue la
dirección ideal a seguir ya que la
CPUprincipal podía convertirse en un
cuello de botella.
Multiproceso simétrico. En un sistema
multiproceso simétrico, no existe unaCPU
controladora única. La barrera a vencer al
implementar el multiproceso simétricoes
que los SO tienen que ser rediseñados o
diseñados desde el principio paratrabajar
en un ambiente multiproceso. Las
extensiones
de
UNIX,
que
soportanmultiproceso asimétrico ya están
disponibles y las extensiones simétricas
Operación de Sistema Operativo Multiusuario
seestán haciendo disponibles. Windows
NT de Microsoft soporta multiproceso
simétrico.
•
Definición de multitartea
Todos los Sistemas Operativos modernos
son multitarea y pueden ejecutar varios
procesos simultáneamente. En la mayoría
de los ordenadores sólo hay una UCP; un
Sistema Operativo multitarea crea la
ilusión de que varios procesos se ejecutan
simultáneamente en la UCP. El mecanismo
que se emplea más a menudo para lograr
esta ilusión es la multitarea por
segmentación de tiempos, en la que cada
proceso se ejecuta individualmente
durante
un
periodo
de
tiempo
determinado. Si el proceso no finaliza en
el tiempo asignado, se suspende y se
ejecuta otro proceso. Este intercambio de
procesos se denomina conmutación de
contexto. El sistema operativo se encarga
de controlar el estado de los procesos
suspendidos. También cuenta con un
mecanismo llamado planificador que
determina el siguiente proceso que debe
ejecutarse. El planificador ejecuta los
procesos basándose en su prioridad para
minimizar el retraso percibido por el
usuario. Los procesos parecen efectuarse
simultáneamente por la alta velocidad del
cambio de contexto.
•
Tipos de Sistemas operativos y
proveedores más comunes.
MS-DOS
MS-DOS, acrónimo de Microsoft Disk
Operating System (sistema operativo de
29
disco de Microsoft). Como otros sistemas
operativos, el sistema MS-DOS supervisa
las operaciones de entrada y salida del
disco y controla el adaptador de vídeo, el
teclado y muchas funciones internas
relacionadas con la ejecución de
programas y el mantenimiento de
archivos. El MS-DOS es un sistema
operativo monotarea y monousuario con
una interfaz de línea de comandos.
Windows NT Server
Windows NT Server es un sistema
operativo para servidores, ampliable e
independiente de la plataforma. Puede
ejecutarse en sistemas basados en
procesadores Intel x86, RISC y DEC Alpha,
ofreciendo al usuario mayor libertad a la
hora de elegir sus sistemas informáticos.
Es ampliable a sistemas de multiproceso
simétrico, lo que permite incorporar
procesadores adicionales cuando se desee
aumentar el rendimiento.
Internamente posee una arquitectura de
32 bits. Su modelo de memoria lineal de
32 bits elimina los segmentos de memoria
de 64 KB y la barrera de 640 KB de MSDOS.
Posee
múltiples
threads
(subprocesos) de ejecución, lo que permite
utilizar aplicaciones más potentes. La
protección de la memoria garantiza la
estabilidad mediante la asignación de
áreas de memoria independientes para el
sistema operativo y para las aplicaciones,
con el fin de impedir la alteración de los
datos. La capacidad de multitarea de
asignación prioritaria permite al sistema
operativo asignar tiempo de proceso a
30
cada aplicación de forma eficaz.
Windows NT Server incluye, asimismo,
diversas funciones de red, que se
describen brevemente en las siguientes
secciones y con más detalle en capítulos
posteriores de este manual.
Windows 98
Microsoft® Windows® 98 hace que el
ordenador funcione mejor integrando
Internet
y
ofreciendo
un
mejor
rendimiento del sistema y un sistema de
diagnósticos y mantenimiento más
sencillo. Windows 98 es más divertido
gracias a su soporte de las últimas
tecnologías de gráficos, sonido y
multimedia, su capacidad para añadir y
quitar periféricos, y la convergencia de la
televisión y el ordenador en el hogar.
Este nuevo sistema operativo se basa en
las grandes novedades introducidas por
Windows 95. Al mismo tiempo, Windows
98 mantiene la compatibilidad con otras
aplicaciones y tecnologías basadas en
versiones
anteriores
de
Windows.
Las mejoras introducidas en Windows 98
...
•
•
•
•
Te ofrecerán la mejor forma de
Explorar Internet
Te acercarán al Mundo de los
Ordenadores
Te harán los Ordenadores más
Entretenidos
Te
permitirán
descubrir
la
Capacidad del PC y los Periféricos
Las nuevas características de Microsoft®
Windows® 98 ofrecen sacar mucho más
Operación de Sistema Operativo Multiusuario
partido del PC. Los programas se ejecutan
más rápido, pudiendo ganar una media de
un 25% o más espacio en disco, Internet
pasa a ser una parte muy importante en el
ordenador, dando un paso de gigante en
la entrega de contenido multimedia de
alta calidad.
Windows XP
La nueva versión de Windows supone un
cambio importante respecto a la versión
anterior.
Desde que apareció Windows95 las
sucesivas versiones han sido una evolución
de la original, sin embargo en esta ocasión
se ha producido un cambio de mayor
envergadura ya que se ha cambiado el
núcleo o Kernel del sistema operativo.
Aunque de cara al usuario no se noten
cambios radicales, se puede decir que
WindowsXP no es solo una versión más de
Windows sino que supone practicamente
un nuevo sistema.
Hasta ahora Microsoft disponía de dos
sistemas operativos diferentes, para el
entorno personal o doméstico tenía
Windows98 y para el entorno profesional (
o de negocios) el Windows NT/2000.
Con
WidowsXP
se
produce
una
convergencia entre ambas versiones ya
que se ha partido del núcleo del sistema
de Windows 2000 para crear WindowsXP
y a partir de ahí se han realizado algunos
retoques para diferenciar dos versiones de
WindowsXP, una para el ámbito personal
llamada WindowsXP Home Edition, y otra
Operación de Sistema Operativo Multiusuario
para el ámbito profesional denominada
WindowsXP Professional.
El principal beneficio de esta estrategia
para los usuarios domésticos va a ser que
WindowsXP ha adquirido la robusted y
estabilidad de WindowsNT/2000, esto
debe suponer que WindowsXP se quedará
menos veces bloqueado, habrá menos
ocasiones en la que tengamos que
reiniciar el sistema como consecuencia de
un error.
La mejora para los usuarios profesionales
se debe a que WindowsXP tiene mayor
compatibilidad con el hardware de la que
gozaba WindowsNT/2000.
WindowsXP dispone de un nuevo sistema
de usuarios completamente diferente
respecto a Windows98. Este nuevo
sistema ha sido heredado de Windows
NT/2000.
Ahora se pueden definir varios usuarios
con perfiles independientes. Esto quiere
decir que cada usuario puede tener
permisos diferentes que le permitirán
realizar unas determinadas tareas. Cada
usuario
tendrá
una
carpeta
Mis
documentos propia que podrá estar
protegida por contraseña, un menú de
inicio diferente. También se dispone de
una carpeta a la que tienen acceso todos
los usuarios y donde se pueden colocar los
documentos que se quieren compartir con
los demás usuarios.
Por ejemplo, se puede definir un usuario
tipo Padre, que tenga acceso a todo
Internet y usuario tipo Hijo que tenga
prohibido el acceso a determinadas
páginas violentas o de sexo.
31
Para pasar de un usuario a otro no es
necesario apagar el ordenador, ni siquiera
que un usuario cierre lo que estaba
haciendo, simplemente hay que iniciar
una nueva sesión con otro usuario, más
tarde podremos volver a la sesión del
primer usuario que permacerá en el
mismo estado que la dejo. El sistema se
encarga de manejar a los distintos
usuarios activos y sin interferencias.
Windows 95
Con este sistema operativo Microsoft se
ha protesto superar algunas de las
limitaciones del MS-DOS. Parte del código
de Windows 95 esta implementado en 16
bits y parte en 32 bits. Uno de los motivos
por los cuales se ha hecho así, ha sido
para conservar su compatibilidad. Con
Windows
95
podemos
ejecutar
aplicaciones de Windows 3.1 ó 3.1 I, MSDOS y obviamente las nuevas aplicaciones
diseñadas específicamente para este
sistema operativo.
Entre las novedades que ofreceWindows
95 cabe destacar el sistema de ficheros de
32 bits, gracias al cual rodemos emplear
nombres de ficheros de hasta 256
caracteres (VFAT y CDFS), debido a que se
trata de un sistema operativo de modo
protegido, desaparece la barrera de los
640K, hemos de tener presente que
aunque la mayor parte de Windows 3.1 es
un sistema de modo protegido, este se
está ejecutando sobre un sistema
operativo que trabaja en modo real.
32
La interfaz de Windows 95 también ha
sido mejorada. El primer gran cambio que
veremos al empezar a trabajar será la
desaparición
del
Administrador
de
Programas. Ahora tenemos un escritorio al
estilo del Sistema 7 de los Macintosh o
NeXTStep.
Viene a sustituir al sistema operativo DOS
y a su predecesor Windows 3.1. Frente al
DOS tiene tres ventajas importantes:
En primer lugar toda la información
presentada al usuario es gráfica, mientras
que DOS trabaja con comandos en modo
texto formados por órdenes difíciles de
recordar.
En segundo lugar, Windows 95 define una
forma homogénea de utilizar los recursos
de la computadora, lo cual permite
compartir datos entre las distintas
aplicaciones, así como utilizar con
facilidad los elementos hardware ya
instalados.
En tercer lugar Windows 95 es un sistema
operativo que permite ejecutar vanas
aplicaciones a la vez (multitarea), mientras
que en DOS sólo se puede ejecutar un
programa en cada momento.
¿Cómo funciona Windows 95?
Windows 95 es un sistema operativo, y
como tal una de las principales funciones
es facilitar la comunicación entre el
usuario y el ordenador, simplificando la
utilización de los programas informáticos.
En toda comunicación entre dos partes,
tiene que haber métodos para que cada
una de estas partes pueda emitir la
Operación de Sistema Operativo Multiusuario
información.
En
el
caso
de
la
comunicación entre el usuario y Windows
95 se utilizan las ventanas para que
Windows envíe información al usuario y
los controles para que el usuario envíe
información a Windows. Una ventana
muestra al usuario información de
cualquier tipo, ya sea texto o gráfico,
mientras que un control es un elemento
incluido en una ventana que permite al
usuario realizar operaciones, por ejemplo,
un botón para seleccionar algo, una lista
de valores, un menú con diferentes
opciones, una caja para introducir texto,
etc.
SISTEMAS
OPERATIVOS
MULTIPROGRAMACIÓN
DE
El
sistema
operativo
de
multiprogramación debe de ser diseñado
para un delicado truco de juego de
manos. Debe asignar recursos tales como
ciclos CPU y memoria, además de asignar
prioridades para que cada programa
reciba la atención adecuada. A los
trabajos urgentes se les debe conceder
más grandes y más frecuentes periodos de
tiempo de CPU sin descuidar los trabajos
menores. También los trabajos difieren en
sus requerimientos. Los programas de
procesamiento numérico tienden a ser
CPU intensivos, mientras que muchas
aplicaciones de negocios son mucha E/S,
con relativamente poca computación. El
sistema operativo necesita manejar
combinaciones de tales trabajos lo más
eficiente posible.
Operación de Sistema Operativo Multiusuario
Un programa que espera la entrada del
usuario, por ejemplo puede suspenderse,
independientemente de la prioridad.
Recuerde que entre cada uno de sus
teclazos tentativos, su CPU es capaz de
realizar muchos millones de ciclos útiles.
Al momento de ejecutar un programa, se
debe tener copia de todo o parte de su
código objeto (también conocido como
código de máquina, codigo binario o
imagen binaria ejecutable), cargada en el
RAM (Memoria de Acceso Aleatorio,
también
conocida
como
memoria
primaria), de tal manera que el CPU pueda
acceder a las instrucciones del programa.
Por esta razón el RAM es un recurso
importante que el sistema operativo
necesita asignar y manejar con economía.
En cualquier momento particular, su RAM
conservará no solo el código objeto del
programa anterior, sino también un
código bjeto para un cierto número de
programas suspendidos, junto con varias
áreas de datos, conservando los resultados
intermedios de estos programas. La mayor
parte sino del todo el Kernel del sistema
operativo, también debe recidir en el
RAM. Hasta donde le concierne al CPU, el
Kernel es tan solo un conjunto de
programas que se necesita ejecutar sobre
demanda. Puesto que l Kernel se hace
cargo de ellos, por supuesto no solo es
otro programa: mantiene sus propias
prioridades para evitar que los programas
del usuario lo quiten del escenario.
Cuántos programas pueden coexistir en la
memoria primaria depende de la cantidad
de RAM y del tamaño del código objeto.
¡Todavía otra molestia para el pobre
sistema operativo!
33
Algunos programas suspendidos y sus
datos (o las partes seleccionadas de éstos)
se pueden extraer del RAM hacia el disco,
a fin de hacer espacio para el siguiente
programa. Después, cuando el sistema
operativo los selecciona para ejecución,
los programas extraídos se pueden
transferir desde el disco hasta el RAM. Se
ha dedicado mucha investigación al arte
de planificar y extraer, puesto que el
efecto inmediato de la extracción excesiva
es la degradación de la ejecución. Las
operaciones de I-O del disco son
relativamente mucho más lentas que la
escfritura y lectura del RAM. Y recuerde
que el CPU mismo se ve involucrado en la
actividad de extracción un caso extremo
conocido como trashing puede llevar al
sistema a un paso de tortuga: así el
sistema se ocupa tanto con la extracción
hacia adentro y hacia fuera que poco o
ningún procesamiento productivo se
realiza.
Los detalles internos de esta gimnasia se
ocutan al usuario común, pero se tiene un
sentimiento general que genera alguna
simpatía por la genta que diseña a los
sistemas operativos. También en términos
prácticos explica el viejo adagio que usted
nunca tiene demasiado RAM.
La situación se complica, además por la
necesidad de recordar cuáles programas
están suspendidos, cuándo y por qué
razón. El sistema operativo necesita
almacenar el contexto de cada programa
suspendido, de tal manera que la
ejecución se pueda continuar en el punto
correcto, con los mismos valores
prevalecientes en el momento de la
34
suspensión. Los contextos en realidad son
fotografías del contador del programa y
los registros del CPU; el sistema operativo
guarda los contextos y los restaura
regularemente, en la medida en que sec
conmutan los programas.
1.1.2 CARACTERISTICAS DE UNIX.
•
o
Entorno de UNIX
Antecedentes
El Sistema Operativo Unix fué creado a
finales de la década de los 60 sobre la
base de varios trabajos realizados
conjuntamente por el MIT y Laboratorios
BELL. Dichos trabajos (proyecto MULTICS)
iban encaminados a la creación de un
macrosistema de computación que diese
servicio a miles de usuarios. Si bien el
proyecto fracasó, posiblemente por
intentar abarcar demasiado contando con
unos elementos hardware limitados en ésa
época , influyó; decisivamente sobre la
evolución de los sistemas informáticos
posteriores.
Un antiguo
proyecto (Ken
su
cuenta
monousuario
principal de
jerárquico.
componente de dicho
Thompson) desarrolló por
un
sistema
operativo
con
la
característica
un sistema de archivos
El sistema encontró muchos entusiastas y
se hizo portable al reescribirse casi
íntegramente en lenguaje «C» , y se
suministró en códi
go fuente a las universidades como objeto
de formación. Así, la universidad de
California en Berkeley retocó dicho
Operación de Sistema Operativo Multiusuario
sistema
(fundamentalmente,
comunicaciones y diversas utilidades como
el editor «vi») y liberó lo que luego sería
el BSD , uno de los dos «dialectos»
principales del UNIX.
o
Organismos de estandarización
Actualmente, existen dos corrientes las
cuales cada vez poseen más elementos
comunes : la BSD 4.2 y ls System V R 4.
El S.O. Unix se encarga de controlar y
asignar los recursos físicos del ordenador
(hardware ) y de planificar tareas .
Podemos establecer tres elementos
principales dentro de éste S.O. :
El núcleo del sistema operativo ( kernel ) ,
el escalón más bajo que realiza tareas
tales como el acceso a los dispositivos
(terminales, discos, cintas..).
El intérprete de comandos ( shell ) es el
interfase básico que ofrece UNIX de cara
al usuario. Además de ejecutar otros
programas , posee un lenguaje propio así
como
numerosas
características
adicionales que se estudiarán en un
capítulo posterior.
Utilidades «de fabrica» ; normalmente se
trata de programas ejecutables que vienen
junto con el Sistema Operativo; algunas
de ellas son:
Operación de Sistema Operativo Multiusuario
a)
Compiladores : C , assembler y en
algunos casos Fortran 77 y C++.
b) Herramientas de edición : Editores
(vi,ex) , formateadores (troff) , filtros
...
c) Soporte
de
comunicaciones
:
Herramientas basadas en TCP/IP
(telnet,ftp ...)
d) Programas de Administración del
Sistema (sysadm , sa , va ..... )
e) Utilidades diversas y juegos (éste
último se suele instalar aparte).
Creado por un equipo del Laboratorio Bell
de la AT&T a principios de los 70: Ken
Thompson y Dennis Ritchie basado en el
proyecto MULTICS, que había quedado
abandonado, después de una primera
versión, se reescribió en un lenguaje de
alto nivel creado para el proyecto (C). En
1976 se difunden gratuitamente los
fuentes de UNIX por las universidades de
EUA (Version 6) 1978: Versión 7 1978-8X:
Versión de Berkeley (BSD) - memoria
virtual, utilidades, soporte de redes (TCP,
sockets) 1983: System V 198X: formación
de consorcios para fijación de estándares:
XPG, OSF, etc. Normas POSIX. IBM y DEC
empiezan a emplear UNIX 199X:
35
ESQUEMA DE UN SISTEMA UNIX
•
Interfases
o
Kernel
En el corazón de UNIX se encuentra un
programa de mente maestra llamdo
Kernel. El Kernel UNIX interctua con su
computdora y los periféricos (disquetes,
impresoras , terminales, y semejantes), al
asignar recursos y planificar procesos
detrás de la escena. Cuando UNIX se
transfiere desde un sistema otro-, esto es
se reescribe para correr sobre una
computadora diferente-, el kernel se
modifica para enfrentarse con el nuevo
CPU. A diferencia de la PC-DOS, la cual
está
ligada
una
familia
de
microprocesadores Intel, Unix puede
correr sobre cualquier computadora que
tenga el kernel apropiado. El mismo
programa Kernel está escrito, en su mayor
parte en un lenguaje de programación de
alto nivel llamado C. Esto reduce el
esfuerzo que se necesita para acceder
UNIX a otros sistemas y explica la afamada
ubicuidad de UNIX.
36
En términos simples, el kernel lo protege
del hardware de la computadora y el Shell
lo proteje del Kernel. Sí, se puede también
buscar protección del Shell. Existen
muchas aplicaciones UNIX e interfaces del
usuario que ocultan el shell y su indicador,
además de ofrecerles menús, ventaanas y
otros además de ofrecerle dispositivos
agradables, con los cuales puede
seleccionar comandos y
correr sus
trabajos.
o
FileSystem
Los archivos de computadora se pueden
pensar simplemente como un lugar para
almacenar datos y programas para su
disco. Los archivos de disco también
tienen tabuladores indicadores conocidos
como nombres de archivo. Los grupos de
archivos se almacenan en directorios, los
cuales también tienen nombres. Unix
utiliza estos nombres de directorio y
archivo cuando se localiza un archivo y se
accesa su contenido.
Operación de Sistema Operativo Multiusuario
Un servicio mayor que ofrece UNIX (y la
mayoría de otros sistemas operativos) es
manejar archivos por nombre.
archivo objetivo, obtiene un mensaje
filename:not found.
o
Shell
El programa de aplicación quizá. desee
acceder un archivo de datos para
examinar o actualizar su contenido. Los
datos o archivos de texto por lo general
contienen
caracteres
visibles
e
imprimibles, codificados en formato
ASCII.comandos que exibirán e imprimirán
el contenido de un archivo tipo texto, par
leer un secuencia de caracteres desde el
disco. Todavía hay mas comandos que le
permiten escribir en el disco para crear y
modificar archivos tipo texto. Puede
copiar y renombrar archivos o agregar un
archivo a otro. Tambié.en puede, borrar o
eliminr todos los archivos con suma
facilidad.
FUNCIONES DEL INTÉRPRETE DE
ÓRDENES
Los sistemas multiusuarios necesitan
ofrecer salvaguardias para impedir que
otros usuarios lean y/o borren sus archivos
sin la debida autorización. Unix tiene un
esquema elaborado de propietarios de
archivos y permisos, a través de los cuales
los usuarios y los grupos de usuarios
puedan proteger sus archivos. Cada
archivo en el sistema lleva permisos de
lectura, escritura y ejecución en los que se
dictamina quién puede hacer qué con un
archivo.
Soporte de comunicaciones: Herramientas
basadas en TCP/IP (telnet,ftp ...)
Los archivos binarios tiene un código de
programa, Unix necesita localizarlo por su
nombre. Cuando introduce el comando
date, por ejemplo, UNIX busca un archivo
de programa llamado date; busca en
varios lugares y si falla en encontrar el
Operación de Sistema Operativo Multiusuario
El intérprete de comandos ( shell ) es el
interfase básico que ofrece UNIX de cara
al usuario. Además de ejecutar otros
programas, posee un lenguaje propio así
como numerosas características.
Utilidades «de fábrica»; normalmente se
trata de programas ejecutables que vienen
junto con el Sistema Operativo; algunas
de ellas son:
Compiladores: C, assembler y en algunos
casos Fortran 77 y C++.
Herramientas de edición: Editores (vi,ex),
formateadores (troff), filtros ...
Programas de Administración del Sistema
(sysadm, sa, va..... )
Utilidades diversas y juegos ( éste último
se suele instalar aparte ).
Modos de invocar una orden
Lo primero que la mayor parte de los
usuarios aprenden del editor VI es que
cuenta con dos modos: comando e
insertar. El modo comando permite
introducir órdenes para manipular el
texto. Normalmente éstas órdenes no
tienen más que uno o dos caracteres,
pudiendo así introducirse con pocas
pulsaciones. El modo insertar hace que
37
todo lo que se pulse en el teclado se
incorpore al archivo.
VI se inicia en el modo comando. Hay
varias formas de pasar al modo insertar.
La más común consiste en teclear a o i.
Más abajo se describen ambas órdenes.
Una vez se encuentre en el modo insertar,
podrá salir de él pulsando la tecla escape
(si su terminal no tiene esa tecla, debería
funcionar ^[ ). Puede pulsar escape dos
veces seguidas y de esa manera no habrá
duda de que se encuentra en modo
comando. Pulsar escape mientras se
encuentra en modo comando no hace que
el editor salga de dicho modo; sonará un
pitido para confirmarle que se encuentra
ya en ese modo.
En el modo comando las órdenes siguen
normalmente el siguiente esquema (entre
corchetes
aparecen
las
variables
optativas):[cifra] comando [dónde]
La mayor parte de las instrucciones
constan de un solo carácter, incluidas
aquellas en las que es preciso pulsar la
tecla Ctrl. En el siguiente apartado
describiremos las instrucciones que más
suelen emplearse en el editor VI.
La cifra es cualquier número que comience
por un carácter entre 1 y 9. Por ejemplo,
la instrucción x borra el carácter que se
encuentra en el lugar del cursor. Si, dentro
del modo comando, se teclea 23x, se
borrarán 23 caracteres.
CONTEXTUALIZACIÓN
• Competencia de información
™ Buscar
fuentes de información
documental.
Investigación documental
− Investigar en Internet o revistas
especializadas materiales técnicos de
sistemas operativos multiusuario
existentes en el mercado que
marquen sus diferencias.
• Competencia analítica
™ Promover la reflexión sobre la oferta
existente de soluciones informática en
el mercado mexicano.
Comparación de resultados
con otros compañeros
− Comparará
que
avances
tecnológicos se han dado a través
del tiempo con el uso de los
sistemas operativos multiusuario.
− Comparará el trabajo individual
contra el trabajo en equipo que se
puede
realizar
en
ambientes
multiusuario.
Algunas órdenes utilizan un parámetro
optativo -dónde-, en el que puede
especificarse cuántas líneas o a qué parte
del documento afecta la orden. El
parámetro dónde puede ser también
cualquier orden que mueva el cursor.
38
Operación de Sistema Operativo Multiusuario
RESULTADO DE APRENDIZAJE
1.2 Abrir sesiones de UNIX por medio de comandos y archivos.
1.2.1 INICIO DE UNA SESION UNIX.
Para acceder al sistema, éste presenta el
mensaje de login, con el que quiere
significar algo así como «introduce el
usuario con el que quieres abrir una
sesión».
UNIX(r) System V Release 4.2
•
Por ejemplo, si suponemos que tenemos 2
archivos que se llaman ventas.doc y
pruebas; para mostrar el directorio del
disco en formato largo:
%ls -l <enter>
-rwxrw-rw- 1 jimenez users
17:42 ventas.doc
138 Apr 5
-rw-rw-rw- 1 jimenez users
19:33 pruebas
98
Apr 5
Ejecución de las órdenes
cp
En Unix, entre los comandos más comunes
deben ser escritos como se indican
(generalmente con letras minúsculas):
Si necesita copiar archivos, puede utilizar
el comando el siguiente para copiar uno o
más archivos:
ls
cp archivo1 archivo2
Si desea saber qué archivos hay en el
disco, puede mostrar el directorio del
disco utilizando el siguiente comando:
El comando anterior hace una copia del
archivo1 y lo llama archivo2. Supóngase
que necesita una copia de un archivo
llamado ventas.doc y que desea que su
nueva copia se llame mensual.inf en el
mismo directorio:
% ls [opciones] </directorio>
donde las opciones pueden ser:
-l Listado en formato largo, el cual
proporciona la siguiente información:
modo de protección, dueño, grupo,
tamaño en bytes, fecha de la última
modificación y nombre.
-d Lista solamente
directorio.
el
nombre
del
<return> Lista únicamente los nombres
de los archivos y directorios.
Operación de Sistema Operativo Multiusuario
%cp ventas.doc mensual.inf
mv
Si desea cambiar el nombre de un archivo
o cambiar el archivo a otro directorio,
puede utilizar el siguiente comando:
mv archivo1 archivo2
39
Cambia el nombre del archivo1 por el del
archivo2. Por ejemplo, suponga que tiene
un archivo llamado mensual.inf al cual
quiere cambiar de nombre por anual.inf:
%mv mensual.inf anual.inf
mkdir
Si usted desea crear un directorio, utilice
el comando:
mkdir nombre_directorio
Para crear un directorio nuevo llamado
usuarios bajo su directorio de trabajo
debe escribir el siguiente comando:
Para eliminar un directorio que ya no
necesita , puede utilizar el comando:
rmdir nombre_directorio que le permite
eliminar
cualquier
directorio,
especificando su ruta de acceso, pero el
directorio debe estar vacío. Por ejemplo, si
decide que ya no necesita el directorio
usuario y quiere eliminarlo:
%rmdir /usuario
alias
%mkdir usuarios
Con éste comando puede sustituir una
instrucción
larga,
utilizando
un
seudónimo. Para definir el alias se debe
hacer de la siguiente forma:
cd
alias <nombre_alterno> <comando a
ejecutar>
Para cambiar de un directorio a otro;
simplemente escriba el comando cd
seguido de la ruta de acceso al directorio
deseado:
Por ejemplo, si utiliza frecuentemente el
comando ls -l y es más fácil utilizar un
seudónimo, lo puede definir de la
siguiente manera:
cd ruta_de_acceso
%alias dir «ls -l» <enter>
Por ejemplo,
comando:
si
escribe
el
siguiente
%cd /usuarios cambia el directorio de
trabajo a /usuarios. También puede
especificar cualquier trayecto después del
comando para que pueda pasar de un
nivel a otro dentro de la estructura del
directorio. El siguiente comando cambia
del directorio en que se encuentra al
directorio anterior:
%cd ..
rmdir
40
de modo que cada vez que introduzca:
%dir <enter>
la orden que realmente se ejecuta es:
ls -l
history
Da una historia de los comandos
ejecutados, asociado con un número en el
orden en que fueron ejecutados. Si desea
dar un comando que ya había tecleado
anteriormente, con el signo ! y el número
de comando se ejecutará, y si desea
ejecutar el último comando únicamente
Operación de Sistema Operativo Multiusuario
con el signo !!. Por ejemplo para ver los
comandos ejecutados teclee:
es natural, no se verá en pantalla aunque
se escriba .
%history <enter>
ls -l
cp ventas.doc mensual.inf
mv mensual.inf anual.inf
mkdir usuarios
cd /usuarios
cd ..
alias dir ls -l
dir
UNIX(r) System V Release 4.2
%
Y si desea ejecutar el comando cd
/usuarios sin tener que volver a teclear
toda la instrucción, teclee la siguiente
orden:
%! 5 <enter>
cd /usuarios
/usuarios
man
Si desea más información sobre algún
comando, existe el manual para consulta
en línea, el cuál puede consultar tecleando
la siguiente orden:
%man <comando>
ésta orden visualizará toda la información
sobre como utilizar el comando. Por
ejemplo, si desea más información del
comando mkdir:
%man mkdir <enter>
• Comandos
login:
Una vez tecleado el usuario que se quiere
y haber pulsado RETURN, solicita una
palabra de paso (password), la cual, como
Operación de Sistema Operativo Multiusuario
login: antonio
Password: $
Tanto el nombre del usuario como la
palabra de paso han de ser escritas «de
golpe», es decir, no se pueden dar a los
cursores para modificar ningún carácter y
mucho menos la tecla de Backspace, Ins,
Del... . Esto es debido a que, tanto éste
carácter como los aplicados a los cursores
son caracteres válidos en nombres de
usuario y en palabras de paso.
El sistema, una vez aceptado el nombre
del usuario ( el cual como es obvio habrá
sido asignado por el Administrador, así
como la palabra de paso), lanza por
pantalla unos mensajes de bienvenida y
termina con el símbolo denominado
«prompt», símbolo configurable (como
casi todo en UNIX) y que suele ser un ‘$’ ó
un ‘#’.
Existe en todos los sistemas UNIX un
superusuario llamado «root», que puede
hacer absolutamente lo que quiera en el
sistema. Además, hay algunos usuarios
especiales, dependiendo del sistema que
se trate con más privilegios de los
normales (admin ó sa ó sysadm, usuario
de administración del equipo, uucp como
usuario de comunicaciones ) y el resto,
que corresponden a usuarios normales.
El programa que está en éste momento
mostrando el prompt es la shell ó
intérprete de comandos. Con éste prompt
indica algo así como «preparado para que
me escribas el comando que quieres
ejecutar» .
41
Cada comando debe finalizar en un
RETURN, el cual funcionalmente se
asemeja a la orden «AR» en la mili ( El
sargento dice «firmes» , pero nadie se
mueve hasta que da el RETURN, es decir,
«AR» ).
Un sistema UNIX en modo multiusuario
(puede arrancarse en modo monousuario
para labores de administración) espera la
entrada de un usuario al sistema, proceso
que recibe el nombre de login. Para ello, el
ordenador
muestra
un
mensaje
identificándose y la palabra.
login:
Para entrar hay que disponer de una
cuenta, que es como se llama al hecho de
ser reconocido por el sistema y, por tanto,
tener acceso. En caso de ser un sistema
recien instalado, no habrá aún creada
ninguna cuenta excepto la de root, por lo
que habra que contestar tecleando «root».
En otro caso, se teclea el login o
identificativo correspondiente. Tras ello y
para comprobar la identidad del usuario,
el sistema preguntará password:
Esperando un password o palabra clave
asociados al login y, si todo va bien, ya se
está dentro. Mientras se teclea la palabra
clave, no aparece eco en pantalla para que
nadie en los alrededores pueda leerla. Por
ello, si se produce un error al teclear, el
habrá otra oportunidad. En caso de que
no haya definida ninguna palabra de
paso, obviamente, no se preguntará por
ella. Esto suele ocurrir con el usuario root
cuando UNIX está recién instalado. Si una
vez dentro se desea salir, bastar teclear
exit, logout o simplemente CONTROL+D,
según el sistema en que uno se encuentre.
42
Nada más terminar el proceso de login,
una shell arranca automáticamente y
advierte de su disposición a recibir
comandos mostrando un prompt, que por
defecto será uno de los símbolos #, %, >
ó $, en función de que shell se use y de si
uno es el root o no. Este prompt equivale
al famoso C:> del DOS y, como este
último, es redefinible.
Ya desde dentro se puede empezar a jugar
con algunos comandos:
Echo
Su finalidad es mostrar mensajes, es decir,
presenta un eco de sus argumentos en
pantalla de modo idéntico a como
funciona el echo del DOS. La diferencia
estriba en que, al igual que la mayoría de
los comandos UNIX, dispone de un gran
número de opciones. De momento sólo se
mencionará la opción echo -n, que evita el
retorno de carro e inicio de línea. De
hecho también sirve para mostrar valores
de variables.
Por ejemplo:
Echo $TERM
Mostrará el valor de la variable term, que
es una variable de la shell que indica el
tipo de terminal. Con esto se adelanta la
idea de que existen variables de entorno al
igual que en DOS y, del mismo modo,
pueden
examinarse
mediante
la
instruccion set.
Hostname
Indica el nombre de la máquina que aloja
el sistema. No se trata del nombre del
Operación de Sistema Operativo Multiusuario
hardware, sino de un nombre con que se
bautiza a todos los sistemas UNIX. Esto se
debe a que UNIX es un sistema en red y,
por tanto, hay que tener bien identificadas
a las máquinas.
Muestra una lista de los usuarios que se
encuentran conectados en ese momento
en el sistema.
caracteres separados por un punto sino
que pueden tener una longitud entre 16 y
256 caracteres en función de la versión.
Por otra parte, existen los mismos wilcards
del DOS: * y ?, aunque su uso difiere
ligeramente ya que permite expresiones
del tipo *[cadena]*. Para UNIX, un fichero
cuyo nombre comienza por el carácter
punto (.), como profile, es un fichero
oculto y únicamente será listado si se
utiliza la opción -a.
Who am i
Cat
Aunque puede inducir a la sonrisa, su
función es informarle a uno de quién es.
No se trata de resolver problemas de
personalidad: en cuanto uno se mueve un
poco por el sistema y siempre que
disponga de más de una cuenta,
descubrirá que es un comando realmente
necesario.
Muestra el contenido de un fichero del
mismo modo que el type del DOS.
Equivale teclear cat .login en UNIX que
type login en DOS (aunque .login no es
nombre válido en DOS).
Who
Is
Una vez el usuario se ha situado y sabe
dónde está y quién es, conviene abrir los
ojos y mirar alrededor. ls, abreviatura de
LiSt muestra el contenido de un directorio.
Su funcionamiento y sintaxis en análogo al
dir del DOS.
Así pues la sintaxis es:
ls [opciones] [path] [máscara de ficheros]
Entre las opciones, las más usadas son:
l: que indica permisos, fecha y propietario.
a: lista tambien los ficheros *.
En UNIX, los nombres de fichero no se ven
sujetos a las reglas de DOS que los limita a
8 caracteres y una extensión de 3
Operación de Sistema Operativo Multiusuario
Date
Muestra la hora del sistema de forma
análoga a como lo hace el DOS.
Passwd
Cambia el password del usuario que lo
ejecuta en la máquina en la que se
ejecuta. Es importante utilizar este
comando frecuente para proteger el
sistema ante el potencial ataque de
hackers.
Yppasswd
En caso de que la máquina se encuentre
en una red con un sistema de información
de red conocido como YP (Yellow Pages) o
NIS (Network Information Service), este
comando cambia el password en todo el
conjunto de la red.
43
• Tipo de Operadores
Test, permite probar un conjunto de
condiciones.
Se
pueden
combinar
expresiones booleanas con los operadores
lógicos NOT, AND y OR.
sistema es multiusuario, cada usuario
dispone de una parte privada de disco.
Cabe recordar que los ficheros cuyo
nombre
comienza
por
punto
(.)
permanecen ocultos. Para moverse por
esta estructura de directorios, se pueden
destacar los comandos:
Operaciones matemáticas y funciones para
test
OPERADOR EJEMPLO
SIGNIFICADO
NOT
exp verdero
!
[! expr]
pwd
-a
cd
-o
[expr1
expr2]
-a
[expr1
expr2]
-o
si exp prueba
falso. Falso si
exp
prueba
verdadero.
exp1
AND
expr2: verdero
si
ambas
expresiones son
verdaderas.
Falso si o o
ambos
son
falsos.
exp1 OR expr2:
verdero si una u
otra o ambas
expresiones son
verdaderas.
Falso si ambos
son falsos.
1.2.2 ARCHIVOS UNIX
• Sistema de archivos
El sistema de directorios de UNIX tiene
una estructura arbórea, aunque no se
trata de un árbol, como se verá en el
apartado dedicado al sistema de ficheros.
En este «árbol», cada usuario dispone de
un Home Directory, un directorio con su
nombre y bajo el cual, puede hacer lo que
quiera. Es la parte «física» de la idea de
tener una cuenta. As¡ pues, aunque el
44
Print Working Directory, escribe el path
absoluto del directorio actual partiendo
del directorio raíz. Equivale a teclear cd sin
argumentos en DOS.
Cambia de Directorio. Es idéntico al DOS,
salvo en que cuando se teclea sin indicar
directorio, conduce directamente al home
directory de la persona que lo ejecuta.
cp
Copia ficheros segun la sintaxis
cp <filename1> <filename2>
donde se puede indicar el path completo
de los ficheros. Equivale al comando copy
de DOS.
mv
Renombra un fichero con la sintaxis
mv<antiguo> <nuevo>
Equivale al comando rename del DOS pero
es mucho más potente ya que también
sirve para cambiar de sitio un fichero, ya
que puede incluir un path en cada
nombre. Así sepodría decir:
mv /.profile /home/echeva/.profile
Operación de Sistema Operativo Multiusuario
para mover el fichero .profile desde la raíz
hasta el directorio /home/echeva.
/usr/man
Manual
/tmp
rm
Directorio para arreglos temporales.
TODOS los usuarios pueden leer y escribir
en él.
Borra una lista de ficheros. Equivale al
comando delete de DOS.
•
rmdir
Borra directorios vacíos. Equivale al
comando del mismo nombre de DOS (rd).
mkdir
Crea directorios. Equivale al comando del
mismo nombre de DOS (md).
Manipulación
directorios.
de
archivos
y
Podemos examinar una primera tanda de
comandos hermanos, que son los
siguientes:
cp <fichero a copiar> <fichero nuevo>
mv <fichero a mover> <fichero nuevo>
ln <fichero a lincar> <fichero nuevo>
«cp» copia el primer argumento al
segundo. Valen caminos relativos, es decir
•
Nombres de directorios.
No todo el «árbol» de directorios está
compuesto por directorios de usuario.
Existen muchos de ellos que son de uso
general o del propio sistema y con los que
habrá que familiarizarse. Los más
importantes son:
/
El raíz, del que «cuelgan» todos.
/bin y /usr/bin
Contienen comandos UNIX ejecutables.
/etc
Es quizá el directorio más importante.
Contiene ficheros de datos y configuración
del sistema, el fichero de password,
configuración de terminales, red, etc (de
ahí su nombre).
/dev
Ficheros de dispositivos E/S.
Operación de Sistema Operativo Multiusuario
$ cp tonto /tmp
$ cp tonto /tmp/nuevo
$ cp /home/jose/tonto /tmp/tonto
producirían el mismo resultado; copian el
fichero desde el directorio actual al /tmp.
El comando «mv» se comporta igual salvo
que el fichero original desaparece; es
similar al «RENAME» de MS-DOS.
El comando «ln» hace que pueda existir un
contenido con varios nombres:
$ ln tonto tonto1
$ ls -l tonto*
-rw-r—r— 2 jose sys 4 Mar 1 11:07 tonto
-rw-r—r— 2 jose sys 4 Mar 1 11:07 tonto1
ahora «tonto» y «tonto1» hacen referencia
al mismo contenido; por tanto, cualquier
cambio que realicemos en uno se verá en
el otro, y si borramos ahora el fichero
«tonto», quedará el « tonto1» con el
mismo contenido, que sólo será borrado
45
al borrar el último de los ficheros lincados
a su contenido.
Debido a la naturaleza del propio
comando, no se pueden hacer enlaces
(links) entre ficheros ó directorios situados
en sistemas de ficheros distintos.
Para éste último caso, existe una opción
del comando «ln», el «ln -s» (link
simbólico); crea un enlace simbólico entre
dos entidades pero sólo como una
referencia; en (&e acute;ste) caso si el
fichero original se borra, el link queda
suelto y el contenido irrecuperable.
El comando «rm» borra ficheros y
directorios; para borrar el tonto1 que ya
no necesitamos, podemos escribir:
$ rm tonto1
Valen metacaracteres . Si escribimos
$ rm *
nos borramos TODO lo que haya en el
«directorio actual» SIN pedir confirmación.
Una opción de rm lo hace más seguro al
pedirla:
$ rm -i tonto1
tonto1 ? y
atendiendo a opciones determinadas. Si
bien la sintaxis es demasiado extensa para
estudiarla en su totalidad, conviene ver
algunos ejemplos :
El comando toma como argumentos
declaraciones
en
formato
«find
<directorio base> <opciones> -print».
Por tanto, para sacar en pantalla todos los
ficheros y directorios del disco, valdría
con:
find / -print
Si se desean
directorios:
sólo
ficheros
ó
sólo
find / -type f -print
ó
find / -type d -print
respectivamente.
Buscar todos los ficheros y directorios que
tengan más de 30 días de antigüedad:
find / -atime +30 -print.
El resto de las opciones sirve para buscar
ficheros con determinados permisos,
mayores ó menores que un determinado
tamaño.
La opción más peligrosa puede ser la «-r»
(recursivo) que borra ficheros y directorios
a partir del directorio de arranque. Por
tanto, ojo con poner
Para este primer chapuzón por el mundo
UNIX, viene bien conocer algunos otros
comandos útiles. Los que se presentan a
continuación
son
de
conocimiento
obligado para todo usuario:
$ rm -r .
grep
si estamos en el directorio «raíz» y
tenemos privilegios, podemos borrar el
contenido de Todos los discos.
grep <cadena> <fichero> Busca las
líneas que contienen la cadena en el
fichero dado y las imprime en pantalla.
Por último, veremos un comando de
utilidad simililar a «ls» pero con mas
opciones; el comando «find» muestra en
pantalla
directorios
y/o
ficheros
cmp
46
cmp <fichero1> <fichero> Busca la
primera diferencia entre los ficheros
indicados.
Operación de Sistema Operativo Multiusuario
diff
diff <fichero1> <fichero2> Busca todas
las diferencias entre los ficheros dados.
tail
tail <fichero> Muestra las 10 últimas
líneas de un fichero.
head
head <fichero> Muestra las 10 primeras
líneas de un fichero.
sort
Ordena por líneas
wc
Muestra el tamaño de
indicando según la opción:
un
fichero
-l (líneas)
-w (palabras)
-c (caracteres) y si va sin opciones, las tres
cosas.
at
Ejecuta el contenido de un fichero en la
fecha y hora especificadas.
cal
Imprime un calendario.
more
more <fichero>
Muestra el contendido de un fichero de
forma paginada, del mismo modo que el
more de DOS, sin embargo, al contrario
que en DOS, no es necesario redirigir su
entrada indicando more < fichero.
• Permisos.
En cualquier sistema multiusuario es
preciso que existan métodos que impidan
que un determinado usuario pueda
Operación de Sistema Operativo Multiusuario
modificar ó borrar un fichero confidencial,
ó incluso leer su contenido. Asimismo ,
determinados comandos ( apagar la
máquina, por ejemplo ) deben estar
permitidos exclusivamente a determinados
usuarios, quedando inoperantes para los
demás.
En UNIX, éstos métodos radican en que
cada fichero tiene un propietario, que es
el usuario que creó el fichero; además, los
usuarios están divididos en grupos,
asignación que normalmente se lleva a
cabo por el Administrador del sistemas,
dependiendo de la afinidad de las tareas
que realizan. El fichero anterior tiene
también un grupo, que es el grupo del
usuario que lo ha creado. UNIX distingue
tres tipos de acceso - lectura, escritura y
ejecución - sobre el usuario que lo ha
creado, los usuarios del mismo grupo que
el que lo creó y todos los demás usuarios.
Por todo lo anteriormente dicho, un
fichero
puede
tener
cualquier
combinación de los tres tipos de acceso
sobre tres tipos de usuarios: el creador, los
de su grupo y todos los demás ( otros
cualquiera que no cumplan nin guna de
las dos condiciones anteriores ). Para ver
lso permisos de un fichero cualquiera,
empleamos el comando «ls -l» (formato
largo):
$ ls -l
-rw-r—r— 1 jose sys 4 Mar 1 11:07 tonto
drw-r—r— 1 jose sys 84 Mar 1 11:07
nuevo
Los campos que lo componen son :
-rw-r—r— : tipo de fichero (la primera
raya; en el caso de «nuevo», una «d»
significa que es un directorio, y una raya
«-» significa fichero normal) y 3 grupos de
47
tres correspondientes, los tres primeros, a
permisos del usuario; los tres siguientes, a
los del grupo, y los tres últimos, a todos
los demás.
jose : Usuario que creó el fichero.
sys : Grupo del creador.
Por tanto, para darle máximos permisos al
fichero
«tonto»,
ejecutaremos
el
comando:
$ chmod 777 tonto
$ ls tonto
-rwxrwx rwx 1 jose sys 4 Mar 1 11:07
tonto
al darle tres sietes ( 1 + 2 + 4 = 7 ), el
4 : Tamaño en bytes.
Mar 1 11:07 : Fecha de creación ó de
última modificación.
tonto : Nombre del fichero.
Cada grupo de tres elementos pueden ser
«rwx», que son: permiso para leer,
permiso para escribir y permiso para
ejecutar. Una raya significa «carece de
permiso para (.)».
Por tanto, el fichero «tonto» puede ser
leído y escrito (y, por tanto, borrado), por
el usuario «jose». Cualquier otro usuario,
sea del grupo «sys» ó no, tiene permisos
sólo de lectura.
En el caso de directorio, todo igual salvo
que en éste caso la «x» de ejecutar no
tendría sentido; por ello, aquí éste
carácter significa «el usuario X puede
cambiarse a éste directorio».
Para darle ó quitarle permisos a un fichero
ó directorio, se emplea el comando chmod
<máscara> <nombre_de_fichero>. La
máscara es un número octal de hasta un
máximo de cuatro cifra s correspondiente
a sumar los siguientes números :
a) Permiso de ejecución.
b) Permiso de escritura.
c) Permiso de lectura.
fichero se queda con la máscara rwx.
Si queremos sólo lectura para creador,
grupo y otros, el comando sería «chmod
444 tonto» y así sucesivamente.
En determinadas ocasiones puede ser
necesario cambiar de propietario a un
fichero ó directorio; para ello utilizamos el
comando
«chown
<nombre_del_propietario> <fichero>».
Igual pasa con los grupos; el com ando es
«chgrp
<nombre_del_grupo>
<fichero>».
$ chown juan tonto
$ ls tonto
-rwxrwxrwx 1 juan sys 4 Mar 1 11:07
tonto
$ chgrp conta tonto
$ ls tonto
-rwxrwxrwx 1 jose conta 4 Mar 1 11:07
tonto
Pero, cuando creamos un fichero, que
permisos coge por defecto ? El valor de
«umask» que tenemos asignado en la
sesión complementado con 666 (rw-rwrw). El comando «umask» a secas nos
devuelve dicho valor :< /P>
$ umask
022
En éste caso, 666-022 = 644, es decir,
cualquier fichero que creemos con un
48
Operación de Sistema Operativo Multiusuario
editor ó con otros comandos serán
creados con permisos 644 (rw-r—r—).
Para cambiar la máscara, usamos el
comando umask con la nueva máscara
que le quieremos dar:
$ umask 000
En cuyo caso, todos los ficheros a partir
del ése momento, y hasta que finalice la
sesión, serán creados con «barra libre»
para todo el mundo.
Al ser UNIX un sistema multiusuario surge
el problema de la protección y privacidad
de la información. Así cada fichero posee
un código de 9 bits para regular su
acceso. El esquema empleado, clásico en
muchos sistemas operativos consiste en
dividir el universo de usuarios que ve cada
fichero en tres clases:
La clase u (user), formada únicamente por
el dueño del fichero.
La clase g (group), formada por todos los
usuarios que pertenecen al mismo grupo
del dueño.
La clase o, formada por el resto del
universo (o como diría Gonzalo León, «el
universo se divide en yo, mis amigos y mis
enemigos»).
Un usuario puede pertenecer a más de un
grupo pero un fichero sólo puede
pertenecer a uno. De esta forma, parte de
los ficheros de un usuario podrían ser
accedidos por uno de los grupos a los que
el usuario pertenece y parte por otro
grupo.
Como siempre es el root el que decide qué
usuarios pertenecen a qué grupos, los
cuales se suelen organizar atendiendo a
Operación de Sistema Operativo Multiusuario
razones de trabajo. La lógica de esto es
que un usuario concreto (clase u), puede
tener en un fichero una carta de su novia,
que no le interesa que lea nadie más. Sin
embargo, también dispondrá de una serie
de ficheros a los que tendrá que permitir
el acceso a su grupo de trabajo (clase g)
pero no querrá que los vea nadie más. Del
mismo modo, podría también interesarle
que todo el mundo (clase o) pudiera
acceder a la información contenida en
otra serie de ficheros. El root, como
superusuario, es caso aparte, ya que
dispone de acceso a todos los ficheros del
sistema.
Existen 3 formas de acceder a un fichero:
lectura, escritura y ejecución. Así, los 9
bits de protección de acceso de cada
fichero se encuentran divididos en 3
grupos de 3 bits. Cada grupo de 3 bits
indica acceso a u, g, o, respectivamente y
cada bit de cada grupo indica:
bit 1 (r), permiso de lectura
bit 2 (w), permiso de escritura
bit 3 (x), permiso de ejecución.
CONTEXTUALIZACIÓN
• Competencia analítica
™ Promover habilidades cognitivas que
les permitan utilizar hábitos y técnicas
de estudio que potencialicen su estilo
de aprendizaje.
Los distintos operadores permiten formar
expresiones tanto aritméticas como
lógicas, en estos operadores deben
tenerse en cuenta la precedencia de
operadores y las reglas de asociatividad,
49
que son las normales en la mayoría de
lenguajes.
−
El alumno:
− Comparará
métodos
ordenamiento
aplicables
construcción de tablas.
−
de
a la
• Competencia ecnológica
™ Utilizar herramientas de hardware y
software disponibles.
−
−
−
−
Realización del ejercicio
−
Inicia una sesión de trabajo unix y
ejecuta alguna orden. Finaliza la
sesión con exit o con ctrl -d para
comprobar que todo es correcto.
−
−
−
Comprueba quién o quiénes están
conectados al sistema y en qué
terminal.
Envía un mensaje, utilizando la
orden write.
Impide que otros usuarios envíen
mensajes y habilita de nuevo la
comunicación.
Consulta las opciones de banner.
Determina qué tipo de ficheros son
los ficheros siguientes: /etc/hosts,
/usr/bin,
/etc/group,
/usr/include/stdio.h y /usr/lib/X11.
Crea en su directorio de arranque un
subdirectorio denominado copia y
copia en él fichero /etc/passwd.
Cambia de nombre al fichero
passwd del directorio copia y
pasarlo a llamarlo palabra_claves.
Emplea las órdenes de inicio de unix.
Crea, modifica y borra ficheros.
RESULTADO DE APRENDIZAJE
1.3 Manejar editores de introducción de texto mediante comandos de ejecución.
1.3.1 EDITOR.
• Editor vi.
El editor VI permite al usuario crear
nuevos archivos o editar los ya existentes.
La orden para iniciar el editor VI editor es
vi, seguida del nombre del archivo. Por
ejemplo,
para
editar
un
archivo
denominado temporal, deberíamos teclear
vi temporal y pulsar Enter. Puede también
iniciar el VI sin indicar ningún nombre de
archivo, pero en ese caso, cuando quiera
guardar su trabajo tendrá qué indicarle al
VI el nombre de archivo en que desea
guardarlo.
50
Cuando inicie VI por vez primera, se
encontrará con una pantalla cuyo margen
izquierdo aparecerá lleno de virgulillas
como la que en castellano va sobre la letra
eñe (~). Así es como se representan las
líneas vacías tras el fin del archivo. En la
base de la pantalla se mostrará el nombre
del archivo -en el caso en que se haya
especificado uno- y su tamaño, del
siguiente modo:
«filename» 21 lines, 385 characters
Si el archivo especificado no existe, VI le
indicará que se trata de un archivo nuevo,
del siguiente modo:
«newfile» [New file]
Operación de Sistema Operativo Multiusuario
Si inició VI sin indicar un nombre de
archivo, la línea al fondo de la pantalla
aparecerá vacía. Si la pantalla no le
muestra los resultados esperados, que
acabamos de mencionar, es posible que la
terminal
no
esté
configurada
correctamente. En ese caso, pulse q y
Enter, para salir de VI, y corrija el tipo de
terminal. Si no sabe cómo hacerlo
pregunte a alguien que trabaje en el
laboratorio.
Cómo salir de vi
Ahora que sabe cómo entrar en VI, no
estaría de más conocer el modo de
salir. El editor VI tiene dos modos y,
para salir de VI, tiene que estar en el
modo comando. Para entrar en
modo comando pulse la tecla Esc
(Si su terminal carece de esa tecla, haga la
prueba pulsando ^[. Si estaba ya en
modo comando cuando pulsó Escape, no
se preocupe. Podría emitir un «bip», pero
seguiría encontrándose en el modo
comando.
La orden para salir de VI es :q ; es decir,
que una vez se encuentre en modo
comando, ha de teclear dos puntos,
seguido de ‘q’, y continuación pulsar
Enter. Si el archivo ha sufrido alguna
modificación, el editor le avisará de esa
circunstancia y no le permitirá cerrarlo. Si
quiere eludir ese mensaje, la orden para
salir de VI sin guardar los cambios es: q!.
Naturalmente, lo habitual en un editor es
que usted desee guardar los cambios que
ha hecho. La orden para hacerlo es: w.
También puede combinar esta orden con
la de salir, del siguiente modo :wq. Y si lo
desea puede guardar los cambios en un
Operación de Sistema Operativo Multiusuario
archivo diferente, especificando el nombre
de éste tras :w. Por ejemplo, si quiere
guardar el archivo en el que está
trabajando con otro nombre, digamos
archivo2, entonces tendría que escribir: w
archivo2 y Enter.
Otro modo de guardar los cambios y salir
de VI es la orden ZZ. Cuando se encuentre
en el modo comando, escriba ZZ;
obtendrá el mismo resultado que con: wq.
De ese modo se guardaría cualquier
cambio que se hubiera operado en el
archivo. Esta es la forma más sencilla para
salir del editor: con sólo dos pulsaciones.
Los dos modos de vi
Lo primero que la mayor parte de los
usuarios aprenden del editor VI es que
cuenta con dos modos: comando e
insertar. El modo comando permite
introducir órdenes para manipular el
texto. Normalmente estas órdenes no
tienen más que uno o dos caracteres,
pudiendo así introducirse con pocas
pulsaciones. El modo insertar hace que
todo lo que se pulse en el teclado se
incorpore al archivo.
VI se inicia en el modo comando. Hay
varias formas de pasar al modo insertar.
La más común consiste en teclear a o i.
Más abajo se describen ambas órdenes.
Una vez se encuentre en el modo insertar,
podrá salir de él pulsando la tecla escape
(si su terminal no tiene esa tecla, debería
funcionar ^[ ). Puede pulsar escape dos
veces seguidas y de esa manera no habrá
duda de que se encuentra en modo
comando. Pulsar escape mientras se
encuentra en modo comando no hace que
el editor salga de dicho modo; sonará un
51
pitido para confirmarle que se encuentra
ya en ese modo.
Cómo utilizar las funciones del modo
comando
En el modo comando las órdenes siguen
normalmente el siguiente esquema (entre
corchetes
aparecen
las
variables
optativas):[cifra] comando [dónde]
La mayor parte de las instrucciones
constan de un solo carácter, incluidas
aquellas en las que es preciso pulsar la
tecla Ctrl. En el siguiente apartado
describiremos las instrucciones que más
suelen emplearse en el editor VI.
La cifra es cualquier número que comience
por un carácter entre 1 y 9. Por ejemplo,
la instrucción x borra el carácter que se
encuentra en el lugar del cursor. Si, dentro
del modo comando, se teclea 23x, se
borrarán 23 caracteres.
Algunas órdenes utilizan un parámetro
optativo -dónde-, en el que puede
especificarse cuántas líneas o a qué parte
del documento afecta la orden. El
parámetro dónde puede ser también
cualquier orden que mueva el cursor.
Vi es un editor de pantalla completa
creado en el UNIX de Berkeley y extendido
más tarde a todos los demás dialectos.
La ventaja de éste editor radica en su
compatibilidad
con
el
resto
de
herramientas de edición UNIX .
ESTRUCTURA DE ÓRDENES CON VI
• Movimientos de cursor
Vi contempla, una vez iniciada la sesión
con él, dos modos:
Modo comando: es el modo en el que
arranca por defecto. Vale para dar
comandos tales como: leer un fichero,
escribir un fichero, búsqueda ó sustitución
de caracteres dentro del texto actual.
• Cambios de ventana
Este modo es al que se vuelve siempre ,
pulsando la tecla <ESC>.
Modo insercion/reemplazo: es el que se
usa para escribir caracteres. Se entra a
éste modo desde el modo comando
pulsando la letra «i».
Desde el modo comando, podemos pasar
también a modo inserción escribiendo las
siguientes letras:
i : Pasar a modo inserción, delante de la
posición del cursor.
a: Igual, pero detrás de la posición del
cursor.
I: Pasar a modo inserción ,pero
empezando a insertar al principio de la
línea donde se esté.
A: Igual, pero empezando al final de la
línea donde se esté.
o: Pasar a modo inserción, pero abriendo
una línea nueva debajo de donde se esté.
O: Igual , pero la línea nueva se abre
arriba.
<ESC>: Pasar a modo comando.
Backspace: Borra la última letra escrita.
<Control>v: Identifica el carácter que
vamos a escibir a continuación como un
52
Operación de Sistema Operativo Multiusuario
caracter especial, es decir, un escape, ó
salto de hoja (^L), ó cualquier carácter
ascii entre el 1 y el 31. ( 1=^A , 2=^B
.....).
• Salir de vi
ZZ Grabar y salir.
OPCIONES DEL EDITOR
Pasando a modo comando, podemos
emplear las siguientes secuencias para
movernos por el texto:
^: Ir al principio de la línea.
$: Ir al final de la línea.
l,h: Izquierda / derecha.
j,k: Abajo / Arriba.
^F (Control + F ): Una pantalla adelante.
^B (Control + B ): Una pantalla atrás.
^G (Control +G): Enseña el número de
línea donde estamos posicionados.
1G: Al principio del todo.
G: Al final del todo.
/<cadena>: Busca <cadena> desde la
línea actual hasta el final del texto.
/ Sigue buscando más ocurrencias de la
cadena.
?<cadena>: Busca <cadena> desde la
línea actual para atrás.
? Sigue buscando más ocurrencias, para
atrás.
ZZ Grabar y salir.
dd: Borrar la línea donde se esté.
J: Juntar la línea donde se esté y la de
abajo.
r: Reemplaza una sola letra.
R: Reemplaza todo hasta que se pulse
<ESC> .
yy: yank/yank: Marca la línea actual.
p: Copia la línea marcada despues del
cursor.
P: Copia la línea marcada antes del cursor.
-.: Repite el último cambio.
u Undo (anula el último cambio)
U Undo , pero en la línea actual.
Operación de Sistema Operativo Multiusuario
Ordenes de «dos puntos»: Al pulsar en
modo comando el carácter «:», el cursor
se baja a la última linea y el editor saca los
dos puntos en espera de que le demos
algún comando de estos. Salimos de aquí
pulsando <ESC> .Algunos son:
:wq! (write/quit)Grabar y salir.
:w! <nombre_fichero> (write) Graba el
texto en <nombre_fichero>.
:r <nombre_fichero> (read) Incluye el
fichero como parte del texto en edición.
:!<comando> Ejecutar <comando> .
Vuelve al terminar el comando.
:<número de línea> Ir a <número de
línea>.
:q! (quit) Salir sin grabar.
:se nu
:se nonu Numera las líneas.(set
number,set nonumber-pone y quita).
:1,5de Borra desde la 1 a la 5.
:1,5co20 Copia desde la 1 a la 5 a partir
de la línea 20.
:1,5mo20 Igual, pero mueve.(desaparece
desde la línea 1 a la 5).
:g/XXX/s//YYY/g Cambia en todo el texto
XXX por YYY.
OPERACIONES CON PALABRAS
El editor VI posee una serie de funciones
que ayudan al programador a dar a sus
códigos una forma pulcra. Existe una
variable para determinar la tabulación que
se da a los distintos niveles del código.
Por ejemplo, la orden para hacer que la
53
tabulación tenga una anchura de cuatro
espacios es :set sw=4.
Las siguientes órdenes sirven para marcar
las tabulaciones de una línea o para
quitarlas, y pueden modificarse con cifra:
<<
Corre la línea una tabulación hacia la
izquierda.
>>
Corre la línea una tabulación hacia la
derecha.
El editor VI dispone también de una
función muy útil para verificar que en su
código fuente no han quedado paréntesis
o corchetes sin cerrar. La orden % buscará
el paréntesis o corchete izquierdo
correspondiente a un determinado signo
de paréntesis o corchete derecho, y
viceversa. Coloque el cursor encima de un
paréntesis o corchete y pulse % para llevar
el cursor al paréntesis o corchete que le
corresponde. Si hay un paréntesis o
corchete desparejado, VI emitirá un pitido
para indicarle que no se ha encontrado el
símbolo correspondiente.
1.3.2 MANEJO DE CONTENIDO.
•
Ordenes más
modo EX.
importantes
en
Se puede personalizar el VI antes de
comenzar. Hay varias opciones de edición,
disponibles utilizando la orden :set. Las
opciones de los editores VI y EX
disponibles en Wiliki son las siguientes
(puede obtener una lista completa
tecleando :set all y Enter, dentro del modo
comando):
54
/usr/lib/tags
autoprint
directory=/tmp
flash
hardtabs=8
keyboardedit
keyboardedit!
magic
mesg
noautoindent
noshowmatch
noautowrite
nobeautify
nodoubleescape
noedcompatible
noerrorbells
noexrc
noignorecase
nolisp
nolist
nonovice
nonumber
nooptimize
noreadonly
noshowmode
noslowopen
noterse
nowriteany
paragraphs=IPLPPPQPP LIpplpipnpbp
term=xterm
prompt
redraw
remap
report=5
scroll=11
sections=NHSHH HUuhsh+c
shell=/bin/csh
shiftwidth=8
tabstop=8
taglength=0
tags=tags
timeout
timeoutlen=500
ttytype=xterm
warn
window=23
wrapmargin=0
wrapscan
Operación de Sistema Operativo Multiusuario
A algunas de estas opciones se les pueden
asignar valores con el signo ‘=’, mientras
que otras simplemente están activadas o
desactivadas. (Estas opciones de tipo on off se denominan booleanas, y, para
indicar que no están activadas, llevan un
«no» delante.) Las opciones mostradas
aquí son las que se tienen por defecto, sin
personalizar. A continuación describimos
algunas
de
ellas,
añadiendo
sus
abreviaturas.
Por ejemplo, en el caso de la orden set
autoindent, se puede teclear :set
autoindent, o bien :set ai. Y para
desactivarla :set noautoindent o :set noai.
autoindent (ai)
Esta opción hace que las líneas siguientes
a una dada tengan su misma tabulación.
Si quiere volver a la tabulación anterior,
no tiene más que pulsar ^D en la
posición del primer carácter. La orden ^D
funciona sólo en el modo insertar, no en
modo comando. También es posible
determinar la anchura de las tabulaciones
mediante la opción shiftwidth, descrita
más abajo.
exrc
El archivo .exrc del directorio actual es
leído al comenzar una sesión. Éste debe
encontrarse en la variable de entorno
EXINIT o en el archivo .exrc, en su
directorio personal.
mesg
Desactive esta opción mediante :set
nomesg, si no quiere que aparezca ningún
mensaje en pantalla.
number (nu)
Operación de Sistema Operativo Multiusuario
Muestra el número de línea en el margen
izquierdo.
shiftwidth (sw)
Esta opción requiere que se le asigne un
valor, y determina la anchura de las
tabulaciones (órdenes << y >>). Por
ejemplo, para que la tabulación sea de
cuatro espacios escribirá lo siguiente :set
sw=4.
showmode (smd)
Esta opción sirve para mostrar el modo
actual del editor. Si se encuentra en el
modo insertar, en la última línea de la
pantallas aparecerá INPUT MODE.
warn
Esta opción le avisa si ha modificado el
archivo pero todavía no lo ha guardado.
window (wi)
Esta opción determina el número de líneas
que VI usará en pantalla. Por ejemplo,
para hacer que VI utilice únicamente 12
líneas de su pantalla (si su modem es
lento), indicaría lo siguiente: :set wi=12.
wrapscan (ws)
Esta opción afecta al comportamiento de
la búsqueda de palabras. Cuando
wrapscan está activado, si no se encuentra
la palabra al llegar al final del archivo,
tratará de buscarla desde el comienzo.
wrapmargin (wm)
Si esta opción tiene un valor mayor que
cero, se activará el retorno manual. Es
decir, si alcanza el número de espacios
indicados a partir del extremo derecho de
la pantalla, la palabra pasará a la línea
siguiente sin necesidad de pulsar Enter.
Por ejemplo, para mantener un margen
55
derecho de dos espacios, tendría que dar
la orden: :set wm=2.
Una orden del editor EX de utilidad en VI
es la orden ab (abreviatura). Esto le
permite
asignar
abreviaturas
a
determinadas secuencias de caracteres. La
orden tiene la siguiente forma :ab
<abreviatura>
<secuencia_que_debe_sustituirla>.
Por
ejemplo, si tuviera que escribir la palabra
«Humuhumunukunukuapua`a», pero no
quisiera tener siempre que teclearla
entera, podría usar una abreviatura. En
este caso, podría introducir una orden
como
la
siguiente:
:ab
9u
Humuhumunukunukuapua`a Así, siempre
que pulse 9u separadamente, VI escribirá
la palabra completa. Eso no sucederá si
usted teclea 9universidad, por ejemplo.
Para borrar una abreviatura previamente
definida, utilizará la orden ‘unabbreviate’
(desabreviar). En el caso del ejemplo
anterior, la orden sería «:una 9u». Para
obtener un listado de las abreviaturas que
ha definido, teclee simplemente :ab, sin
nada detrás.
Existen dos formas de personalizar el
editor VI. Si crea un archivo de nombre
.exrc en su directorio personal, todas las
órdenes ahí especificadas serán leídas al
arrancar el editor VI. El otro método
consiste en crear una variable de entorno
denominada EXINIT. Las opciones se
grabarán el archivo de configuración de su
shell. Si utiliza el shell C (/bin/csh), la
orden, que se grabará en el archivo .cshrc
es la siguiente:
setenv EXINIT ‘...’
Si utiliza /bin/sh o /bin/ksh, la orden. que
se grabará en el archivo the .profile, será
la siguiente:
export EXINIT
EXINIT=’...’
No ponga ... como en el ejemplo. En ese
lugar deberá poner las órdenes que desea
activar. Por ejemplo, si quiere tabulación
automática, numeración de líneas y un
margen derecho de tres caracteres, en tal
caso la orden setenv deberá aparecer
(para el shell C) como sigue:
setenv EXINIT ‘set ai nu wm=3’
Otra orden del editor EX que es útil para
personalizar el VI es la que sirve para
cambiar la función de las teclas. La hay de
dos tipos: una para el modo comando y
otra para el modo insertar. Estas dos
órdenes
son
:map
y
:map!,
respectivamente. Su funcionamiento es
similar al de las abreviaturas: se pulsa una
secuencia de teclas, y continuación otra
secuencia de teclas que debe sustituir a la
anterior. (Por lo general, las secuencias de
teclas sustituidas son órdenes de VI.)
56
Si quiere poner más de una orden en el
setenv EXINIT, sepárelas por medio de una
barra vertical (|). Por ejemplo, para hacer
que el carácter ‘G’ haga las veces de la
orden ‘/g’ en el modo comando, tendrá
que escribir :map g G, lo que combinado
con la instrucción anterior sería:
setenv EXINIT ‘set ai nu wm=3|map g G’
Si desea crear el archivo .exrc, puede
escribir ahí exactamente lo mismo que se
ha mostrado entre comillas, tras el EXINIT.
Operación de Sistema Operativo Multiusuario
•
Marcas de posición.
El editor VI cuenta con 36 búferes para
almacenar fragmentos de texto, y también
un búfer de uso general. Siempre que un
fragmento de texto es borrado o extraído
(copiado) del archivo, queda colocado en
el búfer de uso general. La mayoría de los
usuarios de VI apenas hacen uso de los
otros buferes, y pueden arreglárselas sin
ellos. El fragmento de texto se almacenará
también en otro bufer si se especifica uno.
El bufer se especifica mediante la orden «.
Tras pulsar «, hay que introducir una letra
o dígito para especificar el bufer. Por
ejemplo, la orden: «mdd utiliza el búfer m,
y los dos últimos caracteres significan que
se va a borrar la línea entera. Del mismo
modo, es posible pegar texto mediante la
instrucción p o P. «mp pega el contenido
del búfer m tras el lugar en el que se
encuentra el cursor. En el caso de
cualquiera
de
las
instrucciones
mencionadas en los dos apartados
siguientes, estos búferes pueden utilizarse
para almacenar temporalmente palabras o
párrafos.
•
Mover bloques.
La orden que habitualmente se usa para
cortar es d. Esta instrucción borra texto
del archivo. La orden puede ir precedida
de una cifra y seguida de la indicación de
un movimiento. Si duplica la orden
pulsando dd, se borrará la línea entera. He
aquí algunas combinaciones de este tipo:
d^
borra desde la posición del cursor hasta el
comienzo de la línea.
borra desde la posición del cursor hasta el
fin de la línea.
dw
borra desde la posición del cursor hasta el
fin de la palabra.
3dd
borra tres líneas desde la posición del
cursor hacia abajo.
Existe también la orden y (copiar) que
opera de forma parecida a la orden d, sólo
que sin borrar el texto del archivo.
Las órdenes para pegar son p y P. La única
diferencia entre ellas es el lugar en que
pegan respecto del cursor. p pega el
contenido del bufer general o específico
tras la posición del cursor, mientras que P
lo pega delante del cursor. Si se especifica
una cifra antes de la orden pegar, el texto
se pegará el número de veces que se haya
indicado.
Si utiliza un programa de terminal dentro
de una estación de trabajo, puede
cambiar el tamaño de la pantalla
corriendo los lados de la ventana. Si tiene
problemas con el tamaño de la ventana, la
orden a teclear es la siguiente:
eval ‘resize‘
Si esto no funciona la orden podría ser
ésta:
eval ‘/usr/bin/X11R6/resize‘
Éste es un problema que raras veces se
producirá en versiones modernas de VI,
tales como, por ejemplo, Vim.
d$
Operación de Sistema Operativo Multiusuario
57
•
Recuperación de archivos.
El editor VI edita una copia temporal de su
archivo, y, una vez que la edición ha
finalizado o cuando usted le da la orden
de guardar, el contenido de la copia
temporal se graba en el archivo original. Si
algo va mal durante la edición del archivo,
el editor VI tratará de guardar el trabajo
que usted estaba haciendo y lo
almacenará
para
su
posterior
recuperación. (Nota: Si VI se cierra
súbitamente mientras usted estaba
trabajando con un archivo, le enviará un
mensaje indicándole cómo recuperarlo.
Para su recuperación se utiliza la opción -r.
Si estaba usted editando el archivo
vitalinfo y ha salido del sistema
accidentalmente, la opción -r del editor
‘vi’ puede serle de ayuda. Esta orden tiene
la forma siguiente: vi -r vitalinfo No
obstante, una vez se ha hecho uso de la
opción -r, DEBE guardar inmediatamente
el trabajo, pues dicha opción sólo
funciona una vez por cada sesión fallida
de VI.).
Hay dos cosas a tener en cuenta cuando
se utiliza una estación de trabajo: la
edición de un mismo archivo varias veces y
el cambio de tamaño de la pantalla.
Dado que VI edita una copia de su archivo
original y guarda los contenidos de esa
copia sobre el archivo original, si arranca
el editor más de una vez y está editando el
mismo archivo varias veces, si guardara el
trabajo en una ventana y luego lo volviera
a guardar en otra, los cambios operados
en la primera ventana desaparecerían,
sobrescritos por los de la segunda
58
ventana. Así pues, asegúrese de abrir una
sola copia de VI por archivo.
Si utiliza un programa de terminal dentro
de una estación de trabajo, puede
cambiar el tamaño de la pantalla
corriendo los lados de la ventana. Si tiene
problemas con el tamaño de la ventana, la
orden a teclear es la siguiente:
eval ‘resize‘
Si esto no funciona la orden podría ser
ésta:
eval ‘/usr/bin/X11R6/resize‘
Éste es un problema que raras veces se
producirá en versiones modernas de VI,
tales como, por ejemplo, Vim.
•
La calculadora
Calculadora de precisión
(hasta 80 decimales).
especificable
Shell cuenta con herramientas disponibles
que ofrecen operaciones aritmeticas con
enteros. Para decimales de punto flotante,
se debe usar awk, dc (un paquete
aritmético basado en pila) o bd (un
calculador interactivo con una sintaxis
como la de C.
Estas calculadoras manejan los operadores
ritméticos conocidos:
+, _, *, /, y %.
Ejemplos:
$ expr 2+3
5
$ expr 2|* 3
Operación de Sistema Operativo Multiusuario
6
de estudio que potencialicen su estilo
de aprendizaje.
$ a+4
$a+’ exp. $a + 3’
$echo $a
7
$expr $a + ^
−
13
$_
$expr 3+2
Trabajo en equipo
Introducir texto con vi y guardarlo
en un fichero con extensión.doc,
colocado en un subdirectorio
situado en su directorio de arranque.
32
$_
CONTEXTUALIZACIÓN
• Competencia analítica
™ Promover habilidades cognitivas que
les permitan utilizar hábitos y técnicas
Realización del ejercicio
− Elabora la práctica de ejercicio núm.
3 «Introducir un texto con vi ».
− Manejar el editor vi.
− Realizar ejercicios de personalización
del vi, mover bloques, recuperar
archivos y efectuar operaciones.
RESULTADO DE APRENDIZAJE
1.4 Manejar el shell de UNIX mediante instrucciones de usuario.
1.4.1 SHELL.
•
Funciones
órdenes.
del
intérprete
de
El intérprete de comandos ( shell ) es el
interfase básico que ofrece UNIX de cara
al usuario. Además de ejecutar otros
programas, posee un lenguaje propio así
como numerosas características adicio
nales que se estudiarán en un capítulo
posterior.
Operación de Sistema Operativo Multiusuario
Utilidades «de fábrica»; normalmente se
trata de programas ejecutables que vienen
junto con el Sistema Operativo; algunas
de ellas son:
Compiladores: C, assembler y en algunos
casos Fortran 77 y C++.
Herramientas de edición: Editores (vi,ex),
formateadores (troff), filtros ...
Soporte de comunicaciones: Herramientas
basadas en TCP/IP (telnet,ftp ...)
59
Programas de Administración del Sistema
(sysadm, sa, va..... )
Utilidades diversas y juegos ( éste último
se suele instalar aparte ).
•
Modos de invocar una orden.
Lo primero que la mayor parte de los
usuarios aprenden del editor VI es que
cuenta con dos modos: comando e
insertar. El modo comando permite
introducir órdenes para manipular el
texto. Normalmente éstas órdenes no
tienen más que uno o dos caracteres,
pudiendo así introducirse con pocas
pulsaciones. El modo insertar hace que
todo lo que se pulse en el teclado se
incorpore al archivo.
VI se inicia en el modo comando. Hay
varias formas de pasar al modo insertar.
La más común consiste en teclear a o i.
Más abajo se describen ambas órdenes.
Una vez se encuentre en el modo insertar,
podrá salir de él pulsando la tecla escape
(si su terminal no tiene esa tecla, debería
funcionar ^[ ). Puede pulsar escape dos
veces seguidas y de esa manera no habrá
duda de que se encuentra en modo
comando. Pulsar escape mientras se
encuentra en modo comando no hace que
el editor salga de dicho modo; sonará un
pitido para confirmarle que se encuentra
ya en ese modo.
En el modo comando las órdenes siguen
normalmente el siguiente esquema (entre
corchetes
aparecen
las
variables
optativas):[cifra] comando [dónde]
La mayor parte de las instrucciones
constan de un solo carácter, incluidas
60
aquellas en las que es preciso pulsar la
tecla Ctrl. En el siguiente apartado
describiremos las instrucciones que más
suelen emplearse en el editor VI.
La cifra es cualquier número que comience
por un carácter entre 1 y 9. Por ejemplo,
la instrucción x borra el carácter que se
encuentra en el lugar del cursor. Si, dentro
del modo comando, se teclea 23x, se
borrarán 23 caracteres.
Algunas órdenes utilizan un parámetro
optativo -dónde-, en el que puede
especificarse cuántas líneas o a qué parte
del documento afecta la orden. El
parámetro dónde puede ser también
cualquier orden que mueva el cursor.
•
Histórico de órdenes.
ar Creación y mantenimiento de librerías
de módulos.
at Ejecución de órdenes en la fecha y hora
que se le especifique.
banner Escritura en la salida estándar en
caracteres grandes.
basename Obtención de la parte final del
nombre-camino (path-name).
bc Calculadora de precisión especificable
(hasta 80 decimales).
cal Consulta al calendario del sistema.
calendar Consulta
actividades.
a
la
agenda
de
cancel Cancelación de una petición de
impresión.
cat Volcado y/o encadenado
contenido de uno o varios archivos.
del
Operación de Sistema Operativo Multiusuario
cc Compilador de lenguaje c.
cd Cambio de directorio actual de trabajo.
chgrp Cambio de propiedad de grupo de
archivos o directorios.
chmod Cambio de permisos de un archivo
o directorio.
chown Cambio de propietario de un
archivo o directorio.
cmp Comparación del contenido de 2
archivos.
cp Copia de archivos.
en
notación
polaca
df Consulta del espacio libre en disco.
find Búsqueda de archivos en el árbol de
archivos y directorios.
finger Información sobre los usuarios del
sistema.
id Identificación del usuario conectado y
del grupo al que pertenece.
login Conexión a una sesión de trabajo.
logname
usuario.
Nombre
de
news Consulta a las novedades del
sistema.
passwd Introducción o cambio de la
palabra de paso (password) del usuario.
pwd Consulta del directorio actual de
trabajo
rm Borrado (eliminación) de archivos.
rmdir
Borrado
directorios.
(eliminación)
de
tty Identificación de la terminal.
date Fecha y hora del sistema.
dc Calculadora
inversa.
mv Cambio de directorio y/o de nombre
de un archivo.
conexión
del
ls Listado del contenido de un directorio.
mail Correo electrónico entre usuarios.
mailx Sistema de mensajería interactivo.
man Consulta al manual del sistema.
mesg Control del permiso de escritura,
por otros usuarios, sobre la terminal.
mkdir Creación de nuevos directorios.
more Visualización del contenido de un
archivo, pantalla a pantalla.
Operación de Sistema Operativo Multiusuario
wall Envío de un mensaje a todas las
terminales conectadas.
who Lista a los usuarios conectados al
sistema.
who am i Identificación completa del
usuario.
write
Comunicación
terminales.
directa
entre
• Archivos de configuración.
Si bien la estructura de los directorios
varía entre versiones y dialectos de UNIX,
podemos mencionar algunos de los más
representativos.
/bin,/usr/bin,/usr/sbin,/usr/ucb:
Directorios de programas ejecutables.
Es aquí donde se mantienen la mayoría de
los comandos.
(/bin/ls , /bin/vi , /usr/bin/chmod)/etc :
Programas y ficheros diversos : aquí
residen la mayoría de los archivos de
configuració
61
n y las shell-scripts de arranque y parada
del equipo.
/tmp,/usr/tmp,/var/tmp :
Directorios «temporales»; el propio
sistema
operativo
los
usa
como
almacenamiento intermedio en muchas de
sus tareas; normalmente, todo el
contenido de éstos directorios se borra al
apagar el equipo.
(/usr/spool/lp),
de comunicaciones (/usr/spool/uucp) y
demás.
/usr/mail: En éste directorio se halla el
correo de todos los usuarios.
/usr/preserve,/var/preserve:
Aquí
se
guardan todas las copias de ficheros
incompletamente terminados por los
editores de UNIX.
/home,/usr/acct,/var/acct :
/dev:
Directorio
dispositivos.
Directorios de usuarios.
/var/adm,/usr/adm:
Directorios de administración: programas
de
administrador,
ficheros
con
informaciones de la paquetería instalada y
demás.
/usr/log, /var/log:
Directorios para ficheros de «log» de
sistemas y de programas. Normalmente,
existirá un fichero «console» con toda la
información que se desvía a la consola del
sistema, y varios ficheros informativos, de
advertencia y de errores del sistema.
/lib,/usr/lib:
62
spool
de
ficheros
ficheros
de
/usr/games: Juegos. Casi nunca están
instalados.
• Órdenes relacionadas con el entorno
Las variables del shell
La interfaz de usuario típica en UNIX
Varias clases: sh, csh, bash, ksh...
Lenguaje de programación de shell
Control de procesos concurrentes, etc.
Metacaracteres
Directorios de archivos de librería.
/usr/spool:
Directorios de
impresión.
de
de
Cuando escribimos cualquier comando y
pulsamos <INTRO>, es la shell y no UNIX
quien se encarga de interpretar lo que
estamos escribiendo y ordenando que se
ejecute dicho comando. Aparte de los
caracteres normales, la shell interpreta
otros caracteres de modo especial: un
grupo de caracteres se utiliza para generar
Operación de Sistema Operativo Multiusuario
nombres de ficheros sin necesidad de
teclearlos explícitamente.
Cuando la shell está interpretando un
nombre, los caracteres * ? [ ] se utilizan
para generar patrones. El nombre que
contenga alguno de éstos caracteres es
reemplazado por una lista de los ficheros
del directorio actual cuyo nombre se
ajuste al patrón generado.
Las reglas de generación de patrones son:
* Vale cualquier cadena de caracteres.
? Vale un carácter cualquiera.
[ .. ] Vale cualquiera de los caracteres que
coincida con los que estén entre
corchetes.
Ejemplo: Supongamos que en nuestro
directorio actual tenemos los siguientes
ficheros:
$ ls
tonto
tonta
diario
mayor
Veamos cada una de las salidas
correspondientes a las reglas anteriores:
$ ls * (valen todos)
tonto
tonta
diario
mayor
$ ls *o (todos, pero tienen que acabar en «o»)
tonto
diario
$ ls tont? (que empiecen por tont y cualquier otro
carácter)
tonto
tonta
$ ls tont[oa] (que empiecen por tont y el siguiente
sea «o» ó «a» )
Operación de Sistema Operativo Multiusuario
1.4.2 REDIRECCION
SALIDA.
•
DE
ENTRADA
Y
Redirección de entrada.
La redirección de entrada estándar
estándares se puede redirigir ( prog
<entrada >salida).
•
Redirección de salida.
Para un proceso de este tipo, se leen
caracteres de un flujo (stream) estándar, y
se escriben en un flujo estándar.
•
Redirección de errores.
Las redirecciones de errores se programan
en caracteres de flujo estándar enviándose
a un archivo para su evaluación.
•
Deteniendo
trabajos.
•
Reiniciando trabajos.
y
reiniciando
Ya
que,
como
hemos
explicado
anteriormente, la shell es un programa,
existen varios, cada uno con sus
características
particulares.
Veamos
algunas de ellas:
Bourne shell ( /bin/sh ): Creada por Steven
Bourne de la AT&T. Es la más antigua de
todas y, por tanto, la más fiable y
compatible entre plataformas. Esta es en
la que se basan las explicaciones
posteriores.
Korn shell (/bin/ksh): Creada por David G.
Korn de los laboratorios Bell de la AT&T
.Más moderna, toma todos los comandos
de la Bourne y le añade varios más así
como varias características de redición
63
interactiva de comandos, control de
trabajos y mejor rendimiento en términos
de velocidad que la anterior. Existen dos
versiones, una primera «maldita» y la
actual,
de
16/11/1988.
(podemos
averiguar qué versi&oa cute;n tiene la
nuestra ejecutando el comando «what
/bin/ksh») Pero no es oro todo lo que
reluce; cuando se trata de situaciones
extremas ó complicadas donde la ksh
falla, la de Bourne normalmente está más
«blindada&qu ot; .
C Shell, desarrollada por Bill Joy en la
Universidad de California y, por tanto, más
extendida entre UNIX BSD. Bastante más
críptica que la de Bourne, incorpora no
obstante sustanciales mejoras .
1.4.3 COMANDOS AVANZADOS.
•
Filtros.
Filtro.
Se crea con el fin de incluir solo la
información importante, y así evitar
duplicados de información.
Otros filtros
UNIX permite el uso de conductos y filtros
en la línea de comandos. Un conducto
(pipe) redirige la salida de un programa
para que se convierta en entrada de otro.
Un filtro es un programa elaborado para
procesar un flujo de datos de entrada y
producir otro de datos de salida. Los
conductos y filtros suelen usarse para unir
utilerías y realizar alguna tarea específica.
64
Pipelines
La salida de un proceso se puede conectar
a la entrada de otro:
p1 | p2 | p3
Se emplean archivos especiales llamados
tuberías o pipes, que funcionan como
colas FIFO
Filtros UNIX
•
Orden FIND.
El comando «find» muestra en pantalla
directorios y/o ficheros atendiendo a
opciones determinadas. Si bien la sintaxis
es d emasiado extensa para estudiarla en
su totalidad, conviene ver algunos
ejemplos:
El comando toma como argumentos
declaraciones
en
formato
«find
<directorio base> <opciones> -print».
Por tanto, para sacar en pantalla todos los
ficheros y directorios del disco, valdría
con:
find / -print
Si se desean
directorios:
sólo
ficheros
ó
sólo
find / -type f -print
ó
find / -type d -print
respectivamente.
Buscar todos los ficheros y directorios que
tengan más de 30 días de antigüedad:
find / -atime +30 -print
El resto de las opciones sirve para buscar
ficheros con determinados permisos,
Operación de Sistema Operativo Multiusuario
mayores ó menores que un determinado
tamaño.
•
Editor de flujo de SED.
Existe una familia de programas en Unix
que lee alguna entrada, realiza alguna
transformación y escribe una salida. Entre
ellos figuran el grep, egrep, fgrep, tail,
sort, wc, etc. y se denominan filtros.
Existen también dos transformadores de
datos o filtros programables ya que
permiten mediante un simple lenguaje de
programación
indicar
que
comportamiento seguir con los datos de
entrada, ellos son el sed y awk (ambos
derivan de una generalización del grep).
grep:
La sintaxis es: grep patrón archivos
Examina los archivos o la entrada
enstándar en busca del patrón e imprime
cada línea que lo contenga. Por ejemplo:
grep -n variable *.[ch] Busca variable en *.c o *.h
grep From $MAIL Muestra los encabezados del los
mensajes en el buzón
grep From $MAIL | grep -v Pirulo Busca los
mensajes que no vengan del usuario pirulo.
grep -y pirulo $HOME/lib/agenda Busca el teléfono
de pirulo en agenda
who | grep pirulo Mira si pirulo se ha conectado
La opción -n imprime números de línea, -v
invierte el sentido (las que no satisfacen), y permite que se busque todo (con
mayúsculas o minúsculas). Existen además
ciertos caracteres que indican al comando
alguna acción a realizar en forma
predeterminada:
c (normal, es decir indica el caracter c)
\c (indica que si el caracter c era especial ha
perdido su significado)
^ Indica inicio de línea
$ Indica final de línea
Operación de Sistema Operativo Multiusuario
. Cualquier caracter individual
[...] cualquier caracter en ...; el rango tipo a-z es
válido
[^...] Los que no se encuentren en ...
\n lo igual al n-ésimo
r * cero o más ocurrencias de r
r+ una o más ocurrencias de r
r? cero o una ocurrencia de r
r1r2 r1 seguido de r2
r1|r2 r1 o r2
\(r\) expresión regular marcada r
Ejemplos: grep ‘^From’ $MAIL Imprime
las líneas que comienzan por From del
buzón. grep [^0-9] *.c Imprime las líneas
que contienen algún caracter que no sea
un dígito. ls -l | grep ‘^d’ Lista los
nombres de los subdirectorios ls -l | grep
‘^———rw-’ Lista los archivos que los
permisos del public sean rwx * para cualquier cadena que comienza por x
[a-z][A-Z] * cualquier cadena alfabética
reconoce cualquier cosa hasta una nueva línea
.*x hasta la última x en el renglón
Debe tenerse en cuenta que el * se aplica
sólo una vez, por ejemplo xy * reconoce
una secuencia con xy y no xyxyxyx,
además cualquier número incluye el cero
por ejemplo [a-zA-Z] * busca una cadena
de una letra seguida de cero más letras.
fgrep y egrep permiten buscar cadenas
múltiples (son más completos que el
grep).
El fgrep -f file permite leer de file los
patrones a buscar. Ambos aceptan los
caracteres igual que el grep per con
adiciones: los paréntesis agrupan por
ejemplo (xy) * buscará la cadena vacía, xy,
xyxyx y así sucesivamente.
La barra vertical es un operador or:
piru(melon|lindon) encontrará pirumelon
o pirulindon. Además x+ reconoce una o
más x y x? reconoce cero o una pero no
varias.
65
sed:
El sed deriva directamente del ed por lo
cual es fácil de aprender. La idea es
sencilla:
sed ‘lista de cmd del ed’ archivos
Lee un renglón a la vez a partir de los
archivos de entrada; aplica los comandos
de la lista por ordena a cada renglón y
escribe su forma editada en la salida
estándar. Recordar que sed no modifica
los archivos de entrada, sino que produce
una salida modificada que hay que
redireccionar si se quiere guardar.
sed ‘s/UNIX/UNIX(tm)/g’ archivos salida
Reemplaza en archivos UNIX por UNIX(tm)
y los almacena en el archivo salida. Esta es
una mala idea pues significa utilizar un
archivo temporal para modificar el
contenido de archivos, pero hay solución
consultar el comando overwrite.
Supongamos utilizar el du -a ./ dará una
lista como
y queremos eliminar los números y el tab
que hay antes de la a:
du -a ./ | sed ‘s/.\t//’
a.1
a.2
a.3
La sustitución borra todos los caracteres
(.*) hasta incluir el tabulador (puesto
como \t) de la derecha.
sed 3q archivo imprime solo los tres primeros
renglones de archivo y termina.
sed -f file lee los comandos de file
sed ‘/patrón/q’ imprime hasta incluir la primera línea
que contenga patrón.
sed ‘/patrón/d’ cancela todas las líneas que
contengan patrón.
sed -n ‘/patrón/p’ donde -n deshabilita la impresión
automática en pantalla y p imprime solo la que
tengan patrón.
66
sed ‘s/$/\/’ inserta una línea en blanco al final de
cada línea.
sed -n ’20,30p’ imprime desde la línea 20 a la 30.
sed ‘1,10d’ borra desde la 1 a la 10 (es igual tail +
11)
sed ‘1,/^$/d’ borra hasta la primera línea en blanco
inclusive
sed -n ‘/^$/,/^end/p’ imprime cada grupo de líneas
desde la vacía hasta la que comienza por end.
sed ‘$d’ borra la última línea.
Resumen de comandos del sed:
a\ anexar líneas en la salida hasta una que no
termine en \
b label [branch] salto hasta el comando : label
c\ cambiar líneas al siguiente texto
d borrar línea
i\ insertar texto siguiente antes de la siguiente
salida
l listar línea incluido caracteres no imprimibles
p imprimir línea
q abandonar
r file leer archivo y copiar en la salida
s/viejo/nuevo/mod sustituir viejo por nuevo si mod
=g reemplazar todas la
ocurrencias, =p imprimir, f=w file escribir en file
t label prueba: ir a label si se hace una sustitución
en el renglón actual
w file escribir en file
y/str1/str2/ reemplazar cada caracteres de str1 con
cada caracter de str2 (sin rango)
= imprimir número de línea
!cmd hacer sed cmd sólo si no se selecciona la
línea
: label poner label en los comandos b y t
{ considerar los comandos hasta el siguiente } como
un grupo
CONTEXTUALIZACIÓN
• Competencia analítica
™ Aplicar la tecnología de sistemas
operativos como administrador de
aplicaciones y procesos de utilidad al
quehacer cotidiano.
Operación de Sistema Operativo Multiusuario
−
−
−
−
Realización del ejercicio
Sustituir el prompt por otro que
visualice la cadena mande>.
Modifica su fichero profile de modo
que al iniciar una sesión de trabajo
aparezcan por pantalla, la fecha, la
hora, el directorio de trabajo y el
número de personas que están
conectadas en ese momento al
sistema.
Crea una orden denominada dir que
sea equivalente a la orden ls -l y
añadir la sentencia anterior al
fichero profile.
Listar del directorio /usr/bin aquellos
ficheros cuyo nombre comience por
la letra «c».
Resumen
− Interpreta instrucciones a través de
shell.
Operación de Sistema Operativo Multiusuario
67
PRÁCTICA DE EJERCICIO Y LISTA DE COTEJO
Unidad de
aprendizaje:
1
Práctica número:
1
Nombre de la
práctica:
Comandos iniciales UNIX
Propósito de la
práctica:
Al finalizar la práctica, el alumno ejecutara comandos básicos del sistema operativo
por medio del shell de UNIX.
Escenario:
Laboratorio de
Informática.
Duración:
6 hrs.
Materiales
• Software instalado de UNIX o
software de emulación UNIX.
Maquinaria y Equipo
Herramienta
• Terminal o Computadora
(Pentium III)
• Manual en línea de UNIX.
• Cuaderno de notas.
• Pluma o lápiz.
68
Operación de Sistema Operativo Multiusuario
Procedimiento
­Aplicar las medidas de seguridad e higiene.
• Evitar la manipulación de líquidos cerca del equipo.
• No introducir objetos extraños en los dispositivos de disco.
• No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpiar el área de trabajo.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Encender equipo de cómputo.
Abrir sesión de emulación de terminal UNIX.
Entrar al UNIX Shell
Digitar el comando who y teclear enter, anotar resultado.
Digitar el comando who am I y teclear enter, anotar resultado.
Digitar write [userid] y teclear enter, escribir un mensaje teclear ctrl. – d y teclear enter, anotar resultado.
Digitar el comando mesg y teclear enter, anotar resultado.
Digitar el comando data + “son las %r del %d de %y” teclear enter, anotar resultado.
Digitar el comando banner con parámetro “Sali a comer” y teclear enter, anotar resultado.
Digitar el comando cal 2005, y teclear enter, anotar resultado
Digitar el comando mcal 11 2005 y teclear enter, anotar resultado
Digitar el comando uname -a y teclear enter, anotar resultado
Digitar el comando passwod y teclear enter, anotar resultado
Digitar el comando man banner y teclear enter, anotar resultado
Repetir los procedimientos con asesoría del PSP.
Apagar el equipo de cómputo
4 Depositar los residuos recuperables disponiendo de 3 botes de reciclaje toner, discos y papel.
Operación de Sistema Operativo Multiusuario
69
Lista de cotejo de la práctica
Número 1:
Comandos iniciales UNIX
Nombre del alumno:
Instrucciones:
A continuación se presentan los criterios que van a ser
verificados en el desempeño del alumno mediante la observación
del mismo.
De la siguiente lista marque con una 9 aquellas observaciones
que hayan sido cumplidas por el alumno durante su desempeño
Si
Desarrollo
No
No
Aplica
®Aplicó las medidas de seguridad e higiene.
• Evitó la manipulación de líquidos cerca del equipo.
•
•
•
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
No introdujo objetos extraños en los dispositivos de disco,
No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo.
Limpió el área de trabajo.
Encendió el equipo de cómputo.
Abrió sesión de emulación UNIX.
Entró al UNIX Shell
Digitó el comando who y anotó resultado.
Digitó el comando who am I y anotó resultado.
Digitó write [userid], escribió mensaje y anotó resultado.
Digitó el comando mesg y anotó resultado.
Digitó el comando data tonel parámetro indicado y anotó resultado.
Digitó el comando banner con parámetro y anotó resultado.
Digitó el comando cal 2005, y anotó resultado
Digitó el comando mcal 11 2005 y anotó resultado
Digitó el comando uname -a y anotó resultado
Digitó el comando passwod y anotó resultado
Digitó el comando man banner y anotó resultado
70
Operación de Sistema Operativo Multiusuario
Si
Desarrollo
No
No
Aplica
15. Repitió los procedimientos con asesoría del PSP.
16. Apagó adecuadamente el equipo de cómputo
4 Depositó los residuos recuperables.
Observaciones:
PSP:
Hora de
inicio:
Operación de Sistema Operativo Multiusuario
Hora de
término:
Evaluación:
71
Unidad de
aprendizaje:
1
Práctica número:
2
Nombre de la
práctica:
Creación de directorios
Propósito de la
práctica:
Al finalizar la práctica, el alumno creará directorios siguiendo los lineamientos de
las estructuras de archivos y directorios existentes.
Escenario:
Laboratorio de
Informática.
Duración:
6 hrs.
Materiales
• Software instalado de UNIX o
software de emulación UNIX.
Maquinaria y Equipo
Herramienta
• Terminal o Computadora
(Pentium III).
• Manual en línea de UNIX.
• Cuaderno de notas.
• Pluma o lápiz.
72
Operación de Sistema Operativo Multiusuario
Procedimiento
­Aplicar las medidas de seguridad e higiene.
• Evitar la manipulación de líquidos cerca del equipo.
• No introducir objetos extraños en los dispositivos de disco.
• No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpiar el área de trabajo.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Encender equipo de cómputo.
Abrir sesión de emulación de terminal UNIX.
Identificar el directorio raíz
Identificar el directorio home y ubicarse en él.
Identificar el directorio pc11user y ubicarse en él.
Crear los directorios programas y alumno
Digitar el comando mkdir
Digitar las opciones –p
Digitar el path a crear home/pc11user/programas/alumno como argumento de comando
Digitar el comando ls –l
Digitar el comando pr redireccionando al dispositivo de impresión
Imprimir los resultados
Repetir los procedimientos con asesoría del PSP creando otros directorios.
4 Depositar los residuos recuperables disponiendo de 3 botes de reciclaje toner, discos y papel.
Operación de Sistema Operativo Multiusuario
73
Lista de cotejo de la práctica
Número 2:
Creación de directorios
Nombre del alumno:
Instrucciones:
A continuación se presentan los criterios que van a ser
verificados en el desempeño del alumno mediante la observación
del mismo.
De la siguiente lista marque con una 9 aquellas observaciones
que hayan sido cumplidas por el alumno durante su desempeño
Si
Desarrollo
No
No
Aplica
®Aplicó las medidas de seguridad e higiene.
• Evitó la manipulación de líquidos cerca del equipo.
•
•
•
1.
2.
3.
4.
5.
6.
7.
8.
9.
No introdujo objetos extraños en los dispositivos de disco,
No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo.
Limpió el área de trabajo.
Encendió el equipo de cómputo.
Abrió sesión de emulación UNIX.
Identificó el directorio raíz
Identificó el directorio home y se ubicó en él.
Identificó el directorio pc11user y se ubicó en él.
Creó los directorios programas y alumno
Digitó el comando mkdir
Digitó las opciones –p
Digitó el path a crear home/pc11user/programas/alumno como argumento
de comando
10. Digitó el comando ls –l
11. Digitó el comando pr redireccionando al dispositivo de impresión
12. Imprimió resultados
13. Repitió los procedimientos con asesoría del PSP creando otros directorios.
4 Depositó los residuos recuperables.
Observaciones:
PSP:
Hora de
inicio:
74
Hora de
término:
Evaluación:
Operación de Sistema Operativo Multiusuario
Unidad de
aprendizaje:
1
Práctica número:
3
Nombre de la
práctica:
Manejo de archivos.
Propósito de la
práctica:
Al finalizar la práctica, el alumno creará, modificará y borrará archivos en una
sesión de UNIX
Escenario:
Laboratorio de
Informática.
Duración:
6 hrs.
Materiales
• Software instalado de UNIX o
software de emulación UNIX.
Maquinaria y Equipo
Herramienta
• Terminal o Computadora
(Pentium III).
• Manual en línea de UNIX.
• Cuaderno de notas.
• Pluma o lápiz.
Operación de Sistema Operativo Multiusuario
75
Procedimiento
­Aplicar las medidas de seguridad e higiene.
• Evitar la manipulación de líquidos cerca del equipo.
• No introducir objetos extraños en los dispositivos de disco.
• No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpiar el área de trabajo.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Encender equipo de cómputo.
Abrir sesión de emulación de terminal UNIX.
Digitar el comando ls y teclear enter, anotar resultados.
Digitar el comando cd nombre del directorio y teclear enter, anotar resultados.
Digitar el comando cd \ y teclear enter, anotar resultados.
Digitar el comando mkdir prueba y teclear enter, anotar resultados.
Digitar el comando ls –l y teclear enter, anotar resultados.
Digitar el comando cd/usr/bin y teclear enter, anotar resultados.
Digitar el comando ls 1 more y teclear enter, anotar resultados.
Digitar el comando cd\ y teclear enter, anotar resultados.
Teclear CTRL –d para salir de shel de UNIX
Apagar el equipo de cómputo
Repetir los procedimientos con asesoría del PSP creando otros directorios.
4 Depositar los residuos recuperables disponiendo de 3 botes de reciclaje toner, discos y papel.
76
Operación de Sistema Operativo Multiusuario
Lista de cotejo de la práctica
Número 3:
Manejo de archivos
Nombre del alumno:
Instrucciones:
A continuación se presentan los criterios que van a ser
verificados en el desempeño del alumno mediante la observación
del mismo.
De la siguiente lista marque con una 9 aquellas observaciones
que hayan sido cumplidas por el alumno durante su desempeño
Si
Desarrollo
No
No
Aplica
®Aplicó las medidas de seguridad e higiene.
• Evitó la manipulación de líquidos cerca del equipo.
• No introdujo objetos extraños en los dispositivos de disco,
• No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpió el área de trabajo.
1. Encendió el equipo de cómputo.
2. Abrió sesión de emulación UNIX.
3. Abrió sesión de emulación de terminal UNIX.
4. Digitó el comando ls y anotó resultados.
5. Digitó el comando cd nombre del directorio y anotó resultados.
6. Digitó el comando cd \ y anotó resultados.
7. Digitó el comando mkdir prueba y anotó resultados.
8. Digitó el comando ls –l y anotó resultados.
9. Digitó el comando cd/usr/bin y anotó resultados.
10. Digitó el comando ls 1 more y anotó resultados.
11. Digitó el comando cd\ y anotó resultados.
12. Tecleó CTRL –d para salir de sep de UNIX
13. Apagó el equipo de cómputo
14. Repitió los procedimientos con asesoría del PSP creando otros archivos.
4 Depositó los residuos recuperables.
Observaciones:
PSP:
Hora de
inicio:
Operación de Sistema Operativo Multiusuario
Hora de
término:
Evaluación:
77
Unidad de
aprendizaje:
1
Práctica número:
4
Nombre de la
práctica:
Manejo de texto con vi
Propósito de la
práctica:
Al finalizar la práctica, el alumno redactará un texto utilizando del editor vi para
familiarizarse con movimientos de cursor y manejo de texto.
Escenario:
Laboratorio de
Informática.
Duración:
6 hrs.
Materiales
• Software instalado de UNIX o
software de emulación UNIX.
Maquinaria y Equipo
Herramienta
• Terminal o Computadora
(Pentium III).
• Manual en línea de UNIX.
• Cuaderno de notas.
• Pluma o lápiz.
78
Operación de Sistema Operativo Multiusuario
Procedimiento
­Aplicar las medidas de seguridad e higiene.
• Evitar la manipulación de líquidos cerca del equipo.
• No introducir objetos extraños en los dispositivos de disco.
• No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpiar el área de trabajo.
1.
2.
3.
4.
Encender equipo de cómputo.
Abrir sesión de emulación de terminal UNIX.
Escribir n el shell “vi prueba.doc”.
Introducir el siguiente texto con vi.
• Turismo en Grecia
En 2002 unos 14,2 millones de turistas eligieron Grecia como destino de sus vacaciones, para visitar sus
antigüedades y relajarse al sol del Mediterráneo. Ese año, las cifras reflejaron una entrada de dinero por
turismo de 3.989 millones de dólares.
• Comunicaciones en Grecia
Grecia cuenta con servicios de radio y televisión, tanto privados como estatales. En 1997 el país tenía unos
5 millones de receptores de radio y 5 millones de aparatos de televisión. La mayoría de la prensa diaria
griega se publica en Atenas o Salónica. Entre los diarios de mayor tirada están el Apogevmatini, el
Eleftherotypia y el Ta Nea, todos ellos impresos en Atenas.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Situar el cursor al final del texto.
Ir al principio del texto.
Situar el cursor al principio de la línea 3.
Ir ahora al final de la línea anterior.
Eliminar la línea actual.
Copiar el primer párrafo de texto en un buffer de nombre “a”.
Teclear :wq.
Teclear ctrl.-d para salir de shell.
Apagar el equipo de cómputo.
Repetir los procedimientos con asesoría del PSP creando otros directorios.
4 Depositar los residuos recuperables disponiendo de 3 botes de reciclaje toner, discos y papel.
Operación de Sistema Operativo Multiusuario
79
Lista de cotejo de la práctica
Número 4:
Creación de directorios
Nombre del alumno:
Instrucciones:
A continuación se presentan los criterios que van a ser
verificados en el desempeño del alumno mediante la observación
del mismo.
De la siguiente lista marque con una 9 aquellas observaciones
que hayan sido cumplidas por el alumno durante su desempeño
Si
Desarrollo
No
No
Aplica
®Aplicó las medidas de seguridad e higiene.
• Evitó la manipulación de líquidos cerca del equipo.
• No introdujo objetos extraños en los dispositivos de disco,
• No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpió el área de trabajo.
1. Encendió el equipo de cómputo.
2. Abrió sesión de emulación UNIX.
3. Escribió el sep “vi prueba.doc”
4. Introdujo el texto indicado
5. Situó el cursor al final del texto.
6. Posicionó el cursor al principio del texto
7. Situó el cursor al principio de la línea 3
8. Situó el cursor al final de la línea anterior
9. Eliminó la línea indicada
10. Copió el primer párrafo de texto en un buffer de nombre “a”
11. Digitó :wq
12. Tecleó ctrl.-d para salir de shell
13. Apagó el equipo de cómputo
14. Repitió los procedimientos con asesoría del PSP creando otros directorios.
4 Depositó los residuos recuperables.
Observaciones:
PSP:
Hora de
inicio:
80
Hora de
término:
Evaluación:
Operación de Sistema Operativo Multiusuario
Unidad de
aprendizaje:
1
Práctica número:
5
Nombre de la
práctica:
Ordenamiento de información
Propósito de la
práctica:
Al finalizar la práctica, el alumno ordenará de acuerdo a diferentes criterios
información en un archivo existente.
Escenario:
Laboratorio de
Informática.
Duración:
6 hrs.
Materiales
• Software instalado de UNIX o
software de emulación UNIX.
Maquinaria y Equipo
Herramienta
• Terminal o Computadora
(Pentium III).
• Manual en línea de UNIX.
• Cuaderno de notas.
• Pluma o lápiz.
Operación de Sistema Operativo Multiusuario
81
Procedimiento
­Aplicar las medidas de seguridad e higiene.
• Evitar la manipulación de líquidos cerca del equipo.
• No introducir objetos extraños en los dispositivos de disco.
• No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpiar el área de trabajo.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Encender equipo de cómputo.
Abrir sesión de emulación de terminal UNIX.
Identificar el directorio raíz
Identificar el directorio home y ubicarse en él.
Crear un directorio denominado “diurno”
Crear un directorio denominado “dirdos”
Crear un directorio usuario y ubicarse en él.
Crear archivo llamado “uno” con 10 renglones numerados del 1 al 10 y escribir dos columnas de palabras
separadas por: (dos puntos).
Crear archivo llamado “dos” con 10 renglones numerados del 11 al 20 y escribir dos columnas de
números aleatorios separados por comas.
Utilizando los archivos “uno” y “dos” digitar el comando sort con la opción -m , anotar resultados
Utilizando los directorios diurno, dardos y usuario digitar el comando sort con la opción –d, anotar
resultados
Utilizando el archivo uno digitar el comando sort con la opción –f, anotar resultados
Utilizando el archivo dos digitar el comando sort con la opción –r, anotar resultados
Utilizando el archivo uno digitar el comando sort con la opción –t:, anotar resultados
Digitar el comando sort utilizando el archivo uno y especificar un archivo de salida con la opción –o
Digitar el comando sort utilizando el archivo dos y especificar orden numérico con la opción –n
Repetir los procedimientos con asesoría del PSP creando otros directorios.
4 Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.
82
Operación de Sistema Operativo Multiusuario
Lista de cotejo de la práctica
Número 5:
Ordenamiento de información.
Nombre del alumno:
Instrucciones:
A continuación se presentan los criterios que van a ser
verificados en el desempeño del alumno mediante la observación
del mismo.
De la siguiente lista marque con una 9 aquellas observaciones
que hayan sido cumplidas por el alumno durante su desempeño.
Desarrollo
Si
No
No
Aplica
®Aplicó las medidas de seguridad e higiene.
• Evitó la manipulación de líquidos cerca del equipo.
•
•
•
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
No introdujo objetos extraños en los dispositivos de disco,
No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo.
Limpió el área de trabajo.
Encendió el equipo de cómputo.
Abrió sesión de emulación UNIX.
Identificó el directorio raíz
Identificó el directorio home y se ubicó en él.
Creó un directorio denominado “diurno”
Creó un directorio denominado “dirdos”
Creó un directorio llamado usuario y ubicarse en él.
Creó archivo llamado “uno” con 10 renglones numerados del 1 al 10 y
escribir dos columnas de palabras separadas por: (dos puntos).
Creó archivo llamado “dos” con 10 renglones numerados del 11 al 20 y
escribir dos columnas de números aleatorios separados por comas.
Digitó el comando sort con la opción -m , anotó resultados
Digitó el comando sort con la opción –d, anotó resultados
Digitó el comando sort con la opción –f, anotó resultados
Digitó el comando sort con la opción –r, anotó resultados
Operación de Sistema Operativo Multiusuario
9 10.
1 12.
1 14.
83
Si
Desarrollo
No
No
Aplica
14. Utilizó el archivo uno, digitó el comando sort con la opción –t:, anotó
resultados
15. Digitó el comando sort utilizando el archivo uno y especificó un archivo de
salida con la opción –o
16. Digitó el comando sort utilizando el archivo dos y especificó orden numérico
con la opción –n
17. Repitió los procedimientos con asesoría del PSP creando otros directorios.
4 Depositó los residuos recuperables.
Observaciones:
PSP:
Hora de
inicio:
84
Hora de
término:
Evaluación:
Operación de Sistema Operativo Multiusuario
Unidad de
aprendizaje:
1
Práctica número:
6
Nombre de la
práctica
Manejo de archivos con el comando out
Propósito de la
práctica:
Al finalizar la práctica, el alumno manejara archivos existentes de acuerdo con los
comandos de UNIX que le permitan la manipulación de los archivos.
Escenario:
Laboratorio de
Informática.
Duración:
6 hrs.
Materiales
• Software instalado de UNIX o
software de emulación UNIX.
Maquinaria y Equipo
Herramienta
• Terminal o Computadora
(Pentium III).
• Manual en línea de UNIX.
• Cuaderno de notas.
• Pluma o lápiz.
Operación de Sistema Operativo Multiusuario
85
Procedimiento
­Aplicar las medidas de seguridad e higiene.
• Evitar la manipulación de líquidos cerca del equipo.
• No introducir objetos extraños en los dispositivos de disco.
• No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpiar el área de trabajo.
1.
2.
3.
4.
5.
6.
Encender equipo de cómputo.
Abrir sesión de emulación de terminal UNIX.
Identificar el directorio raíz
Identificar el directorio home y ubicarse en él.
Crear el directorio pcuser y ubicarse en él.
Crear un archivo llamado data.fil de acuerdo a:
01 : Ana Ramírez: 5556-78-90 : México D.F. : Presidente
02: Laura Díaz: 5589-22-22 : México D.F.: Gerente
03: Laura Rosales: 5555-11-22 : México D.F.: Ventas
7. Digitar el comando cut de acuerdo a cut –d: -f2,4,5 data.fil
8. Verificar que la salida sea:
Ana Ramírez: México D.F.: Presidente
Laura Díaz: México D.F.: Gerente
Laura Rosales: México D.F.: Ventas
9. Borrar el archivo data.fil
10. Borrar el directorio pcuser
11. Repetir los procedimientos con asesoría del PSP explorando todas las opciones del comando.
4 Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.
86
Operación de Sistema Operativo Multiusuario
Lista de cotejo de la práctica
número 6:
Manejo de archivos con el comando cut.
Nombre del alumno:
Instrucciones:
A continuación se presentan los criterios que van a ser
verificados en el desempeño del alumno mediante la observación
del mismo.
De la siguiente lista marque con una 9 aquellas observaciones
que hayan sido cumplidas por el alumno durante su desempeño.
Si
Desarrollo
No
No
Aplica
®Aplicó las medidas de seguridad e higiene.
• Evitó la manipulación de líquidos cerca del equipo.
• No introdujo objetos extraños en los dispositivos de disco,
• No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpió el área de trabajo.
1. Encendió el equipo de cómputo.
2. Abrió sesión de emulación UNIX.
3. Identificó el directorio raíz
4. Identificó el directorio home y se ubicó en él.
5. Creó el directorio pcuser y se ubicó en él.
6. Creó el archivo data.fil
7. Digitó el comando cut de acuerdo a lo especificado
8. Verificó el resultado de la ejecución del programa
9. Borró el archivo data.fil
10. Borró el directorio pcuser
11. Repitió los procedimientos con asesoría del PSP creando otros directorios.
4 Depositó los residuos recuperables.
Observaciones:
PSP:
Hora de
inicio:
Operación de Sistema Operativo Multiusuario
Hora de
término:
Evaluación:
87
Unidad de
aprendizaje:
1
Práctica número:
7
Nombre de la
práctica:
Manejo de permisos
Propósito de la
práctica:
Al finalizar la práctica, el alumno modificará y limitará atributos de permisos de
propietario y grupo para lectura y escritura a través de comandos.
Escenario:
Laboratorio de
Informática.
Duración:
6 hrs.
Materiales
• Software instalado de UNIX o
software de emulación UNIX.
Maquinaria y Equipo
Herramienta
• Terminal o Computadora
(Pentium III).
• Manual en línea de UNIX.
• Cuaderno de notas.
• Pluma o lápiz.
88
Operación de Sistema Operativo Multiusuario
Procedimiento
­Aplicar las medidas de seguridad e higiene.
• Evitar la manipulación de líquidos cerca del equipo.
• No introducir objetos extraños en los dispositivos de disco.
• No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpiar el área de trabajo.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Encender equipo de cómputo.
Abrir sesión de UNIX o emulación de terminal UNIX.
Entrar al Unix Shell.
Teclear cd \ , teclear enter.
Teclear mkdir prueba, teclear enter.
Teclear pwd, teclear enter.
Teclear en el directorio prueba, vi primer.doc, teclear enter.
Escribir el siguiente texto: Este es mi primer cambio de permisos.
Salvar el archivo con la instrucción: Wq, teclear enter.
Cd \, teclear enter.
Cd prueba, teclear enter. ls –l , teclear enter.
Teclear chmod 354 primer, teclear enter.
Teclear ls –l , teclear enter.
Regresar los permisos anteriores.
Repetir los procedimientos con asesoría del PSP cambiando permisos a otros archivos.
Teclear ctrl. –d para salir del shell
Apagar el equipo de cómputo
4 Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.
Operación de Sistema Operativo Multiusuario
89
Lista de cotejo de la práctica
Número 7:
Manejo de permisos
Nombre del alumno:
Instrucciones:
A continuación se presentan los criterios que van a ser
verificados en el desempeño del alumno mediante la observación
del mismo.
De la siguiente lista marque con una 9 aquellas observaciones
que hayan sido cumplidas por el alumno durante su desempeño
Si
Desarrollo
No
No
Aplica
®Aplicó las medidas de seguridad e higiene.
• Evitó la manipulación de líquidos cerca del equipo.
•
•
•
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
No introdujo objetos extraños en los dispositivos de disco,
No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo.
Limpió el área de trabajo.
Encendió el equipo de cómputo.
Abrió sesión de UNIX.
Tecleó cd \
Tecleó mkdir prueba
Tecleó pwd
Tecleó en el directorio prueba, vi primer.doc, tecleó enter.
Escribió el texto: Este es mi primer cambio de permisos
Salvó el archivo con la instrucción: wq, tecleó enter.
Tecleó cd\, tecleó enter
Tecleo cd prueba, tecleó enter
Tecleó ls –l, dio enter
Tecleo chmod 354 primer, dio enter
Tecleó ls –l, dio enter
Regresó los permisos anteriores
Repitió los procedimientos con asesoría del PSP cambiando permisos a otros
archivos.
16. Salió del shell
17. Apagó el equipo
4 Depositó los residuos recuperables.
90
Operación de Sistema Operativo Multiusuario
Observaciones:
PSP:
Hora de
inicio:
Operación de Sistema Operativo Multiusuario
Hora de
término:
Evaluación:
91
Unidad de
aprendizaje:
1
Práctica número:
8
Nombre de la
práctica:
Manejo de direccionamientos.
Propósito de la
práctica:
Al finalizar la práctica, el alumno manejará direccionamientos entre directorios del
sistema a través de comandos.
Escenario:
Laboratorio de
Informática.
Duración:
6 hrs.
Materiales
• Software instalado de UNIX o
software de emulación UNIX.
Maquinaria y Equipo
Herramienta
• Terminal o Computadora
(Pentium III).
• Manual en línea de UNIX.
• Cuaderno de notas.
• Pluma o lápiz.
92
Operación de Sistema Operativo Multiusuario
Procedimiento
­Aplicar las medidas de seguridad e higiene.
• Evitar la manipulación de líquidos cerca del equipo.
• No introducir objetos extraños en los dispositivos de disco.
• No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpiar el área de trabajo.
1.
2.
3.
4.
Encender equipo de cómputo.
Abrir sesión de emulación de terminal UNIX.
Entrar al Unix Shell.
Hacer un esquema que refleje la estructura del árbol de los principales directorios del sistema hasta el
tercer nivel.
fuentes
c
C++
bin
doc
ps
utiles
correo
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Averiguar de todas las formas que conozca (al menos tres) cuál es su directorio HOME.
Cree un subdirectorio que se llame pruebas cuyo padre sea el directorio raíz. ¿Qué ocurre y por qué?.
Cree el siguiente árbol de directorios a partir de su directorio HOME:
¿Qué secuencia de órdenes ha utilizado?.
Sitúese en el subdirectorio utiles e intente borrarlo desde él mismo.
Desde el subdirectorio utiles, sitúese en el subdirectorio c
Utilizando direccionamiento relativo.
Indique todas las formas posibles para situarse desde el subdirectorio C, a su directorio HOME.
Sitúese en el subdirectorio fuentes usando direccionamiento absoluto.
Intente borrar, desde el subdirectorio fuentes, el subdirectorio docs usando la orden rmdir. ¿Qué ocurre y
¿por qué?
15. Teclear ctrl.-d para salir de shell.
16. Repetir los procedimientos con asesoría del PSP.
17. Apagar el equipo de cómputo
Nota: El instructor deberá adecuar la práctica al equipo con el que se cuenta.
4 Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.
Operación de Sistema Operativo Multiusuario
93
Lista de cotejo de la práctica
Número 8:
Manejo de direccionamientos
Nombre del alumno:
Instrucciones:
A continuación se presentan los criterios que van a ser
verificados en el desempeño del alumno mediante la observación
del mismo.
De la siguiente lista marque con una 9 aquellas observaciones
que hayan sido cumplidas por el alumno durante su desempeño
Si
Desarrollo
No
No
Aplica
®Aplicó las medidas de seguridad e higiene.
• Evitó la manipulación de líquidos cerca del equipo.
• No introdujo objetos extraños en los dispositivos de disco,
• No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpió el área de trabajo.
1. Encendió el equipo de cómputo.
2. Abrió sesión de emulación UNIX.
3. Entró a Unix Shell.
4. Hizo el esquema hasta el tercer nivel.
5. Averiguó en al menos tres formas cuál es su directorio HOME.
6. Creó el subdirectorio pruebas
7. Explicó que ocurrió y porqué
8. Creó completo el árbol de directorios.
9. Anotó las secuencias de ordenes utilizadas
10. Se situó en utiles y lo intentó borrar
11. Desde utiles se situó en c utilizando direccionamiento relativo
12. Indicó las formas posibles para situarse desde c en home
13. Se situó en fuentes usando direccionamiento absoluto
14. Uso la orden rmdir
15. Anotó lo que ocurrió y por qué
16. Salió del shell de UNIX.
17. Repitió los procedimientos con asesoría del PSP.
4 Depositó los residuos recuperables.
94
Operación de Sistema Operativo Multiusuario
Observaciones:
PSP:
Hora de
inicio:
Operación de Sistema Operativo Multiusuario
Hora de
término:
Evaluación:
95
RESUMEN
El S.O. Unix fué creado a finales de la
década de los 60 sobre la base de varios
trabajos realizados conjuntamente por el
MIT y Laboratorios BELL. Dichos trabajos
(proyecto MULTICS) iban encaminados a la
creación de un macrosistema de
computación que diese servicio a miles de
usuarios. Si bien el proyecto fracasó,
posiblemente
por
intentar
abarcar
demasiado contando con unos elementos
hardware limitados en ésa época, influyó;
decisivamente sobre la evolución de los
sistemas informáticos posteriores.
Un antiguo componente de dicho
proyecto (Ken Thompson) desarrolló por
su
cuenta
un
sistema
operativo
monousuario con la característica principal
de un sistema de archivos jerárquico.
96
El sistema encontró muchos entusiastas y
se hizo portable al reescribirse casi
íntegramente en lenguaje «C», y se
suministró en código fuente a las
universidades como objeto de formación.
Así, la universidad de California en
Berkeley
retocó
dicho
sistema
(fundamentalmente, comunicaciones y
diversas utilidades como el editor «vi»), y
liberó lo que luego sería el BSD, uno de los
dos «dialectos» principales del UNIX.
Un sistema UNIX en modo multiusuario
(puede arrancarse en modo monousuario
para labores de administración) espera la
entrada de un usuario al sistema, proceso
que recibe el nombre de login.
Operación de Sistema Operativo Multiusuario
AUTOEVALUACIÓN DE CONOCIMIENTOS DEL CAPITULO 1
1.
2.
3.
4.
¿Para qué sirven los menús de compilación?
¿Cuál es la sintaxis de la instrucción MENÚ ?
¿Qué realiza la instrucción MESSAGE?
¿Qué instrucciones pueden asociarse a la instrucción ERROR para despliegue de
mensajes?
5. ¿Cuál es la sintaxis de la instrucción PROMPT?
Operación de Sistema Operativo Multiusuario
97
Respuestas a las autoevaluaciones de conocimientos por capítulo
CAPÍTULO 1
1.
Los menús de compilación son utilizados para compilar el código 4GL, o bien como
módulo ejecutable, o bien como un módulo ligable.
2.
menú «NOMBRE_DEL_MENU»
command «OPCION»
command key (LISTA_DE_TECLAS)
command key (LISTA_DE_TECLAS) «OPCION» «MENSAJE DE AYUDA PARA OPCION»
help NUMERO_DE_AYUDA
instrucciones en 4gl
...
(continue menu)
(exit menu)
(next option «OPCION»
end menú
3.
Se usa para desplegar una cadena de caracteres sobre la línea de mensajes. La línea de
mensajes default se ubica en la línea 2 de la ventana activa.
4.
reverse
blink
underline
normal
bold
dim
invisible
5.
prompt TEXTO DEL MENSAJE ( attribute ( LISTA DE ATRIBUTOS ) )
for ( char ) NOMBRE DE VARIABLE
( help NUMERO DE AYUDA )
( on key ( LISTA DE TECLAS )
INSTRUCCIÓN
end prompt
98
Operación de Sistema Operativo Multiusuario
ADMINISTRACIÓN DE PROCESOS DE SISTEMA OPERATIVO
MULTIUSUARIO.
Al finalizar finalizar la unidad, el alumno administrará cuentas, procesos y
archivos por medios de shell y comandos, para gestionar eficazmente todos
los procesos que conlleva el manejo de un Sistema Operativo Multisuario.
Operación de Sistema Operativo Multiusuario
99
MAPA CURRICULAR DE LA UNIDAD DE APRENDIZAJE
Operación de
Sistema operativo
Multiusuario
Módulo
144 hrs.
Unidad de
Aprendizaje
1. Manejo de
ambiente de sistema
operativo
multiusuario.
55 hrs.
Resultados
de
Aprendizaje
100
2.Administración de
procesos de
sistema operativo
multiusuario.
53 hrs.
2.1 Utilizar comandos con sus opciones por medio de instrucciones UNIX.
18 hrs.
2.2 Manejar la administración de cuentas de UNIX con base a permisos
establecidos de usuarios
2.3 Organizar la información de archivos y discos mediante el sistema de
archivos.
18 hrs.
17 hrs.
Operación de Sistema Operativo Multiusuario
SUMARIO
¾
¾
¾
¾
¾
¾
USO DE SHELL
RED
PARADA Y ARRANQUE DEL SISTEMA UNIX
ADMINISTRACION DE LOS USAURIOS Y GRUPOS
SISTEMA DE ARCHIVOS
ORDENES PARA ADMINISTRAR EL SISTEMA DE ARCHIVOS
RESULTADO DE APRENDIZAJE
2.1.
Utilizar comandos con sus opciones por medio de instrucciones UNIX
2.1.1 USO DE SHELL
.Paso de parámetros a un programa de shell.
Teclas usadas para el control de trabajos.
Operación de Sistema Operativo Multiusuario
101
•
Variables especiales de shell
(funciones en programas de
shell).
Una variable de entorno en la shell es una
referencia a un valor. Se distinguen dos
tipos locales y globales.
Una variable local es aquella que se define
en el shell actual y sólo se conocerá en ese
shell durante la sesión de conexión
vigente.
Una variable global es aquella que se
exporta desde un proceso activo a todos
los procesos hijos.
Para crear una variable local :
Una variable se referencia anteponiendo a
su nombre el signo dòlar ‘$’. Utilizando el
comando ‘echo’, que imprime por la
salida estándar el valor que se le indique,
podemos ver el contenido de algunas de
éstas va riables:
# echo TERM
TERM
(!! MUY MAL!! - Hemos dicho que la variable se
referencia por $).
# echo $TERM
vt220
(AHORA SI)
Para borrar una variable, empleamos el
comando «unset» junto con el nombre de
la variable que queremos quitar, como:
# echo $cosa ( saca el valor de dicha variable )
ANTONIO ROMERO ( el que le dimos antes )
# cosa=»ANTONIO ROMERO»
Para hacerla global
# export cosa
Para ver qué variables tenemos:
# set
LOGNAME=root
TERM=vt220
PS1=#
SHELL=/bin/sh
( .. salen mas .. )
Una variable se inicializa con la expresión
<variable>=<valor> . Es imprescindible
que el carácter de igual ‘=’ vaya SIN
espacios. Son lícitas las siguientes
declaraciones:
# TERM=vt220
# TERM=»vt220"
(TERM toma el mismo valor en ambos
casos)
# contador=0
102
# unset cosa ( BORRAR la variable )
# echo $cosa
# ( ya no tiene nada )
Se debe tener cuidado con borrar
variables empleadas por programas
nativos de UNIX, tales como TERM! Si
borráis ésta variable, el editor «vi»
automáticamente dejará de funcionar.
Otro problema que es susceptible de
suceder es el siguiente: supongamos una
variable denominada COSA y otra
denominada COSAS. La shell, en el
momento de evaluar la expresión
«$COSAS», se encuentra ante la siguiente
disyuntiva:
Evaluar $COSA y pegar su contenido a la «S» (
<contenido de COSA> + «S» )
Evaluar $COSAS , empleando intuición.
Cara a la galería, ambas evaluaciones por
parte de la shell serían correctas, pero
dependiendo de lo que nosotros
queramos hacer puede producir efectos
indeseados. A tal fin, en conveniente
Operación de Sistema Operativo Multiusuario
utilizar los caracteres « ;llave» -{}- para
encerrar la variable que queremos
expandir. De tal forma, para reflejar
«COSA», escribiríamos:
${COSA}
Y para reflejar «COSAS»,
${COSAS}
Con lo que tenemos la seguridad de que
las
variables
siempre
son
bien
interpretadas. Las llaves se utilizan
SIEMPRE en el momento de evaluar la
variable, no de asignarle valores. No tiene
sentido
hacer
cosas
como
{COSAS}=tontería.
Algunas de las variables usadas por el
sistema ó por programas del mismo son:
HOME:: Directorio personal . Usado por el
comando «cd» , se cambia aquí al ser llamado sin
argumentos.
LOGNAME: Nombre del usuario con el que se ha
comenzado la sesión.
PATH: Lista de rutas de acceso, separadas por dos
puntos ‘:’ y donde una entrada con un sólo punto
identifica el «direcorio actual». Son válidas
asignaciones como:
# PATH=$PATH:/home/pepe:/home/antonio
PS1: Símbolo principal del indicador de
«preparado» del sistema. Normalmente, su valor
será ‘#’ -o ‘$’.
TERM: Tipo de terminal.
Podemos ver cómo se inicializan las variables
consultando los ficheros de inicialización. Estos
ficheros son:
/etc/profile: Fichero de inicialización global .
Significa que, tras hacer login, todos los usuarios
pasan a través del mismo. Inicializa variables como
PATH, TERM ....
<directorio usuario>/.profile: Fichero particular,
reside en el «home directory» del usuario en
cuestión. Es, por tanto, particular para cada uno
de ellos y es aquí donde podemos configurar
cosas tale s como que les salga un menú al entrar,
mostrarles el correo ...
Operación de Sistema Operativo Multiusuario
Dependiendo de cuales sean las comillas
utilizadas en una expresión, los resultados
son los siguientes:
Carácter backslash \ :Quita el significado especial
del carácter a continuación de la barra invertida.
Comillas simples ‘ ‘ :Quitan el significado especial
de todos los caracteres encerrados entre comillas
simples.
Comillas dobles « « :Quitan el significado especial
de todos los caracteres EXCEPTO los siguientes : $
(dolar) , \ (backslash) y ` (comilla de ejecución).
Comillas de ejecución ‘ ‘ :Ejecutan el comando
encerrado entre las mismas y sustituyen su valor
por la salida estándar del comando que se ha
ejecutado .
Es mejor, sobre todo en el último caso,
ver algunos ejemplos:
Para sacar un cartel en pantalla que contenga
comillas, deberemos «escaparlas» pues, si no, la
shell las interpretaría, como en:
# echo «Pulse «INTRO» para seguir» ( MAL!! - la
shell ve 4 comillas y no las sacaría ! )
# echo «Pulse \»INTRO\» para seguir» ( AHORA SI
sale bien )
También, podríamos haber escrito el texto entre
comillas simples:
# echo ‘Pulse «INTRO» para seguir’ ( BIEN como
antes)
lo que ocurre es que de ésta manera no se
interpretaría nada; nos podría convenir
algo como:
# echo ‘Oye, $LOGNAME pulsa «INTRO» para
seguir’
y saldría:
Oye, $LOGNAME pulsa INTRO para seguir
Lo cual no vale. Habría que poner:
# echo «Oye, $LOGNAME pulsa \»INTRO\» para
seguir»
y saldría:
Oye, root pulsa INTRO para seguir.
103
En el caso de comillas de ejecución ,
podemos escribir:
Además de éstas, existen otras que
detallam os a continuación:
# echo «Oye, `logname` pulsa \»INTRO\» para
seguir»
$0 : Su contenido es el nombre de la shell-script
que estamos ejecutando.
$1 , $2 : Primer y segundo parámetro posicional.
$# : Número de parámetros que han pasado a la
shell.
$ * : Un argumento que contiene todos los
parámetros que se han pasado ( $1 , $2 ...) menos
el $0.
$? :Número donde se almacena el código de error
del último comando que se ha ejecutado.
$$ :Número de proceso actual (PID)
$! :Ultimo número de proceso ejecutado.
(sale bien, la shell sustituye el comando
logname por su resultado)
o bien, valdrían expresiones como:
# echo «Y estas en el terminal: `tty`»
Y estas en el terminal /dev/ttyp002
Hay que imaginarse, por tanto, que la
shell «ve» el resultado del comando en la
línea de ejecución.
Valen
también,
como
asignaciones a variables:
es
lógico,
# TERMINAL=‘tty‘
# echo $TERMINAL
/dev/ttyp001
La shell, además de interpretar y ejecutar
comandos, tiene primitivas de control de
ejecución de programas tales como
sentencias condicionales y bucles.
La interpretación del lenguaje se lleva a
cabo prácticamente en tiempo real; a
medida que va interpretando va
ejecutando.
Los programas, como se ha mencionado
antes, se interpretan en tiempo de
ejecución. Por tanto, la codificación de
una shell-script es sumamente sencilla en
el sentido en el que basta con escribir en
un fichero de texto l os comandos y
ejecutarlo.
Variables
Dentro de una shell, existen las variables
de entorno que hayamos definido
anteriormente, bien en la misma, en otra
ó en los ficheros profile de inicialización.
104
# :COMENTARIO: Todo lo que haya a la
derecha de la almohadilla se toma como
comentario.
Ejemplo: Supongamos que hemos escrito
la
siguiente
shell-script
llamada
«prueba.sh»:
echo «La escript se llama $0»
echo «Me han llamado con $# argumentos»
echo «El primero es $1»
echo «Y todos son $*»
echo «Hasta luego lucas!»
Y la podemos ejecutar de dos maneras:
1) Directamente:
# sh prueba.sh uno dos
2) Dando permisos y ejecutando como
un comando:
# chmod 777 prueba.sh
# prueba.sh uno dos
La salida:
Me han llamado com 2 argumentos
El primero es uno
Y todos son uno dos
Hasta luego lucas
Hemos visto que los comandos se separan
por líneas, y se van ejecutando de forma
secuencial. Podemos, no obstante, poner
Operación de Sistema Operativo Multiusuario
varios comandos en la misma línea
separandolos por punto y coma ‘;’.
Si la ejecutamos como
Además, podemos agrupar comandos
mediante paréntesis, lo cual permite
ejecutarlos en un subentorno ( las
variables que usemos no nos van a
interferir en nuestro proceso «padre»)
al volver al ‘#’ NO se ha modificado la
variable! Para que SI la modifique, se
llamaría como:
# ( date ; who ) | wc –l
Hay que suponerse al punto como un
«include», que en vez de crear un proceso
hijo «expande» el código dentro de
nuestra shell actual.
Normalmente, ejecutar una shell implica
crear un proceso hijo, y el proceso padre
(normalmente, nuestra sesión inicial de
shell) espera a que dicho proceso acabe
para continuar su ejecución ( si nosotros
lanzamos un pro grama shell-script, hasta
que éste no acaba (hijo), no nos aparece
en pantalla el inductor de comandos ‘#’
(padre) ).
Por definición, en UNIX un proceso
hijo, al rodar en un espacio de datos
distinto, hereda varias cosas del padre,
entre ellas todas las variables de entorno;
pero por ello, no puede modificar el
entorno del padre ( si modificamos en
una shell script el contenido, por ejemplo,
de «TERM», al acabar dicha shell y volver
al padre la variable continúa con su valor
original. Hay situaciones en las cuales
necesitamos que una shell modifique
nuestro entorno actu al, y a tal efecto se
ejecuta con un punto (.) delante de la
shell-script.
Es mejor ver éste último aspecto mediante
un programa en shell.script: supongamos
una shell que se llame «tipoterm» que nos
pida el terminal y nos ponga la variable
TERM de acuerdo a ésta entrada:
# script para pedir el tipo de terminal
echo «Por favor escriba que terminal tiene :»
read TERM
echo «Ha elegido — $TERM»
Operación de Sistema Operativo Multiusuario
# tipoterm
# . tipoterm
Comando read
Con el fin de permitir una ejecución
interactiva, existe el comando «read
<nombre_variable>», el cual, en el
momento de ejecución, espera una
entrada de datos por teclado terminada
en <INTRO>; lo que han introducido por
el teclado va a la variable especificada.
Supongamos la siguiente shell-script:
echo «Como te llamas?»
read nom
echo «Hola $nom»
Ejecución:
Como te llamas ?
jose ( aquí escribimos «jose» y pulsamos <INTRO>
)
Hola jose
el comando «read» , ha cargado «jose» en «nom».
Secuencias condicionales : if .. fi:
La sintaxis de ésta sentencia es:
if <condicion>
then
..... comandos ....
else
..... comandos ....
fi
105
(la cláusula «else» puede omitirse; sólo se
usará cuando se requiera).
echo «Jose NO esta registrado como usuario».
fi
Secuencia condicional case.. esac.
La condición puede escribirse como «test
<argumentos>» ó con corchetes. Es
imprescindible en este último caso, poner
espacios entre los corchetes y los valores.
Posibles condiciones y su sintaxis:
if [ <variable> = <valor> ] : variable es igual a
valor. Ojo con los espacios en ‘=’ .
if [ <variable> != <valor> ] : variable es distinta
a valor.
if [ <variable -eq <valor> ] : variable es igual a
valor . La variable debe contener números. En éste
caso , valen las comparaciones siguientes :
-eq : Igual (equal)
-ne : Distinto (not equal)
-ge : Mayor ó igual (Greater or equal).
-le : Menor ó igual (Less or equal).
-lt : Menor que (Less than).
-gt : Mayor que (Greater than).
if [ -f <fichero> ] : Existe <fichero>. Ojo con los
espacios.
if [ -d <fichero> ] : Existe <fichero> y es un
directorio.
if [ -s <fichero> ] :Existe <fichero> y tiene un
tamaño mayor de cero.
if [ -x <fichero> ] : Existe <fichero> y es
ejecutable.
Sintaxis:
case <variable> in
<valor> ) <comando> ( la variable es = valor,
ejecuta los comandos hasta ‘;;’ )
<comando>
;;
<valor> ) <comando>
<comando>
;;
•
) <comando> ( Clausula «otherwise» ó
«default» : Si no se cumple alguna
<comando> de las anteriores ejecuta los
comandos hasta ‘;;’ )
;;
esac ( Igual que if acaba en fi , case acaba
en esac )
Ejemplos: minimenu.sh
Ejemplo de ésto último sería el siguiente
programa:
clear # borrar pantalla
echo «1.- Quien hay por ahi ?» # pintar opciones
echo «2.- Cuanto disco queda ?»
echo «3.- Nada. Salir. «
echo «Cual quieres ? : \c» # el carácter «\c» evita
que el echo salte nueva línea
read opcion # «opcion» vale lo que se ha tecleado
en pantalla
case «$opcion» in # IMPORTANTE : Poner la
variable como «$opcion»
1) who ;; # pues si el señor pulsa <INTRO> daría
error al no valer nada.
2) df;;
3) echo «Adios»;;
*) echo «Opcion $opcion Es Incorrecta» ;;
esac
Bucles FOR.
Sintaxis :
for <variable> in <lista>
do
<.. comandos ..>
done
if grep jose /etc/passwd.
then # retorno del comando -grep- ha sido CERO.
echo «Jose esta registrado como usuario».
else # retorno del comando grep NO ha sido
CERO.
El bloque entre «for» y «done» da tantas
vueltas como elementos existan en
<lista>, tomando la variable cada uno de
En el campo <condición> vale escribir
comandos, los cuales se ejecutarán y el
valor de la condición dependerá de dos
factores:
* Retorno 0 del comando = VERDADERO.
* Retorno != 0 del comando = FALSO.
106
Operación de Sistema Operativo Multiusuario
los elementos de <lista> para cada
iteración. En ésto conviene no confun
dirlo con los for..next existentes en los
lenguajes de tipo algol (pascual, basic ...)
que varían contadores.
Supongamos un programa que contenga
un bucle for de la siguiente manera;
for j in rosa antonio
do
echo «Variable = $j»
done
Y la salida que produce es:
Variable es rosa
Variable es antonio
Explicación: el bloque ha efectuado dos
iteraciones (dos vueltas). Para la primera,
la variable -j- toma el valor del primer
elemento -rosa-, y para la segunda, antonio-.
En el campo <lista> podemos sustituir la
lista por patrones de ficheros para la shell,
la cual expande dichos patrones por los
ficheros correspondientes; de tal forma
que al escribir
for j in *
la shell cambia el ‘*’ por todos los ficheros
del directorio actual. Por tanto, el
siguiente programa:
for j in *
do
echo $j
done
equivale al comando ‘ls’ sin opciones merece la pena detenerse un momento
para comprender ésto.
Operación de Sistema Operativo Multiusuario
Vale también poner en el campo <lista>
comillas de ejecución junto con cualquier
comando; la construcción - for j in ‘cat
/etc/passwd‘ -, por ejemplo, ejecutaría
tantas iteraciones como líneas tuviese
dicho fichero, y para cada vuelta, la
variable -j- contendría cada una de las
líneas del mismo. Por tanto, valdrían
expresiones como - for j in ‘who‘ - para
procesar todos los usuarios activos en el
sistema, - for j in ‘lpstat -o ‘ -, para
procesar todos los listados pendientes , ó
- for j in ‘ps -e‘ - para tratar todos los
procesos de nuestra sesión.
Bucles WHILE.
Sintaxis :
while <condición>
do
( ... comandos ... )
done
Aquí las iteraciones se producen mientras
que la <condición> sea verdadera ( ó
retorno = 0 ). En caso que sea falsa ( ó
retorno != 0 ), el bucle termina.
La sintaxis de <condición> es igual que
en el comando -if- .
Ejemplo:
while [ «$opcion» != «3» ]
do
echo «Meta opcion»
read opcion
done
ó también, utilizando comandos:
echo «Escribe cosas y pulsa ^D para terminar»
while read cosa
do
echo $cosa >> /tmp/borrame
done
echo «Las lineas que has escrito son :»
cat /tmp/borrame
107
Explicación : El comando -read- devuelve
un retorno VERDADERO (cero) mientras
que no se pulse el carácter EOF ( ^D); por
tanto, el bucle está indefinidamente
dando vueltas hasta dar ése carácter.
• Contadores: sentencia expr
La sentencia expr evalúa una expresión y
la muestra en la salida estándar. La
expresión normalmente consiste de dos
números ó variables de contenido
numérico y un operador de suma, resta,
multiplicación ó división.
El «1» resultante va a sacar por la salida
estándar. Pero como hemos puesto las
comillas de ejecución, se asigna a pepe.
Al final , $pepe vale 1.
Pues ya se pueden ejecutar bucles con
contadores. Considerese el siguiente
programa:
cnt=0
while [ $cnt -lt 50 ]
do
cnt=‘expr $cnt «+» 1‘
echo «Vuelta numero $cnt»
done
Se autoexplica.
Operadores AND / OR.
Son válidos los comandos siguientes:
expr 100 «+» 1 # saca en pantalla 101
expr 100 «-» 1 # saca en pantalla 99
expr 100 «*» 2 # OJO CON LAS COMILLAS
DOBLES- Previenen a la shell de sustituciones.
# Bueno, todo el mundo sabe lo que es
100 * 2, no?.
expr 100 «/» 2
Por tanto, podemos escribir :
pepe=‘expr 10 «*» 5‘ # y la variable pepe vale 50.
ó incluso:
pepe=0
pepe=‘expr $pepe «+» 1‘
Esto último es bastante menos evidente.
Para comprenderlo, hay que creerse que
la shell ejecuta lo siguiente:
Al principio , $pepe vale 0.
En cualquier expresión de asignación,
PRIMERO se calcula el resultado y
DESPUES se ejecuta la asignación. Por
tanto, lo primero que la shell hace es
«expr 0 + 1».
108
Una construcción usual en la shell,
utilizada principalmente por lo compacto
de su código, pero con el inconveniente
de que permite oscurecer el código son el
operador «OR» -||- y el operador «AND&q
uot; -&&- .
El operador «OR» ejecuta el primer
comando, y si el código de error del
mismo es FALSO (distinto de cero),
ejecuta el segundo comando.
El operador «AND» ejecuta el primer
comando, y si el código de error del
mismo es VERDADERO (igual a cero),
ejecuta el segundo comando.
Veamos un ejemplo y, por favor, reléase a
continuación los dos párrafos anteriores:
cd /home/basura && rm -f *
Explicación: nos cambiamos al directorio
indicado. Sólamente en el caso de haber
tenido éxito, nos cargamos todos los
ficheros del directorio actual.
ls /home/basurilla || mkdir /home/basurilla
Operación de Sistema Operativo Multiusuario
Explicación: El comando ls falla si no
existe el directorio indicado. En tal caso,
se crea.
banner «hola» | lp && echo «Listado
Mandado» || echo «Listado ha cascado»
set -n :Noexec. Lee comandos, los
interpreta pero NO los ejecuta. Vale para
ver errores de sintaxis antes de probarlo
de verdad.
Explicación: El comando son dos , el
banner y el lp. Si por lo que sea no se
puede imprimir, da el mensaje de error; si
va todo bien, sale Listado Mandado.
set -e :Errexit. Terminar la ejecución
inmediatamente si alguno de los
comandos
empleados devuelve un
retorno distinto de VERDADERO ( 0 ) y NO
se evalúa su retorno. El retorno de un
comando se determina evaluado en las
siguientes sentencias:
Depuración de «shell scripts».
if..fi , while do..done , until do..done.
Si bien los métodos utilizados para ésto
son bastante «toscos», ha de tenerse en
cuenta que la shell NO se hizo como un
lenguaje de programación de propósito
general.
a la izquierda del operador AND/OR (-||ó -&&- ).
Cuando se requieren virguer&i acute;as,
ha de acudirse bien a lenguajes
convencionales ó bien a intérpretes más
modernos
y
sofisticados
(y
más
complicados, por supuesto), tales como el
TCL (Task Control Language) ó el PERL, los
cuales si bien son de libre dominio no
vienen «de faábrica» en todos los equipos.
Normalmente, emplearemos el comando
«set», el cual modifica algunos de los
comportamientos de la shell a la hora de
interpretar los comandos:
set -v: Verbose. Saca en la salida de error
su entrada (es decir, las líneas del script
según los va leyendo, que no ejecutando,
pues pirmero se lee y después se ejecuta,
que ésto es un intérprete y no hay que
olvidarlo).
set -x :Xtrace. Muestra cada comando
según lo va ejecutando por la salida de
error, antecedido por un «+».
Operación de Sistema Operativo Multiusuario
•
Señales y orden trap.
Las puertas falsas (trap doors o back
doors) son un mecanismo establecido en
el sistema por su diseñador o por alguien
que ha modificado el funcionamiento del
mismo. Su objetivo es ofrecer un modo de
acceder al sistema esquivando todas las
medidas de seguridad establecidas
cuando se usa el procedimiento normal.
Se trata pues de proporcionar una ruta
directa y oculta de acceso al sistema.
En algunas ocasiones las puertas falsas se
establecen durante el desarrollo de la
aplicación, con el fin de testearla o
permitir un acceso directo y fácil a
determinados módulos en caso de fallo
del mecanismo normal de acceso. En
general estas puertas se eliminan al
distribuir la aplicación, pero siempre hay
olvidos.
El mecanismo de acceso, conocido por la
persona que crea la puerta falsa, puede
ser una combinación de teclas dadas, una
secuencia bien definida de acciones, un
login particular, etc.
109
Un ejemplo de puerta falsa es la que
presentan las BIOS de las placas AWARD.
A la hora de modificar sus parámetros
podemos utilizar cualquiera de las
siguientes contraseñas mágica: «condo» y
«589589». Aunque el propietario del
ordenador haya incorporado su propia
contraseña, las dos anteriores suponen
una puerta falsa que permite entrar a la
configuración de la BIOS.
2.1.2 RED
•
Servicios de red.
Dentro de este apartado vamos a
comentar brevemente la función de
algunos servicios de Unix y sus potenciales
problemas de seguridad. Los aquí
expuestos
son
servicios
que
habitualmente han de estar cerrados, por
lo que no implican excesivos problemas
de seguridad conocidos. Así, no vamos a
entrar en muchos detalles con ellos; en
puntos siguientes hablaremos con más
extensión de otros servicios que suelen
estar ofrecidos en todas las máquinas,
como ftp, telnet o SMTP, y que en su
mayoría presentan mayores problemas de
seguridad.
systat
El servicio systat se asocia al puerto 11 de
una máquina Unix, de forma que al recibir
una petición mediante TCP el demonio
inetd ofrece una imagen de la tabla de
procesos del sistema, por ejemplo
ejecutando una orden como ps -auwwx
en Linux o ps -ef en Solaris; en algunos
Unices se ofrece la salida de órdenes
como who o w en lugar de la tabla de
procesos: es fácil configurar lo que cada
110
administrador desee mostrar simplemente
modificando la línea correspondiente
de/etc/inetd.conf:
anita:~# grep systat /etc/inetd.conf
systat stream tcp nowait root /usr/bin/ps
-ef
anita:~#
ps
Bien se ofrezca la tabla de procesos o bien
otro tipo de información sobre el sistema,
este servicio es habitual encontarlo
deshabilitado, ya que cualquier dato
sobre nuestro sistema (especialmente
procesos, nombres de usuario, máquinas
desde las que conectan...) puede ser
aprovechado por un pirata para atacar el
equipo. Si por motivos de comodidad a la
hora de administrar varios hosts dentro
de una red local necesitamos tener
abierto systat, debemos restringir las
direcciones desde las que se puede
acceder al servicio mediante TCP
Wrappers.
daytime
El servicio daytime, asociado al puerto 13,
tanto TCP como UDP, es un servicio
interno de inetd (esto es, no hay un
programa externo que lo sirva, el propio
inetd se encarga de ello); al recibir una
conexión a este puerto, el sistema
mostrará la fecha y la hora, en un formato
muy similar al resultado de la orden date:
anita:~# telnet rosita daytime
Trying 195.195.5.1...
Connected to rosita.
-Escape character is ‘^]’.
Thu Apr 20 05:02:33 2000
Connection closed by foreign host.
anita:~#
Aunque a primera vista este servicio no
represente un peligro para la integridad
de nuestro sistema, siempre hemos de
Operación de Sistema Operativo Multiusuario
recordar una norma de seguridad
fundamental: sólo hay que ofrecer los
servicios estrictamente necesarios para el
correcto funcionamiento de nuestras
máquinas. Como daytime no es un
servicio básico, suele ser recomendable
cerrarlo; además, la información que
proporciona, aunque escasa, puede ser
suficiente para un atacante: le estamos
indicando el estado del reloj de nuestro
sistema, lo que por ejemplo le da una idea
de la ubicación geográfica del equipo. Un
servicio parecido en muchos aspectos a
daytime es time (puerto 37, TCP y UDP);
también indica la fecha y hora del equipo,
pero esta vez en un formato que no es
inteligible para las personas:
anita:~# telnet rosita time
Trying 195.195.5.1...
Connected to rosita.
Escape character is ‘^]’.
[‘^Connection closed by foreign host.
anita:~#
Este servicio suele ser más útil que el
anterior: aunque una persona no entienda
la información mostrada por time, sí que
lo hace una máquina Unix. De esta forma,
se utiliza time en un servidor para que las
estaciones cliente puedan sincronizar sus
relojes con él con órdenes como netdate o
rdate:
luisa:~# date
Thu Apr 20 02:19:15 CEST 2000
luisa:~# rdate rosita
[rosita] Thu Apr 20 05:10:49 2000
luisa:~# date
Thu Apr 20 02:20:02 CEST 2000
luisa:~# rdate -s rosita
luisa:~# date
Thu Apr 20 05:11:59 2000
luisa:~#
Operación de Sistema Operativo Multiusuario
Los problemas de time son en principio
los mismos que los de daytime; aunque
también es recomendable mantener ese
servicio cerrado, es más fácil imaginar
situaciones en las que un administrador
desee ofrecer time en varias máquinas
que imaginar la necesidad de ofrecer
daytime.
netstat
De la misma forma que systat ofrecía
información sobre el estado de nuestro
sistema, netstat la ofrece sobre el estado
de nuestra red. Este servicio, asociado al
puerto 15 con protocolo TCP, ejecuta una
orden como netstat (con argumentos que
dependen del clon de Unix utilizado) para
mostar principalmente las conexiones
activas en la máquina; por ejemplo, si en
Linux invocamos a netstat desde
/etc/inetd.conf con la opción ‘-A inet’, al
recibir una conexión se mostrará algo
parecido a lo siguiente:
anita:~# telnet rosita netstat
Trying 195.195.5.1...
Connected to rosita.
Escape character is ‘^]’.
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address
Foreign
Address State
tcp
0
0 rosita:netstat anita:4990
ESTABLISHED
Connection closed by foreign host.
anita:~#
Como
sucedía
con
systat,
es
recomendable deshabilitar este servicio
comentando la línea correspondiente de
/etc/inetd.conf, o en todo caso restringir
el acceso al mismo a máquinas de nuestra
red local, mediante TCP Wrappers. La
información sobre el estado del sistema
de red - o al menos de parte del mismo 111
puede ser muy útil para un atacante, ya
que por ejemplo le está mostrando
nombres de hosts y además le permite
hacerse una idea del tráfico que soporta
la máquina, de los servicios que ofrece, de
los hábitos de conexión de los usuarios.
chargen
chargen (puerto 19, TCP y UDP) es un
generador
de
caracteres
servido
internamente por inetd, que se utiliza
sobre todo para comprobar el estado de
las conexiones en la red; cuando alguien
accede a este servicio simplemente ve en
su terminal una secuencia de caracteres
ASCII que se repite indefinidamente. Los
posibles
problemas
de
seguridad
relacionados con chargen suelen ser
negaciones de servicio, tanto para la parte
cliente como para la servidora. Sin duda el
ejemplo más famoso de utilización de
chargen es una de las anécdotas del
experto
en
seguridad
Tsutomu
Shimomura (el principal contribuidor en la
captura de Kevin Mitnick, el pirata más
famoso de los noventa): cuando
conectaba a un servidor de ftp anónimo,
Shimomura se dió cuenta de que la
máquina lanzaba un finger contra el
cliente que realizaba la conexión. Esto no
le gustó, y decidió comprobar si ese
sistema utilizaba el finger habitual; para
ello modificó el fichero /etc/inetd.conf de
su sistema de forma que las peticiones
finger se redireccionaran al generador de
caracteres chargen. Conectó al servidor de
nuevo, y al hacer éste otro finger, la
máquina de Shimomura se dedicó a
enviar megas y megas de caracteres (
chargen no finaliza hasta que el cliente
corta la conexión); en unas pocas horas el
sistema remoto quedó inoperativo, y a la
112
mañana siguiente ese finger automático
había sido eliminado de la configuración
del servidor. Ese servidor no habría
sufrido una caída si hubiera utilizado
safe_finger, un programa de Wietse
Venema que se distribuye junto a TCP
Wrappers y que limita la potencial
cantidad de información que finger puede
recibir.
tftp
tftp ( Trivial File Transfer Protocol) es un
protocolo de transferencia de ficheros
asociado al puerto 69 y basado en UDP
que no proporciona ninguna seguridad.
Por tanto en la mayoría de sistemas es
obligatorio que este servicio esté
desactivado; su uso principal es el
arranque de estaciones diskless o de
routers a través de la red, ya que la
simpleza
del
protocolo
permite
implementarlo en un chip, y sólo en ese
caso nos veremos obligados a ofrecer el
servicio. Si es este el caso, los ficheros que
deseemos que sean públicos se han de
situar en un determinado directorio
(dependiendo del clon de Unix, /tftpboot/,
/etc/tftpboot/, /usr/local/boot/...) o utilizar
otros nombres de directorio como
argumentos
del
demonio
en
/etc/inetd.conf, algo no recomendable.
Por ejemplo, si en /tftpboot/ guardamos
una copia de la imagen del kernel, los
clientes podrán acceder a ella mediante la
orden tftp:
luisa:~# tftp rosita
tftp> get vmlinuz
Received 531845 bytes in 3.4 seconds
tftp> quit
luisa:~#
Operación de Sistema Operativo Multiusuario
Podemos ver que en ningún momento se
solicita un nombre de usuario o una clave,
lo que nos da una idea de los graves
problemas de seguridad que el ofrecer
este servicio puede implicarnos. Hasta
hace unos años, era normal que los
fabricantes de sistemas Unix vendieran
sus productos con tftp abierto y sin
configurar, con lo que un pirata lo tenía
muy fácil para conseguir cualquier fichero
de contraseñas:
luisa:~# t
tp victima
tftp> get /etc/passwd /tmp/salida
Received 1845 bytes in 0.6 seconds
tftp> quit
luisa:~#
finger
Típicamente el servicio finger (puerto 79,
TCP) ha sido una de las principales fuentes
de probl
mas de Unix. Este protocolo proporciona
información - demasiado detallada - de
los usuarios de una máquina, estén o no
conectados en el momento de acceder al
servicio; para hacerlo, se utiliza la
aplicación finger desde un cliente,
dándole como argumento un nombre de
máquina precedido del símbolo ‘@’ y,
opcionalmente, de un nombre de usuario
( finger sobre el sistema local no utiliza el
servicio de red, por lo que no lo vamos a
comentar aquí). En el primer caso, finger
nos dará datos generales de los usuarios
conectados en ese momento a la
máquina, y en el segundo nos informará
con más detalle del usuario especificado
como parámetro, esté o no conectado:
anita:~# finger @rosita
[rosita]
Login Name
Tty Idle Login Time
Office Office Phone
Operación de Sistema Operativo Multiusuario
toni
Toni at ROSITA */0
28 Apr 20 04:43
(anita)
root
El Spiritu Santo 1
12 Apr 11 02:10
anita:~# finger toni@rosita
[rosita]
Login: toni
Name: Toni at ROSITA
Directory: /home/toni
Shell: /bin/bash
On since Thu Apr 20 04:43 (CEST) on pts/0 from
anita
30 minutes 28 seconds idle
(messages off)
No mail.
No Plan.
anita:~#
Como
podemos
ver,
finger
está
proporcionando mucha información que
podría ser de utilidad para un atacante:
nombres de usuario, hábitos de conexión,
cuentas
inactivas...incluso
algunas
organizaciones rellenan exhaustivamente
el campo gecos del fichero de
contraseñas, con datos como números de
habitación de los usuarios o incluso su
teléfono. Está claro que esto es fácilmente
aprovechable por un pirata para practicar
ingeniería social contra nuestros usuarios
- o contra el propio administrador -. Es
básico para la integridad de nuestras
máquinas deshabilitar este servicio,
restringir su acceso a unos cuantos
equipos de la red local mediante TCP
Wrappers o utilizar versiones del demonio
fingerd como ph ( Phone Book), que
permiten especificar la información que se
muestra al acceder al servicio desde cada
máquina.
POP
El servicio POP ( Post Office Protocol,
puertos 109 y 110 en TCP) se utiliza para
que los usuarios puedan acceder a su
correo sin necesidad de montar sistemas
de ficheros compartidos mediante NFS:
los clientes utilizan SMTP para enviar
113
correo y POP para recogerlo del servidor,
de forma que el procesamiento se realice
en la máquina del usuario. Se trata de un
servicio
que
podríamos
considerar
peligroso, por lo que - como el resto, pero
este
especialmente
debemos
deshabilitarlo a no ser que sea
estrictamente necesario ofrecerlo; en ese
caso debemos restringir al máximo los
lugares desde los que se puede acceder,
mediante TCP Wrappers. En algunos
sistemas se utiliza POP simplemente para
evitar otorgar cuentas completas a los
usuarios: si sólo van a utilizar la máquina
para leer su correo, ¿por qué ofrecerles un
shell ‘completo’, con acceso a todo el
sistema? Realmente esto es cierto (sería
un error permitir ejecutar ciertas órdenes
a aquellos que sólo utilizarán el equipo
para gestionar su correo), pero en muchas
ocasiones esta solución no es del todo
conveniente: aparte de los peligros que
implica un servicio adicional, que de otra
forma no utilizaríamos - en algunos
demonios de POP han surgido bugs que
incluso otorgaban un privilegio de root
remoto sin necesidad de ninguna clave -,
estamos generando un tránsito peligroso
de contraseñas a través de la red. POP
ofrece tres modelos distintos de
autenticación: uno basado en Kerberos,
apenas utilizado, otro basado en un
protocolo desafío-respuesta (APOP, que
tampoco se suele utilizar), y otro basado
en un simple nombre de usuario con su
password correspondiente. Este último, el
más usado en todo tipo de entornos, es
un excelente objetivo para un pirata con
un sniffer: los usuarios suelen configurar
sus clientes para que chequeen el buzón
de correo cada pocos minutos, con lo que
a intervalos muy cortos envían su clave a
un puerto conocido de una máquina
114
conocida;
al
realizar
toda
esta
comunicación en texto claro, un atacante
no tiene más que interceptar la sesión
POP para averiguar nombres de usuario y
claves (aparte de poder leer el correo que
baja del servidor al cliente). Si lo que
deseamos es que nuestros usuarios no
disfruten de una cuenta completa
simplemente para gestionar su correo,
podemos sustituir su shell en /etc/passwd
por el nombre de dicho lector:
ircd:x:1001:100:Gestion
IRC,,,:/home/ircd:/usr/bin/pine
En este caso hemos de tomar una
precaución adicional: la mayoría de
programas de correo ( elm, pine...)
permiten escapes al shell, procedimientos
que tarde o temprano ejecutan con éxito
un intérprete de órdenes; por ejemplo,
con elm no tenemos más que iniciar vi
para escribir un mensaje y en el editor
ejecutar :!/bin/sh para ejecutar este
intérprete. Para evitar estos escapes o
bien podemos modificar el código del
gestor de correo - algo no muy habitual o utilizar ya versiones modificadas
disponibles a través de Internet.
auth
Se llama socket a la combinación de una
dirección de máquina y un puerto; esta
entidad identifica un proceso único en la
red ([CZ95]). Un par de sockets, uno en la
máquina receptora y otro en la emisora
definen una conexión en protocolos como
TCP; esta conexión también será única en
la red en un instante dado. Como vemos,
no entra en juego ningún nombre de
usuario: en TCP/IP se establecen canales
de comunicación entre máquinas, no
entre personas; no obstante, en muchas
Operación de Sistema Operativo Multiusuario
ocasiones nos puede interesar conocer el
nombre de usuario bajo el que cierta
conexión se inicia. Por ejemplo, de esta
forma podríamos ofrecer o denegar un
servicio en función del usuario que lo
solicita, aparte de la máquina desde
donde viene la petición. El protocolo auth
(puerto 113, TCP) viene a solucionar este
problema con un esquema muy simple:
cuando un servidor necesita determinar el
usuario que ha iniciado una conexión
contacta con el demonio identd y le envía
los datos necesarios para distinguir dicha
conexión (los componentes de los dos
sockets que intervienen) de las demás.
De esta forma, el demonio identifica al
usuario en cuestión y devuelve al servidor
información
sobre
dicho
usuario,
generalmente su login. Por ejemplo, si
utilizamos TCP Wrappers - un programa
servidor que utiliza este mecanismo para
determinar nombres de usuario siempre
que sea posible -, se registará el login del
usuario remoto que solicita un servicio en
nuestra máquina si el sistema remoto
tiene habilitado auth:
luisa:~# tail -2 ~adm/syslog
Apr 24 04:16:19 luisa wu.ftpd[1306]: connect
from
rosita
Apr 24 04:16:21 luisa ftpd[1306]: ANONYMOUS
FTP LOGIN FROM \
rosita [195.195.5.1], toni@
luisa:~#
No obstante, si el sistema desde el que
esa persona conecta no tiene habilitado
dicho servicio, el nombre de usuario no se
va a poder conseguir:
luisa:~# tail -2 ~adm/syslog
Apr 24 04:19:37 luisa wu.ftpd[1331]: connect
from root@anita
Operación de Sistema Operativo Multiusuario
Apr 24 04:19:39 luisa ftpd[1331]: ANONYMOUS
FTP LOGIN FROM \
root @ anita [195.195.5.3], toni@
luisa:~#
El servicio auth no se debe utilizar nunca
con propósitos de autenticación robusta,
ya que dependemos no de nuestros
sistemas, sino de la honestidad de la
máquina remota; un atacante con el
suficiente nivel de privilegio en esta puede
enviarnos cualquier nombre de usuario
que desee. Incluso en ciertas situaciones,
si ident no está habilitado ni siquiera
hacen falta privilegios para devolver un
nombre falso: cualquier usuario puede
hacerlo. En cambio, sí que es útil para
detectar
pequeñas
violaciones
de
seguridad, por lo que quizás interese
habilitar el servicio en nuestras máquinas
(aunque limitemos su uso mediante TCP
Wrappers.
NNTP
El servicio NNTP ( Network News Transfer
Protocol, puerto 119 TCP) se utiliza para
intercambiar mensajes de grupos de
noticias entre servidores de news. Los
diferentes demonios encargados de esta
tarea (como in.nntpd o innd) suelen
discriminar conexiones en función de la
dirección o el nombre de la máquina
cliente; por ejemplo, el primero utiliza el
fichero nntp_access para decidir si ofrece
el servicio de news a un determinado
host, y si es así concretar de que forma
puede acceder a él (sólo lectura, sólo
ciertos grupos...). De esta forma, los
servidores NNTP son muy vulnerables a
cualquier ataque que permita falsear la
identidad de la máquina origen, como el
IP Spoofing. Los problemas relacionados
con las news no suelen ser excesivamente
115
graves desde un punto de vista
estrictamente técnico, pero en ocasiones
sí que lo son aplicando una visión global.
Por ejemplo, habría que evaluar el daño
que le supone a la imagen de nuestra
organización el que un atacante envíe
mensajes insultantes o pornográficos
utilizando nuestro nombre o nuestros
recursos. También es un problema la mala
educación de los usuarios en materias de
seguridad informática: tienden a creer
todo lo que leen en ciertos grupos de
noticias, por lo que un atacante podría
utilizar ingeniería social para perjudicar a
nuestra organización. Otra amenaza
común es el uso de grupos de news
privados
(internos)
para
tratar
información
confidencial
en
la
organización: esto es un error, ya que si la
privacidad
del
servidor
se
ve
comprometida
un
atacante
puede
obtener datos que a priori no estaría
autorizado a saber. Realmente, es muy
poco probable que necesitemos ofrecer
este servicio, por lo que lo más razonable
para nuestra seguridad es deshabilitarlo.
Generalmente sólo existen servidores de
noticias en grandes organizaciones como las universidades -, y además lo
normal es que sólo haya uno por entidad.
Si debemos administrar ese equipo la
mejor forma de proteger el servicio NNTP
es utilizando un buen cortafuegos
([GS96]).
NTP
NTP ( Network Time Protocol, puerto 123
UDP y TCP) es un protocolo utilizado para
sincronizar relojes de máquinas de una
forma muy precisa; a pesar de su
sofisticación no fué diseñado con una
idea de robustez ante ataques, por lo que
116
puede convertirse en una gran fuente de
problemas
([Bis90])
si
no
está
correctamente configurado o si no
utilizamos versiones actualizadas de
nntpd, el demonio que ofrece este
servicio. Son muchos los problemas de
seguridad relacionados con un tiempo
correcto; el más simple y obvio es la poca
fiabilidad que ofrecerá nuestro sistema de
log a la hora de determinar cuándo
sucedió determinado evento: aunque se
registrara que alguien hizo un telnet a las
tres de la tarde, no podríamos ni siquiera
asegurar que la hora es correcta. Otro
problema típico radica en las facilidades
que ofrece Unix para la planificación de
tareas: si el reloj tiene problemas, es
posible que ciertas tareas no se lleguen a
ejecutar, que se ejecuten varias veces, o
que se ejecuten cuando no han de
hacerlo; esto es especialmente peligroso
para tareas de las que depende nuestra
seguridad, como la rotación de logs. Si
hablamos de problemas más sofisticados,
podemos pensar en sistemas distribuidos,
en los que una correcta sincronización
entre nodos es básica para garantizar el
correcto funcionamiento del sistema
global
([Tan95],
[CDK94]...);
la
sincronización es muy importantes en
modelos de autenticación como Kerberos,
que utiliza marcas de tiempo como
pruebas de frescura para evitar ataques
por reenvío. Como hemos visto, una
correcta sincronización del reloj de
nuestro equipo es vital para la seguridad;
no obstante, muy pocos sistemas
necesitan la precisión de NTP, por lo que
es
habitual
tener
este
servicio
deshabilitado. En la mayoría de ocasiones
el propio reloj de la máquina, o un
protocolo mucho más simple, como time,
Operación de Sistema Operativo Multiusuario
es más que suficiente para sincronizar
equipos.
UUCP
UUCP ( Unix to Unix CoPy, puerto 540
TCP) es un servicio que, como su nombre
indica, se utiliza para copiar ficheros entre
máquinas Unix, generalmente a través de
líneas telefónicas o redes de baja
velocidad; aunque hoy en día apenas se
utiliza, durante años ha sido la base de los
sistemas de correo electrónico y de news
(incluso hoy en día algunos sistemas
UUCP son capaces de transmitir noticias
de Usenet más eficientemente que la más
moderna implementación de NNTP). Dos
riesgos fundamentales amenazan a UUCP:
al tratarse de una transmisión en texto
claro, un potencial atacante puede tener
acceso a información privada de los
usuarios, vulnerando su privacidad.
Evidentemente, en el caso de transmisión
de news esto no es muy relevante, ya que
todos los mensajes son en principio de
acceso público, pero la cosa cambia si
estamos transmitiendo correo electrónico.
El segundo riesgo es incluso más
preocupante que la pérdida de privacidad:
las contraseñas de los usuarios también se
transmiten en texto claro, con el
consiguiente peligro que supone la
interceptación por parte de un pirata de
dichas claves. Aunque si utilizamos líneas
telefónicas la probabilidad de que un
sniffer capture los datos enviados es
menor que si utilizamos una red TCP, en
ambos casos el riesgo está presente.
Como siempre, y dado que como hemos
dicho UUCP no se suele utilizar hoy en
día, lo más recomendable es deshabilitar
este servicio; es más, dado que suele
existir un usuario uucp en todo sistema
Unix (por motivos simplemente de
Operación de Sistema Operativo Multiusuario
compatibilidad), hemos de estar atentos a
los posibles problemas que dicho usuario
pueda generar. Es necesario asegurarse
que no se permiten conexiones bajo este
nombre de usuario, que en su directorio
$HOME no existen un fichero .rhosts...las
precauciones habituales con cualquier
nombre de usuario de este tipo que
tengamos en nuestro sistema; incluso nos
puede interesar sustituir su shell original
(si lo tiene) por uno como /bin/false, para
que un posible atacante que se haga
pasar por uucp no tenga posibilidad de
ejecutar órdenes en la máquina. Si
estamos obligados a ofrecer conexiones
vía UUCP en nuestro sistema, una buena
referencia para conocer más detalles de
este mecanismo y su seguridad es [OT88]
(sólo su fecha nos da una idea del grado
de desuso en que ha caído UUCP); otra
excelente fuente de información sobre la
seguridad - e inseguridad - de UUCP es el
capítulo 15 de [GS96]. Una medida de
protección básica es asignar un login y
password diferente para cada sistema que
conecte con el nuestro mediante este
método; aparte de incrementar la
seguridad - si un atacante averigua una
clave sólo podrá utilizar un acceso, no
todos - así conseguimos un mayor
refinamiento a la hora de registrar los
eventos que se produzcan en nuestro
sistema, lo que es muy útil de cara a
perseguir un abuso del servicio por parte
de usuarios no autorizados. Además, en
situaciones extremas podemos configurar
los módems para realizar un callback
cuando reciben una petición, lo que
asegura que estamos llamando al sistema
deseado y no a otro - siempre que un
atacante no haya podido modificar esos
números -.
117
El servicio FTP
FTP (File Transfer Protocol, puerto 21 TCP)
es, como su nombre indica, un protocolo
de transferencia de ficheros entre
sistemas. Desde un equipo cliente
conectamos a un servidor para descargar
ficheros desde él - lo habitual - o para
enviarle nuestros propios archivos. Un
problema básico y grave de FTP es que
está pensado para ofrecer la máxima
velocidad en la conexión, pero ni mucho
menos para ofrecer la máxima seguridad;
todo el intercambio de información,
desde el login y password del usuario en
el servidor hasta la transferencia de
cualquier fichero, se realiza en texto claro,
con lo que un atacante lo tiene muy fácil
para capturar todo ese tráfico y conseguir
así un acceso válido al servidor. Incluso
puede ser una amenaza a la privacidad de
nuestros datos el hecho de que ese
atacante también pueda capturar y
reproducir los ficheros transferidos. Para
solucionar este problema es conveniente
concienciar a nuestros usuarios de la
utilidad de aplicaciones como scp y sftp,
incluidas en el paquete SSH, que permiten
transferir ficheros pero cifrando todo el
tráfico; de esta forma, son el mejor
sustituto de FTP. Parece evidente que la
conexión FTP a nuestro sistema ha de
estar restringida a los usuarios que
realmente lo necesiten: por ejemplo, un
usuario como root en principio no va a
necesitar utilizar este servicio, ya que por
lo general va a trabajar en consola; otros
usuarios considerados ‘del sistema’
(donde se incluye por ejemplo a
postmaster,
bin,
uucp,
shutdown,
daemon...) tampoco necesitarán hacer
uso de FTP. Podemos indicar este tipo de
usuarios a los que no les está permitida
una conexión vía FTP a nuestra máquina
118
en /etc/ftpusers, con un nombre por línea;
un ejemplo de este fichero es el siguiente:
luisa:~# cat /etc/ftpusers
halt
operator
root
shutdown
sync
bin
daemon
adm
lp
mail
postmaster
news
uucp
man
games
guest
postgres # ‘postgres’ NO hace ftp
nobody
inferno
luisa:~#
FTP anónimo
Los problemas relacionados con la
seguridad
del
servicio
FTP
son
especialmente preocupantes cuando se
trata de configurar un servidor de FTP
anónimo; muchos de estas máquinas
situadas en universidades españolas se
convierten en servidores de imágenes
pornográficas o de warez (copias ilegales
de programas comerciales). Conseguir un
servidor de FTP anónimo seguro puede
llegar a ser una tarea complicada: incluso
en las páginas de ayuda de algunas
variantes de Unix (como Solaris) se trata
de
facilitar
el
proceso
para
el
administrador mediante un shellscript que
- por defecto - presenta graves problemas
de seguridad, ya que deja una copia del
fichero de claves del sistema como un
archivo de acceso público y anónimo. Para
configurar correctamente un servidor de
Operación de Sistema Operativo Multiusuario
este tipo necesitamos en primer lugar
crear al usuario ftp en /etc/passwd y
/etc/shadow, así como su directorio de
conexión (algunos Unices, como Linux, ya
incorporan esto al instalar el sistema).
Este directorio ha de pertenecer a root
(ningún fichero o subdirectorio ha de
pertenecer nunca a ftp) y al grupo al que
pertenece ftp: con esto conseguimos que
los permisos de propietario sean para el
administrador y los de grupo para los
usuarios anónimos; estos permisos serán
555. Dentro del $HOME de ftp hemos de
crear el árbol de directorios mínimo para
poder trabajar correctamente; esto es
debido a la llamada a chroot() que se
utiliza en los accesos anónimos, que
permite a esos usuarios ver el directorio
raíz de su conexión en el directorio real
~ftp/. Al menos dos directorios son
necesarios: etc/ y bin/, ambos propiedad
de root y con modo 111. En el primero de
ellos hemos de crear un fichero passwd y
otro group, utilizados no con propósitos
de autenticación sino para visualizar el
propietario y grupo de cada fichero en el
entorno sobre el que se ha aplicado
chroot() al ejecutar ls: por tanto, no hace
falta ninguna contraseña en ese fichero
passwd, y sólo ha de contener entradas
para los usuarios que posean ficheros
bajo la jerarquía de ftp, como root; de la
misma forma, el fichero group sólo ha de
contener las entradas correspondientes a
grupos que posean ficheros en dicha
jerarquía:
anita:~# cat /export/home/ftp/etc/passwd
root:*:0:1:El Spiritu Santo:/:/sbin/sh
anita:~# cat /export/home/ftp/etc/group
root::0:
other::1:
daemon::2:
ftp::30000:
anita:~#
Operación de Sistema Operativo Multiusuario
Como vemos, el usuario ftp tiene un shell
denominado /bin/false; aunque aquí no
tiene ningún efecto, en el archivo de
contraseñas real de la máquina esto es
útil para prevenir que dicho usuario
pueda conectar mediante TELNET o
similar. Por su parte, en el otro directorio
que hemos creado (bin/) hemos de
almacenar una copia del programa ls, de
forma que los usuarios puedan listar los
contenidos de los directorios cuyos
permisos lo permitan; si utilizamos una
versión estática del programa, como hace
por ejemplo Linux, no hemos de
configurar nada para que la aplicación
funcione, pero si en cambio utilizamos un
ls dinámico (como SunOS o Solaris)
hemos de crear el directorio lib/ dentro de
~ftp/ y copiar en él las librerías necesarias
para que el programa funcione (podemos
ver de cuáles se trata con ldd). Con estos
pasos ya tenemos configurada la base de
nuestro servidor de FTP anónimo; no
obstante, es habitual crear dos directorios
más, uno denominado pub/ y otro
incoming/, dentro de la misma jerarquía
que los anteriores (esto es, en el $HOME
del usuario ftp). El primero suele contener
directorios con todos los ficheros que
deseemos ofrecer a los usuarios
anónimos; su modo ha de ser 555, o 2555
en los sistemas que utilicen el bit setgid
en un directorio para que sus
subdirectorios y ficheros hereden el grupo
del propietario. El directorio incoming es
justo lo contrario: sirve para que esos
usuarios anónimos puedan enviar archivos
a nuestra máquina. Y es aquí donde
suelen comenzar muchos problemas: al
permitir el upload de software, es posible
que algunos piratas utilicen nuestra
máquina para crear servidores warez,
subiendo programas comerciales a este
119
directorio
y
luego
indicando
su
localización exacta a otras personas, para
que los puedan descargar. Por tanto, los
permisos de incoming son vitales para
nuestra seguridad (incluso si no deseamos
que los usuarios anónimos nos envíen
ficheros podemos borrar este directorio):
esos permisos han de ser 1733, y el
propietario del directorio es el root. ¿Para
qué ponemos el bit de permanencia? Muy
sencillo: para que los usuarios no puedan
sobreescribir o borrar ficheros existentes;
aunque la mayoría de servidores FTP no
permiten a los usuarios anónimos
sobreescribir ficheros, si no pusiéramos
este modo un usuario normal del sistema
sí que podría hacerlo.
El siguiente shellscript puede utilizarse
para configurar cómodamente un entorno
restringido destinado a los usuarios de ftp
anónimo siguiendo las directrices que
acabamos
de
comentar;
funciona
correctamente (en teoría) sobre Solaris,
Linux y AIX 3. Al igual que sucede con
muchas tareas automatizadas, conviene
repasar manualmente la estructura de
directorios y ficheros creados para
comprobar
que
todo
es
como
esperabamos:
anita:~# cat /usr/local/sbin/creaentorno
#!/bin/sh
# Script para crear un entorno
chroot()eado.# Funciona OK en Linux,
Solaris y AIX.## Esta variable es una lista
con los programas que necesitamos en
el#
entorno
restringido.PROGS=»/bin/ls»#
Imprime
modo de usoif (test $# -lt 1); then echo
«Usage: $0 /path/to/chroot-environment»
exitfi#
Detectamos
clon
de
UnixOS=`uname -s`# Creamos estructura
120
de directoriosecho «Creando estructura de
directorios para $OS»if [ ! -d $1 ]; then
mkdir -p $1fichown root $1for i in bin etc;
do if [ ! -d $1/$i ] ; then mkdir -p $1/$i
fi chown root $1/$idone# En funcion del
Unix, la estructura sera una u otra...if [
$OS = «Linux» ]; then if [ ! -d $1/lib ];
then mkdir -p $1/lib fi chown root $1/li
fi
if ( test $OS = «SunOS» || test $OS = «AIX» );
then
if [ ! -d $1/usr/lib ]; then
mkdir -p $1/usr/lib
fi
chown root $1/usr/lib
cd $1
ln -s ./usr/lib $1/lib
fi
# Instalamos programas y las librerias que
necesitan
echo «Instalando programas y librerias...»
for i in $PROGS; do
if [ ! -f $1/$i ]; then
cp $i $1/bin
fi
chmod 111 $1/bin
chown root $1/bin
if [ $OS = «AIX» ]; then
for j in ‘ldd $i|awk -F»(« ‘{if(NR!=1) print $1}’‘;
do
if [ ! -f $1/$j ]; then
cp $j $1/lib
fi
chown root $1/$j
done
else
for j in ‘ldd $i|awk ‘{print $3}’‘; do
if [ ! -f $1/$j ]; then
cp $j $1/lib
fi
chown root $1/$j
done
fi
done
# Estos ficheros quizas sea necesario retocarlos a
mano, en funcion del tipo
# de entorno restringido que fabriquemos.
# Generamos PASSWD
Operación de Sistema Operativo Multiusuario
echo «Generando /etc/passwd...»
awk -F: ‘$1==»root» {print
$1":*:»$3":»$4":»$5":»$6":»$7}’ /etc/passwd >\
$1/etc/passwd
awk -F: ‘$1==»bin» {print
$1":*:»$3":»$4":»$5":»$6":»$7}’ /etc/passwd>>\
$1/etc/passwd
awk -F: ‘$1==»daemon» {print
$1":*:»$3":»$4":»$5":»$6":»$7}’ /etc/passwd>>\
$1/etc/passwd
chmod 444 $1/etc/passwd
chown root $1/etc/passwd
# Quizas hay que anyadir otros grupos que nos
interesen
# Generamos GROUP con algunas entradas
echo «Generando /etc/group...»
awk -F: ‘$1==»root» {print $1":*:»$3":»$4}’
/etc/group>$1/etc/group
awk -F: ‘$1==»bin» {print $1":*:»$3":»}’
/etc/group>>$1/etc/group
awk -F: ‘$1==»daemon» {print $1":*:»$3":»}’
/etc/group>>$1/etc/group
chmod 444 $1/etc/group
chown root $1/etc/group
# Generamos pub/ e incoming/
echo «Generando pub/ e incoming/...»
if [ ! -d $1/pub ]; then
mkdir -p $1/pub
fi
chmod 2555 $1/pub
chown root $1/pub
if [ ! -d $1/incoming ]; then
mkdir -p $1/incoming
fi
chmod 1733 $1/incoming
chown root $1/incoming
# Si estamos en Solaris, aun no hemos acabado
if [ $OS = «SunOS» ]; then
# Mas librerias
echo «$OS: Instalando librerias...»
for i in ld.so.1 libc.so.1 libdl.so.1 libmp.so.2
libnsl.so.1 \
libsocket.so.1 nss_compat.so.1 nss_dns.so.1
nss_files.so.1 \
nss_nis.so.1 nss_nisplus.so.1 nss_xfn.so.1
straddr.so \
straddr.so.2; do
cp /usr/lib/$i $1/usr/lib
done
if [ ! -d $1/dev ]; then
mkdir -p $1/dev
fi
Operación de Sistema Operativo Multiusuario
chown root $1/dev
# Generamos dispositivos
echo «$OS: Generando dispositivos...»
for i in /dev/zero /dev/tcp /dev/udp /dev/ticotsord;
do
MAJOR=‘ls -lL $i|awk ‘{print $5}’|sed s/»,»//g‘
MINOR=‘ls -lL $i|awk ‘{print $6}’‘
TYPE=‘ls -lL $i|cut -c1-1‘
mknod $1/$i $TYPE $MAJOR $MINOR
done
chmod 666 $1/dev/*
fi
echo «FIN»
# FIN de Solaris
anita:~#
Algunos problemas relacionados con
incoming/ provienen de los permisos con
que se crean sus ficheros y subdirectorios:
aunque los usuarios anónimos no puedan
leer el directorio, con algunos servidores
ftpd sí que es posible que puedan leer los
ficheros contenidos en él (y sus
subdirectorios), con lo que sigue siendo
posible acceder a los archivos conociendo
su nombre exacto; para evitar este
problema,
muchos
administradores
planifican un sencillo shellscript para que
cada cierto tiempo mueva los contenidos
de incoming a otro lugar, fuera del
alcance de los usuarios anónimos (por
ejemplo, un subdirectorio con modo 000
de /tmp/). Ciertos servidores, como WUftpd, tienen un fichero de configuración
(/etc/ftpaccess) donde indicar - entre otras
cosas - los modos con que se van a crear
entradas en incoming/. Otro ataque típico
a los servidores de FTP es una negación de
servicio llenando todo el espacio
disponible para el upload de ficheros;
para minimizar las consecuencias de este
ataque, es conveniente situar el directorio
~ftp/ en una partición separada del resto
del sistema de ficheros, donde sólo se
encuentre dicho directorio; algunos
demonios permiten directamente limitar
121
la cantidad de ficheros subidos al servidor
en cada sesión. Por último, es una buena
idea mostrar un mensaje cuando los
usuarios anónimos conectan a nuestra
máquina donde se indiquen claramente
los fines del sistema y la atención a su uso
indebido; este mensaje puede sernos útil
tanto con fines jurídicos (así el atacante
no podrá argumentar que desconocía la
finalidad del sistema) como con fines
disuasorios: si el pirata se da cuenta de
que nos preocupamos por la seguridad de
nuestro servidor, es posible que lo
abandone y busque otro menos
protegido. Por ejemplo, si utilizamos WUftpd, en ~ftp/welcome.msg podemos
escribir el mensaje mostrado al conectar
al sistema, y en diferentes ficheros
.message el mensaje que se vuelca a
acceder a un directorio (estos nombres
son configurables en /etc/ftpaccess). Un
ejemplo del mensaje de entrada puede ser
el siguiente:
anita:~# cat /export/home/ftp/welcome.msg
* * * ANITA
***
———— Bienvenid@s a ANITA ————
Esta maquina es propiedad de la
Universidad Politecnica de Valencia y sus
fines son exclusivamente academicos y de
investigacion. Cualquier otro uso sera
perseguido y castigado con el maximo
rigor.
Cualquier actividad realizada en, desde o
hacia este sistema esta sujeta a
monitorizacion sin previo aviso.
anita:~#
El servicio TELNET
El protocolo TELNET (TCP, puerto 23)
permite utilizar una máquina como
122
terminal virtual de otra a través de la red,
de forma que se crea un canal virtual de
comunicaciones similar - pero mucho más
inseguro - a utilizar una terminal
físicamente conectada a un servidor; la
idea es sencilla: estamos accediendo
remotamente en modo texto a un equipo
- en principio potente - igual que si
estuviéramos utilizando su consola o una
de sus terminales físicas, lo que nos
permite aprovechar toda su potencia de
cálculo si necesidad de desplazarnos hasta
la ubicación de ese servidor, sino
trabajando cómodamente desde nuestro
propio equipo. TELNET es el clásico
servicio que hasta haceunos años no se
solía deshabilitar nunca: no es habitual
adquirir una potente máquina corriendo
Unix y permitir que sólo se trabaje en ella
desde su consola; lo más normal es que
este servicio esté disponible para que los
usuarios puedan trabajar remotamente, al
menos desde un conjunto de máquinas
determinado. Evidentemente, reducir al
mínimo imprescindible el conjunto de
sistemas desde donde es posible la
conexión es una primera medida de
seguridad; no obstante, no suele ser
suficiente: recordemos que TELNET no
utiliza ningún tipo de cifrado, por lo que
todo el tráfico entre equipos se realiza en
texto claro. Cualquier atacante con un
analizador de red (o un vulgar sniffer)
puede capturar el login y el password
utilizados en una conexión; el sniffing
siempre es peligroso, pero más aún en
sesiones TELNET en las que transmitimos
nombres de usuarios y contraseñas:
estamos otorgando a cualquiera que lea
esos datos un acceso total a la máquina
destino, bajo nuestra identidad. Por
tanto, es muy recomendable no utilizar
TELNET para conexiones remotas, sino
Operación de Sistema Operativo Multiusuario
sustituirlo por aplicaciones equivalentes
pero que utilicen cifrado para la
transmisión de datos: SSH o SSL-Telnet
son las más comunes. En estos casos
necesitamos además de la parte cliente en
nuestro equipo, la parte servidora en la
máquina remota escuchando en un
puerto determinado. Aparte del problema
de los atacantes esnifando claves, los
demonios telnetd han sido también una
fuente
clásica
de
problemas
de
programación (se puede encontrar un
excelente repaso a algunos de ellos en el
capítulo 29 de [Ano97]); básicamente,
cualquier versión de este demonio que no
esté actualizada es una potencial fuente
de problemas, por lo que conviene
conseguir la última versión de telnetd
para
nuestro
Unix
particular,
especialmente si aún tenemos una versión
anterior a 1997. Otros problemas, como
la posibilidad de que un atacante consiga
recuperar una sesión que no ha sido
cerrada correctamente, el uso de telnet
para determinar qué puertos de un host
están abiertos, o la utilización del servicio
TELNET (junto a otros, como FTP) para
averiguar el clon de Unix concreto (versión
de kernel incluida) que un servidor utiliza,
también han hecho famosa la inseguridad
de este servicio.
Antes hemos hablado de la configuración
de un entorno restringido para usuarios
ftp invitados, que accedían mediante su
login y su contraseña pero que no veían la
totalidad del sistema de ficheros de
nuestra máquina. Es posible -aunque ni
de lejos tan habitual- hacer algo parecido
con ciertos usuarios interactivos, usuarios
que conectarán al sistema mediante telnet
utilizando también su login y su
password, pero que no verán el sistema
Operación de Sistema Operativo Multiusuario
de ficheros completo: sólo la parte que a
nosotros nos interese (en principio).
Para que un usuario acceda mediante
telnet a un entorno restringido con
chroot() necesitamos en primer lugar un
entorno parecido al que hemos visto
antes: a partir de su directorio $HOME,
una serie de subdirectorios bin/, lib/, etc/. .
. Dentro de este último existirá al menos
un fichero group y otro passwd (igual que
sucedía antes, no se usan con propósitos
de autenticación, por lo que no es
necesario -ni recomendable- que existan
claves reales en ninguno de ellos). En el
directorio bin/ incluiremos los ejecutables
que queremos que nuestro usuario pueda
ejecutar, y en lib/ (o usr/lib/) las librerías
que necesiten; si usamos el shellscript
anterior -de nuevo, con alguna pequeña
modificación- para crear este entorno, en
la variable $PROGS podemos definir tales
ejecutables para que automáticamente se
copien junto a las librerías necesarias en el
directorio correspondiente:
PROGS=»/bin/ls /bin/sh»
Finalmente, en el archivo /etc/passwd real
hemos de definir un shell para el usuario
como el siguiente:
luisa:~# cat /home/toni/prog/shell.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>
#define SHELL «/bin/sh»
int main(){
struct passwd *entry=(struct passwd
*)malloc(sizeof(struct passwd));
char *const ARGS[2]={SHELL,NULL};
while((entry=getpwent())->pw_uid!=getuid());
endpwent();
if(chdir(entry->pw_dir)<0) perror(«chdir()»);
if(chroot(entry->pw_dir)<0) perror(«chroot()»);
if(setuid(getuid())<0) perror(«setuid()»);
123
if(execvp(SHELL,ARGS)<0) perror(«execvp()»);
// No alcanzado
return(0);
}
luisa:~#
Este
código,
convenientemente
compilado, será el shell real del usuario
restringido; como vemos, obtiene el
directorio $HOME del mismo, hace un
chroot() a él, y ejecuta en este entorno el
shell secundario (bin/sh, que realmente
será $HOME/bin/sh). Para que el chroot()
sea correcto el programa ha de estar
setuidado bajo la identidad de root (sólo
el superusuario puede realizar esta
llamada), con los riesgos que esto implica;
al contrario de lo que diría Knuth, yo sólo
defiendo que el código anterior funciona,
no que sea correcto... o seguro :)
Si tenemos que crear un entorno como
este para usuarios interactivos hemos de
tener en cuenta ciertas medidas de
seguridad relativas a los ejecutables que
situemos -o que permitamos situar- en
dicho entorno. Para empezar, hemos de
evitar a toda costa los ejecutables
setuidados, así como las llamadas
mknod(), chmod() o la propia chroot();
además, no debe ser posible obtener
privilegios de administrador dentro del
entorno restringido, ya que para el root
estas restricciones pierden su sentido: no
tenemos más que pensar que si un
usuario con privilegios de root dentro del
entorno es capaz de generar un
dispositivo que represente un disco duro,
con algo tan sencillo como la utilidad
mknod, automáticamente accederá a la
totalidad de ese disco, olvidando ya el
chroot() y la potencial protección que
pueda ofrecernos. Algo similar ocurre con
124
la
memoria
del
sistema,
ciertos
dispositivos físicos, o estructuras de datos
del núcleo: si esto es accesible desde el
entorno restringido, es muy probable que
nuestra seguridad se vea rota tarde o
temprano (más bien temprano).
-Tampoco es aconsejable permitir la
ejecución de compiladores de C o de
intérpretes de Perl.
Como hemos dicho, este tipo de entornos
es mucho menos habitual que los de ftp,
aparte de bastante más peligrosos. Una
tarea tan habitual como cambiar la
contraseña no es posible -al menos de
forma trivial- en este entorno (aunque
podríamos modificar el código anterior
para que se ofrezca al usuario esta
posibilidad antes de situarlo en el entorno
restringido). ¿Y que sucede si necesitamos
que el usuario acceda no a un sólo
directorio, sino a dos? Las soluciones -al
menos las seguras- no son inmediatas.
El servicio SMTP
El servicio SMTP ( Simple Mail Transfer
Protocol, puerto 25 TCP) se utiliza para
transferir correo electrónico entre equipos
remotos; estas máquinas pueden ubicarse
físicamente en la misma sala, en la misma
universidad, o en la otra parte del mundo,
a miles de kilómetros de distancia. Este
servicio suele ser atendido por un
demonio denominado sendmail, que ha
sido uno de los que más problemas de
seguridad ha tenido a lo largo de la
historia de Unix; y no es para menos: se
trata de un software muy complejo y
potente - incluso demasiado para las
necesidades de la mayoría de servidores -,
Operación de Sistema Operativo Multiusuario
por lo es inevitable que en su código
existan bugs; para hacernos una idea del
grado de complejidad de sendmail
simplemente tenemos que echarle un
vistazo a su fichero de configuracion
principal, /etc/sendmail.cf. Existen incluso
libros casi dedicados exclusivamente a
este archivo ([CA97a], [CA97b]...). Una
medida de protección básica para nuestro
servicio
SMTP,
y
que
muchos
administradores
desconocen,
es
la
posibilidad de servir sendmail desde inetd
en lugar de hacerlo como un demonio
independiente, y por tanto poder
restringir el acceso al mismo mediante
TCP Wrappers. En la mayoría de
organizaciones existe un servidor de
correo principal que es el encargado de
recoger el mail para todas las direcciones
‘*@*.upv.es’; el resto de equipos sólo
recibirán correo desde este equipo - o
desde otro que sirve sólo a un
subdominio, y que a su vez recibe sólo
desde el principal -. Entonces, parece
claro que si nuestro sendmail sólo recibe
correo válido desde una máquina, lo
lógico es configurarlo para que sólo
acepte peticiones desde ella: en lugar de
lanzar el demonio al arrancar el sistema,
en uno de los scripts de /etc/rc.d/ o
similar, lo serviremos desde inetd. Para
esto necesitamos en primer lugar
modificar el script correspondiente para
que sendmail no se lance como demonio
en el arranque: en lugar de invocarlo
como ‘sendmail -bd -q15m’ lo haremos
como ‘sendmail -q15m’. Ademas, es
necesario identificar el servicio en
/etc/services, con una línea como la
siguiente:
luisa:~# grep smtp /etc/services
smtp
25/tcp
mail
luisa:~#
Operación de Sistema Operativo Multiusuario
Tras reconocer el servicio, hemos de
añadir una línea en /etc/inetd.conf
indicando cómo se ha de ejecutar
sendmail cuando inetd reciba una
petición en el puerto 25; dicha línea es
similar a la siguiente:
luisa:~# grep smtp /etc/inetd.conf
smtp stream tcp nowait root /usr/sbin/tcpd
sendmail -bs
luisa:~#
Una vez realizados estos cambios
podemos controlar el acceso a nuestro
servicio SMTP mediante TCP Wrappers;
por ejemplo, en el caso de la Universidad
Politécnica, el servidor de correo principal
se denomina vega.cc.upv.es. Para que
sólo esta máquina nos pueda enviar
correo, incluiremos una línea como la
siguiente en /etc/hosts.allow:
luisa:~# grep sendmail /etc/hosts.allow
sendmail: vega.cc.upv.es
luisa:~#
El resto de sistemas no han de estar
autorizados a conectar al puerto; esto
incluye también a la máquina local: para
un correcto funcionamiento de nuestro
sistema de correo, ni siquiera hace falta
que localhost tenga permiso para acceder
a su puerto 25. En [Gon97] se explica
cómo
combinar
estas
restricciones
ofrecidas por TCP Wrappers con un
cortafuegos como TIS Firewall Toolkit; en
esta obra también se habla con más
detalle de los problemas que puede
implicar el correo electrónico, y por
supuesto
de
cómo
solucionarlos.
Evidentemente, esto es aplicable a
sistemas que reciban correo de un único
mailer; si debemos configurar el propio
mailer de la organización, que por lo
general recibirá correo de un número
125
indeterminado de máquinas, no podemos
bloquear el acceso a su sendmail de esta
forma. No obstante, en este caso
podemos aplicar unas medidas de
seguridad simples, como realizar una
consulta inversa a DNS para asegurarnos
de que sólo máquinas registradas envían
correo o no permitir que nuestro sistema
reenvíe correo que no provenga de
direcciones registradas bajo su dominio.
Estas medidas, básicas para evitar
problemas de spam y mail bombing, son
necesarias en la configuración de los
sistemas de cualquier entidad.
Servidores WWW
Hoy en día las conexiones a servidores
web son sin duda las más extendidas
entre usuarios de Internet, hasta el punto
de que muchas personas piensan que este
servicio (HTTP, puerto 80 TCP) es el único
que existe en la red - junto al IRC -. Lo que
en un principio se diseñó para que unos
cuantos
físicos
intercambiaran
y
consultaran artículos fácilmente, en la
actualidad mueve a diario millones de
dólares y es uno de los pilares
fundamentales de cualquier empresa: es
por tanto un objetivo muy atractivo para
cualquier pirata. Los problemas de
seguridad relacionados con el protocolo
HTTP se dividen en tres grandes grupos en
función de los datos a los que pueden
afectar ([GS97]):
Seguridad en el servidor. Es necesario
garantizar que la información almacenada
en la máquina servidora no pueda ser
modificada
sin
autorización,
que
permanezca disponible y que sólo pueda
126
ser accedida por los usuarios a los que les
esté legítimamente permitido.
Seguridad en la red. Cuando un usuario
conecta a un servidor web se produce un
intercambio de información entre ambos;
es vital garantizar que los datos que
recibe el cliente desde el servidor sean los
mismos que se están enviando (esto es,
que no sufran modificaciones de
terceros), y también garantizar que la
información que el usuario envía hacia el
servidor no sea capturada, destruida o
modificada por un atacante. Esto es
especialmente
importante
si
la
información en tránsito es secreta, como
en el caso de los passwords que el usuario
teclea para autenticarse en el servidor, o
en el comercio electrónico y el
intercambio de números de tarjetas de
crédito.
Seguridad en el cliente. Por último es
necesario garantizar al usuario que lo que
descarga de un servidor no va a perjudicar
a la seguridad de su equipo; sin llegar a
extremos de applets maliciosos o
programas con virus, si simplemente el
navegador del usuario ‘se cuelga’ al
acceder al visitar las páginas de una
organización, seguramente esa persona
dejará de visitarlas, con la consecuente
pérdida de imagen - y posiblemente de un
futuro cliente - para esa entidad.
Asegurar el servidor implica - aparte de las
medidas
habituales
para
cualquier
máquina Unix - medidas excepcionales
dedicadas al demonio servidor de web y
su entorno de trabajo; estas medidas son
propias para cada programa servidor, por
Operación de Sistema Operativo Multiusuario
lo que aquí no en traremos en detalles
concretos sobre cada uno de ellos. No
obstante, y sea cual sea el servidor
utilizado (Apache, NCSA, Netscape...), es
necesario seguir un consejo básico:
minimizar el número de usuarios en la
máquina y minimizar el número de
servicios ofrecidos en ella; aunque lo
normal es que una máquina dedicada a
cualquier tarea con decenas - o con miles
- de usuarios sea también el servidor web,
es recomendable que dicho servidor sea
un equipo dedicado a esa tarea. Los
problemas relacionados con servidores
web suelen proceder de errores de
programación en los CGIs ubicados en el
servidor. Un CGI ( Common Gateway
Interface) es un código capaz de
comunicarse con aplicaciones del servidor,
de forma que desde una página se
invoque a dichas aplicaciones pasándoles
argumentos y el resultado se muestre en
el navegador de un cliente; cuando
rellenamos un formulario, vemos una
imagen
sensible,
o
simplemente
incrementamos el contador de cierta
página, estamos utilizando CGIs. Esta
capacidad del CGI para comunicarse con
el resto del sistema que alberga las
páginas es lo que le otorga su potencia,
pero también lo que causa mayores
problemas de seguridad: un fallo en estos
programas suele permitir a cualquier
visitante de las páginas ejecutar órdenes
en el sistema. Los errores más habituales
en un CGI provienen de los datos
recibidos desde el navegador del cliente:
un simple formulario, en el que el
visitante rellena ciertos campos, puede ser
una puerta de acceso a nuestro sistema;
es necesario comprobar la validez de
todos y cada uno de los datos leídos antes
de que sean procesados. Por ejemplo,
Operación de Sistema Operativo Multiusuario
imaginemos un CGI que pida un nombre
de usuario por teclado y a continuación
ejecute un finger contra ese nombre de
usuario y muestre el resultado en el
traremos en detalles concretos sobre cada
uno de ellos. No obstante, y sea cual sea
el servidor utilizado (Apache, NCSA,
Netscape...), es necesario seguir un
consejo básico: minimizar el número de
usuarios en la máquina y minimizar el
número de servicios ofrecidos en ella;
aunque lo normal es que una máquina
dedicada a cualquier tarea con decenas o con miles - de usuarios sea también el
servidor web, es recomendable que dicho
servidor sea un equipo dedicado a esa
tarea. Los problemas relacionados con
servidores web suelen proceder de errores
de programación en los CGIs ubicados en
el servidor. Un CGI ( Common Gateway
Interface) es un código capaz de
comunicarse con aplicaciones del servidor,
de forma que desde una página se
invoque a dichas aplicaciones pasándoles
argumentos y el resultado se muestre en
el navegador de un cliente; cuando
rellenamos un formulario, vemos una
imagen
sensible,
o
simplemente
incrementamos el contador de cierta
página, estamos utilizando CGIs. Esta
capacidad del CGI para comunicarse con
el resto del sistema que alberga las
páginas es lo que le otorga su potencia,
pero también lo que causa mayores
problemas de seguridad: un fallo en estos
programas suele permitir a cualquier
visitante de las páginas ejecutar órdenes
en el sistema. Los errores más habituales
en un CGI provienen de los datos
recibidos desde el navegador del cliente:
un simple formulario, en el que el
visitante rellena ciertos campos, puede ser
una puerta de acceso a nuestro sistema;
127
es necesario comprobar la validez de
todos y cada uno de los datos leídos antes
de que sean procesados. Por ejemplo,
imaginemos un CGI que pida un nombre
de usuario por teclado y a continuación
ejecute un finger contra ese nombre de
usuario y muestre el resultado en el sigue
siendo una excelente opción para
administración remota y para transmitir
información confidencial en redes de
propósito general.
En último lugar es necesario hablar de la
seguridad desde el punto de vista del
cliente que visita páginas web; para el
usuario, un servidor es seguro si protege
la información que recibe y envía hacia él,
manteniendo su privacidad, y si no
conduce al usuario a descargar programas
maliciosos - generalmente virus - en su
equipo; si sucede lo contrario, la
compañía responsable de las páginas se
enfrenta a una importante pérdida de
imagen - aparte de posibles problemas
judiciales - de cara a sus usuarios:
simplemente imaginemos que salta a los
medios un fallo de seguridad en la versión
electrónica de cierto banco; será difícil
que
todos
sus
usuarios
sigan
manteniendo la suficiente confianza en él
como para guardar allí su dinero.
También es necesario hablar de los
applets hostiles - o simplemente de los
mal diseñados - que en muchas ocasiones
llegan a detener todas las copias del
navegador en memoria; aunque sus
implicaciones de seguridad no suelen ser
muy graves, la pérdida de imagen de la
compañía es también considerable en
estos casos.
En muy pocas máquinas se pueden
permitir el lujo de deshabilitar este
servicio, ya que como hemos dicho es de
los más utilizados actualmente; no
obstante, por alguna extraña razón personalmente no la llego a comprender en algunos clones de Unix (por ejemplo,
ciertas variantes de Linux) el servicio HTTP
está activado por defecto aún a sabiendas
de que muchos de los usuarios de este
sistema van a utilizarlo en su casa o como
estación de trabajo independiente, donde
evidentemente no es habitual - ni
necesario en la mayoría de ocasiones ofrecerlo. Por supuesto, en estos casos es
importante detener el demonio httpd y
evitar que se vuelva a iniciar con el
arranque de la máquina, modificando el
script correspondiente. Siempre hemos de
recordar que hemos de ofrecer sólo los
servicios imprescindibles en cada sistema.
Los servicios rLos servicios r-* de Unix BSD (aparecieron
inicialmente en la versión 4.2 de esta
variante de Unix) son herramientas con
una parte cliente y una servidora que
permiten la conexión remota entre
máquinas, principalmente para servicios
de terminal remota y transferencia de
ficheros. Las herramientas clientes son
rsh, rlogin y rcp, mientras que las
servidoras son demonios como rexecd,
rshd o rlogind (en algunas versiones de
Unix, con in. delante del nombre del
demonio); rdist y rdistd, otro par de estas
herramientas r-*, no los vamos a tratar
aquí.
rlogin (puerto 513, TCP) se utiliza como
terminal virtual de un sistema Unix , de
128
Operación de Sistema Operativo Multiusuario
una forma muy parecida a TELNET. rsh
(puerto 514, TCP) es utilizado para
ejecutar comandos en una máquina
remota sin necesidad de acceder a ella, y
rcp (vía rsh) para copiar ficheros entre
diferentes máquinas:
luisa:~# rlogin -l toni rosita
Overflow on /dev/null, please empty the bit
bucket.
rosita:~$ exit
logout
rlogin: connection closed.
luisa:~# rsh -l toni rosita id
uid=1000(toni) gid=100(users)
groups=100(users)
luisa:~# rcp prueba.tex toni@rosita:/tmp/
luisa:~#
Como vemos, la última orden no ha
solicitado ninguna contraseña; ha copiado
el fichero local ‘prueba.tex’ en el
directorio /tmp/ del sistema remoto, bajo
la identidad del usuario toni. A
continuación veremos por qué no se ha
pedido clave para realizar esta acción.
Estos servicios pretenden evitar el tránsito
de contraseñas por la red, ya que este
movimiento de claves implica molestias a
los usuarios y también problemas de
seguridad; para conseguirlo, entran en
juego lo que los diseñadores del sistema
de red de Unix BSD denominaron
‘máquinas fiables’ y ‘usuarios fiables’:
cualquier usuario, puede hacer uso de
recursos de una máquina remota sin
necesidad de una clave si su conexión
proviene de una máquina fiable o su
nombre de usuario es fiable.
Una máquina se puede considerar fiable
de dos formas: o bien su nombre se
encuentra en /etc/hosts.equiv, o bien se
encuentra en un fichero denominado
Operación de Sistema Operativo Multiusuario
.rhosts y situado en el $HOME de algún
usuario. Si estamos en el primer caso,
cualquier usuario (excepto el root) del
sistema remoto - y fiable - puede hacer
acceder a nuestro equipo bajo el mismo
login que tiene en el primero, sin
necesidad de claves. En el segundo caso,
utilizando los ficheros .rhosts, cualquier
usuario del sistema remoto podrá
conectar al nuestro pero sólo bajo el
nombre de usuario en cuyo $HOME se
encuentra el archivo. Por ejemplo,
imaginemos la siguiente configuración:
rosita:~# cat /etc/hosts.equiv
luisa
rosita:~# cat ~toni/.rhosts
anita
rosita:~#
En esta situación, cualquier usuario de
luisa puede acceder a rosita si su nombre
de usua
rio es el mismo; además, el usuario toni
de anita puede también conectar a rosita
sin necesidad de ninguna contraseña:
anita:~$ rlogin rosita
In the long run, every program becomes rococo,
and then rubble.
— Alan Perlis
rosita:~$ id
uid=1000(toni) gid=100(users)
groups=100(users)
rosita:~$
Aparte de máquinas fiables habíamos
hablado de usuarios fiables; la idea es la
misma que antes, pero aplicándola ahora
a nombres de usuario junto a (o en lugar
de) nombres de máquina. Podemos
indicar
estos
nombres
tanto
en
/etc/hosts.equiv como en los archivos
.rhosts; no obstante, la primera opción no
es recomendable, ya que estaríamos
permitiendo al usuario fiable del sistema
129
remoto acceder sin contraseña a cualquier
cuenta de nuestra máquina. De esta
forma, si deseamos crear usuarios fiables
de sistemas remotos, es necesario hacerlo
en los archivos .rhosts. Por ejemplo,
imaginemos que el usuario toni de
nuestra máquina tiene un nombre de
usuario distinto ( antonio) en un sistema
remoto, y desea establecer una relación
de confianza; para ello creará en su
$HOME el siguiente archivo .rhosts:
rosita:~# cat ~toni/.rhosts
amparo antonio
rosita:~#
Entonces, desde la máquina amparo el
usuario antonio podrá acceder a la cuenta
de toni en nuestro sistema sin utilizar
contraseñas:
amparo:~$ id
uid=102(antonio) gid=10(staff)
amparo:~$ rlogin -l toni rosita
It is practically impossible to teach good
programming style to
students that have had prior exposure to BASIC: as
potential
programmers they are mentally mutilated beyond
hope of
regeneration.
— Dijkstra
rosita:~$ id
uid=1000(toni) gid=100(users)
groups=100(users)
rosita:~$
Como podemos ver, las relaciones de
confianza entre equipos Unix pueden ser
muy útiles y cómodas, pero al mismo
tiempo
muy
peligrosas:
estamos
confiando plenamente en sistemas
remotos, por lo que si su seguridad se ve
comprometida también se ve la nuestra.
Las máquinas fiables se han de reducir a
equipos de la misma organización, y
130
administrados por la misma persona;
además, es necesario tener siempre
presente que si tenemos habilitados los
servicios r-* cualquier usuario puede
establecer relaciones de confianza, lo que
puede suponer una violación de nuestra
política de seguridad. Es conveniente
chequear los directorios $HOME en busca
de ficheros .rhosts (en la sección 10.2.6 se
presentaba
un
shellscript
que
convenientemente
planificado
puede
ayudarnos en esta tarea); muchos
administradores prefieren no complicarse
buscando estos ficheros, y configuran sus
sistemas para que en cada $HOME exista
un fichero con este nombre, propiedad de
root y con modo 000: así los usuarios no
tienen ocasión de otorgar confianza a
sistemas remotos. Esto se puede
conseguir con el siguiente shellscript:
#!/bin/sh
for i in ‘cat /etc/passwd |awk -F: ‘{print $6}’‘; do
cd $i
> .rhosts
chmod 0 .rhosts
done
Las
relaciones
de
confianza
son
transitivas: si una máquina confía en otra,
lo hace también en todas en las que
confía ella. De esta forma se crean anillos
de confianza entre máquinas, y como las
relaciones suelen estar basadas en el
nombre del equipo se trata de objetivos
ideales para un atacante mediante IP
Spoofing: si un pirata consigue hacer
pasar su equipo por uno de los confiables,
automáticamente ha conseguido acceso casi ilimitado - al resto de las máquinas.
X Window
El entorno X Window proporciona
herramientas increíblemente potentes,
Operación de Sistema Operativo Multiusuario
pero que si no son correctamente
configuradas pueden convertirse en
peligrosas. Este sistema está formado por
una serie de piezas que trabajan
conjuntamente para ofrecer al usuario
final un interfaz gráfico:
La más importante de ellas, sobre todo
desde el punto de vista de la seguridad es
el
servidor
X.
Este
programa
generalmente se ejecuta en la terminal de
usuario, y tiene como función principal
ofrecer unas primitivas básicas de dibujo
(trazado de rectas, relleno de áreas...)
sobre la pantalla; además gestiona
eventos de teclado y ratón.
Las aplicaciones X son programas de
usuario que lanzan llamadas contra un
servidor X. Mientras que el servidor se
ejecuta habitualmente en la terminal
desde donde conecta el usuario las
aplicaciones se pueden lanzar desde el
mismo equipo o también desde una
máquina más potente, de forma que
aprovechamos
la
capacidad
de
procesamiento de ese equipo pero
visualizamos el resultado en la terminal
gráfica; en este caso se ha de indicar a los
clientes la ubicación del servidor,
mediante la variable de entorno $DISPLAY
o mediante la opción de línea de
comandos ‘-display’.
El gestor de ventanas es un caso
particular de aplicación, ya que se
encarga de ofrecer un entorno de trabajo
más amigable al usuario que está
trabajando en la terminal: dibujo de
marcos, menús, cerrado de ventanas.
Es el servidor X Window quien establece
su política de seguridad para permitir a
determinados
clientes
utilizar
sus
servicios.
Para
ello
existen
dos
mecanismos básicos: la autenticación por
Operación de Sistema Operativo Multiusuario
testigo y la autenticación por máquina
([Fis95]; otros esquemas, como SUN-DES1, no los vamos a contemplar aquí.
Autenticación por máquina
La autenticación por máquina cliente (
host authentication) es el mecanismo más
simple, pero la seguridad que proporciona
es muy limitada; es útil en entornos
donde los clientes X se ejecutan o bien en
estaciones monousuarios o bien en
equipos donde todos los usuarios son
confiables ([Vic94]). Además, en sistemas
antiguos es el único modelo de seguridad
disponible, por lo que en ocasiones no
queda más remedio que limitarse a él.
Funciona configurando el servidor para
permitir conexiones a él provenientes de
una lista de máquinas, por ejemplo con la
orden xhosts:
anita:~# xhost +luisa
luisa being added to access control list
anita:~#
Si ejecutamos la sentencia anterior en la
máquina donde se ejecuta el servidor,
cualquier usuario del sistema remoto
estará autorizado a lanzar aplicaciones
contra él12.3:
luisa:~# xterm -display anita:0.0 &
[1] 11974
luisa:~#
La orden xhost sin opciones nos dará una
lista de los clientes que pueden lanzar
aplicaciones contra el servidor, mientras
que la opción especial ‘+’ deshabilitará
este control de acceso, algo que
evidentemente no es recomendable:
cualquier usuario de cualquier sistema
podrá utilizar nuestro servidor:
anita:~# xhost
access control enabled, only authorized clients can
connect
LOCAL:
INET:anita
131
INET:localhost
INET:luisa
anita:~# xhost +
access control disabled, clients can connect from
any host
anita:~# xhost
access control disabled, clients can connect from
any host
LOCAL:
INET:anita
INET:localhost
INET:luisa
anita:~#
Una medida de seguridad básica
utilizando este modelo es habilitar la
máquina en nuestra lista de hosts sólo el
tiempo necesario para que el cliente
arranque, y deshabilitarla después; así la
ejecución de la aplicación cliente
funcionará normalmente, pero no se
podrán lanzar nuevas peticiones al
servidor. También para eliminar una
dirección de la lista utilizamos la orden
xhost:
anita:~# xhost
access control enabled, only authorized clients can
connect
LOCAL:
INET:anita
INET:localhost
INET:luisa
anita:~# xhost -luisa
luisa being removed from access control list
anita:~# xhost
access control enabled, only authorized clients can
connect
LOCAL:
INET:anita
INET:localhost
anita:~#
De esta forma, cuando alguien intente
lanzar una aplicación contra nuestro
servidor desde un sistema no autorizado
verá un mensaje de error similar al
siguiente:
132
luisa:~# xterm -display anita:0.0
Xlib: connection to «anita:0.0» refused by server
Xlib: Client is not authorized to connect to Server
Error: Can’t open display: anita:0.0
luisa:~#
Como hemos dicho, este modelo de
seguridad es demasiado vulnerable; por
un lado, estamos autenticando clientes en
base a una dirección o a un nombre de
máquina, algo fácilmente falsificable por
un atacante. Por otro, aunque los
usuarios de los sistemas a los que
permitimos utilizar nuestro servidor sean
conocidos, fiables, y amantes de la
naturaleza, nada nos demuestra que sus
sistemas sean seguros, por lo que si sus
equipos se ven comprometidos, nuestro
servidor también.
Autenticación por testigo
Este mecanismo de X Window es el más
seguro, y por tanto el más recomendado;
en él, el servidor controla el acceso de los
clientes mediante una ‘cookie’ MITMAGIC-COOKIE-1, que no es más que un
código de acceso aleatorio de 128 bits en
un formato legible por la máquina: esta
cookie actua como un password
temporal, de forma que sólo los clientes
que conozcan ese password podrán
acceder al servidor. La cookie es generada
por xdm o por el propio usuario al
principio de cada sesión, con xauth, y
guardada
en
el
fichero
$HOME/.Xauthority; a partir de ese
momento, los programas clientes leerán
su valor y lo enviarán al servidor cada vez
que deseen conectar a él. Podemos
comprobar que poseemos - al menos - la
cookie correspondiente a nuestro display
con una orden como la siguiente:
luisa:~# xauth list
Operación de Sistema Operativo Multiusuario
luisa:0 MIT-MAGIC-COOKIE-1
8c1d09aab44573a524467c4e8faaaeb5
luisa/unix:0 MIT-MAGIC-COOKIE-1
8c1d09aab44573a524467c4e8faaaeb5
luisa:~#
El comando anterior, xauth, se utiliza para
manejar la información de las cookies de
cada usuario; por ejemplo, un uso muy
habitual es la transferencia de cookies a
máquinas remotas, para que puedan así
conectar al servidor X de un determinado
equipo. Para ello debemos extraer la
cookie de nuestro $DISPLAY y enviarla al
fichero $HOME/.Xauthority del sistema
remoto, con una orden como esta:
luisa:~# xauth extract - $DISPLAY | ssh anita -l
toni xauth merge luisa:~#
Este mecanismo tiene principalmente dos
problemas de seguridad: por un lado, las
cookies se transmiten en texto claro por la
red, por lo que son susceptibles de ser
interceptadas;
por
otro,
al
estar
guardadas
en
el
fichero
$HOME/.Xauthority, cualquiera que lo
pueda leer tendrá acceso a ellas: es muy
importante que este archivo tenga
permiso de lectura y escritura sólo para su
propietario, y que también tomemos
precauciones si los directorios $HOME de
los usuarios son exportados vía NFS.
• Identificación.
Dada la característica multiusuario del
sistema UNIX y por motivos de seguridad,
el acceso al mismo está restringido. Sólo
tendrán acceso al sistema aquellos
usuarios a los que el administrador haya
asignado previamente un identificativo
(ID). El identificativo de usuario, asignado
por el administrador, puede tener
longitud variable, pero tan sólo serán
significativos
los
primeros
ocho
Operación de Sistema Operativo Multiusuario
caracteres.
espacios.
No
están
permitidos
los
Para incrementar la seguridad, cada
usuario puede añadir opcionalmente una
contraseña de acceso al sistema. La
existencia de contraseña puede ser
impuesta por el administrador.
Cuando se va a trabajar desde un terminal
conectado directamente al ordenador,
nada más encenderlo aparecerá un
mensaje solicitando la identificación del
usuario. Este mensaje puede ser
modificado por el administrador. En este
momento el usuario puede introducir el
identificativo que se le haya asignado y
pulsar retorno de carro. Es importante
que el identificativo sea introducido en
minúsculas, pues en caso contrario el
sistema asume que el terminal sólo
dispone de mayúsculas y mantendrá la
comunicación de esta forma durante toda
la sesión de trabajo. Esto puede traer
complicaciones, pues el sistema UNIX
diferencia mayúsculas de minúsculas.
En caso de que el usuario tuviera
contraseña de acceso al sistema, le será
solicitada a continuación por medio de la
palabra «passwd». Para mayor seguridad,
la contraseña tecleada por el usuario no
aparece jamás en la pantalla. Cualquier
equivocación al teclear el identificativo
hará que el sistema solicite una
contraseña y una vez tecleada ésta,
contestará con «login incorrect» y volverá
a pedir el identificativo. Con esto se
complica el intento de acceso al sistema
por usuarios no autorizados, pues no
pueden distinguir si el error lo han
cometido al introducir el identificativo o
la contraseña.
Tan sólo cuando el identificativo de
usuario y la contraseña de acceso se han
133
introducido correctamente, aparecerán en
pantalla una serie de mensajes (mensaje
del día, etc.) y el sistema queda preparado
para recibir órdenes del usuario.
Siempre que el sistema esté en espera
para recibir órdenes, aparecerá en la
pantalla un mensaje indicativo o prompt.
Hay más de un tipo de prompt,
dependiendo del SHELL:
- Bourne
$
- Berkeley
%
- Creados por el usuario
- Super usuario #
Para finalizar la sesión de trabajo basta
mantener pulsada la tecla «Control» y
pulsar la d. Otra forma de finalizar la
sesión es tecleando exit seguido de
retorno de carro. Una vez finalizada la
sesión, el sistema vuelve a mostrar los
mensajes con los que solicita el
identificativo de usuario. En este
momento se puede apagar el terminal.
•
Resolución
de
nombres
y
direcciones.
Como el proceso de comunicación entre
dos máquinas en la red lleva consigo un
intercambio de paquetes. Cada máquina
tiene una dirección única en Internet, de
modo que para que un paquete llegue a
una máquina, basta con que en él se
especifique la dirección de destino de
ésta. Las direcciones tienen el formato de
cuatro números de 0 a 255 separados por
puntos. Una dirección Internet es por
ejemplo
150.214.70.2.
Todos
los
paquetes con destino a esa máquina
tendrán como dirección de destino
150.214.70.2 . Este número es conocido
como dirección Internet o número IP.
134
Este nombre es equivalente a la dirección
Internet o dirección IP. Así el nombre
equivalente para el número 150.214.70.3
es
«platea.pntic.mec.es».
En
este
distinguimos entre el nombre del
ordenador propiamente dicho «platea», el
subdomino «pntic» y el dominio «mec.es»
que identifica la red en que se encuentra
el ordenador. Así, sabemos que «platea»
es una máquina que pertenece a la red
del PNTIC del MEC, y que forma parte de
todas las redes españolas «es».
Se ha visto, de forma somera como se
comunican los ordenadores a través de
una red. Normalmente estos procesos
deberían pasar inadvertidos para el
usuario. De ello se encargan las distintas
aplicaciones o programas que utilizan la
red, estos son cada vez más sofisticados y
potentes, creando la ilusión de que hay
cosas que se están realizando en modo
local, cuando en realidad se están
utilizando recursos de máquinas remotas
(discos, CPU, aplicaciones,...).
•
Conexión remota.
• Servidores archie
Debe utilizar la herramienta Telnet y
conectarse a alguno de los servidores que
existen.
Cuando aparezca el «login» utilice
«archie», no se necesita password. Al
entrar aparecerá una pantalla de ayuda
explicando como usar el sistema. Pero en
cualquier caso, siempre se puede solicitar
ayuda sobre Archie con el comando
«help». Y si la que se busca es especifica
de un comando entonces se utiliza «help»
Operación de Sistema Operativo Multiusuario
seguido del comando. Por ejemplo, «help
prog».
Buscar.’ documentos.- Pruebe primero la
búsqueda por nombre de fichero.
Simplemente indique la ‘subcadena’ que
quiera localizar a lo largo de todos los
nombres archivados en la Base de Datos.
Independientemente de que lo teclee en
mayúsculas, minúsculas o ambos tipos
conjuntamente, Archie lo encontrará
también. Puede hacer una búsqueda que
tenga o no en cuenta como está escrita la
subcadena.
Y pronto recibirá en su cuenta todos los
resultados que solicitó por correo
electrónico.
CONTEXTUALIZACIÓN
• Competencia tecnológica
™ Utilizar herramientas de hardware y
software disponibles.
Por ejemplo: prog education.
Cuando Archie
mostrará:
acaba
la
búsqueda,
Los ficheros cuyos nombres contengan la
cadena «education».
Los ordenadores, servidores de FTP
anonymous, donde conseguir dichos
ficheros.
El subdirectorio donde se encuentran
archivados.
Si desea tener una copia de los resultados
en
su
propia
cuenta
por
correo,simplemente teclee:
Estudio individual
Realizar un programa de shell que
reciba desde línea de órdenes tres
palabras
y
se
encargue
de
mostrarlas por pantalla ordenadas
alfabéticamente práctica de ejercicio
núm. 4 «Ordenes del sistema de
red».
− Realizar un programa de shell que
visualice por pantalla los números
del 1 al 100, así como, sus cuadros.
− Ejecutar las órdenes para el servicio
de red.
−
mail <su_dirección_completa_de_correo>
Ahora intente una búsqueda rápida por el
contenido del fichero.
Simplemente poniendo: whatis education
Le mostrará todas la apariciones que ha
localizado de esa subcadena en la Base de
Datos. De nuevo si desea tener una copia
de esto teclee su dirección de correo
electrónico.
−
Repetición del ejercicio
Repetir el ejercicio anterior.
Para terminar la sesión Archie teclee:
quit
Operación de Sistema Operativo Multiusuario
135
RESULTADO DE APRENDIZAJE
2.2.
Manejar la administración de cuentas de UNIX con base a permisos establecidos de
usuarios.
2.2.1. PARADA Y ARRANQUE DEL SISTEMA
UNIX
•
Campos de /etc/initlab.
Se puede dividir en dos etapas principales:
el arranque del núcleo del sistema
operativo (SO), y la inicialización que lleva
acabo el programa «init».
Nada más encender la máquina,
normalmente toma el control algún tipo
de ROM que se encarga de verificar la
integridad del hardware. En las PC es la
BIOS, y el las «Sun» es la PROM. Una vez
que la ROM haya terminado su testeo
cede el control al sistema operativo. Este
mecanismo depende de cada arquitectura
en particular, en los PC se carga el primer
sector del disco rígido primario (o
disquete), que es el MBR (Master Boot
Record), en las Sun, la PROM ofrece la
posibilidad de elegir el dispositivo de
desde donde se cargará el SO, esto puede
ser tan atípico como un lector de cinta
magnética o una red local. En las
modernas placas madres la BIOS permite
la carga del SO desde un CD-ROM.
El gestor de arranque, que suele estar en
los primeros clusters del dispositivo
elegido, se encarga de cargar y ejecutar el
núcleo UNIX, llamado normalmente
vmunix, en Linux vmlinuz. Para cargar
136
dicho archivo, o bien la información sobre
los clusters donde se halla en el mismo
gestor, como es el caso del LILO, o bien el
gestor es tan inteligente de entender un
sistema de archivos UNIX, como es el caso
de las Estaciones de Trabajo. Una vez
cargado en un segmento de memoria
reservada para tal fin, el gestor lo
interpreta y cede el control al SO.
•
Acciones de INIT después del
arranque.
El núcleo se ejecuta en modo supervisor
del procesador, inicia las tablas de
interrupciones, excepciones, etc, (en el
caso
de
Linux
ver
/usr/src/linux/arch/i386/kernel/head.S, esta
rutina se encarga de ser la antesala a la
rutina main()) la gestión de la memoria
paginada MMU (Memory Management
Unit) y finalmente el planificador de
procesos o «scheduler». Despues reconoce
uno por uno los dispositivos para los que
fue configurado, e inicia los controladores
correpondientes (device drivers). Una vez
terminada esta operación monta el
«directorio raíz», una vez más el
dispositivo donde se encuentra debe estar
definido en el propio ejecutable
encargado. Si no lo encuentra el SO
genera un error especial llamado «pánico»
(panic). Este tipo de error es bloqueante
para el SO, y no continúa hasta que sea
Operación de Sistema Operativo Multiusuario
corregido (en el caso de las PC apagando
la máquina, en los sitemas MainFrame
lanza un «prompt» y un intérprete propio
de comandos para corregirlo).
•
Archivo /etc/inittab.
Cuando ha conseguido montar el
directorio raíz, el núcleo busca en /etc un
programa llamado «init» (el Linux está en
/sbin/init) que se encargará de continuar
la iniciación del SO. El proceso original
(PID 0) ejecuta una llamada «fork()», se
clona en el proceso PID 1 que hace otra
llamada «exec()» al «init» que sustituye en
memoria al clonado. El proceso PID 0
pasa a realizar tareas que depende de los
SO, en Linux pasa a ser el «swapper», en
BSD el «kernel memory manager», etc.
Previamente a la ejecución del init el PID 1
pasa a modo usuario y la única forma de
acceder al modo supervisor es por una
llamada al sistema (system call). El
programa init lee su configuración del
archivo ubicado en /etc/inittab. Con el
programa «init» el Sistema V introduce el
concepto de niveles de ejecución o
«runlevels». Estos son estados del SO en
función de los serviciós que puede
ofrecer. Hay niveles diferentes para
arrancar
la
máquina
en
modo
mantenimiento
(single
user),
multiusuario, o para arrancar el sistema
de ventanas XWindow.
•
Comando PATH.
Lista de rutas de acceso, separadas por
dos puntos ‘:’ y donde una entrada con
un sólo punto identifica el «direcorio
actual». Son válidas asignaciones como:
•
Procesos gatty.
Las entradas que encontramos en el
fichero inittab son los guiones (script) que
contiene los comandos de inicialización
del sistema. También hay líneas que
contienen comandos a ejecutarse en caso
de sucesos excepcionales, como ser un
corte de energía. Los indicadores del
proceso tienen ciertas instrucciones
especiales como ser: «wait»,para esperar a
que termine antes de continuar,
«respawn», para ejecutar otra copia
cuando termina, o «once», para ejecutar
por única vez.
•
Identificadores de proceso grupo
de procesos.
En el Sistema V normalmente hay un
guión que debe ejecutarse siempre y que
contiene los mecanismos especiales de
ejecución independientes del nivel. Éste
posee la entrada ‘si’ en general el guión
se llama rc.sysinit. Luego le pasa el control
a los guiones ubicados en /etc/rc.d/rc...
que según el nivel lanzan los procesos en
segundo plano supervisados por el init
(demonios). Estos demonios se encargan
de gestionar el transporte del correo
(sendmail), impresión (lpd), etc.
•
Permisos.
Una vez activados los servicios de
procesos y grupos de procesos, se lanzan
los procesos que permiten la entrada de
los usuarios al sistema con previa
autenticación. Estos son los encargados
de llamar los intérpretes de comandos
especificados en /etc/passwd.
# PATH=$PATH:/home/pepe:/home/antonio
Operación de Sistema Operativo Multiusuario
137
•
Parada del sistema UNIX.
Las paradas de sistema Unix son creadas
para autorizar o no a usuarios con
características de sistema determinadas.
El administrador del sistema no debe
tener restricciones ni paradas del sistema
Unix.
2.2.2 ADMINISTRACION
USUARIOS Y GRUPOS
DE
LOS
• El archivo /etc/passwd.
Antes de plantearse configurar y
administrar una máquina UNIX es
necesario tener
ciertos conocimientos generales de uso:
La mayoría de los servicios (demonios) se
configuran mediante un fichero de texto
plano. Por ello es imprescindible conocer
un editor de texto. El editor «vi» está
siempre disponible, por lo que es
fundamental conocer las ordenes básicas
de éste. La hoja de manual en línea es una
buena fuente de información: $ man vi. O
la ayuda de GNU: $ info vi.
Es necesario conocer el esquema de
permisos. UNIX basa toda la seguridad
interna en el esquema de protección de
los ficheros.
La forma más fácil de realizar tareas
repetitivas de mantenimiento y seguridad
es
utilizando
scripts
interpretados.
Inicialmente sólo se disponía del shell,
pero actualmente se dispone de una gran
variedad de lenguajes interpretados:
138
•
El archivo /etc/group.
Perl (Practical
Language)
Extraction
and
Report
Es un interprete muy versátil que permite
realizar todo tipo de operaciones sobre
ficheros con un potente analizador de
expresiones. Muy utilizado para la
administración y para la creación de CGI’s.
TCL/TK
TCL es un lenguaje interpretado con
algunas reminiscencias de Lisp, que junto
con la librería gráfica TK forman una
herramienta perfecta para producir en
muy poco tiempo pequeñas aplicaciones
gráficas.
AWK
No es realmente un lenguaje pensado
para administrar, pero es un interprete
compacto (un sólo fichero ejecutable),
con un lenguaje de programación muy
similar a «C». El lenguaje AWK se podría
describir como una fusión de «C» y BASIC
todo ello interpretado y con funciones
para el trabajo con expresiones regulares.
Al igual que el editor «vi» este programa
suele estar disponible en todos los
sistemas UNIX
•
Añadir usuarios al sistema.
La administración del sistema consiste
básicamente en gestionar los recursos del
sistema para que se puedan utilizar de la
forma más eficiente posible así como
llevar control de los usuarios potenciales
del sistema. Entrando más en detalle, las
Operación de Sistema Operativo Multiusuario
tareas de administración del sistema más
comunes son las siguientes:
Instalar el sistema operativo.
Añadir, eliminar y controlar usuarios y sus
contraseñas.
Instalar software de aplicación.
Instalar
hardware
(como
tarjetas,
impresoras, terminales y modems).
Mantener la seguridad e integridad del
sistema y de la red.
Diagnosticar
y
arreglar
problemas
software y hardware cuando ocurran.
Comprobar el uso de los sistemas de
archivos para asegurarse que no están
llenos y además controlar el uso
indiscriminado de
éstos.
Mantener
impresoras,
terminales remotos.
modems
y
Realizar copias de seguridad de los
sistemas de archivos.
Recuperar archivos
seguridad.
desde
copias
de
Mantener servicios de red, correo y otros
servicios de comunicaciones.
Optimizar el uso de los recursos del
sistema.
Asistir a los usuarios en sus necesidades.
•
•
Comunicación
administrador y usuarios.
entre
El administrador tiene la obligación de
estar en constante monitoreo de cada
uno de sus usuarios para poder llevar un
seguimiento del control de flujo de
información. Esto lo lleva a cabo por
medio de restricciones, permisos y
protección de ficheros y, dado el caso, la
desconexión de una terminal.
•
Medidas de seguridad en un
sistema UNIX.
Protección de archivos.
Cuando administramos un sistema
informático, ya sea el ordenador de
nuestro hogar o toda una red de
computadoras, no debemos de olvidar
que el trabajo no sólo consiste en
configuración y mantenimiento. El hecho
de administrar un sistema lleva implícita
la obligación de protegerlo contra
elementos maliciosos que directa o
indirectamente puedan causar perjuicio
para la integridad del mismo o hacia la
confidencialidad de los datos que en él se
guardan.
La versatilidad y filosofía de Unix permite
emprender esta tarea como una aventura,
en contra de la lejana utopía de proteger
entornos de ventanitas }:)
Suspensión de usuarios a grupos.
Los comandos y archivos relativos a la
administración del sistema varía de una
versión a otra del UNIX, pero la filosofía
es siempre la misma.
Operación de Sistema Operativo Multiusuario
Desconexión de terminales
Existen dos casos concretos en que es
conveniente el almacenamiento de
información en otros medios que no sean
139
los discos del sistema. Debido a la
desconexión de terminales.
Seguridad
terminal
para
el
usuario
en
su
El primero de estos casos se usa para
mejorar la utilización de los recursos de
disco, y consiste en copiar a otros medios
(cintas o disquetes) los archivos de datos
u otro tipo, que no se utilizan
habitualmente para, a continuación,
borrarlos del disco. Cuando sea necesario
volver
a
utilizar
la
información
«archivada», se recuperarán desde el
medio correspondiente. Lógicamente,
este caso puede variar de importancia
dependiendo de la capacidad de los
discos instalados.
Observación en los archivos de control.
Sin duda alguna, el segundo caso es de
una importancia especial. Se trata de
mantener copias de seguridad de toda la
información contenida en el disco, lo más
actualizada
posible
para
poder
recuperarla en caso de que, ya sea por
fallo hardware de la máquina o por error
humano, esta información se pierda.
CONTEXTUALIZACIÓN
• Competencia analítica
™ Aplicar la tecnología de sistemas
operativos como administrador de
aplicaciones y procesos de utilidad al
quehacer cotidiano.
140
Realización del ejercicio
Determinar el valor de la variable
PATH para el superusuario y
compruebe si está activada con el
valor adecuado.
− Comprobar que los directorios de
sistema tienen todos sus derechos
habilitados correctamente.
−
Investigación documental
− Obtener
información sobre
proceso init para determinar
configuración particular de
sistema.
− Trabajar en equipo
− Deter la máquina utilizando
orden shutdown, esperando
minutos y enviando un mensaje
finalización.
el
la
su
la
2
de
Investigación de campo
− Verificar qué terminales son seguros
y cuáles no en su sistema.
− Iniciar una sesión como root y
determine si los subdirectorios /etc,
/usr/bin y /usr/lib tienen los derechos
adecuados para la seguridad del
sistema práctica de ejercicio núm. 5
«Permisos.
− Transformar permisos a lectura y
escritura.
Operación de Sistema Operativo Multiusuario
RESULTADO DE APRENDIZAJE
2.3.
Organizar la información de archivos y discos mediante el sistema de archivos.
2.3.1. SISTEMA DE ARCHIVOS
•
Características.
CARACTERÍSTICAS DEL SISTEMA DE ARCHIVOS
Un fichero es una colección de información que se almacena en un disco o cinta
magnética.
organizar y almacenar información.
Existen 2 tipos de ficheros del sistema:
•
Almacenamiento
ALMACENAMIENTO DE FICHEROS
Ficheros
ordinarios:
estos
ficheros
contienen datos, textos y programas
ejecutables (comandos).
Los ficheros del sistema son estructuras
que los ordenadores utilizan para
Ficheros
directorios:
estos
ficheros
contienen nombres de ficheros. Los
Operación de Sistema Operativo Multiusuario
141
directorios no se utilizan para almacenar
datos, si no que se utilizan para organizar
otros ficheros en grupos.
Los directorios pueden contener otros
directorios, ficheros ordinarios o estar
vacíos.
Todos los ficheros tienen asociado un
«nombre de fichero»; este nombre
identifica el fichero y su contenido.
Un fichero ordinario es siempre el último
fichero en un path (camino).
El primer directorio de la estructura es el
directorio raíz; todos los demás ficheros y
directorios parten de él. El directorio raíz
se designa con un nombre especial, /.
Ningún otro fichero puede tener este
nombre.
En el sistema UNIX, todos los ficheros
forman parte de la jerarquía. Cualquier
fichero de esta estructura es parte de una
red de directorios conectados. Esta red de
directorios, junto con el nombre de un
fichero particular, constituye el pathname
para un fichero.
El nombre de un fichero puede tener de 1
a 255 caracteres; pero se pueden utilizar
únicamente los siguientes caracteres:
a)
b)
c)
d)
e)
f)
Letras mayúsculas ( A - Z ).
Letras minúsculas ( a - z ).
Números ( 0 - 9 ).
Subrayado ( _ ).
Punto ( . ).
Coma ( , ).
Cada fichero se identifica con un único
pathname, que describe su localización
con respecto a los otros directorios.
Se puede especificar un nombre de
fichero utilizando pathnames absolutos o
relativos:
Un pathname absoluto especifica la
localización de un fichero desde el
directorio raíz. Por lo tanto, todos los
pathnames absolutos deben de empezar
con un slash (/).
La estructura del conjunto de todos los
ficheros del sistema, es una estructura de
árbol invertido, como se puede apreciar
en la figura siguiente. Un directorio
equivale a abrir una rama dentro del
árbol.
Un pathname relativo especifica la
localización de un fichero con respecto al
directorio en que se está trabajando, en
lugar del directorio raíz, por lo que no
empienzan con un slash (/).
Observemos que:
El home directory es un subdirectorio del
directorio raíz (root) en el que se entra
142
El punto (.) se refiere al directorio en que
se está, y dos puntos (..) se refiere al
directorio anterior.
Operación de Sistema Operativo Multiusuario
cada vez que se hace login; es donde van
a residir los ficheros del usuario.
Normalmente tiene el mismo nombre que
el nombre de usuario.
El comando pwd ( print working
directory) nos dice en qué directorio
estamos. El formato es simplemente :
pwd
Lista el contenido del directorio en que
nos encontramos. Si ponemos sólo ls se
obtiene una lista con el nombre de los
ficheros; si se quiere obtener más
información sobre esos ficheros se utilizan
las opciones del comando, cuya sintaxis
general es:
ls [-alsF] fichero
Estas opciones se pueden combinar para
obtener la información que queramos al
mismo tiempo; por ejemplo, ls -sF, dará la
lista de los ficheros en la que el nombre
de cada fichero va precedido por su
tamaño (en kilobytes) y va seguido de un
slash (/) en el caso de que sea un
directorio o de un asterisco (*) en el caso
de que sea un fichero ejecutable.
Por último, indicaremos que se puede
listar el contenido de un directorio
diferente al que estamos, sin más que
especificar el path correspondiente a
continuación de las opciones; por
ejemplo:
ls -s /usr/Johnson/documentación
• Tipos de Archivos.
Directorios.
usuario no sabe en qué disco están los
ficheros que está utilizando.
Un fichero (o archivo) es un conjunto de
información al que se le da un nombre
(nombre del fichero). Existen tres tipos de
ficheros en UNIX:
Ordinarios: Son cadenas de bytes
terminadas con <ctrl>D (este código
significa fin de fichero). Pueden ser texto,
objetos, ejecutables, bibliotecas de
módulos, ...
Directorios: Contienen nombres de
ficheros y su dirección física. Puede
pensarse en ellos como carpetas que
contienen ficheros y directorios. Un
directorio dentro de otro directorio se
denomina subdirectorio.
Especiales: Asociados a dispositivos
entrada/salida. Contienen referencias a los
drivers
(programas
que
manejan
directamente los dispositivos y que forman
parte del núcleo). Pueden ser de tipo
«bloque» (apuntan a dispositivos tipo disco)
y «carácter» (apuntan a dispositivos como
terminales, impresoras, etc). Por convenio,
residen en el directorio /dev.
Archivos de dispositivo
Al elegir los nombres de los ficheros, es
conveniente limitarse a utilizar sólo los
caracteres que correspondan a letras,
números, el carácter subrayado _ y el
carácter punto.
•
Estructura
archivos.
del
sistema
de
UNIX emplea un sistema de ficheros
jerárquico de directorios-ficheros.
Los ficheros cuyo nombre comience por
punto permanecen ocultos.
No existe, a nivel de usuario, el concepto de
volumen, ni de dispositivo físico. Es decir, el
En UNIX existe una jerarquía de
directorios que para un sistema estándar
sería:
Operación de Sistema Operativo Multiusuario
143
• Tuberías con nombre
Los ficheros se especifican por:
{camino jerárquico}/nombre{.ext}
donde las llaves ({}) pueden ser o no
necesarias. Los ficheros pueden constar
de una extensión que es lo que aparece
tras el punto (.). Un ejemplo sería:
•
Bloque de arranque.
Supongamos la siguiente estructura de
ficheros-directorios:
Y que nos encontramos en el directorio
otros_archivos. Las referencias a los
diferentes ficheros se harían de la
siguiente manera:
•
Lista de nodos índice.
Existen
3
ficheros
implementados en UNIX:
estándar
Entrada estándar (stdinput): Teclado (0)
Salida estándar (stdoutput): Pantalla (1)
Errores estándar (stderr): Pantalla (2)
La redirección entrada/salida, que se
explicará más adelante, permite cambiar
estas asignaciones en cualquier momento.
•
Bloques de datos.
Los bloques de datos están determinados
por sus características en conjunto, ya
sean de lectura, escritura, eliminación,
etc.
• Superbloque.
Normalmente, será más corto y sencillo
utilizar el acceso relativo excepto en
determinados casos (por ejemplo, en
nuestro caso, /bin/fgrep).
UNIX no mantiene versiones de ficheros,
por lo que es necesario prestar especial
atención a acciones como borrarlos o
modificarlos.
144
Operación de Sistema Operativo Multiusuario
2.3.2 ORDENES PARA ADMINISTRAR EL
SISTEMA DE ARCHIVOS
•
Creación
archivos.
de
un
sistema
de
crypt(1)
La orden crypt permite cifrar y descifrar
ficheros en diferentes sistemas Unix; si no
recibe parámetros lee los datos de la
entrada estándar y los escribe en la salida
estándar, por lo que seguramente
habremos de redirigir ambas a los
nombres de fichero adecuados. Un
ejemplo simple de su uso puede ser el
siguiente:
$ crypt <fichero.txt >fichero.crypt
Enter key:
$
En el anterior ejemplo hemos cifrado
utilizando crypt el archivo fichero.txt y
guardado el resultado en fichero.crypt; el
original en texto claro se mantiene en
nuestro directorio, por lo que si queremos
evitar que alguien lo lea deberemos
borrarlo.
•
Montaje de
archivos.
un
sistema
de
Para descifrar un fichero cifrado mediante
crypt (por ejemplo, el anterior) utilizamos
la misma orden y la misma clave:
$ crypt <fichero.crypt>salida.txt
Enter key:
$
El anterior comando ha descifrado
fichero.crypt con la clave tecleada y
guardado el resultado en el archivo
salida.txt, que coincidirá en contenido con
Operación de Sistema Operativo Multiusuario
el anterior fichero.txt. crypt no se debe
utilizar nunca para cifrar información
confidencial; la seguridad del algoritmo
de cifra utilizado por esta orden es
mínima, ya que crypt se basa en una
máquina con un rotor de 256 elementos
similar en muchos aspectos a la alemana
Enigma, con unos métodos de ataque
rápidos y conocidos por todos ([RW84]).
Por si esto fuera poco, si en lugar de
teclear la clave cuando la orden nos lo
solicita lo hacemos en línea de comandos,
como en el siguiente ejemplo:
$ crypt clave < fichero.txt > fichero.crypt
$
Entonces a la debilidad criptográfica de
crypt se une el hecho de que en muchos
Unices cualquier usuario puede observar
la clave con una orden tan simple como
ps (no obstante, para minimizar este
riesgo, el propio programa guarda la clave
y la elimina de su línea de argumentos
nada más leerla). Obviamente, la orden
crypt(1) no tiene nada que ver con la
función crypt(3), utilizada a la hora de
cifrar claves de usuarios, que está basada
en una variante del algoritmo DES y se
puede considerar segura en la mayoría de
entornos.
•
Información del Espacio en disco.
La información referente al espacio en
disco se puede obtener tecleando el
comando ls, nos desplegará la lista de los
diferentes archivos y directorios del
sistema, así como el espacio sobrante en
el disco.
•
Copias de seguridad.
145
Órdenes para realizar las copias de
seguridad
Las copias de seguridad del sistema son
con frecuencia el único mecanismo de
recuperación
que
poseen
los
administradores para restaurar una
máquina que por cualquier motivo - no
siempre se ha de tratar de un pirata que
borra los discos - ha perdido datos. Por
tanto, una correcta política para realizar,
almacenar y, en caso de ser necesario,
restaurar los backups es vital en la
planificación de seguridad de todo
sistema. Asociados a los backups suelen
existir unos problemas de seguridad
típicos en muchas organizaciones. Por
ejemplo, uno de estos problemas es la no
verificación de las copias realizadas: el
administrador ha diseñado una política de
copias de seguridad correcta, incluso
exhaustiva en muchas ocasiones, pero
nadie se encarga de verificar estas
copias...hasta que es necesario restaurar
ficheros de ellas. Evidentemente, cuando
llega ese momento el responsable del
sistema se encuentra ante un gran
problema, problema que se podría haber
evitado
simplemente
teniendo
la
precaución de verificar el correcto
funcionamiento de los backups; por
supuesto, restaurar una copia completa
para comprobar que todo es correcto
puede ser demasiado trabajo para los
métodos habituales de operación, por lo
que lo que se suele hacer es tratar de
recuperar varios ficheros aleatorios del
backup,
asumiendo
que
si
esta
recuperación funciona, toda la copia es
correcta.
Otro problema clásico de las copias de
seguridad es la política de etiquetado a
seguir. Son pocos los administradores que
no etiquetan los dispositivos de backup,
146
algo que evidentemente no es muy útil: si
llega el momento de recuperar ficheros, el
operador ha de ir cinta por cinta (o disco
por disco, o CD-ROM por CD-ROM...)
tratando
de
averiguar
dónde
se
encuentran las últimas versiones de tales
archivos.
No
obstante,
muchos
administradores siguen una política de
etiquetado exhaustiva, proporcionando
todo tipo de detalles sobre el contenido
exacto de cada medio; esto, que en
principio puede parecer una posición
correcta, no lo es tanto: si por cualquier
motivo un atacante consigue sustraer una
cinta, no tiene que investigar mucho para
conocer su contenido exacto, lo que le
proporciona acceso a información muy
concreta (y muy valiosa) de nuestros
sistemas sin ni siquiera penetrar en ellos.
La política correcta para etiquetar los
backups ha de ser tal que un
administrador pueda conocer la situación
exacta de cada fichero, pero que no
suceda lo mismo con un atacante que
roba el medio de almacenamiento; esto se
consigue, por ejemplo, con códigos
impresos en cada etiqueta, códigos
cuyosignificado sea conocido por los
operadores de copias de seguridad pero
no por un potencial atacante.
La ubicación final de las copias de
seguridad también suele ser errónea en
muchos entornos; generalmente, los
operadores tienden a almacenar los
backups muy cerca de los sistemas,
cuando no en la misma sala. Esto, que se
realiza para una mayor comodidad de los
técnicos y para recuperar ficheros
fácilmente, es un grave error: no hay más
que imaginar cualquier desastre del
entorno, como un incendio o una
inundación, para hacerse una idea de lo
que les sucedería a los backups en esos
Operación de Sistema Operativo Multiusuario
casos. Evidentemente, se destruirían junto
a los sistemas, por lo que nuestra
organización
perdería
toda
su
información; no obstante, existen voces
que reivindican como correcto el
almacenaje de las copias de seguridad
junto a los propios equipos, ya que así se
consigue centralizar un poco la seguridad
(protegiendo una única estancia se
salvaguarda tanto las máquinas como las
copias). Lo habitual en cualquier
organización suele ser un término medio
entre
ambas
aproximaciones:
por
ejemplo, podemos tener un juego de
copias de seguridad completas en un
lugar diferente a la sala de operaciones,
pero protegido y aislado como esta, y un
juego para uso diario en la propia sala, de
forma que los operadores tengan fácil la
tarea de recuperar ficheros; también
podemos utilizar armarios ignífugos que
requieran de ciertas combinaciones para
su apertura (combinaciones que sólo
determinado personal ha de conocer), si
decidimos almacenar todos los backups
en la misma estancia que los equipos.
Por último, ¿qué almacenar? Obviamente
debemos realizar copias de seguridad de
los archivos que sean únicos a nuestro
sistema; esto suele incluir directorios
como /etc/, /usr/local/ o la ubicación de los
directorios de usuario (dependiendo del
Unix utilizado, /export/home/, /users/,
/home/...). Por supuesto, realizar una
copia de seguridad de directorios como
/dev/ o /proc/ no tiene ninguna utilidad,
de la misma forma que no la tiene realizar
backups de directorios del sistema como
/bin/ o /lib/: su contenido está almacenado
en la distribución original del sistema
operativo (por ejemplo, los CD-ROMs que
utilizamos para instalarlo).
Operación de Sistema Operativo Multiusuario
• Compresores
Existen multitud de dispositivos diferentes
donde almacenar nuestras copias de
seguridad, desde un simple disco flexible
hasta unidades de cinta de última
generación. Evidentemente, cada uno
tiene sus ventajas y sus inconvenientes,
pero utilicemos el medio que utilicemos,
éste ha de cumplir una norma básica: ha
de ser estándar. Con toda probabilidad
muchos administradores pueden presumir
de poseer los streamers más modernos,
con unidades de cinta del tamaño de una
cajetilla de tabaco que son capaces de
almacenar gigas y más gigas de
información;
no
obstante,
utilizar
dispositivos de última generación para
guardar los backups de nuestros sistemas
puede convertirse en un problema: ¿qué
sucede si necesitamos recuperar datos y
no disponemos de esa unidad lectora tan
avanzada? Imaginemos simplemente que
se produce un incendio y desaparece una
máquina, y con ella el dispositivo que
utilizamos para realizar copias de
seguridad.
En
esta
situación,
o
disponemos de otra unidad idéntica a la
perdida, o recuperar nuestra información
va a ser algo difícil. Si en lugar de un
dispositivo
moderno,
rápido
y
seguramente
muy
fiable,
pero
incompatible con el resto, hubiéramos
utilizado algo más habitual (una cinta de
8mm., un CD-ROM, o incluso un disco
duro) no tendríamos problemas en leerlo
desde cualquier sistema Unix, sin importar
el hardware sobre el que trabaja.
Aquí vamos a comentar algunos de los
dispositivos de copia de seguridad más
utilizados hoy en día; de todos ellos (o de
otros,
no
listados
aquí)
cada
administrador ha de elegir el que más se
adapte a sus necesidades. En la tabla 7.1
147
se muestra una comparativa de todos
ellos.
Discos flexibles
Sí, aunque los clásicos diskettes cada día
se utilicen menos, aún se pueden
considerar
un
dispositivo
donde
almacenar copias de seguridad. Se trata
de un medio muy barato y portable entre
diferentes operativos (evidentemente,
esta portabilidad existe si utilizamos el
disco como un dispositivo secuencial, sin
crear sistemas de ficheros). Por contra, su
fiabilidad es muy baja: la información
almacenada se puede borrar fácilmente si
el disco se aproxima a aparatos que
emiten cualquier tipo de radiación, como
un teléfono móvil o un detector de
metales. Además, la capacidad de
almacenamiento de los floppies es muy
baja, de poco más de 1 MB por unidad;
esto hace que sea casi imposible
utilizarlos como medio de backup de
grandes
cantidades
de
datos,
restringiendo
su
uso
a
ficheros
individuales.
Un diskette puede utilizarse creando en él
un sistema de ficheros, montándolo bajo
un directorio, y copiando en los archivos a
guardar. Por ejemplo, podemos hacer un
backup de nuestro fichero de claves en un
disco flexible de esta forma.
luisa:~# mkfs -t ext2 /dev/fd0
mke2fs 1.14, 9-Jan-1999 for EXT2 FS 0.5b,
95/08/09
Linux ext2 filesystem format
Filesystem label=
360 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1 block group
8192 blocks per group, 8192 fragments per group
360 inodes per group
148
Writing inode tables: done
Writing superblocks and filesystem accounting
information: done
luisa:~# mount -t ext2 /dev/fd0 /mnt/
luisa:~# cp /etc/passwd /mnt/
luisa:~# umount /mnt/
luisa:~#
Si quisiéramos recuperar el archivo, no
tendríamos más que montar de nuevo el
diskette y copiar el fichero en su ubicación
original. No obstante, este uso de los
discos flexibles es minoritario; es más
habitual utilizarlo como un dispositivo
secuencial (como una cinta), sin crear en
él sistemas de ficheros - que quizás son
incompatibles entre diferentes clones de
Unix - sino accediendo directamente al
dispositivo. Por ejemplo, si de nuevo
queremos hacer un backup de nuestro
fichero de passwords, pero siguiendo este
modelo de trabajo, podemos utilizar la
orden tar (comentada más adelante) para
conseguirlo:
luisa:~# tar cvf /dev/fd0 /etc/passwd
tar: Removing leading ‘/’ from absolute path names
in the archive
etc/passwd
luisa:~#
Para recuperar ahora el archivo guardado,
volvemos a utilizar la orden tar indicando
como contenedor la unidad de disco
correspondiente:
luisa:~# tar xvf /dev/fd0
etc/passwd
luisa:~#
Discos duros
Es posible utilizar una unidad de disco
duro completa (o una partición) para
realizar copias de seguridad; como
sucedía con los discos flexibles, podemos
crear un sistema de ficheros sobre la
unidad o la partición correspondiente,
montarla, y copiar los ficheros que nos
interese guardar en ella (o recuperarlos).
Operación de Sistema Operativo Multiusuario
De la misma forma, también podemos
usar la unidad como un dispositivo
secuencial y convertirlo en un contenedor
tar o cpio; en este caso hemos de estar
muy atentos a la hora de especificar la
unidad, ya que es muy fácil equivocarse
de dispositivo y machacar completamente
la información de un disco completo
(antes también podía suceder, pero ahora
la probabilidad de error es más alta). Por
ejemplo, si en lugar del nombre del
dispositivo
correcto
(supongamos
/dev/hdc) especificamos otro (como
/dev/hdd), estaremos destruyendo la
información guardada en este último.
Algo muy interesante en algunas
situaciones es utilizar como dispositivo de
copia un disco duro idéntico al que está
instalado en nuestro sistema, y del que
deseamos hacer el backup; en este caso es
muy sencillo hacer una copia de
seguridad completa. Imaginemos por
ejemplo que /dev/hda y /dev/hdc son dos
discos exactamente iguales; en este caso,
si queremos conseguir una imagen
especular del primero sobre el segundo,
no tenemos más que utilizar la orden dd
con los parámetros adecuados:
luisa:~# dd if=/dev/hda of=/dev/hdc bs=2048
1523+0 records in
1523+0 records out
luisa:~#
Cintas magnéticas
Las cintas magnéticas han sido durante
años (y siguen siendo en la actualidad) el
dispositivo de backup por excelencia. Las
más antiguas, las cintas de nueve pistas,
son las que mucha gente imagina al
hablar de este medio: un elemento
circular con la cinta enrollada en él; este
tipo de dispositivos se utilizó durante
Operación de Sistema Operativo Multiusuario
mucho tiempo, pero en la actualidad está
en desuso, ya que a pesar de su alta
fiabilidad y su relativa velocidad de
trabajo, la capacidad de este medio es
muy limitada (de hecho, las más
avanzadas son capaces de almacenar
menos de 300 MB., algo que no es
suficiente en la mayor parte de sistemas
actuales).
Después de las cintas de 9 pistas
aparecieron las cintas de un cuarto de
pulgada (denominadas QIC), mucho más
pequeñas en tamaño que las anteriores y
con una capacidad máxima de varios
Gigabytes (aunque la mayor parte de ellas
almacenan menos de un Giga); se trata de
cintas más baratas que las de 9 pistas,
pero también más lentas. El medio ya no
va descubierto, sino que va cubierto de
una envoltura de plástico.
A finales de los ochenta aparece un nuevo
modelo de cinta que relegó a las cintas
QIC a un segundo plano y que se ha
convertido en el medio más utilizado en la
actualidad: se trata de las cintas de 8mm.,
diseñadas en su origen para almacenar
vídeo. Estas cintas, del tamaño de una
cassette de audio, tienen una capacidad
de hasta cinco Gigabytes, lo que las hace
perfectas para la mayoría de sistemas:
como toda la información a salvaguardar
cabe en un mismo dispositivo, el operador
puede introducir la cinta en la unidad del
sistema, ejecutar un sencillo shellscript, y
dejar que el backup se realice durante
toda la noche; al día siguiente no tiene
más que verificar que no ha habido
errores, retirar la cinta de la unidad, y
etiquetarla correctamente antes de
guardarla. De esta forma se consigue que
149
el proceso de copia de seguridad sea
sencillo y efectivo.
No obstante, este tipo de cintas tiene un
grave inconveniente: como hemos dicho,
originalmente estaban diseñadas para
almacenar vídeo, y se basan en la misma
tecnología para registrar la información.
Pero con una importante diferencia
([P$^$94]): mientras que perder unos
bits de la cinta donde hemos grabado los
mejores momentos de nuestra última
fiesta no tiene mucha importancia, si esos
mismos bits los perdemos de una cinta de
backup el resto de su contenido puede
resultar inservible. Es más, es probable
que después de unos cuantos usos
(incluidas las lecturas) la cinta se dañe
irreversiblemente. Para intentar solucionar
estos problemas aparecieron las cintas
DAT, de 4mm., diseñadas ya en origen
para almacenar datos; estos dispositivos,
algo más pequeños que las cintas de
8mm. pero con una capacidad similar, son
el mejor sustituto de las cintas antiguas:
son mucho más resistentes que éstas, y
además relativamente baratas (aunque
algo más caras que las de 8mm.).
Hemos dicho que en las cintas de 8mm. (y
en las de 4mm.) se pueden almacenar
hasta 5 GB. de información. No obstante,
algunos fabricantes anuncian capacidades
de hasta 14 GB. utilizando compresión
hardware, sin dejar muy claro si las cintas
utilizadas son estándar o no ([Fri95]);
evidentemente, esto puede llevarnos a
problemas de los que antes hemos
comentado: ¿qué sucede si necesitamos
recuperar datos y no disponemos de la
unidad lectora original? Es algo vital que
150
nos aseguremos la capacidad de una fácil
recuperación en caso de pérdida de
nuestros datos (este es el objetivo de los
backups al fin y al cabo), por lo que
quizás no es conveniente utilizar esta
compresión hardware a no ser que sea
estrictamente necesario y no hayamos
podido aplicar otra solución.
CD-ROMs
En la actualidad sólo se utilizan cintas
magnéticas en equipos antiguos o a la
hora de almacenar grandes cantidades de
datos - del orden de Gigabytes. Hoy en
día, muchas máquinas Unix poseen
unidades grabadoras de CD-ROM, un
hardware barato y, lo que es más
importante, que utiliza dispositivos de
muy bajo coste y con una capacidad de
almacenamiento suficiente para muchos
sistemas: con una unidad grabadora,
podemos almacenar más de 650
Megabytes en un CD-ROM que cuesta
menos de 150 pesetas. Por estos motivos,
muchos administradores se decantan por
realizar sus copias de seguridad en uno o
varios CD-ROMs; esto es especialmente
habitual en estaciones de trabajo o en PCs
de sobremesa corriendo algún clon de
Unix (Linux, Solaris o FreeBSD por regla
general), donde la cantidad de datos a
salvaguardar no es muy elevada y se
ajusta a un par de unidades de CD,
cuando no a una sola.
Operación de Sistema Operativo Multiusuario
Determinar el número de bloques
ocupado por el directorio /etc y /usr.
− Comprobar el estado del sistema de
ficheros raíz y corrija los posibles
errores.
− Modificar el fichero /etcfstab para
que el anterior sistema de ficheros
sea montado de forma automática
cuando se inicia el sistema.
− Organizar información a través de
ficheros.
−
CONTEXTUALIZACIÓN
• Competencia analítica
™ Aplicar la tecnología de sistemas
operativos como administrador de
aplicaciones y procesos de utilidad al
quehacer cotidiano.
Realización del ejercicio
Determinar qué sistemas de ficheros
hay montados en su sistema.
− Probar para crear un sistema de
ficheros en el disco flexible. Una vez
creado, montará en un directorio
denominado /fd. Probará a acceder
al sistema de ficheros recién
montado.
−
Operación de Sistema Operativo Multiusuario
151
PRÁCTICAS DE EJERCICIO Y LISTA DE COTEJO
Unidad de aprendizaje:
2
Práctica número:
9
Nombre de la práctica:
Manejo de ambiente UNIX.
Propósito de la
práctica:
Al finalizar la práctica, el alumno manejará comandos en el sistema operativo que
le permitirán obtener información del ambiente UNIX.
Escenario:
Laboratorio de
Informática.
Duración:
6 hrs.
Materiales
• Software instalado de UNIX o
software de emulación UNIX.
• Manual en línea de UNIX.
• Cuaderno de notas.
• Pluma o lápiz.
Maquinaria y Equipo
• Terminal o Computadora
(Pentium III).
Herramienta
Procedimiento
­Aplicar las medidas de seguridad e higiene.
• Evitar la manipulación de líquidos cerca del equipo.
• No introducir objetos extraños en los dispositivos de disco.
• No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpiar el área de trabajo.
1. Encender equipo de cómputo.
2. Entrar al Unix Shell.
3. Hacer un esquema que refleje la estructura del árbol de los principales directorios del sistema hasta el
tercer nivel.
fuentes
c
C++
bin
doc
ps
utiles
correo
4. Muestre el contenido del directorio padre del directorio raíz. ¿Qué ocurre?.
4.
Sitúese en el subdirectorio /dev y liste el contenido del mismo.
5.
Sitúese en su directorio HOME y liste el contenido del subdirectorio /dev en formato largo. ¿Qué
indican los caracteres c y b que aparecen a la izquierda de los permisos de Accesó a los archivos?.
6.
Liste todos los archivos, incluidos aquellos cuyo nombre comienza por punto (.), del archivo raíz en
formato largo. Indique cuántos archivos, enlaces y directorios cuelgan del directorio raíz.
7.
Indique cuántos subdirectorios tiene el subdirectorio /etc de todas las formas que conozca.
8.
Averigüe los usuarios que están conectados al sistema en este momento.
9.
Averigüe cuántos usuarios tienen cuenta en el sistema.
10.
Visualice el contenido del archivo /etc/hosts.
11.
Copie el archivo /etc/hosts en su subdirectorio docs.
12.
Calcule el número de líneas, palabras y caracteres del archivo hosts.
13.
Busque aquellas líneas del archivo /etc/passwd que contengan la subcadena sso3.
14.
Copie, desde su directorio HOME, el archivo hosts del directorio docs en los directorios ps y utiles.
15.
Repetir los procedimientos con asesoría del PSP.
16.
Salir del shell
17.
Apagar el equipo de cómputo
4 Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.
Operación de Sistema Operativo Multiusuario
153
Lista de cotejo de la práctica
número 9:
Manejo de ambiente UNIX
Nombre del alumno:
Instrucciones:
A continuación se presentan los criterios que van a ser
verificados en el desempeño del alumno mediante la observación
del mismo.
De la siguiente lista marque con una 9 aquellas observaciones
que hayan sido cumplidas por el alumno durante su desempeño.
Si
Desarrollo
No
No
Aplica
®Aplicó las medidas de seguridad e higiene.
• Evitó la manipulación de líquidos cerca del equipo.
• No introdujo objetos extraños en los dispositivos de disco,
• No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpió el área de trabajo.
1. Encendió el equipo de cómputo.
2. Abrió sesión de UNIX.
3. Hizo el esquema hasta el tercer nivel.
4. Mostró el contenido del directorio padre del directorio raíz
5. Se situó en el subdirectorio /dev y listó el contenido del mismo
6. Se situó en el directorio HOME y listó el contenido del subdirectorio /dev en
formato largo.
7. Listó todos los archivos. Indicó cuántos archivos, enlaces y directorios
cuelgan del directorio raíz.
8. Indicó cuántos subdirectorios tiene el subdirectorio /etc
9. Averiguó los usuarios que estaban conectados al sistema en este momento.
10. Averiguó cuántos usuarios tienen cuenta en el sistema.
11. Visualizó el contenido del archivo /etc/hosts.
12. Copió el archivo /etc/hosts en su subdirectorio docs.
13. Calculó el número de líneas, palabras y caracteres del archivo hosts.
154
Operación de Sistema Operativo Multiusuario
Si
Desarrollo
No
No
Aplica
14. Buscó aquellas líneas del archivo /etc/passwd que contengan la subcadena
sso3
15. Copió, desde su directorio HOME, el archivo hosts del directorio docs en los
directorios ps y utiles.
16. Repitió los procedimientos con asesoría del PSP.
17. Salió del shell de UNIX.
18. Apagó el equipo de cómputo.
4 Depositó los residuos recuperables.
Observaciones:
PSP:
Hora de
inicio:
Operación de Sistema Operativo Multiusuario
Hora de
término:
Evaluación:
155
Unidad de aprendizaje:
2
Práctica número:
10
Nombre de la práctica:
Manejo de enlaces
Propósito de la
práctica:
Al finalizar la práctica, el alumno manejará enlaces a través de comandos
Escenario:
Laboratorio de
Informática.
Duración:
6 hrs.
Materiales
• Software instalado de UNIX o
software de emulación UNIX.
Maquinaria y Equipo
• Terminal o Computadora
Herramienta
(Pentium III)
• Manual en línea de UNIX.
• Cuaderno de notas.
• Pluma o lápiz.
156
Operación de Sistema Operativo Multiusuario
Procedimiento
­Aplicar las medidas de seguridad e higiene.
• Evitar la manipulación de líquidos cerca del equipo.
• No introducir objetos extraños en los dispositivos de disco.
• No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpiar el área de trabajo.
1. Encender equipo de cómputo.
2. Entrar al Unix Shell.
3. Hacer un esquema que refleje la estructura del árbol de los principales directorios del sistema hasta el
tercer nivel.
fuentes
c
C++
bin
doc
ps
utiles
correo
4. Cree en su directorio HOME un archivo que denomine mppc.c con el siguiente contenido usando la orden
cat:
#include <stdio.h>
main ( )
{
printf(“Este es un programa en C\n”) ;
}
5.
6.
7.
8.
9.
10.
11.
Mueva este archivo al subdirectorio c.
Sitúese en el directorio c++ y haga un enlace al archivo mppc.c del directorio c con el mismo nombre.
Haga otro enlace pero con el nombre mppc2.c.
Compruebe cuántos enlaces tiene el archivo mpp2.c y cuántos el mppc.c del directorio c.
Compruebe que se trata del mismo archivo observando su número de nodoi (ver opciones de ls).
Elimine el archivo mppc.c del subdirectorio c++. ¿Cuántos enlaces existen ahora del archivo mpp2.c?.
Añada la siguiente línea al final del archivo mppc.c con la orden cat >>:
/* Esto es un comentario en c */
// Esto es un comentario en c++
12. Compruebe que esta modificación afecta también al archivo mpp2.c.
13. Elimine el archivo original y observe cómo se sigue accediendo al archivo con el enlace restante.
Operación de Sistema Operativo Multiusuario
157
Procedimiento
14.
15.
16.
17.
18.
19.
20.
21.
Compruébese que el archivo es el mismo por su número de inodo.
Cree un archivo de texto, llamado texto, y haga un enlace simbólico al mismo.
Compruebe que se trata de archivos distintos obteniendo sus números de nodoi.
Elimine el archivo original y compruebe que ya no es posible acceder al contenido del mismo mediante el
enlace.
Cree un nuevo archivo, llamado también texto. ¿Qué pasa si mostramos el contenido del enlace anterior?
Repetir los procedimientos con asesoría del PSP.
Salir del shell
Apagar el equipo de cómputo
4 Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.
158
Operación de Sistema Operativo Multiusuario
Lista de cotejo de la práctica
número 10:
Manejo de enlaces
Nombre del alumno:
Instrucciones:
A continuación se presentan los criterios que van a ser
verificados en el desempeño del alumno mediante la observación
del mismo.
De la siguiente lista marque con una 9 aquellas observaciones
que hayan sido cumplidas por el alumno durante su desempeño
Desarrollo
Si
No
No
Aplica
®Aplicó las medidas de seguridad e higiene.
• Evitó la manipulación de líquidos cerca del equipo.
• No introdujo objetos extraños en los dispositivos de disco,
• No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpió el área de trabajo.
1. Encendió el equipo de cómputo.
2. Abrió sesión de UNIX.
3. Hizo el esquema hasta el tercer nivel.
4. Creó directorio HOME, y archivo que denomine mppc.c usando la orden cat
5. Movió este archivo al subdirectorio c.
6. Sitó el directorio c++ e hizó un enlace al archivo mppc.c del directorio c con
el mismo nombre.
7. Hizó otro enlace pero con el nombre mppc2.c.
8. Comprobó cuántos enlaces tiene el archivo mpp2.c y cuántos el mppc.c del
directorio c.
9. Comprobó que se trata del mismo archivo observando su número de nodoi
(ver opciones de ls).
10. Eliminó el archivo mppc.c del subdirectorio c++. ¿Cuántos enlaces existen
ahora del archivo mpp2.c?.
Operación de Sistema Operativo Multiusuario
159
Si
Desarrollo
No
No
Aplica
11. Añadió la siguiente línea al final del archivo mppc.c con la orden cat >>:
12. Compruebe que esta modificación afecta también al archivo mpp2.c.
13. Eliminó el archivo original y observe cómo se sigue accediendo al archivo
con el enlace restante.
14. Comprobó que el archivo es el mismo por su número de inodo.
15. Creó un archivo de texto, llamado texto, y haga un enlace simbólico al
mismo.
16. Comprobó que se trata de archivos distintos obteniendo sus números de
nodoi.
17. Eliminó el archivo original.
18. Creó un nuevo archivo, llamado también texto.
19. Repitió los procedimientos con asesoría del PSP.
20. Salió del shell de UNIX.
21. Apagó el equipo de cómputo.
4 Depositó los residuos recuperables.
Observaciones:
PSP:
Hora de
inicio:
160
Hora de
término:
Evaluación:
Operación de Sistema Operativo Multiusuario
Unidad de aprendizaje:
2
Práctica número:
11
Nombre de la práctica:
Manejo y clasificación de archivos y directorios
Propósito de la
práctica:
Al finalizar la práctica, el alumno manejará y clasificara archivos y directorios a
través de comandos
Escenario:
Laboratorio de
Informática.
Duración:
6 hrs.
Materiales
• Software instalado de UNIX o
software de emulación UNIX.
Maquinaria y Equipo
• Terminal o Computadora
Herramienta
(Pentium III).
• Manual en línea de UNIX.
• Cuaderno de notas.
• Pluma o lápiz.
Operación de Sistema Operativo Multiusuario
161
Procedimiento
­Aplicar las medidas de seguridad e higiene.
• Evitar la manipulación de líquidos cerca del equipo.
• No introducir objetos extraños en los dispositivos de disco.
• No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpiar el área de trabajo.
1. Encender equipo de cómputo.
2. Entrar al Unix Shell.
3. Hacer un esquema que refleje la estructura del árbol de los principales directorios del sistema hasta el
tercer nivel.
fuentes
c
C++
doc
bin
ps
utiles
correo
4. Sitúese en subdirectorio fuentes. Borre su contenido usando la orden rm.
5. Ordene de forma descendente el archivo /etc/hosts, seleccione las cinco primeras líneas y guárdelas en un
archivo en el subdirectorio correo.
6. Muestre todos los archivos del subdirectorio /bin que comiencen por l. ¿Qué ocurre?.
7. Igual que el anterior pero que comiencen por c y tengan al menos dos caracteres.
8. Igual que el anterior pero que comiencen por d, c ó l y terminen por s ó d.
9. Igual que el anterior pero que comiencen por d, c ó l, terminen por s ó d y ocupen más de 20 bloques.
10. Liste los nombres de los archivos que cuelgan a partir del directorio /usr/bin cuyo nombre comienza por p.
11. Obtenga los subdirectorios del sistema que han sido modificados en los últimos 20 días. ¿Por qué
aparecen mensajes de error?.
12. Muestre el contenido del directorio HOME de un usuario definido por el PSP.
13. Obtenga los nombres de los archivos que son propiedad del súper usuario (root).
14. Obtenga los nombres de archivos del directorio /usr cuyo nombre empiece por s y tengan un tamaño
inferior a 20 bloques.
15. Obtenga los nombres de archivos del directorio /usr cuyo nombre empiece por s o tengan un tamaño
inferior a 20 bloques, seleccione los 10 primeros y almacénelos en un archivo.
16. Repetir los procedimientos con asesoría del PSP.
17. Salir del shell
18. Apagar el equipo de cómputo
4 Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.
162
Operación de Sistema Operativo Multiusuario
Lista de cotejo de la práctica
número 11:
Manejo y clasificación de archivos y directorios
Nombre del alumno:
Instrucciones:
A continuación se presentan los criterios que van a ser
verificados en el desempeño del alumno mediante la observación
del mismo.
De la siguiente lista marque con una 9 aquellas observaciones
que hayan sido cumplidas por el alumno durante su desempeño
Desarrollo
Si
No
No
Aplica
®Aplicó las medidas de seguridad e higiene.
• Evitó la manipulación de líquidos cerca del equipo.
• No introdujo objetos extraños en los dispositivos de disco,
• No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpió el área de trabajo.
1. Encendió el equipo de cómputo.
2. Abrió sesión de UNIX.
3. Hizo el esquema hasta el tercer nivel.
4. Se situó en subdirectorio fuentes. Borró su contenido usando la orden rm.
5. Ordenó descendente el archivo /etc/hosts, seleccionó las cinco primeras
líneas y las guardó en un archivo en el subdirectorio correo.
6. Mostró todos los archivos del subdirectorio /bin que comiencen por l.
7. Repitió el ejercicio comenzando por c y tengan al menos dos caracteres
8. Repitió el ejercicio comenzando por d, c ó l y terminen por s ó d.
9. Repitió el ejercicio comenzando por d, c ó l, terminen por s ó d y ocupen
más de 20 bloques.
Operación de Sistema Operativo Multiusuario
163
Si
Desarrollo
No
No
Aplica
10. Listó los nombres de los archivos que cuelgan a partir del directorio /usr/bin
cuyo nombre comienza por p.
11. Obtuvo los subdirectorios del sistema que han sido modificados en los
últimos 20 días. ¿Explico por qué aparecen mensajes de error?.
12. Mostró el contenido del directorio HOME de un usuario definido por el PSP.
13. Obtuvo los nombres de archivos que son propiedad del súper usuario (root).
14. Obtuvo los nombres de archivos del directorio /usr cuyo nombre empiece
por s y tengan un tamaño inferior a 20 bloques.
15. Obtuvo los nombres de archivos del directorio /usr cuyo nombre empiece
por s o tengan un tamaño inferior a 20 bloques, seleccionó los 10 primeros y
los almacenó en un archivo.
16. Repitió los procedimientos con asesoría del PSP.
17. Salió del shell de UNIX.
18. Apagó el equipo de cómputo.
4 Depositó los residuos recuperables.
Observaciones:
PSP:
Hora de
inicio:
164
Hora de
término:
Evaluación:
Operación de Sistema Operativo Multiusuario
Unidad de aprendizaje:
2
Práctica número:
12
Nombre de la práctica:
Manejo de estadísticas de archivos y directorios
Propósito de la
práctica:
Al finalizar la práctica, el alumno manejará estadísticas de archivos y directorios a
través de comandos
Escenario:
Laboratorio de
Informática.
Duración:
6 hrs.
Materiales
• Software instalado de UNIX o
software de emulación UNIX.
Maquinaria y Equipo
• Terminal o Computadora
Herramienta
(Pentium III).
• Manual en línea de UNIX.
• Cuaderno de notas.
• Pluma o lápiz.
Operación de Sistema Operativo Multiusuario
165
Procedimiento
­Aplicar las medidas de seguridad e higiene.
• Evitar la manipulación de líquidos cerca del equipo.
• No introducir objetos extraños en los dispositivos de disco.
• No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpiar el área de trabajo.
1. Encender equipo de cómputo.
2. Entrar al Unix Shell.
3. Hacer un esquema que refleje la estructura del árbol de los principales directorios del sistema hasta el
tercer nivel.
fuentes
c
C++
bin
doc
ps
utiles
correo
4. Supongamos que tenemos un archivo sobre el que existen varios enlaces duros (por ejemplo el usado en la
práctica sobre enlaces). ¿Cómo podríamos, con una única orden eliminar dicho archivo y todos sus
enlaces?
5. Obtenga un listado largo de los archivos del sistema cuyo nombre contenga la subcadena as.
6. Calcule el espacio en disco que ocupa el subdirectorio /usr.
7. Calcule el espacio en disco que ocupa su directorio HOME.
8. Calcule el espacio libre y ocupado del sistema de archivos.
9. Determine los tipos de los archivos del directorio raíz.
10. Determine los tipos de los archivos de los subdirectorios /bin, /etc y /dev y almacene el resultado en un
archivo que se llame tipos.txt en su directorio HOME.
11. Copie el archivo tipos.txt al archivo fichs.txt en el subdirectorio correo usando la orden cat.
12. Calcule cuántas entradas tienen los subdirectorios /bin y /etc.
13. Calcule cuántos directorios hay en el sistema.
14. Calcule cuántos archivos hay en el sistema. Ejecute la orden necesaria en background y redireccione el
resultado al archivo numero de su directorio HOME. ¿Cuándo se sabe que se ha terminado la orden?.
Nota. Lanzar la orden en un shell Bourne y redirigir la salida de error.
15. Repetir los procedimientos con asesoría del PSP.
16. Salir del shell
17. Apagar el equipo de cómputo
4 Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.
166
Operación de Sistema Operativo Multiusuario
Lista de cotejo de la práctica
número 12:
Manejo de estadísticas de archivos y directorios
Nombre del alumno:
Instrucciones:
A continuación se presentan los criterios que van a ser
verificados en el desempeño del alumno mediante la observación
del mismo.
De la siguiente lista marque con una 9 aquellas observaciones
que hayan sido cumplidas por el alumno durante su desempeño
Desarrollo
Si
No
No
Aplica
®Aplicó las medidas de seguridad e higiene.
• Evitó la manipulación de líquidos cerca del equipo.
• No introdujo objetos extraños en los dispositivos de disco,
• No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpió el área de trabajo.
1. Encendió el equipo de cómputo.
2. Abrió sesión de UNIX.
3. Hizo el esquema hasta el tercer nivel.
4. Eliminó el archivo y sus enlaces.
5. Obtuvo el listado largo.
6. Calculó el espacio en disco que ocupa el subdirectorio /usr.
7. Calculó el espacio en disco que ocupa su directorio HOME.
8. Calculó el espacio libre y ocupado del sistema de archivos.
9. Determinó los tipos de los archivos del directorio raíz
10. Determinó los tipos de los archivos de los subdirectorios /bin, /etc y /dev y
almacenó el resultado en un archivo que se llamó tipos.txt en su directorio
HOME
11. Copió el archivo tipos.txt al archivo fichs.txt en el subdirectorio correo
usando la orden cat.
12. Calculó cuántas entradas tienen los subdirectorios /bin y /etc.
Operación de Sistema Operativo Multiusuario
167
Si
Desarrollo
No
No
Aplica
13. Calculó cuántos directorios hay en el sistema
14. Calculó cuantos archivos hay en el sistema.
15. Repitió los procedimientos con asesoría del PSP.
16. Salió del shell de UNIX.
17. Apagó el equipo de cómputo.
4 Depositó los residuos recuperables.
Observaciones:
PSP:
Hora de
inicio:
168
Hora de
término:
Evaluación:
Operación de Sistema Operativo Multiusuario
Unidad de aprendizaje:
2
Práctica número:
13
Nombre de la práctica:
Manejo de procesos
Propósito de la
práctica:
Al finalizar la práctica, el alumno manejará procesos a través de comandos
Escenario:
Laboratorio de
Informática.
Duración:
6 hrs.
Materiales
• Software instalado de UNIX o
software de emulación UNIX.
Maquinaria y Equipo
• Terminal o Computadora
Herramienta
(Pentium III).
• Manual en línea de UNIX.
• Cuaderno de notas.
• Pluma o lápiz.
Operación de Sistema Operativo Multiusuario
169
Procedimiento
­Aplicar las medidas de seguridad e higiene.
• Evitar la manipulación de líquidos cerca del equipo.
• No introducir objetos extraños en los dispositivos de disco.
• No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpiar el área de trabajo.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Encender equipo de cómputo.
Entrar al Unix Shell.
Averigüe los permisos que tienen los archivos del directorio raíz.
Obtenga un listado de todos los procesos que le pertenecen.
Use la orden man para ver el formato de la orden ps. Pruebe y anote cuáles son las principales opciones.
Obtenga un listado de todos los procesos que se están ejecutando en el sistema, paginando la salida.
Averigüe los procesos que se están ejecutando en el sistema que pertenezcan al usuario root.
Ejecute en background un proceso que almacene en un archivo el nombre de aquellos archivos cuyo
tamaño es mayor de 200 bloques a partir del archivo raíz. Transcurridos unos segundos, si no ha
terminado, elimine el proceso.
Lance un proceso de larga duración (por ejemplo, una orden find sobre todo el sistema). Detenga su
ejecución con CTRL-Z y observe que el proceso sigue estando en el sistema. Elimínelo.
Busque en el manual cómo funciona la familia de órdenes jobs. Pruebe, con el ejemplo anterior, cómo se
puede reanudar un proceso que previamente ha sido detenido.
Haga algunos ejemplos de procesos para ver cómo se puede cambiar la ejecución entre primer y segundo
plano y viceversa.
Supongamos que se tiene una orden ejecutando en segundo plano (p.e., un find) y queremos detenerla
temporalmente (no abortarla). ¿Cómo lo haría?
Averigüe a qué grupo pertenece.
Repetir los procedimientos con asesoría del PSP.
Salir del shell
Apagar el equipo de cómputo
4 Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.
170
Operación de Sistema Operativo Multiusuario
Lista de cotejo de la práctica
número 13:
Manejo de procesos
Nombre del alumno:
Instrucciones:
A continuación se presentan los criterios que van a ser
verificados en el desempeño del alumno mediante la observación
del mismo.
De la siguiente lista marque con una 9 aquellas observaciones
que hayan sido cumplidas por el alumno durante su desempeño.
Desarrollo
Si
No
No
Aplica
®Aplicó las medidas de seguridad e higiene.
• Evitó la manipulación de líquidos cerca del equipo.
• No introdujo objetos extraños en los dispositivos de disco,
• No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpió el área de trabajo.
1. Encendió el equipo de cómputo.
2. Abrió sesión de UNIX.
3. Averiguó los permisos que tienen los archivos del directorio raíz.
4. Obtuvo un listado de todos los procesos que le pertenecen
5. Usó la orden man para ver el formato de la orden ps. Probó y anotó cuáles
son las principales opciones
6. Obtuvo un listado de todos los procesos que se están ejecutando en el
sistema, paginando la salida
7. Averiguo los procesos que se están ejecutando en el sistema que
pertenezcan al usuario root.
8. Ejecutó en background un proceso que almacene en archivo el nombre de
los archivos cuyo tamaño es mayor de 200 bloques a partir del archivo raíz.
9. Lanzó un proceso de larga duración, Detuvo su ejecución con CTRL-Z y
observó que el proceso sigue estando en el sistema. Lo eliminó
10. Buscó en el manual cómo funciona la familia de órdenes jobs. Probó, con el
ejemplo anterior, cómo se puede reanudar un proceso que previamente ha
sido detenido.
11. Hizo algunos ejemplos de procesos para ver cómo se puede cambiar la
ejecución entre primer y segundo plano y viceversa.
12. Detuvo temporalmente una orden ejecutando en segundo plano
13. Averiguó a que grupo pertenecía
14. Repitió los procedimientos con asesoría del PSP.
15. Salió del shell de UNIX.
16. Apagó el equipo de cómputo.
4 Depositó los residuos recuperables.
Operación de Sistema Operativo Multiusuario
171
Observaciones:
PSP:
Hora de
inicio:
172
Hora de
término:
Evaluación:
Operación de Sistema Operativo Multiusuario
Unidad de aprendizaje:
2
Práctica número:
14
Nombre de la práctica:
Manejo de atributos de archivos y compresión
de archivos
Propósito de la
práctica:
Al finalizar la práctica, el alumno manejará atributos de archivos y podrá
comprimir archivos a través de comandos
Escenario:
Laboratorio de
Informática.
Duración:
6 hrs.
Materiales
• Software instalado de UNIX o
software de emulación UNIX.
Maquinaria y Equipo
• Terminal o Computadora
Herramienta
(Pentium III).
• Manual en línea de UNIX.
• Cuaderno de notas.
• Pluma o lápiz.
Operación de Sistema Operativo Multiusuario
173
Procedimiento
­Aplicar las medidas de seguridad e higiene.
• Evitar la manipulación de líquidos cerca del equipo.
• No introducir objetos extraños en los dispositivos de disco.
• No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpiar el área de trabajo.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Encender equipo de cómputo.
Entrar al Unix Shell.
Comprobar cuál es el valor de la mascara de usuario.
Cree un archivo nuevo y compruebe los permisos que adquiere.
Modifique la máscara de usuario para que los miembros de su grupo puedan leer sus nuevos archivos y los
de otros grupos no. Cree un nuevo archivo y directorio y compare sus permisos con los del problema
anterior.
Modifique los permisos del archivo y directorio del apartado anterior para que únicamente pueda ser leído
y
modificado por el propietario. Usar la forma octal del modo.
Modifique los permisos del directorio de conexión para que los demás miembros del grupo tengan
permiso de lectura únicamente.
Cree un nuevo archivo y protéjalo al máximo de forma que ni siquiera pueda leerlo. Restablezca sus
permisos para que pueda borrarlo.
Queremos que los archivos de nueva creación adquieran los permisos rw-r-----, ¿qué orden usaremos?
Utilice la orden tar para hacer un archivo tar del contenido de su directorio HOME. Guárdelo en un archivo
que se llame copia.tar.
Observe el contenido del archivo copia.tar.
Comprima el archivo copia.tar con la orden compress.
Descomprima el archivo copia.tar.Z y expanda su contenido a partir del subdirectorio ps.
Obtenga la descripción y sintaxis de la orden talk. Póngase de acuerdo con otro usuario y utilicen dicha
orden.
Repetir los procedimientos con asesoría del PSP.
Salir del shell
Apagar el equipo de cómputo.
Nota: El instructor deberá adecuar la práctica al equipo con el que se cuenta.
4 Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.
174
Operación de Sistema Operativo Multiusuario
Lista de cotejo de la práctica
Número 14:
Manejo de atributos de archivos y compresión de archivos.
Nombre del alumno:
Instrucciones:
A continuación se presentan los criterios que van a ser verificados
en el desempeño del alumno mediante la observación del mismo.
De la siguiente lista marque con una 9 aquellas observaciones
que hayan sido cumplidas por el alumno durante su desempeño
Si
Desarrollo
®Aplicó las medidas de seguridad e higiene.
• Evitó la manipulación de líquidos cerca del equipo.
• No introdujo objetos extraños en los dispositivos de disco,
• No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo.
• Limpió el área de trabajo.
1. Encendió el equipo de cómputo.
2. Abrió sesión de UNIX.
3. Comprobó cuál es el valor de la mascara de usuario.
4. Creó un archivo nuevo y comprobó los permisos que adquiere.
5. Modificó la máscara de usuario y creó un nuevo archivo y directorio y
comparó sus permisos.
6. Modificó los permisos del archivo y directorio del apartado anterior para que
únicamente pueda ser leído y modificado por el propietario.
7. Modificó los permisos del directorio de conexión para que los demás
miembros del grupo tengan permiso de lectura únicamente.
8. Creó un nuevo archivo y lo protegió al máximo de forma que ni siquiera
pudo leerlo. Restableció sus permisos y lo borró.
9. Creó nuevos con los permisos rw-r----10. Utilizó la orden tar para hacer un archivo tar del contenido de su directorio
HOME. Lo guardó en un archivo llamado copia.tar.
11. Observó el contenido del archivo copia.tar.
12. Comprimió el archivo copia.tar con la orden compress.
13. Descomprimió el archivo copia.tar.Z y expandió su contenido a partir del
subdirectorio ps.
14. Obtuvo la descripción y sintaxis de la orden talk y utilizó dicha orden.
15. Repitió los procedimientos con asesoría del PSP.
16. Salió del shell de UNIX.
17. Apagó el equipo de cómputo.
4 Depositó los residuos recuperables.
Operación de Sistema Operativo Multiusuario
No
No
Aplica
•
175
Observaciones:
PSP:
Hora de
inicio:
176
Hora de
término:
Evaluación:
Operación de Sistema Operativo Multiusuario
RESUMEN
Una variable de entorno en la shell es una
referencia a un valor. Se distinguen dos
tipos : locales y globales.
Una variable local es aquella que se define
en el shell actual y sólo se conocerá en ese
shell durante la sesión de conexión
vigente.
Una variable global es aquella que se
exporta desde un proceso activo a todos
los procesos hijos
Con lo que tenemos la seguridad de que
las
variables
siempre
son
bien
interpretadas . Las llaves se utilizan
SIEMPRE en el momento de evaluar la
variable , no de asignarle valores. No tiene
sentido
hacer
cosas
como
{COSAS}=tontería
Operación de Sistema Operativo Multiusuario
Los programas , se interpretan en tiempo
de ejecución. Por tanto , la codificación de
una shell-script es sumamente sencilla en
el sentido en el que basta con escribir en
un fichero de texto l os comandos y
ejecutarlo.
Dentro de una shell , existen las variables
de entorno que hayamos definido
anteriormente , bien en la misma , en otra
ó en los ficheros profile de inicialización.
Además de éstas , existen otras que
detallam os a continuación
177
AUTOEVALUACIÓN DE CONOCIMIENTOS DEL CAPITULO 2
1.
2.
3.
4.
5.
178
¿ Cuál es la sintaxis de la instrucción OPTIONS?
¿ Cuál es la utilidad MKMESSAGE?
¿ Qué archivos se generan al crear una forma?
¿Qué realiza la instrucción OPEN FORM y cuál es su sintaxis?
¿ Cuáles son los atributos de las ventanas?
Operación de Sistema Operativo Multiusuario
RESULTADOS DE AUTOEVALUACIÓN DE CONOCIMIENTOS
1.
options message line NUMERO DE LA LÍNEA DE MENSAJE,
error line
NUMERO DE LA LÍNEA DE ERROR,
prompt line NUMERO DE LA LÍNEA DE PETICIÓN DE RESPUESTA
2. Es una facilidad que permite al usuario crear su propio sistema de archivos de ayuda
para una aplicación, debe ser invocado desde el sistema operativo, para que compile
un archivo de texto con mensajes de ayuda y de esta forma pueda ser invocado por un
programa 4GL.
3.
*.per que es un archivo ascii con las especificaciones de la forma
*.frm que es un archivo ejecutable con la versión compilada de la forma. Un usuario
no puede modificar un archivo .frm
4
La instrucción OPEN FORM se utiliza para asociar el nombre de una forma 4GL con un
archivo previamente compilado que contiene las especificaciones de una forma.
open form FORM-NAME from «FORM-FILE»
5.
ATRIBUTOS
DEFAULT
BORDER
NO BORDER
REVERSE
NO REVERSE
PROMPT LINE
FIRST
MESSAGE LINE
FIRST + 1
FORM LINE
FIRST + 2
COMMENT LINE
LAST
Operación de Sistema Operativo Multiusuario
179
GLOSARIO DE TÉRMINOS DE E-CBNC
Campo de
aplicación
Competencia
laboral
Criterio de
desempeño
Parte constitutiva de una Norma Técnica de Competencia Laboral que describe el
conjunto de circunstancias laborales posibles en las que una persona debe ser capaz de
demostrar dominio sobre el elemento de competencia. Es decir, el campo de aplicación
describe el ambiente laboral donde el individuo aplica el elemento de competencia y
ofrece indicadores para juzgar que las demostraciones del desempeño son suficientes
para validarlo
Aptitud de un individuo para desempeñar una misma función productiva en diferentes
contextos y con base en los requerimientos de calidad esperados por el sector
productivo. Esta aptitud se logra con la adquisición y desarrollo de conocimientos,
habilidades y capacidades que son expresados en el saber, el hacer y el saber-hacer.
Parte constitutiva de una Norma Técnica de Competencia Laboral que se refiere al
conjunto de atributos que deberán presentar tanto los resultados obtenidos, como el
desempeño mismo de un elemento de competencia; es decir, el cómo y el qué se espera
del desempeño. Los criterios de desempeño se asocian a los elementos de competencia.
Son una descripción de los requisitos de calidad para el resultado obtenido en el
desempeño laboral; permiten establecer si se alcanza o no el resultado descrito en el
elemento de competencia.
Elemento de
Competencia.
Es la descripción de la realización que debe ser lograda por una persona en al ámbito de
su ocupación. Se refiere a una acción, un comportamiento o un resultado que se debe
demostrar por lo tanto es una función realizada por un individuo. La desagregación de
funciones realizada a lo largo del proceso de análisis funcional usualmente no sobrepasa
de cuatro a cinco niveles. Estas diferentes funciones, cuando ya pueden ser ejecutadas
por personas y describen acciones que se pueden lograr y resumir, reciben el nombre de
elementos de competencia.
Evidencia de
conocimiento.
Parte constitutiva de una Norma Técnica de Competencia Laboral que hace referencia al
conocimiento y comprensión necesarios para lograr el desempeño competente.
Puede referirse a los conocimientos teóricos y de principios de base científica que el
alumno y el trabajador deben dominar, así como a sus habilidades cognitivas en
relación con el elemento de competencia al que pertenecen.
180
Operación de Sistema Operativo Multiusuario
Evidencia por
producto
Evidencia de
Desempeño.
Hacen referencia a los objetos que pueden usarse como prueba de que la persona
realizó lo establecido en la Norma Técnica de Competencia Laboral. Las evidencias por
producto son pruebas reales, observables y tangibles de las consecuencias del
desempeño
Parte constitutiva de una Norma Técnica de Competencia Laboral, que hace referencia a
una serie de resultados y/o productos, requeridos por el criterio de desempeño y
delimitados por el campo de aplicación, que permite probar y evaluar la competencia
del trabajador. Cabe hacer notar que en este apartado se incluirán las manifestaciones
que correspondan a las denominadas habilidades sociales del trabajador. Son
descripciones sobre variables o condiciones cuyo estado permite inferir que el
desempeño fue efectivamente logrado. Las evidencias directas tienen que ver con la
técnica utilizada en el ejercicio de una competencia y se verifican mediante la
observación. La evidencia por desempeño se refiere a las situaciones que pueden usarse
como pruebas de que el individuo cumple con los requerimientos de la Norma Técnicas
de Competencia Laboral.
Evidencia de
actitud
Formación
ocupacional
Las Normas Técnicas de Competencia Laboral incluyen también la referencia a las
actitudes subyacentes en el desempeño evaluado
Módulo
ocupacional
Unidad autónoma integrada por unidades de aprendizaje con la finalidad de combinar
diversos propósitos y experiencias de aprendizaje en una secuencia integral de manera
que cada una de ellas se complementa hasta lograr el dominio y desarrollo de una
función productiva.
Norma Técnica
de
Competencia
Laboral
Documento en el que se registran las especificaciones con base en las cuales se espera
sea desempeñada una función productiva. Cada Norma Técnica de Competencia Laboral
esta constituida por unidades y elementos de competencia, criterios de desempeño,
campo de aplicación y evidencias de desempeño y conocimiento.
Proceso por medio del cual se construye un desarrollo individual referido a un grupo
común de competencias para el desempeño relevante de diversas ocupaciones en el
medio laboral.
Operación de Sistema Operativo Multiusuario
181
GLOSARIO DE TÉRMINOS TÉCNICOS
Glosariovi
«
D
P
X
Y
d
p
x
y
Insertar nuevo
texto A
I
O
a
i
o
Desplazar el
cursor dentro
de un archivo
^B
^D
^F
^H
^J
182
El editor VI es un editor que opera en modo consola, utilizado por muchos usuarios de
Unix. El editor VI posee características muy útiles para los programadores, pero muchos
principiantes evitan emplearlo porque se ven abrumados por sus variadas funciones.
Este tutorial ha sido escrito con el propósito de ayudar a los principiantes a
familiarizarse con el uso del editor VI, pero también contiene apartados de interés para
quienes ya lo utilizan habitualmente
Especifica un búfer para ser utilizado por cualquiera de las órdenes que se sirven de
ellos. Añada una letra o número tras el signo « para signarle un búfer.
Borra desde la posición actual del cursor hasta el final de la línea.
Pega el búfer especificado delante de la línea o posición actual del cursor. Si no se
especifica ningún búfer (con la orden « ), entonces ‘P’ hace uso del búfer general.
Borra el carácter anterior al cursor.
Graba la línea actual en el búfer especificado. Si no se especifica ninguno la grabará en
el búfer general.
Borra hasta dónde. «dd» borra la línea actual. Una cifra indica el número de líneas a
borrar. Cualquier cosa borrada se grabará en el búfer especificado con la orden «. Si no
se especifica ningún búfer, utilizará el búfer general.
Pega el contenido del búfer especificado tras la línea o posición actual del cursor. Si no
se especifica ningún búfer (con la orden « ), entonces ‘p’ hace uso del búfer general.
Borra el carácter sobre el que se halla el cursor. Una cifra indicará cuántos caracteres
han de borrarse. Los caracteres se borrarán tras el cursor.
Graba hasta , colocándolo en un búfer. «yy» graba la línea actual. Una cifra indicará
cuántas líneas han de grabarse. El búfer puede especificarse con la orden «. Si no se
especifica ninguno, se utilizará el búfer general.
Añade el texto al final de la línea actual.
Inserta el texto desde el comienzo de la línea.
Introduce el modo insertar en una nueva línea encima de la posición actual del cursor.
Cambia al modo insertar. Los caracteres escritos se insertarán tras la posición actual del
cursor. Una cifra insertará el texto añadido la cantidad de veces indicada.
Cambia al modo insertar. Los caracteres escritos se insertarán delante de la posición
actual del cursor. Una cifra insertará el texto añadido la cantidad de veces indicada.
Introduce el modo insertar en una nueva línea bajo la posición actual del cursor.
Nos lleva una página atrás. Con una cifra, nos desplazará el número de páginas
indicado.
Nos lleva media ventana hacia delante. Con una cifra, nos desplazará el número de
líneas indicado.
Nos lleva una página hacia delante. Con una cifra, nos desplazará el número de páginas
indicado.
Mueve el cursor un espacio hacia la izquierda. Con una cifra, nos desplazará el número
de espacios indicado.
Mueve el cursor una línea hacia abajo en la misma columna. Con una cifra, lo hará
descender el número de líneas indicado.
Operación de Sistema Operativo Multiusuario
^M
^N
^P
^U
$
%
^
(
)
{
}
|
+
_
0
B
E
G
H
L
M
W
b
e
h
j
k
l
w
Desplazar el
cursor por la
pantalla ^E
^Y
z
Lleva el cursor al primer carácter de la línea siguiente.
Mueve el cursor una línea hacia abajo en la misma columna. Con una cifra, lo hará
descender el número de líneas indicado.
Mueve el cursor una línea hacia arriba en la misma columna. Con una cifra, lo hará
subir el número de líneas indicado.
Nos lleva media ventana hacia atrás. Con una cifra, nos desplazará el número de líneas
indicado.
Desplaza el cursor hasta el final de la línea actual. Con una cifra, nos llevará cuantas
líneas adelante indiquemos.
Desplaza el cursor hasta el paréntesis o comillas correspondientes.
Lleva el cursor hasta el primer lugar que no está en blanco.
Lleva el cursor al comienzo de una frase.
Lleva el cursor al comienzo de la frase siguiente.
Lleva el cursor al párrafo anterior.
Lleva el cursor al siguiente párrafo.
Lleva el cursor a la columna especificada por la cifra.
Lleva el cursor hasta el primer lugar de la línea siguiente que no está en blanco.
Lleva el cursor hasta el primer lugar de la línea anterior que no está en blanco.
Lleva el cursor hasta el primer lugar de la línea actual que no está en blanco.
(Cero) Lleva el cursor a la primera columna de la línea actual.
Lleva el cursor una palabra hacia atrás, incluyendo los signos de puntuación.
Lleva el cursor al final de la palabra actual, incluyendo los signos de puntuación.
Nos lleva al número de línea especificado en la cifra. Si no se indica una cifra, nos
llevará al final del archivo.
Lleva el cursor hasta el primer lugar de la parte superior de la pantalla que no está en
blanco.
Lleva el cursor hasta el primer lugar de la parte inferior de la pantalla que no está en
blanco.
Lleva el cursor hasta el primer lugar del centro de la pantalla que no está en blanco.
Lleva el cursor hacia delante hasta el comienzo de una palabra, incluyendo los signos de
puntuación.
Lleva el cursor una palabra hacia atrás. Si el cursor se encuentra en medio de una
palabra, desplazará el cursor hasta el primer carácter de esa palabra.
Lleva el cursor una palabra hacia delante. Si el cursor se encuentra en medio de una
palabra, desplazará el cursor hasta el último carácter de esa palabra.
Mueve el cursor una posición hacia la izquierda.
Lleva el cursor una línea hacia abajo.
Lleva el cursor una línea hacia arriba.
Mueve el cursor una posición hacia la derecha.
Lleva el cursor una palabra hacia delante. Si el cursor se encuentra en medio de una
palabra, desplazará el cursor hasta el primer carácãer de la siguiente palabra.
Nos lleva una línea hacia delante. Con una cifra, nos desplazará el número de líneas
indicado.
Nos lleva una línea hacia atrás. Con una cifra, nos desplazará el número de líneas
indicado.
Rehace la pantalla con las opciones que se especifiquen a continuación. «z<enter>»
coloca la línea actual en el extremo superior de la pantalla; «z.» coloca la línea actual en
Operación de Sistema Operativo Multiusuario
183
Reemplazar
texto C
R
S
c
r
s
Buscar texto o
caracteres ,
/
;
?
F
N
T
n
t
Manipulación
de
caracteres/For
mateo de
líneas ~
<
>
J
Guardar y salir
^\
Q
ZZ
^G
^L
^R
184
el centro de la pantalla; y «z-» coloca la línea actual en el extremo inferior de la
pantalla. Si especifica una cifra antes de la orden ‘z’, trasladará la línea especificada al
lugar señalado. Por ejemplo, «16z.» coloca la línea 16 en el centro de la pantalla.
Para cambiar lo que hay a partir de la posición actual del cursor hasta el fin de la línea.
Sustituye los caracteres en pantalla por los que continuación se introduzcan; para
finalizar hay que pulsar la tecla Esc.
Para cambiar una línea entera.
Para cambiar hasta . «cc» cambia la línea actual. Si se especifica una cifra, cambiará el
número de líneas especificado.
Para sustituir el carácter sobre el que se encuentra el cursor. Especifique una cifra para
sustituir un determinado número de caracteres.
Para sustituir el carácter sobre el que se encuentra el cursor y pasar a modo insertar.
Especifique una cifra para sustituir un determinado número de caracteres. Un signo de
dollar ($) aparecerá en el último carácter a sustituir.
Repite las últimas órdenes f, F, t or T en la dirección opuesta.
Busca hacia abajo, en el archivo, la secuencia especificada tras /.
Repite las últimas órdenes f, F, t or T.
Busca hacia arriba, en el archivo, la secuencia especificada tras ?.
Busca en la línea actual, hacia atrás, la secuencia especificada tras la orden ‘F’. Si
encuentra, el cursor se desplaza hasta ella.
Repite la última búsqueda realizada mediante ‘/’ o ‘?’, en la dirección opuesta.
Busca en la línea actual, hacia atrás, el carácter especificado tras la orden ‘T’. Si
encuentra, el cursor se desplaza a la columna posterior a él. f
Busca en la línea actual el carácter especificado tras la orden ‘f’. Si lo encuentra,
cursor se desplaza hasta él.
Repite la última búsqueda realizada mediante ‘/’ o ‘?’.
Busca en la línea actual el carácter especificado tras la orden ‘t’. Si lo encuentra,
cursor se desplaza hasta la columna que lo precede.
la
lo
el
el
Cambia el carácter que se encuentra bajo el cursor de mayúscula a minúscula o
viceversa.
Desplaza el número de líneas especificado una tabulación hacia la izquierda. «<<«
desplaza la línea actual hasta la izquierda, pudiendo especificarse también una cifra.
Desplaza el número de líneas especificado una tabulación hacia la derecha. «>>»
desplaza la línea actual hasta la derecha, pudiendo especificarse también una cifra.
Junta la línea actual con la siguiente. Puede especificarse una cifra para juntar un
determinado número de líneas.
Salir del modo «VI» y entrar en modo «EX». El editor EX es un editor de líneas sobre el
que se ha construido el editor VI. La orden de EX para regresar a VI es «:vi».
Salir del modo «VI» y entrar en modo «EX». El editor EX es un editor línea-a-línea. La
orden de EX para regresar a VI es «:vi».
Salir del editor guardando los cambios que se hubieran hecho.
Muestra el nombre del archivo actual y su estado.
Para limpiar y rehacer la pantalla.
Operación de Sistema Operativo Multiusuario
^[
^^
!
&
.
:
@
U
m
u
Órdenes de EX
:ab secuencia1
secuencia2
:map teclas
nueva_secuenc
ia_de_teclas
:q
Para rehacer la pantalla eliminando las líneas erróneas.
Igual que la tecla Esc. Cancela las órdenes parcialmente escritas.
Regresar al último archivo editado.
Ejecutar un shell. Si se especifica una cifra el programa que se ejecuta utilizando !,
tomará la(s) linea(s) especificadas como entrada (input) y reemplazará dichas líneas con
el resultado obtenido (output) del programa ejecutado. «!!» ejecuta un programa
utilizando como entrada la línea actual. Por ejemplo, «!4jsort» tomará la línea en que se
encuentra el cursor más las cuatro siguientes y ejecutará sort. Tras activar la orden
aparecerá un signo de exclamación donde usted podrá escribir las instrucción completa.
Repite la orden previa «:s».
Repite la última orden que modificó el archivo.
Para comenzar a escribir una orden del editor EX. La orden se ejecutará una vez que el
usuario pulse Enter. (Véase el siguiente apartado.)
Imprime el comando almacenado en el búfer especificado.
Devuelve la línea actual al estado en que se encontraba antes de que el cursor se
colocara en ella.
Marca la posición actual con el carácter especificado tras la orden ‘m’.
Deshace el último cambio operado en el archivo. Pulsando ‘u’ de nuevo rehará el
cambio.
El editor VI está construido sobre otro editor, denominado EX. El editor EX sólo edita
por líneas. Para introducir una orden de EX desde el editor VI, deberá utilizar la orden :.
La lista que ofrecemos a continuación no es completa, pero aparecen ahí las órdenes
que habitualmente más se emplean. Si se quiere que una orden -como «:s» o «:w»
modifique más de una línea, hay que especificar el intervalo al que afectará dicha
orden. Por ejemplo, para hacer alguna sustitución entre las líneas 3 y 15, la orden sería
«:3,15s/esto/estotro/g».
Abreviatura. De este modo, si en VI se escribe la secuencia 1, ewl editor insertará
automáticamente las palabras correspondientes (secuencia2). Por ejemplo, la orden
«:ab lup Licencia de Uso Público» haría que siempre que se escribiese «lup» se insertara
la expresión «Licencia de Uso Público».
Esto le permite que una tecla o secuencia de teclas desempeñe la misma función que
determinada tecla o secuencia de teclas.
Salir de VI. Si se ha hecho algún cambio, el editor producirá un mensaje de aviso.
Salir de VI sin guardar los cambios.
:q!
:s/secuencia/nu
eva_secuencia/
opción
Sustitución. Esta orden sustituye la secuencia especificada por la nueva_secuencia. Si no
:set [all]
:una secuencia
:unm teclas
:vi
nombre_de_ar
chivo
:w
se añade ninguna opción, sólo sustituirá la primera aparición de la secuencia. Si se
indica la opción ‘g’, la sustitución se hará en todos los lugares en que aparezca. Por
ejemplo, la orden «:1,$s/Dwayne/Dwight/g» sustituirá todo «Dwayne» por «Dwight».
Configura algunas opciones para personalizar VI y EX. La orden «:set all» muestra todas
las opciones posibles. (Consúltese el apartado de personalización de VI para ver algunas
de ellas.)
Borra la abreviatura previamente definida por «:ab».
Borra la asignación de funciones a nuevas teclas, definidas a través de «:map».
Comienza la edición de un nuevo archivo. Si no han sido guardados los cambios, el
editor le avisará de ello.
Operación de Sistema Operativo Multiusuario
185
:w
nombre_de_ar
chivo
:w >>
nombre_de_ar
chivo
:wq
186
Guarda el trabajo en el archivo actual.
Escribe el contenido del búfer en el archivo especificado.
Añade el contenido del búfer en el archivo especificado.
Escribe el contenido del búfer y cierra el editor.
Operación de Sistema Operativo Multiusuario
REFERENCIAS DOCUMENTALES
•
Benedí Palacios, José Alberto, UNIX, Ediciones Anaya Multimedia, España, 2004.
•
Hansen Augie, ¡Aprenda C ya!, Microsoft Press, 1988.
•
T. Hawryszkiewycz, Análisis y diseño de bases de datos, Grupo Noriega Editores,
1996.
•
Kernighan Brian W., El lenguaje de programación C, Prentice Hall, 1986.
•
L.Viescas Jhon, Guía Completa de Microsoft Access 2 para Windows, McGraw Hill,
1994.
•
Mansoor Sarwar, Syed, Robert Koretsky, Syed Aqeel Sarwar. El libro de UNIX. 2da.
Edición, Ed. Pearson Educación, España, 2002.
•
Miren Begoña Albizuri, Estructuras de Datos e Introducción a Bases de Datos, Grupo
Noriega Editores, 1996.
•
Sánchez, Sebastián. Unix y Linux / guía práctica, Alfaomega Grupo Editor, México,
D.F., 2002.
•
Tenenbaum Aaron M., Estructuras de datos en C, Prentice Hall, 1993.
Operación de Sistema Operativo Multiusuario
187
Descargar