100% encontró este documento útil (1 voto)
881 vistas338 páginas

Manual Sistemas Operativos Abiertos (1383)

Manual Sistemas Operativos Abiertos

Cargado por

rodney
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
881 vistas338 páginas

Manual Sistemas Operativos Abiertos (1383)

Manual Sistemas Operativos Abiertos

Cargado por

rodney
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Sistemas

Operativos
Abiertos

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

ndice
Presentacin
Red de contenidos

8
10

Unidad de Aprendizaje 1

12

INTRODUCCIN AL SOFTWARE LIBRE


1.1 Tema 1 : Introduccin al Sistema Operativo GNU/Linux
1.1.1 : GNU/Linux
1.1.2 : Sistema Operativo y Distribucin
1.1.3 : Arquitectura del Sistema, configurar el sistema con o sin
perifricos externos como teclado.
1.1.4 : Diferencia entre dispositivos de almacenamiento masivo
1.1.5 : Establecer correctamente el ID de hardware para diferentes
dispositivos especialmente dispositivos de arranque.
1.1.6 : Conocer las diferencias entre dispositivos coldplug y hotplug.
1.1.7 : Determinar recursos de hardware para los dispositivos.
1.1.8 : Herramientas y utileras para listar informacin diversa de
hardware (lbsusb, lspci, etc).
1.1.9 : Herramientas y utileras para manipular dispositivos USB
1.1.10 : Entendimiento conceptual de sysfs, udev, hald y dbus.

14
14
16
18
28
34
36
36
39
42
47

Unidad de Aprendizaje 2

INSTALACIN DEL SISTEMA OPERATIVO GNU/LINUX


2.1 Tema 2 : Instalacin del Sistema Operativo GNU/Linux
2.1.1 : Disear el esquema de discos duros.
2.1.2 : Instalar un gestor de arranque
2.1.3 : Administracin de bibliotecas compartidas
2.1.4 : Instalacin del Sistema Operativo Centos 6.8, 7(1511)
2.1.5 : Instalacin del Sistema Operativo Ubuntu Desktop 16.04
LTS.

51
53
53
53
58
60
77

Unidad de Aprendizaje 3

85

ARQUITECTURA DEL SISTEMA


3.1 Tema 3 : Arrancar el sistema
3.1.1 : Proveer comandos comunes al cargador de arranque y
opciones al kernel al arranque del sistema.
3.1.2 : Demostrar conocimiento de la secuencia de arranque desde
el BIOS hasta completar el arranque.
3.1.3 : Revisar eventos relacionados al arranque en los archivos de
bitcora.
3.2 Tema 4 :
3.2.1 :
3.2.2 :
3.2.3 :
3.2.4 :
3.2.5 :
3.2.6 :

Cambiar los niveles de ejecucin, apagar o reiniciar el


sistema
Establecer el nivel de ejecucin predeterminado.
Cambiar entre niveles de ejecucin incluyendo el modo
usuario individual (single user).
Inicializar el sistema SysV, Upstart y systemd.
Apagar o reiniciar el sistema desde la lnea de comando.
Alertar a los usuarios antes de cambiar el nivel de ejecucin
o de algn otro evento de sistema mayor.
Terminar procesos apropiadamente.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

87
87
91
99
101
101
104
105
115
115
116

SISTEMAS OPERATIVOS ABIERTOS

Unidad de Aprendizaje 4

119

COMANDOS GNU Y UNIX


4.1 Tema 5 : Comandos GNU y Unix
4.1.1 : Trabajar en lnea de comandos
4.1.2 : Personalizar y utilizar el entorno del terminal
4.1.3 : Procesar flujos de texto usando filtros.
4.1.4 : Realizar administracin de archivos bsicos.

121
121
140
145
160

Unidad de Aprendizaje 5

167

USANDO FLUJOS, TUBERAS Y REDIRECCIONES, ADMINISTRACIN DE


PROCESOS Y BUSQUEDA EN ARCHIVOS DE TEXTO
5.1 Tema 6 : Usando flujos, tuberas y redirecciones, Administracin
de Procesos y Bsqueda en archivos de texto
5.1.1 : Usar flujos, tuberas y redirecciones.
5.1.2 : Crear, monitorizar y eliminar procesos.
5.1.3 : Modificar prioridades en la ejecucin de procesos.
5.1.4 : Buscar en archivos de texto usando expresiones regulares.
Unidad de Aprendizaje 6

169
169
180
192
194
198

ENLACES DE ARCHIVOS Y ESTRUCTURA JERRQUICA LINUX


6.1 Tema 7 : Crear y cambiar enlaces duros y simblicos
6.1.1 : Crear enlaces
6.1.2 : Identificar enlaces duros y/o simblicos.
6.1.3 : Copiar vs enlazar archivos
6.1.4 : Usar enlaces para soportar tareas de administracin del
sistema.
6.1.5 : Comprender la ubicacin correcta de archivos en el FHS.
6.1.6 : Encontrar archivos y comandos en un sistema Linux.
6.1.7 : Conocer la ubicacin y propsito de archivos y directorios
importantes definidos en el FHS.

200
200
201
201
201
203
204
208

Unidad de Aprendizaje 7

212

USANDO EL EDITOR VI
7.1 Tema 8 : Editor VI
7.1.1 : Editar archivos con vi, utilizar los modos de vi.
7.1.2 : Realizar operaciones bsicas de edicin de archivos usando
vi.

214
214
217

Unidad de Aprendizaje 8

222

ADMINISTRACIN DE PAQUETES DEBIAN


8.1 Tema 9 : Instalacion de Paquetes Debian
8.1.1 : Instalar, actualizar y desinstalar paquetes binarios de Debian.
8.1.2 : Encontrar paquetes que contengan archivos especficos o
bibliotecas las cuales pueden estar o no instaladas.
8.1.3 : Obtener informacin de un paquete como la versin,
contenido, dependencias, integridad del paquete y estado de
instalacin (est o no instalado el paquete).
Unidad de Aprendizaje 9

235

240

ADMINISTRACIN DE PAQUETES RPM


9.1 Tema 10 : Instalacin de Paquetes RPM y YUM
9.1.1 : Instalar, re-instalar, actualizar o eliminar paquetes usando
RPM y YUM.
9.1.2 : Obtener informacin de un paquete RPM como la versin,
estado, dependencias, integridad y firmas.

CARRERA DE REDES Y COMUNICACIONES

224
224
235

IEST PRIVADO CIBERTEC

242
242
248

SISTEMAS OPERATIVOS ABIERTOS

9.1.3 :

Determinar que archivos provee un paquete, as como


encontrar de qu paquete viene un archivo especfico.

253

Unidad de Aprendizaje 10

256

DISPOSITIVOS, SITEMAS DE FICHEROS Y SUS ESTANDARES


10.1 Tema 11 : Creando particiones y sistemas de ficheros
10.1.1 : Usar diversos comandos mkfs para configurar particiones y
crear sistemas de archivos.

258
258

10.2 Tema 12
10.2.1
10.2.2
10.2.3

:
:
:
:

Mantener la integridad de los sistemas de archivos


Verificar la integridad de un sistema de archivos.
Monitorizar el espacio e inodos libres.
Reparar problemas simples en un sistema de ficheros.

Unidad de Aprendizaje 11

267

MONTANDO Y DESMONTANDO FILESYSTEMS


11.1 Tema 13 : Controlar el montaje y desmontaje de sistema de
archivos
11.1.1 : Montar y desmontar sistemas de archivos manualmente.
11.1.2 : Configurar el montaje de sistemas de archivos al arranque
del sistema.
11.1.3 : Configurar sistemas de archivos para dispositivos extrables.
11.1.4 : Establecer cuotas de disco para un sistema de archivos.
11.1.5 : Editar, revisar y generar reportes de cuotas de usuario.
Unidad de Aprendizaje 12

Unidad de Aprendizaje 13

269
270
272
273
278

283
283
285
286
291
301

ADMINISTRACIN DE TAREAS DEL SISTEMA


13.1 Tema 15 : Automatizar tareas administrativas planificando tareas
del sistema
13.1.1 : Administrar tareas con la utilidad cron y at, configurar el
acceso del usuario a los servicios cron y at, crear tareas cron
del sistema.
Registro de actividad del sistema
Introduccin, sistema de registros syslog, configuracin de
syslogd, opciones de registro, registro manual de datos, rotar
archivos de registro y revisar contenidos de registros.

CARRERA DE REDES Y COMUNICACIONES

269

281

ADMINISTRACIN DE USUARIOS Y GRUPOS


12.1 Tema 14 : Administracin de cuentas
12.1.1 : Administrar permisos de acceso en archivos regulares y
archivos especiales, as como directorios.
12.1.2 : Usar modos de acceso como suid, sgid y sticky bit para
mantener la seguridad.
12.1.3 : Conocer cmo cambiar la mscara de creacin de archivos.
12.1.4 : Usar el campo de grupo para garantizar acceso a miembros
de grupo.

13.2 Tema 16 :
13.2.1 :

262
262
262
264

IEST PRIVADO CIBERTEC

303
303

308
308

SISTEMAS OPERATIVOS ABIERTOS

Unidad de Aprendizaje 14

318

FUNDAMENTOS DE REDES
14.1 Tema 17 : Fundamentos de los protocolos de Internet
14.1.1 : Introduccin suite de protocolos TCP/IP, direcciones de red,
direccin de hardware, administrar direcciones IP, clases de
red IPv4, puertos de red.
14.2 Tema 18 :
14.2.1 :

14.2.2 :

Configuracin de la red
Instalar y configurar hardware de red, configurando la red con
DHCP, IP esttico, configurando enrutamiento, resolucin de
nombres de host.
Diagnosticar la red, verificar conectividad de red, traza de
rutas, comprobar el estado de la red.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

320
320

329
329

335

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

Presentacin
Durante los ltimos aos, se ha venido observando grandes demandas en el desarrollo
de sistemas y empleo de servicios en plataformas GNU/Linux, dando lugar una alta
demanda de profesionales de Linux, siendo una prioridad en el sector privado y pblico
a la hora de contratar personal de TI.
Administracin de Sistemas Operativos Abiertos es un curso que pertenece a la lnea
de Linux y se ensea en la carrera de Redes y Comunicaciones. Brinda un conjunto de
conocimientos y herramientas que permite a los estudiantes implementar soluciones en
plataformas GNU/Linux que satisfacen necesidades de negocio especficas en un
entorno empresarial o institucional.
El curso Sistemas Operativos Abiertos (Linux) est realizado en base a los slabos de la
certificacin LPC-1 del examen 101. Al finalizar el estudio de este manual, el estudiante
estar en la capacidad de utilizar los comandos de Linux, identificar procesos,
sentencias, montar dispositivos extrables, configurar interfaces de red, brindar soporte
ante fallas menores y tambin, para consolidar lo aprendido, estar en condiciones de
poder rendir el examen de certificacin bsica LPC-1 examen 101.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

10

Red de contenidos
Sistemas Operativos Abiertos

Unidad
1

Introduccin
al Software
Libre

Unidad
2

Unidades
11 al 14

Unidades
7 al 10

Unidades
3 al 6

Instalacin
del Sistema
Operativo
GNU/Linux
Montando y
demontando
filesystems

Arquitectura
del Sistema

Usando el
editor vi

Comandos
GNU y UNIX

Administracin
de paquetes
Debian

Administracin
de Usuarios y
Grupos

Administracin
de paquetes
RPM

Administracin
de tareas del
sistema

Dispositivos,
sistemas de
ficheros y sus
estndares

Fundamentos
de Redes

Usando flujos,
tuberas y
redirecciones,
Administracn de
Procesos y
Bsqueda en
archivos de texto
Enlaces de
Archivos y
Estructura
jerrquica
Linux

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

11

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

12

UNIDAD

1
[Ttulo de Unidad. Fuente: Negrita, Arial Black 24]

INTRODUCCIN AL SOFTWARE
LIBRE
[Fuente: Negrita, Arial 12]
LOGRO DE LA UNIDAD DE APRENDIZAJE

Al trmino de la unidad, el alumno opera el sistema operativo GNU/Linux,


mediante comandos bsicos. Asimismo reconoce la filosofa de Software Libre y
Open Source que sostiene el desarrollo de GNU/Linux.
[Fuente: Negrita, Arial 12]
TEMARIO [LOS TEMAS VAN DENBLA]

1.1 Tema 1
1.1.1
1.1.2
1.1.3

:
:
:
:

1.1.4 :
1.1.5 :
1.1.6 :
1.1.7 :
1.1.8 :
1.1.9 :
1.1.10 :

Introduccin al Sistema Operativo GNU/Linux


GNU/Linux
Sistema Operativo y Distribucin
Arquitectura del Sistema, configurar el sistema con o sin
perifricos externos como teclado.
Diferencia entre dispositivos de almacenamiento masivo
Establecer correctamente el ID de hardware para diferentes
dispositivos especialmente dispositivos de arranque.
Conocer las diferencias entre dispositivos coldplug y
hotplug.
Determinar recursos de hardware para los dispositivos.
Herramientas y utileras para listar informacin diversa de
hardware (lbsusb, lspci, etc).
Herramientas y utileras para manipular dispositivos USB
Entendimiento conceptual de sysfs, udev, hald y dbus

[Fuente: Negrita, Arial 12]


ACTIVIDADES PROPUESTAS

Identificar los hardware va devices.


Habilitar y deshabilitar perifricos.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

13

14]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

14

1.1. INTRODUCCIN AL SISTEMA OPERATIVO GNU/LINUX


Nivel 2. Fuente: Arial 12]

1.1.1. GNU / LINUX


[Fuente: Arial 11]

GNU/Linux es un Sistema Operativo tipo Unix que se distribuye bajo Licencia GPL
(Licencia Pblica General de GNU). Su nombre proviene del Ncleo de Linux,
desarrollado en 1991 por Linus Torvalds en conjunto con las aplicaciones del sistema
creadas por el proyecto GNU liderado por Richard Stallman.

GNU/LINUX = KERNEL (LINUX) + APLICACIONES (GNU)

Figura 1: Sistema Operativo GNU/Linux


Fuente: [Link]

APLICACIONES GNU

Figura 2: Aplicaciones de GNU/Linux


Fuente: [Link]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

15

SOFTWARE LIBRE VS. SOFTWARE PRIVATIVO


Lo que hacas con:

Lo puedes hacer con:

Lo que hacas con:

Lo puedes hacer con:

Figura 3: Aplicaciones comerciales y sus similares en Software Libre


Fuente: [Link]

Software Libre, se denomina a todo software que respeta la libertad de los usuarios y
la comunidad, cumpliendo con las 4 libertades del Software Libre, las cuales son:
Libertad de ejecutar el programa como se desea con cualquier propsito (Libertad
0)
Libertad de estudiar el funcionamiento del programa y cambiarlo como se desee
(Libertad 1)
Libertad de redistribuir copias para ayudar a su prjimo (Libertad 2)
Libertad de distribuir copias de sus versiones modificadas a terceros ( Libertad 3)
Software Libre no quiere decir gratuito, el software Libre es cuestin de libertad, no de
precio.
Open Source, o tambin conocido como cdigo abierto, se focaliza ms en beneficios
prcticos (acceso al cdigo fuente) que en cuestiones ticas o de libertad que se destaca
en el software libre.
Licencia GPL, la Licencia Pblica General de GNU o ms conocida por su acrnimo en
ingls (General Public License), esta es una licencia creada por la Free Software
Foundation. Est orientada principalmente a proteger la libre distribucin, modificacin
y uso de software. Pretende garantizar su libertad de compartir y modificar el software
"libre", esto es para asegurar que el software es libre para todos sus usuarios. Algunos
otros programas de software de la Free Software Foundation estn cubiertos por la
"LGPL (Licencia pblica general reducida), la cual puede aplicar a sus programas
tambin.
Copyleft, contrario al copyrigth, el copyleft se practica al ejercer el derecho de autor
que consiste en permitir la libre distribucin de copias y versiones modificadas de una
obra u otro trabajo, exigiendo que los mismos derechos sean preservados en las
versiones modificadas.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

16

1.1.2. Sistema Operativo y Distribucin


Un Sistema Operativo (SO) es aquel programa o software encargado de administrar y
gestionar los recursos disponibles de un ordenador a nivel de hardware y proporciona
el correcto ambiente para que el usuario pueda ejecutar programas. Su funcin principal
es la de darnos las herramientas necesarias para poder controlar nuestra computadora
y poder hacer uso de ella. No son de uso exclusivo de las computadoras, sino que
tambin se utilizan para poder controlar e interaccionar con los telfonos celulares,
tablets, routers, reproductores de DVD, consolas de videojuegos, smart card, cajeros
ATM, etc.

S.O. = Intermediario entre los recursos HW, el usuario y las aplicaciones.

Figura 4: Sistema operativo en capas


Fuente: [Link]

Funciones Principales

Administracin del procesador: El Sistema Operativo proporciona los recursos


necesarios del procesador entre las aplicaciones ejecutadas para que estas se
ejecuten correctamente mediante un algoritmo de programacin.
Gestin de la memoria: Al igual que en el anterior punto, el Sistema Operativo se
encarga de gestionar la memoria ram disponible en nuestra computadora para que
las aplicaciones puedan ser ejecutadas.
Gestin de operaciones de operaciones de entradas y salidas (inputs/outputs):
El Sistema operativo perite administrar los perifricos a travs de los drivers.
Administracin de autorizaciones: El Sistema Operativo se encarga de gestionar
y administrar las autorizaciones garantizando que solo los usuarios y las
aplicaciones que tienen la autorizacin puedan ejecutarlas.
Gestin de archivos: El Sistema Operativo gestiona la lectura y escritura en el
sistema de archivos y las autorizaciones de acceso a archivos de aplicaciones y
usuarios.
Administracin de utileras y soporte: El Sistema Operativo proporciona
informacin con algunos indicadores que pueden ser utilizados para diagnosticar el
funcionamiento correcto del equipo.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

17

Una distribucin GNU/Linux (coloquiamente llamada distro) es una distribucin de


software basada en el ncleo Linux que incluye determinados paquetes de software
para satisfacer las necesidades de un grupo especfico de usuarios, dando as origen a
ediciones domsticas, empresariales y para servidores. Por lo general estn
compuestas, total o mayoritariamente, de software libre, aunque a menudo incorporan
aplicaciones o controladores propietarios.
Distribuciones ms importantes en el mundo de GNU/Linux

Figura 5: Distribuciones GNU/Linux


Fuente: [Link]

Componentes
El conjunto tpico de una distribucin Linux contiene un ncleo, herramientas y
bibliotecas, software adicional, documentacin, un sistema de ventanas, un
administrador de ventanas y un entorno de escritorio, este suele ser GNOME o KDE.
Gran parte del software incluido es de fuente abierta o software libre y distribuido
por sus desarrolladores tanto en binario compilado como en forma de cdigo fuente,
permitiendo a sus usuarios modificar o compilar el cdigo fuente original si lo desean.
Muchas distribuciones incorporan software privativo, no disponible en forma de
cdigo fuente.

Distribuciones independientes
Como Gentoo Linux, T2 y Linux From Scratch proveen el cdigo fuente de todo el
software y solo incluyen los binarios del ncleo, herramientas de compilacin y de
un instalador; el instalador compila todo el software para el CPU especfico de la PC
del usuario.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

18

Gestin de paquetes
Las distribuciones estn divididas en paquetes. Cada paquete contiene una
aplicacin especfica o un servicio. Ejemplos de paquetes son una biblioteca para
manejar el formato de imagen PNG, una coleccin de tipografas o un navegador
web. El paquete es generalmente distribuido en su versin compilada y la instalacin
y desinstalacin de los paquetes es controlada por un sistema de gestin de
paquetes en lugar de un simple gestor de archivos.
Cada paquete elaborado para ese sistema de paquetes contiene meta-informacin
tal como fecha de creacin, descripcin del paquete y sus dependencias. El sistema
de paquetes analiza esta informacin para permitir la bsqueda de paquetes,
actualizar las libreras y aplicaciones instaladas, revisar que todas las dependencias
se cumplan y obtenerlas si no se cuenta con ellas de manera automtica.

Sistemas de paquetes ms usados


o RPM, creado por Red Hat y usado por un gran nmero de distribuciones de
Linux, es el formato de paquetes del Linux Standard Base. Originalmente
introducido por Red Hat, pero ahora se usa en muchas distribuciones, como por
ejemplo Mandriva y Centos.
o Deb, paquetes Debian, originalmente introducidos por Debian, pero tambin
utilizados por otros como Knoppix y Ubuntu.
o .Tgz, usado por Slackware, empaqueta el software usando tar y gzip. Pero,
adems, hay algunas herramientas de ms alto nivel para tratar con este
formato: slapt-get, slackpkg y swaret.
o Ebuilds, archivo que contiene informacin acerca de cmo obtener, compilar e
instalar un paquete en el sistema Portage de Gentoo Linux con el comando
emerge. Generalmente, estas instalaciones se basan en la compilacin de
fuentes, aunque algunos paquetes binarios se pueden instalar de esta manera.
o Pacman, para Arch Linux, usa binarios precompilados distribuidos en un fichero
.[Link] .[Link].
o Pet, utilizado por Puppy Linux, sus derivados y Quirky, su proyecto hermano.

1.1.3. Arquitectura del Sistema, configurar el sistema con o sin perifricos


externos como teclado
Identificar y editar configuraciones hardware
La BIOS
Los ordenadores estn compuestos por una parte hardware y una parte software. El
hardware son los componentes fsicos del ordenador, como son el microprocesador (o
CPU, Central Processing Unit, Unidad Central de Proceso), la memoria RAM (Random
Access Memory), el disco duro, la tarjeta grfica, etc. El software en cambio est
formado por los programas y los datos que manejan dichos programas.
Dentro del hardware del ordenador encontramos la BIOS (Basic Input/Output System,
Sistema Bsico de Entrada/Salida), que es el software de ms bajo nivel que se ejecuta
en el ordenador y que se encuentra "grabado" en un chip de memoria de la placa base
del ordenador, motivo por el cual se le denomina "firmware". En los primeros
ordenadores este software se almacenaba en un chip de tipo ROM (Read Only Memory,
memoria de solo lectura), que para actualizarlo deba ser remplazado por otro chip;

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

19

posteriormente se emplearon chips de memoria de tipo EEPROM (Electrically Erasable


Programmable Read-Only Memory, memoria de slo lectura borrable y programable
elctricamente), cuyo contenido poda actualizarse por software, sin necesidad de
remplazar el chip. Actualmente se utilizan memorias de tipo Flash.
La BIOS suele ir acompaada de otra memoria, en este caso de tipo CMOS
(Complementary Metal-Oxide Semiconductor), donde se guarda la configuracin de la
BIOS, cuya informacin se mantiene gracias a la pila de botn de la placa base.
Cuando se enciende el ordenador, la BIOS realiza un chequeo del hardware
denominado POST (Power On Self Test, auto diagnstico de encendido), inicializa el
hardware, carga en memoria el cargador de arranque (boot loader) del SO (que suele
estar en un disco duro) y luego pasa el control a dicho cargador de arranque, que a su
vez inicia el SO.

Figura 6: Secuencia de arranque del sistema


Fuente: [Link]

Uno de los principales objetivos de la BIOS "era" proporcionar servicios de E/S al SO,
de forma que el software no acceda directamente al hardware, sino que lo haca a travs
de la BIOS. Actualmente los SO hacen uso de sus propios servicios para acceder al
hardware, sin usar los que proporciona la BIOS. En el caso de GNU/Linux, su kernel
slo utiliza los servicios de la BIOS al inicio para recopilar informacin sobre el hardware,
pero una vez iniciado ya no los usa ms.
Desde el punto de vista de los administradores de sistemas, es importante conocer el
papel de la BIOS en la configuracin del hardware y en el arranque.
La mayora de las BIOS disponen de un programa denominado SETUP, que permite
configurar sus opciones de forma interactiva. Normalmente se accede a esta
herramienta pulsando Supr, F1 o F2 (depende del fabricante de la BIOS) al principio de
la secuencia de arranque.
Una funcin importante de la BIOS es que permite activar y desactivar el hardware de
la placa base. En la placa suelen venir integrados muchos dispositivos (controladora de
disco duro, controladora USB, tarjeta de vdeo, tarjeta de red, tarjeta de sonido, etc.), y
puede que en alguna ocasin este dispositivo integrado no sea el ms adecuado. En
este caso, se podr desactivar el dispositivo mediante la BIOS evitando que un
dispositivo hardware en desuso interfiera con el hardware que se utiliza.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

20

Cmo activar o desactivar dispositivos depende de la BIOS de que se disponga, pero


habitualmente se encuentra en los mens Integrated Peripherals (perifricos integrados)
o Advanced (Avanzado).
Cuando GNU/Linux se haya iniciado, utilizar los drivers (controladores) para acceder
al hardware del ordenador, en lugar de los servicios de la BIOS, como ya se coment
con anterioridad.

Figura 7: SETUP, programa de configuracin de la BIOS


Fuente: [Link]

Arrancar sin teclado: Muchos ordenadores funcionan como servidores que no


necesitan teclado para su funcionamiento diario. Sin embargo, en ocasiones los
ordenadores se niegan a arrancar sin teclado, ya que el proceso de POST lo entiende
como un problema. Para desactivar este aviso, en el SETUP de algunas BIOS se
dispone de la opcin Halt On (Detenerse) o similar. Por medio de esta opcin puede
indicarse a la BIOS bajo qu circunstancias debe negarse a arrancar, y una de ellas
sera desactivar la comprobacin del teclado.

Figura 8: Opcin HaltOn de la BIOS


Fuente: [Link]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

21

Teclado USB: Si al sistema se conecta un teclado de tipo USB, o sin cable pero con un
adaptador que se conecta al USB, es necesario activar en la BIOS la opcin USB legacy
support (a veces denominada USB DOS function o USB keyboard enable). Esto permite
activar el soporte para teclados e incluso dispositivos de almacenamiento por USB como
pendrives, discos duros externos, tarjetas de memoria, etc.
Controladores de dispositivo (drivers)
Un controlador de dispositivo (device driver, o simplemente driver) es un programa
(software) que permite al SO interactuar con un perifrico o dispositivo de E/S, haciendo
una abstraccin del hardware y proporcionando un medio al SO para comunicarse con
l. Se puede decir que es como un manual de instrucciones que le indica al SO cmo
debe controlar y comunicarse con un dispositivo en particular. Por tanto, es una pieza
esencial, sin la cual no se podra usar el hardware.
Existen tantos tipos de controladores como tipos de perifricos, y es comn encontrar
ms de un controlador posible para el mismo dispositivo, cada uno ofreciendo un nivel
distinto de funcionalidades. Por ejemplo, aparte de los oficiales (normalmente
disponibles en la pgina web del fabricante), se pueden encontrar tambin los
proporcionados por el SO, o tambin versiones no oficiales hechas por terceros.
En GNU/Linux los drivers se encuentran, o bien integrados en el kernel del SO (incluidos
en el ncleo en tiempo de compilacin), o bien en forma de mdulos que se pueden
cargar en el kernel (en tiempo de ejecucin o durante el inicio del sistema). Para ms
informacin consultar el apartado sobre Mdulos del kernel.
IRQ
Para permitir que los perifricos y dispositivos del equipo se comuniquen directamente
con los recursos del sistema en particular con el CPU (Central Processing Unit), el
sistema asigna recursos tales como lneas y canales de comunicacin para cada
dispositivo. Muy particulamente, estos recursos son conocidos como solicitudes de
interrupcion (IRQ), direcciones de entrada/salida y accesos directos a memoria (DMA).
Solicitudes de interrupcin (IRQ)
Antes de explicar que es una solicitud de interrupcin, entendamos primero cual es la
funcin de un procesador. El procesador es el encargado de procesar y administrar los
datos y peticiones que a este llegan, sin embargo un solo procesador no es capaz de
procesar simultaneamente varias peticiones , por lo que solo atiende de una a una las
peticiones que a el llegan, aqui es donde las solicitudes de interrupcion empiezan a jugar
un papel importante. Suponga que un programa1 est siendo atendido por el procesador
pero sbitamente una solicitud de interrupcin llega al procesador, es entonces cuando
el programa1 llega a ser momentaneamente suspendido por un programa2. Este
programa2 es ahora el atendido por el procesador y hasta que este termine de ser
atendido el programa1 interrumpido puede continuar ejecutndose.
Una interrupcin se convierte en una interrupcin de hardware cuando es solicitada por
uno de los componentes de hardware del equipo. Cuando un perifrico desea acceder
a un recurso, enva un pedido de interrupcin al procesador para llamar su atencin. Los
perifricos cuentan con un nmero de interrupcin que se denomina IRQ (Peticiones de
Interrupcin). Es como si cada perifrico tirara de un "hilo" que est atado a una
campana para indicarle al equipo que desea que le preste atencin. Este "hilo" es, de
hecho, una lnea fsica que conecta cada ranura de expansin as como cada interfaz
entrada/salida a la motherboard.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

22

Un ejemplo seran las interrupciones generadas por el teclado cuando se pulsan sus
teclas.
En los microprocesadores de la familia x86, las IRQ van del 0 al 15, y en las arquitecturas
ms modernas (como la familia x86-64 de 64 bits) hay ms de 16 interrupciones.
Algunas interrupciones tienen usos especficos, como el teclado o el reloj en tiempo real
(RTC, Real Time Clock), otras tienen usos comunes y se pueden reasignar, y otras se
dejan libres (sin uso) para posibles dispositivos que se aadan en el futuro.

Figura 9: Las IRQ y sus usos comunes


Fuente: [Link]

En los sistemas x86-64 las IRQ se suelen asignar como en la tabla anterior, y a las IRQ
superiores se les puede asignar hardware adicional.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

23

Una vez iniciado el sistema GNU/Linux es posible explorar qu IRQ se estn utilizando
y para qu fines, examinando el contenido del fichero /proc/interrupts:

Figura 10: Listado de interrupciones


Fuente: Cibertec

La ejecucin del comando anterior muestra en la primera columna los nmeros de IRQ
y en la ltima columna los nombres de los drivers que utilizan cada IRQ.
En el ejemplo anterior se puede ver que la interrupcin 12, correspondiente al puerto
PS/2 del ratn, est asociada al driver "i8042" (curiosamente, i8042 es el nombre del
chip que controla los puertos PS/2).
El fichero /proc/interrupts lista slo las IRQ que estn en uso en GNU/Linux, y se debe
tener en cuenta que hasta que el SO no utiliza una IRQ no se carga el driver
correspondiente, por lo que puede que no aparezca en la lista hasta que se intente
utilizar el hardware. Por este motivo, puede que haya interrupciones configuradas en el
sistema pero que no se estn listando en el fichero interrupts.
Direcciones de Entrada/Salida
La arquitectura de los ordenadores actuales cumple con lo que se denomina MMIO
(Memory Mapped Input Output, entrada/salida mapeada en memoria). Esta arquitectura
hace que el acceso a los dispositivos hardware de E/S (teclado, ratn, impresora,
webcam, etc.) desde la CPU sea igual que un acceso a memoria RAM. Esto es, enviar
datos a un dispositivo es como una escritura en RAM, y recibir informacin desde un

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

24

dispositivo es como una lectura en RAM. Esto hace que la CPU no tenga que distinguir
entre un acceso a RAM o un acceso a un dispositivo de E/S (entrada/salida).
Para hacer esto posible se reserva un conjunto de direcciones de memoria para la
comunicacin entre la CPU y los dispositivos fsicos de E/S. Este conjunto de
direcciones de memoria se denomina direcciones de E/S. Cuando la CPU escriba o lea
en estas direcciones de memoria, realmente se estar comunicando con un dispositivo
de E/S, y no con la memoria RAM.
NOTA: En ocasiones el sistema no detecta el 100% de la memoria RAM que se le ha
instalado, y el motivo es que un subconjunto de las direcciones de memoria que se
deban emplear para el acceso a la memoria RAM se ha reservado para las operaciones
de E/S (comunicacin de los dispositivos de E/S).
Al igual que las IRQ, las direcciones de E/S suelen estar asociadas con dispositivos
especficos y, por lo general, no se deben compartir.

Figura 11: Dispositivos y direcciones de E/S.


Fuente: [Link]

En la Figura 10 podemos observar que para algunos dispositivos se utiliza ms de una


direccin de E/S (rango de direcciones).
Cuando GNU/Linux est en ejecucin es posible conocer las direcciones de E/S que
estn en uso examinando el contenido del fichero /proc/ioports:
# cat /proc/ioports
Se pueden observar las direcciones de E/S correspondientes a cada dispositivo en la
siguiente imagen:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

25

Figura 12: Listado de dispositivos y direcciones de E/S.


Fuente: Cibertec

En el listado anterior (que ha sido truncado [--Ms--]) se puede observar en la primera


columna el rango de direcciones de E/S reservado y en la segunda columna el nombre
del dispositivo para el que se reservan.
Por ejemplo, se puede observar que para el teclado (keyboard) se han reservado las
direcciones 0x0060 y 0x0064.
Accesos Directos a Memoria (DMA)
El DMA (Direct Memory Access, acceso directo a memoria) es otro mtodo para la
comunicacin con los dispositivos de E/S. En vez de hacer que la CPU se encargue de
la transferencia de datos entre un dispositivo de E/S y la memoria RAM, mediante DMA
el dispositivo puede transferir directamente informacin a la memoria sin intervencin
de la CPU. Lo que se consigue es dejar libre a la CPU de las tareas de E/S para que
pueda ocuparse de otras tareas, mejorando as el rendimiento del sistema.
En la arquitectura x86 existen varios canales DMA, de forma que cada canal puede ser
utilizado por un dispositivo concreto. Para conocer los canales DMA que estn en uso
en el sistema se puede consultar el fichero /proc/dma:

Figura 13: Listado de dispositivos y direcciones de E/S.


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

26

El comando del ejemplo anterior indica que el canal DMA 4 est en uso.
Al igual que las IRQ y las direcciones de E/S, los canales DMA normalmente no se
deberan compartir, ya que puede dar lugar a problemas.
Muchos sistemas hardware utilizan DMA, incluyendo controladores de unidades de
disco, tarjetas grficas y tarjetas de sonido. DMA es una caracterstica esencial en todos
los equipos modernos, ya que permite a dispositivos de diferentes velocidades
comunicarse sin someter al procesador a una carga masiva de interrupciones. Una
transferencia DMA consiste principalmente en copiar un bloque de memoria de un
dispositivo a otro. En lugar de que el procesador inicie la transferencia, la transferencia
se lleva a cabo por el controlador DMA. Un ejemplo tpico es mover un bloque de
memoria desde una memoria externa a una interna ms rpida. Tal operacin no ocupa
el procesador y como resultado puede ser planificado para efectuar otras tareas. Las
transferencias DMA son esenciales para aumentar el rendimiento de aplicaciones que
requieran muchos recursos.
Regularmente un equipo consta de 8 canales DMA. Los primeros cuatro canales DMA
poseen un ancho de banda de 8 bits mientras que los DMA 4 a 7 poseen a su vez un
ancho de banda de 16 bits. Los canales DMA por lo general suelen asignarse de la
siguiente manera:
DMA0: libre
DMA1: (tarjeta de sonido)/libre
DMA2: controlador de disquete
DMA3: puerto paralelo (puerto de la impresora)
DMA4: controlador de acceso directo a memoria (conectado a DMA0)
DMA1: (tarjeta de sonido)/libre
DMA6: (SCSI)/libre
DMA7: disponible
Plug And Play (PnP)
La mayora de los sistemas actuales disponen de la tecnologa Plug & Play (PnP,
conectar y listo), que permite que los recursos de los dispositivos (IRQ, direcciones de
E/S y canales DMA) sean configurados de forma automtica por la BIOS.
La forma en que se asignen los recursos a los dispositivos depende de la tecnologa de
bus de que se trate.
Por ejemplo, el bus PCI (Peripheral Component Interconnect) es PnP y los recursos de
los dispositivos conectados a este tipo de bus son asignados por la BIOS durante el
arranque.
En cambio, el bus ISA (Industry Standard Architecture) no es PnP (aunque hubo algn
intento de conseguir el PnP en ISA casi al final de la historia de este bus), por lo que en
este caso los recursos de los dispositivos conectados son asignados por el SO y no por
la BIOS. Las herramientas isapnptools se utilizaban por controlar la asignacin de
recursos en los dispositivos ISA mediante el comando isapnp y el fichero de
configuracin /etc/[Link]. Desde la versin de kernel 2.4 el soporte para PnP est
integrado en el mismo kernel de GNU/Linux y estas herramientas se han vuelto
obsoletas. Otro comando que han quedado obsoleto es lspnp y el fichero /proc/bus/pnp.
Actualmente todos los dispositivos PCI y posteriores (AGP, PCI-Express) son PnP.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

27

Listado de asignacin de recursos


El ncleo de Linux agrupa la informacin relacionada a la asignacin de recursos en la
carpeta:
/proc
Los ficheros relevantes de esta carpeta son los siguientes:

/proc/dma Fichero que contiene el histrico DMA del equipo.


/proc/interrupts Fichero que contiene el histrico IRQ del equipo.
/proc/ioports Fichero que contiene el histrico Entrada/Salida del equipo.
/proc/pci

La asignacin de recursos tambin pueden ser consultada usando comandos como:


lspci
dmesg
lspci
El comando lspci nos imprime informacin detallada sobre los buses y dispositivos PCI
conectados al equipo. Asi mismo nos da informacin detallada sobre los IRQ y
direcciones de Entrada/Salida asociados a los dispositivos PCI entontrados, para ello
solo se tiene que agregar el parametro -v al comando. Ejemplo lspci v

Figura 14: Empleo de comando lspci


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

28

dmesg
El comnado dmesg (diagnostic message) es un comando que lista el buffer de mensajes
del kernel de linux. Este buffer contiene una gran variedad de mensajes importantes
generados durante el arranque del sistema y durante la depuracin de aplicaciones.
Estos mensajes pueden ser consultados en el fichero /var/log/messages.

1.1.4. Diferencia entre dispositivos de almacenamiento masivo


Un disco duro es un dispositivo de almacenamiento masivo de datos que a su vez
tambin puede tener instalado algn Sistema Operativo; asimismo, funge como
memoria no voltil, es decir, cuando por alguna razn se interrumpe la energa elctrica
de nuestra casa u oficina la informacin anidada en el mismo se almacena de manera
correcta, salvo algunas excepciones, como por ejemplo cuando se trabaja en tiempo
real con el disco duro y no se guardan con anticipacin dichos cambios. Un ejemplo de
memoria voltil es la memoria RAM (Random Access Memory), ya que este tipo de
memoria solo almacena la informacin de manera temporal y es borrada nuevamente
cuando se interrumpe la energa elctrica de la computadora. Un disco duro (Hard Disk)
emplea un sistema de grabacin magntica el cual es aplicado a una una serie de platos
metlicos apilados girando a gran velocidad. Sobre estos platos se sitan los cabezales
encargados de leer o escribir los impulsos magnticos.
Existen distintos tipos de interfaces y entre las ms comunes se encuentran las
siguientes:

IDE-Parallel ATA (Integrated Drive Electronics - Parallel Advanced Tecnology


Attachment)
SATA (Serial Advanced Technology Attachment)
SCSI generalmente usado en servidores

Discos Duros IDE-Parallel ATA


Los discos duros con esta denominacin hacen uso de una interfaz llamada IDE
(Integrated Device Electronics) o PATA (Parallel Advanced Technology Attachment) que
es la encargada de comunicar al Disco Duro con la tarjeta madre. El estndar IDEParallel ATA fue diseado originalmente para conectar discos duros; sin embargo, se
desarroll una extensin llamada ATAPI que permite interconectar otros perifricos de
almacenamiento como unidades de CD o unidades de DVD en una interfaz IDE-Parallel
ATA. Habitualmente, un disco duro IDE-Parallel ATA puede estar configurado de 3
maneras diferentes, las cuales son:

Maestro.- Los discos duros con esta configuracin indican a la tarjeta madre que el
debe ser el primero en ser leido y por ende el primero en arrancar

Esclavo.- Los discos duros con este tipo de configuracin no son tomados en cuenta
al momento de arrancar el sistema por lo que el disco duro maestro puede disponer
de los dems discos duros configurados como discos esclavos

Seleccin por cable.- El dispositivo ser maestro o esclavo en funcin de su


posicin en el cable. Si hay otro dispositivo, tambin debe estar configurado como
cable select. Si el dispositivo es el nico en el cable, debe estar situado en la posicin
de maestro.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

29

Este diseo IDE-Parallel ATA tiene el inconveniente de que mientras se accede a un


dispositivo el otro dispositivo del mismo conector IDE no se puede usar. Este
inconveniente est resuelto en discos duros como los SATA y en SCSI, que pueden
usar dos dispositivos por canal.
Los discos IDE estn mucho ms extendidos que los SCSI debido a su precio mucho
ms bajo. El rendimiento de IDE es menor que SCSI pero se estn reduciendo las
diferencias.
Como su nombre indica, los dispositivos PATA utilizan una interfaz en paralelo, lo que
significa que por el cable se transfieren varios bits de forma simultnea. Por este motivo
el cable PATA es tan ancho (40 pines para dispositivos de 3.5" y de 44 pines para los
de 2.5").
Es posible conectar hasta dos dispositivos por cada conector PATA de una placa base,
de forma que los cables PATA suelen tener tres conectores: uno para la placa base y
dos para los dispositivos.

Figura 15: Cable PATA


Fuente: [Link]

Los dispositivos PATA se deben configurar como maestros o esclavos. Esto se puede
hacer mediante los jumpers de los propios dispositivos, estableciendo uno como
maestro (master) y otro como esclavo (slave). Por lo general, el maestro se conecta al
final del cable y el esclavo en el conector intermedio. Tambin existe la configuracin de
seleccin por cable (cable select) que tambin se establece mediante los jumpers;
configurando el dispositivo de esta forma, se autoconfigura en funcin de su posicin en
el cable.

Figura 16: Jumpers en un disco duro PATA (Cable Select/Slave/Master)


Fuente: [Link]

En GNU/Linux se identifican los discos duros PATA mediante los ficheros /dev/hda,
/dev/hdb, etc., siendo /dev/hda el disco duro maestro del primer controlador PATA,

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

30

/dev/hdb el disco esclavo del primer controlador, /dev/hdc el maestro del segundo
controlador y /dev/hdd el esclavo del segundo controlador. Por lo tanto, es posible que
en el sistema se disponga de los ficheros /dev/hda y /dev/hdc, pero no de /dev/hdb por
no haber un disco duro conectado como esclavo en el primer controlador, habiendo
saltos en el esquema de numeracin de los ficheros de dispositivos PATA.
Si un disco duro se encuentra particionado, sus particiones se identifican mediante
ficheros cuyo nombre coincide con el del disco pero acabado en un nmero, que indica
el nmero de la particin al que se corresponde. Esto es, si el disco duro maestro del
primer controlador /dev/hda cuenta con tres particiones, stas se corresponden con los
ficheros /dev/hda1, /dev/hda2 y /dev/hda3.
En el caso de las unidades pticas (CD-ROM, DVD,...) tambin existen los ficheros de
dispositivo /dev/cdrom o /dev/dvd. En este caso, no se suelen particionar. En el caso de
las unidades ZIP, aunque son dispositivos extrables, se les asigna ficheros de
dispositivos como a los discos duros PATA, tal y como se vio antes, siguiendo el mismo
esquema en caso de particionado.
Algunos sistemas GNU/Linux disponen de drivers que tratan los dispositivos PATA como
si fueran SCSI, en cuyo caso los nombres de fichero de los dispositivos PATA siguen
las reglas de SCSI, que se vern a continuacin.
Discos Duros SATA
Los discos duros con esta denominacin hacen uso de una interfaz llamada Serial
Advanced Technology Attachment que es la encargada de comunicar los dotos del
Disco Duro con la tarjeta madre. Estos discos duros sustituyen a los tradicionales IDEPATA, adems de que proporciona mayores velocidades, mejor aprovechamiento
cuando hay varios discos, mayor longitud del cable de transmisin de datos y capacidad
para conectar discos en caliente (con la computadora encendida). El estndar Serial
ATA se basa en una comunicacin en serie. Se utiliza una ruta de datos para transmitir
los datos y otra ruta para transmitir las confirmaciones de recepcin. En cada una de
estas rutas, los datos se transmiten mediante el modo de transmisin LVDS (Seal
diferencial de bajo voltaje) que consiste en transferir una seal a un hilo y su
contrapartida a un segundo hilo para permitir que el destinatario recree la seal por
diferencia. Los datos de control se transmiten por la misma ruta que los datos mediante
una secuencia especfica de bits que los distingue. Por lo tanto, la comunicacin
requiere de dos rutas de transmisin, cada una de las cuales est compuesta por dos
hilos, con un total de cuatro hilos utilizados para la transmisin.

Figura 17: Disco duro SATA


Fuente: [Link]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

31

Conectores de Serial ATA


El cable utilizado por el estndar Serial ATA es un cable redondeado que contiene 7
hilos con un conector de 8 milimetros en su extremo, tres hilos tienen conexin a tierra
y dos pares se utilizan para la transmisin de datos, el conector de la fuente de
alimentacin tambin es diferente ya que comprende 15 clavijas que alimentan al
perifrico con una potencia que varia entre 3.3 Volts, 5 Volts o 12 Volts y tiene una
apariencia similar al conector de datos.

Figura 18: Cable SATA


Fuente: [Link]

Actualmente, las placas base suelen incluir cuatro o ms conectores SATA, coexistiendo
en algunos casos con conectores PATA.
A un conector SATA, a diferencia de PATA, slo se puede conectar un nico dispositivo.
Esto simplifica la configuracin, ya que no habr que configurar jumpers ni preocuparse
por la posicin en el cable.
Caractersticas
El estndar Serial ATA brinda una velocidad de 187.5 MB/s 1.5 Gb/s, cada octeto se
transmite con un bit de arranque y un bit de parada, con una velocidad efectiva terica
de 150 MB/s 1,2 Gb/s. El estndar Serial ATA II debe contribuir a alcanzar 375 MB/s
3 Gb/s, es decir, una velocidad efectiva terica de 300 MB/s, y finalmente 750 MB/s
6 Gb/s, es decir, una velocidad efectiva terica de 600 MB/s. Los cables del estndar
Serial ATA pueden medir hasta 1 metro de longitud (en comparacin con los 45 cm que
miden los cables IDE). Adems, la baja cantidad de hilos en una envoltura redonda
permite una mayor flexibilidad y una mejor circulacin del aire dentro de la carcasa que
la de los cables IDE (incluso si existieran los cables IDE redondeados). A diferencia de
los perifricos del estndar ATA, los del Serial ATA se encuentran solos en cada cable
y ya no es necesario diferenciar los discos duros maestros de los discos duros esclavos.
Otra de la ventajas con este tipo de disco es que permite la conexin en caliente o en
pocas palabras, mientras el equipo esta encendido.
La mayora de los drivers de GNU/Linux tratan los dispositivos SATA como si fueran
SCSI, por lo que conviene consultar el siguiente apartado para conocer la nomenclatura
de los dispositivos. Existe algn caso, con drivers antiguos, que se tratan los discos
SATA como si fueran PATA, por lo que en este caso se usar la nomenclatura PATA
(/dev/hdx).

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

32

Discos Duros SCSI


El estndar SCSI (Small Computers System Interface) es una interfaz que se utiliza para
permitir la conexin de distintos tipos de perifricos a un ordenador mediante una tarjeta
denominada adaptador SCSI o controlador SCSI generalmente mediante un conector
PCI.
Existen diversas definiciones de SCSI, que utilizan cables diferentes y funcionan a varias
velocidades. SCSI ha sido tradicionalmente un bus paralelo (como PATA), aunque
existe una variante reciente que funciona en serie (como SATA): SAS (Serial Attached
SCSI).
SCSI es un bus superior a PATA y, por consiguiente, de mayor coste, por lo que no est
tan extendido.
Admite entre 8 y 16 dispositivos por bus, dependiendo de la variante de SCSI de que se
trate. Uno de los dispositivos es el propio adaptador de host SCSI, que es el dispositivo
que comunica el sistema con los dispositivos de almacenamiento SCSI. Este adaptador
de host puede venir integrado en la placa base o puede incluirse como una tarjeta de
expansin. Cada dispositivo posee su propio nmero de ID, que se suele asignar a
travs de un jumper del dispositivo. Hay que asegurarse de que cada ID de dispositivo
es nico.

Figura 19: Posibles configuraciones de jumpers para asignar el ID a un dispositivo SCSI


Fuente: [Link]

Las BIOS estndar no suelen detectar los dispositivos SCSI; slo se podr arrancar
desde un dispositivo SCSI si el adaptador de host SCSI lo soporta (si posee una BIOS
propia). Los adaptadores de host SCSI de gama alta suelen disponer de su propia BIOS,
a diferencia de las de gama baja. Si empleamos un adaptador de host SCSI de gama
baja, se podr utilizar el dispositivo SCSI, pero slo una vez iniciado el sistema
GNU/Linux, ya que no se podr arrancar el sistema desde dichos dispositivos.
La nomenclatura de los ficheros de dispositivo es la siguiente, dependiendo del tipo de
dispositivo de que se trate:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

33

Disco duro SCSI: /dev/sdx, donde la "x" es una letra empezando por la "a".
Cinta SCSI: /dev/stx y /dev/nstx, donde "x" es un nmero empezando por el "0".
CD-ROM/DVD-ROM SCSI: /dev/scdx, donde "x" es un nmero empezando por el
"0".

La numeracin de los ficheros de dispositivo se realiza en orden ascendente basado en


el ID SCSI. Esto es, si se dispone de un disco duro con ID SCSI 2 y otro con ID SCSI 4,
se les asignarn /dev/sda y /dev/sdb respectivamente. El problema est en si se aade
un nuevo dispositivo, en cuyo caso depender de si se le asigna ID SCSI 0, 1 3. Si se
le asigna 0 1 el nuevo disco se convertir en /dev/sda, y si se le asigna 3 se convertir
en /dev/sdb, incrementando los identificadores de uno o de los dos discos anteriores
(segn el caso). Por este motivo se recomienda asignar los ID ms bajos posibles para
poder aadir futuros dispositivos empleando ID superiores.
Otro problema surge si se dispone de ms de un adaptador host SCSI, ya que
GNU/Linux asigna nombres de fichero de dispositivo a todos los dispositivos del primer
adaptador y luego sigue por los dispositivos del segundo adaptador, de forma
consecutiva.
Los dispositivos conectados a un bus SCSI forman una cadena, que debe ser finalizada
por ambos extremos, pero no los dispositivos intermedios. Hay que consultar el manual
del adaptador host SCSI o del dispositivo SCSI para saber cmo finalizarlos. Los
dispositivos SCSI modernos traen un jumper para activar o desactivar la finalizacin. En
otros casos se emplean unos dispositivos terminadores que deben ser conectados al
dispositivo finalizador.

Figura 20: Terminador SCSI externo


Fuente: [Link]

La incorrecta finalizacin suele derivar en problemas raros, como la imposibilidad de


detectar estos dispositivos, bajo rendimiento u operaciones poco fiables. Esto puede
ocurrir tambin al utilizar cables SCSI de baja calidad o demasiado largos.
Direccionamiento de los Perifricos SCSI
Los perifricos se direccionan mediante nmeros de identificacin. El primer nmero es
el ID, nmero que designa al controlador que se encuentra dentro de cada perifrico
(definido a travs de los caballetes posicionados en cada perifrico SCSI o por el
software). El perifrico puede tener hasta 8 unidades lgicas (por ejemplo, una unidad
de CD-ROM con varios cajones). Las unidades lgicas se identifican mediante un LUN
(Nmero de unidad lgica). Por ltimo, un ordenador puede contener diversas tarjetas
SCSI y, por lo tanto, a cada una le corresponde un nmero diferente.
Existen dos tipos de bus SCSI:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

34

SCSI asimtrico y diferencial

el bus asimtrico, conocido como SE (por Single-Ended o Terminacin nica),


basado en una arquitectura paralela en la que cada canal circula en un alambre,
sensible a las interferencias. Los cables SCSI en modo SE poseen 8 alambres para
una transmisin de 8 bits (que se denominan limitados) o 16 alambres para cables
de 16 bits (conocidos como extendidos). Este es el tipo de bus SCSI ms comn.

el bus diferencial transporta seales a un par de alambres. La informacin se codifica


por diferencia entre los dos alambres (cada uno transmite el voltaje opuesto) para
desplazar las interrupciones electromagnticas, lo que permite obtener una distancia
de cableado considerable (alrededor de 25 metros). En general, existen dos modos:
el modo LVD (Voltaje bajo diferencial), basado en seales de 3,3 V y el modo HVD
(Voltaje Alto Diferencial), que utiliza seales de 5 V. Los perifricos que utilizan este
tipo de transmisin son cada vez ms raros y por lo general llevan la palabra "DIFF".

Los conectores para las dos categoras de perifricos son los mismos, pero las seales
elctricas son diferentes. Por lo tanto, los perifricos necesitan ser identificados
(mediante los smbolos creados para tal fin) para no daarlos.
Estndares SCSI
Los estndares SCSI definen los parmetros elctricos de las interfaces de
entrada/salida. El estndar SCSI-1 de 1986 defini los comandos estndar para el
control de los perifricos SCSI en un bus con una frecuencia de 4,77 MHz con un ancho
de 8 bits, lo que implicaba que era posible alcanzar velocidades de 5 MB/s. Sin embargo,
un gran nmero de dichos comandos eran opcionales, por lo que en 1994 se adopt el
estndar SCSI-2. ste define 18 comandos, conocidos como CCS (Conjunto de
comandos comunes).
Se han definido varias versiones del estndar SCSI-2:

El SCSI-2 extendido, basado en un bus de 16 bits (en lugar de 8), ofrece una
velocidad de 10 MB/s.

El SCSI-2 rpido es un modo sincrnico rpido que permite un aumento de 5 a 10


MB/s para el estndar SCSI y de 10 a 20 MB/s para el SCSI-2 extendido
(denominado SCSI-2 extendido rpido).

Los modos Rpido-20 y Rpido-40 duplican y cuadriplican dichas velocidades


respectivamente.

El estndar SCSI-3 incluye nuevos comandos y permite la unin de 32 perifricos, as


como una velocidad mxima de 320 MB/s (en modo Ultra-320).

1.1.5. Establecer correctamente el ID de hardware para diferentes


dispositivos, especialmente dispositivos de arranque
Existen dos tipos de interfaces scsi, estas son las siguientes:
Una interfaz de 8 bits con un bus que soporta 8 dispositivos, esta incluye el controlador
por lo tanto slo hay espacio para 7 dispositivos de bloque.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

35

Una interfaz de 16 bits con un bus que soporta 16 dispositivos, esta incluye el
controlador por lo tanto slo hay espacio para 15 dispositivos de bloque.
Los dispositivos SCSI pueden ser identificados mediante una serie de 3 nmeros
llamados SCSI ID, estos son los siguientes:
1. El canal SCSI
2. El nmero ID del dispositivo
3. Nmero de unidad lgica
El canal SCSI
Cada adaptador SCSI soporta un canal de datos en la que atribuimos los dispositivos
SCSI (discos, CD-ROM, etc). Estos canales estn numerados de 0 en adelante.
El numero ID del dispositivo
A cada dispositivo se le asigna un nmero nico de identificacin que se puede ajustar
usando los jumpers del disco SCSI. Este rango de nmeros de identificacion va de 0 a
7 para las interfaces de 8 Bits y de 0 a 15 para las interfaces de 16 Bits.
Nmero de unidad lgica
El trmino es originario del protocolo SCSI como una forma de diferenciar unidades de
disco individuales dentro de un bus SCSI tal que un array de discos.
Deteccin de dispositivos SCSI
Todos los dispositivos SCSI son listados en el fichero:
proc/scsi/scsi
El cual contiene las caractersticas de los dispositivos scsi que el equipo ha detectado.
Ejemplo:

Figura 21: Deteccin de dispositivos SCSI


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

36

1.1.6. Conocer las diferencias entre dispositivos Coldplug y Hotplug


Se debe distinguir entre dos tipos de dispositivos:

ColdPlug (conexin en fro): se pueden conectar y desconectar fsicamente al equipo


nicamente cuando est apagado.

HotPlug (conexin en caliente): se pueden conectar y desconectar fsicamente al


equipo encendido.

Los dispositivos de conexin en fro estn diseados para conectarse y desconectarse


fsicamente slo cuando el ordenador est apagado, por lo que intentar conectarlos o
desconectarlos en plena ejecucin puede daar al propio dispositivo o al ordenador.
Los componentes internos del ordenador, como la CPU, la memoria RAM, las tarjetas
PCI o los discos duros, son dispositivos de conexin en fro. An as, en el caso de PCI,
existe una variante de conexin en caliente que normalmente encontramos en
servidores y otros sistemas que no se pueden permitir el contratiempo que supone
instalar o quitar un dispositivo (HotSwap).
Los dispositivos que se conectan al sistema por USB (Universal Serial Bus, bus serie
universal) o Firewire (IEEE-1394), por ejemplo, son de conexin en caliente; se puede
conectar y desconectar estos dispositivos segn convenga. Este tipo de dispositivos
necesitan de un software especial que los detecte segn se conecten o desconecten
(usbmgr, hotplug, hald, udev,...).

1.1.7. Determinar los recursos de hardware para los dispositivos


Los ficheros de dispositivo (device nodes)
Los perifricos suelen estar vinculados a una controladora, por ejemplo, controladoras
IDE o SATA para discos duros y unidades pticas, o controladoras para USB para
dispositivos de este tipo. La controladora debe saber controlar uno o ms perifricos
vinculados a ella, encargndose de comunicar los perifricos que gestiona con el
microprocesador y la memoria RAM.
En cuando a GNU/Linux, gestiona la controladora y sus perifricos con la ayuda de los
drivers (un driver para la controladora y uno o varios para los perifricos relacionados).
Por ejemplo, un driver para la controladora SCSI (tambin denominado adaptador de
host SCSI), otro para el disco duro SCSI, otro para el CD-ROM SCSI, etc.
En GNU/Linux los procesos acceden a los perifricos mediante unos ficheros
especiales, denominados ficheros de dispositivo (o device nodes, nodos de dispositivo).
As, cuando un proceso quiere enviar informacin a un perifrico, lo que har ser
escribir en su fichero de dispositivo; por el contrario, si lo que quiere es recuperar
informacin proveniente del dispositivo, lo que har ser leer del fichero de dispositivo
correspondiente al perifrico. El driver del dispositivo ser el que interprete las
lecturas/escrituras realizadas en este fichero por los procesos. Este sistema de ficheros
especiales simplifica y facilita en gran medida el acceso de los procesos a los perifricos.
Por convencin, los ficheros de dispositivo se colocan en el directorio /dev; estos
disponen de un i-nodo nico, por lo que es posible conocer sus atributos como cualquier
otro fichero:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

37

# ls -l /dev | grep "^[cb]"

Figura 22: Listado de Perifricos de tipo carcter y bloque.


Fuente: Cibertec

NOTA: En el listado anterior se ha filtrado con el comando "grep" las lneas que
comienzan por "c" o por "b", y se ha delimitado con el comando more, para leer por
partes. Como se puede observar en el ejemplo anterior, el primer carcter identifica al
tipo de perifrico:

c: perifrico de tipo carcter.


b: perifrico de tipo bloque.

Esta distincin determina cmo se comunica el sistema con el driver del perifrico en
cuestin. En modo carcter no se utilizan buffers del sistema y el intercambio se hace
byte a byte; es til para perifricos como el teclado o el ratn. En modo bloque, el
sistema intercambia con el perifrico bloques de bytes, por lo que en este caso si es
necesario uso de buffers del sistema, siendo as ms rpida la comunicacin con
perifricos como los discos duros. Los otros dos atributos esenciales de un fichero de
dispositivo son los nmeros mayor y menor. Esta informacin la presenta el comando ls
en lugar del tamao del fichero (son dos nmeros separados por una coma ",").

Figura 23: Deteccin de dispositivos SCSI


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

38

En el ejemplo anterior se muestra el fichero de dispositivo de tipo bloque (b) cuyos


nmeros mayor y menor son 8 y 1 respectivamente.
El nmero mayor identifica al driver del dispositivo (y por consiguiente al tipo de
dispositivo: SATA, IDE, SCSI, USB,...) y el nmero menor suele identificar al perifrico
concreto. En otras ocasiones el nmero menor puede designar una particularidad del
perifrico, como la particin de un disco duro, el nmero de tarjeta (en caso de que haya
varias tarjetas idnticas, como por ejemplo varias tarjetas de red), etc.

Figura 24: Ficheros de dispositivo habituales.


Fuente: [Link]

El comando mknod permite crear ficheros de dispositivo. Aunque GNU/Linux dispone


de mtodos particulares que se encargan de crear automticamente los ficheros de
dispositivo, en ocasiones puede ser necesario crear estos ficheros de forma manual:
# mknod /dev/periferico tipo mayor menor
Segn la distribucin, es posible que el directorio /dev sea un sistema de ficheros
completamente dinmico (de tipo devfs o udev, que se tratar en el siguiente apartado),
cuyo contenido cambia en funcin de la presencia o no de perifricos, por lo que no ser
posible crear en dicha ubicacin los ficheros de dispositivo de forma manual. En estos

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

39

casos, el driver del perifrico y el demonio devfsd o udevd, segn el caso, se encargan
de la creacin del fichero del dispositivo.
En otras ocasiones, slo una parte del directorio /dev es dinmica, como el soporte de
USB con el sistema de ficheros usbdevfs.
Para conocer si estos sistemas de ficheros de gestin de dispositivos de E/S
(perifricos) estn montados en el sistema, es posible ejecutar la siguiente orden:

Figura 25: Ficheros de dispositivo habituales.


Fuente: Cibertec

1.1.8. Herramientas y utileras para listar informacin diversa de hardware


(lsusb, lspci, etc)
lsusb
Se trata de un programa que muestra la lista de ranuras USB y los dispositivos
conectados a sta.

Figura 26: Empleo del comando lsusb.


Fuente: Cibertec

lspci
Para comprobar cmo estn configurados los dispositivos PCI se dispone del
comando lspci. Este comando muestra toda la informacin disponible sobre los buses
PCI del sistema y los dispositivos conectados a estos buses.
En la Figura 27 podemos ver el uso del comando lspci en modo general.
En la tabla 28 podemos ver las distintas opciones que podemos pasarle al comando
lspci para ajustar su comportamiento.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

40

Figura 27: Empleo del comando lspci.


Fuente: Cibertec

Figura 28: Opciones del comando lspci.


Fuente: [Link]

A continuacin podemos ver un ejemplo de uso del comando lspci con la opcin "-nn",
donde se listan los dispositivos PCI conectados al sistema mostrndose los nombres y
los ID de cada fabricante y dispositivo encontrado:
# lspci -nn

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

41

Figura 29: Opciones del comando lspci.


Fuente: Cibertec

Cada lnea de la salida del comando lspci corresponde a un dispositivo PCI. La forma
de interpretar estas lneas es la siguiente:
bus:[Link] nombre_dispositivo [id_dispositivo]: nombre_fabricante [id_fabricante]

La primera columna, que corresponde a bus, ranura y funcin (bus, slot, function) del
dispositivo, identifica el puerto PCI donde se conecta fsicamente. Para traducir cada
id_dispositivo (Device ID) e id_fabricante (Vendor ID) se utiliza como base de datos el
fichero /usr/share/misc/[Link].
lscpu
Se trata de un programa que muestra la informacin acerca de la arquitectura de los
CPU presentes en el sistema, mostrando el contenido de /proc/cpuinfo en un formato
ms fcil de leer.

Figura 30: Empleo del comando lscpu.


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

42

1.1.9. Herramientas y utileras para manipular dispositivos USB


Actualmente la totalidad de los ordenadores traen puertos USB, siendo la interfaz
externa de conexin de dispositivos ms extendida.
Fundamentos de USB
USB (Universal Serial Bus, bus serie universal) es un protocolo y un puerto de hardware
para transferir datos desde y hacia dispositivos. Admite gran variedad de dispositivos
as como soporta la conexin simultnea de ms de un dispositivo por puerto (ms que
ATA o SCSI), as como ofrece unas tasas de transferencia considerablemente
superiores a puertos como el paralelo y el serie.

Figura 31: Empleo del comando lscpu.


Fuente: [Link]

Un puerto USB soporta hasta 127 dispositivos y suministra un voltaje de 5V, por lo que
muchos dispositivos no requieren de alimentacin externa.
Es el puerto preferido para muchos dispositivos externos como impresoras, escneres,
ratones, cmaras web, etc.
Cada puerto puede controlar un dispositivo, pero es posible empleare un concentrador
(hub) de USB para conectar varios dispositivos en un mismo puerto. De esta forma, se
pueden conectar un nmero enorme de dispositivos a un mismo puerto, aunque en la
prctica no es recomendable abusar, sobre todo si los dispositivos que conectamos
transmiten grandes cantidades de datos y si los dispositivos slo reciben alimentacin
del USB (no habr suficiente suministro elctrico para todos con 5V).

Figura 32: Concentrador USB


Fuente: [Link]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

43

Controladoras USB
Existen muchas controladoras USB diferentes, como UHCI, OHCI, EHCI y R8A66597.
Las distribuciones actuales de GNU/Linux traen los drivers para las controladoras USB
habituales, por lo que lo normal es que los puertos USB se activen automticamente al
iniciar el ordenador.
Las controladoras UHCI (Universal Host Controller Interface) y OHCI (Open Host
Controller Interface) gestionan los dispositivos USB 1.x, EHCI (Enhanced Host
Controller Interface) gestiona USB 2.0, y XHCI (eXtensible Host Controller Interface)
gestiona USB 3.0. Las controladoras de versiones superiores tambin gestionan los
dispositivos de versin inferior.
Consultar informacin sobre los dispositivos USB
Se puede conocer los detalles de los dispositivos USB mediante el comando lsusb. El
siguiente ejemplo muestra un uso simple del comando sin opciones, donde se puede
ver informacin bsica sobre los dispositivos:
# lsusb
Bus 002 Device 002: ID 80ee:0021
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 006: ID 1210:2604 DigiTech
Bus 001 Device 004: ID 152d:2338 JMicron Technology Corp. / JMicron USA Technology
Corp. JM20337 Hi-Speed USB to SATA & PATA Combo Bridge
Bus 001 Device 002: ID 0718:0629 Imation Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

En el ejemplo anterior cada lnea corresponde a un dispositivo USB. En este caso, se


han detectado seis dispositivos, dos conectados al bus o controladora 002 (cuyos ID
son 001 y 002) y cuatro dispositivos conectados al bus 001 (con ID 001, 002, 004 y 006).
El campo etiquetado con "ID" corresponde al identificador del fabricante y del producto
(separados por ":"; <1210:2604> denominado como "DigiTech" en el ejemplo anterior).
Al final de cada lnea encontramos un pequeo texto descriptivo del dispositivo, aunque
en algunas ocasiones no es de mucha ayuda para reconocer el dispositivo del que se
trata. Ntese que los dispositivos con ID 001 en ambos buses son concentradores USB
1.1 y 2.0 respectivamente, lo que se observa fcilmente en el resultado de la orden
anterior.

Figura 33: Opciones de lsusb


Fuente: [Link]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

44

En el ejemplo anterior, el dispositivo 006 conectado al bus 001 es un webcam; para


obtener informacin detallada sobre dicho dispositivo USB se puede ejecutar la
siguiente orden (-v para mostrar informacin detallada y -s para indicar un dispositivo
concreto):
# lsusb -v -s 001:006
Bus 001 Device 006: ID 1210:2604 DigiTech
Device Descriptor:
bLength
18
bDescriptorType
1
bcdUSB
2.00
bDeviceClass
239 Miscellaneous Device
bDeviceSubClass
2?
bDeviceProtocol
1 Interface Association
bMaxPacketSize0
64
idVendor
0x1210 DigiTech
idProduct
0x2604
bcdDevice
0.01
iManufacturer
1 Alcor Micro, Corp.
iProduct
2 WebCam SCB-0380M
iSerial
0
bNumConfigurations
1
Configuration Descriptor:
bLength
9
bDescriptorType
2
wTotalLength
512
bNumInterfaces
2
bConfigurationValue 1
iConfiguration
0
bmAttributes
0x80
(Bus Powered)
MaxPower
500mA
[...]

Tambin es posible mostrar la informacin en forma de rbol, viendo de forma grfica


dnde se conecta cada dispositivo:
# lsusb -t
Bus# 2
`-Dev# 1 Vendor 0x1d6b Product 0x0001
`-Dev# 2 Vendor 0x80ee Product 0x0021
Bus# 1
`-Dev# 1 Vendor 0x1d6b Product 0x0002
|-Dev# 2 Vendor 0x0718 Product 0x0629
|-Dev# 4 Vendor 0x152d Product 0x2338
`-Dev# 6 Vendor 0x1210 Product 0x2604

Al igual que lspci, lsusb dispone de una base de datos de fabricantes y dispositivos que
para traducir cada id_dispositivo (Device ID) e id_fabricante (Vendor ID). Esta base de
datos corresponde al fichero /usr/share/misc/[Link].
Las primeras implementaciones de USB en GNU/Linux necesitaban un driver
independiente para cada dispositivo USB. Muchos de estos drivers siguen incluidos en
el kernel, siendo an utilizados por algunos programas. Un ejemplo son los dispositivos
USB de almacenamiento, que utilizan drivers USB que interconectan con drivers SCSI

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

45

(que se trata ms adelante), haciendo que discos duros u otros dispositivos de


almacenamiento USB (como pendrives) aparezcan como dispositivos SCSI.
GNU/Linux ofrece igualmente un sistema de ficheros virtual denominado usbfs que
proporciona acceso a informacin sobre los diferentes dispositivos USB. Este sistema
se encuentra montado en /proc/bus/usb. A los subdirectorios de /proc/bus/usb se les da
nombres numricos, existiendo un subdirectorio por cada bus USB. En el siguiente
ejemplo podemos ver que existen dos buses (controladoras) USB:
# ls -l /proc/bus/usb
total 0
dr-xr-xr-x 2 root root 0 ene 29 18:33 001
dr-xr-xr-x 2 root root 0 ene 29 18:33 002
-r--r--r-- 1 root root 0 ene 29 18:41 devices

En el sistema de ficheros virtual usbfs tambin se encuentra el fichero


/proc/bus/usb/devices con informacin sobre los dispositivos conectados a los buses
USB.
Nota: Es posible que el sistema de ficheros virtual usbfs no se encuentre montado por
defecto; esto se puede detectar cuando el directorio /proc/bus/usb no existe o est vaco.
Para montar de forma manual usbfs debemos ejecutar la siguiente orden:
# mount -t usbfs none /proc/bus/usb

Para que se monte de forma automtica se debe aadir la siguiente lnea al fichero
/etc/fstab:
none /proc/bus/usb usbfs defaults 0 0

En el interior de los subdirectorios correspondientes a cada bus USB se encuentran los


ficheros de dispositivo de cada uno de los dispositivos USB conectados al bus, cuyo
nombre de fichero corresponde con el identificador del dispositivo (Device ID). En el
siguiente ejemplo se observa que hay cuatro dispositivos (cuyos ID son 001, 002, 004 y
006) conectados al bus 001:
# ls -l /proc/bus/usb/001
total 0
-rw-r--r-- 1 root root 43 ene 29 18:33 001
-rw-r--r-- 1 root root 50 ene 29 18:38 002
-rw-r--r-- 1 root root 50 ene 29 18:40 004
-rw-r--r-- 1 root root 530 ene 29 18:41 006

Ficheros de dispositivos USB


El gestor de dispositivos udev que usa el kernel para administrar el sistema de ficheros
/dev detecta la conexin y desconexin de los dispositivos USB, creando los ficheros de
dispositivo (device nodes) correspondientes a cada dispositivo USB conectado en el
subdirectorio /dev/bus/usb, siguiendo una estructura similar que /proc/bus/usb.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

46

Listamos informacin de los dispositivos USB disponibles, donde se observa que hay
dos buses USB (001 y 002):
# $ lsusb
Bus 002 Device 002: ID 80ee:0021
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 006: ID 1210:2604 DigiTech
Bus 001 Device 004: ID 152d:2338 JMicron Technology Corp. / JMicron USA Technology
Corp. JM20337 [...]
Bus 001 Device 002: ID 0718:0629 Imation Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Listar los buses USB disponibles:


# ls -l /dev/bus/usb
total 0
drwxr-xr-x 2 root root 120 ene 29 18:41 001
drwxr-xr-x 2 root root 80 ene 29 18:33 002

Listar los ficheros de los dispositivos conectados al bus USB 001:


# ls -l /dev/bus/usb/001
total 0
crw-rw-r-- 1 root root 189, 0 ene 29 18:33 001
crw-rw-r-- 1 root root 189, 1 ene 29 18:38 002
crw-rw-r-- 1 root root 189, 3 ene 29 18:40 004
crw-rw-r-- 1 root root 189, 5 ene 29 18:41 006

Listar los ficheros de los dispositivos conectados al bus USB 002:


$ ls -l /dev/bus/usb/002
total 0
crw-rw-r-- 1 root root 189, 128 ene 29 18:33 001
crw-rw-r-- 1 root root 189, 129 ene 29 18:33 002006

Gestin de USB
El kernel de GNU/Linux no fue concebido originalmente para soportar la tecnologa de
conexin en caliente, por lo que en un inicio se apoy de utilidades externas para estos
asuntos. En concreto, las herramientas empleadas eran usbmgr y hotplug.
usbmgr es un programa que se ejecuta en segundo plano para detectar cambios en el
bus USB. Cuando detecta algn cambio, carga o descarga los mdulos del kernel
necesarios para controlar los dispositivos. Este programa emplea los ficheros de
configuracin del directorio /etc/usbmgr para gestionar dispositivos especficos y
/etc/usbmgr/[Link] para la configuracin global.
hotplug, por su parte, es otro programa que tambin detecta cambios en el bus USB.
Este sistema utiliza los ficheros almacenados en el directorio /etc/hotplug para controlar

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

47

la configuracin de dispositivos USB especficos. El fichero /etc/hotplug/[Link]


contiene una base de datos de ID de dispositivos y rutas a scripts dentro de
/etc/hotplug/usb que se ejecutan cuando se conectan o desconectan dispositivos. Estos
scripts son los que preparaban el sistema atender al nuevo dispositivo conectado.
Actualmente, las distribuciones de GNU/Linux basadas en el kernel 2.6 o posterior, han
remplazado usbmgr y hotplug por los sistemas udev y hald (comentados antes en
este mismo apartado) para la gestin de dispositivos de conexin en caliente.

1.1.10. Entendimiento conceptual de sysfs, udev, hald, dbus


En los sistemas GNU/Linux se dispone de varias utilidades que permiten administrar los
dispositivos, tanto de conexin en caliente como en fro:
Sysfs
El sistema de ficheros virtual sysfs, montado en /sys, ofrece informacin sobre los
dispositivos para que las aplicaciones del espacio del usuario puedan acceder a sta.
Al igual que con el sistema de ficheros virtual /proc, podemos explorarlo mediante los
comandos cd, ls, etc.
Modo kernel y modo usuario: En los sistemas GNU/Linux el software se puede ejecutar
de dos modos diferentes: en modo kernel (ncleo) o en modo usuario. Los programas
que se ejecutan en modo usuario se dice que estn en el espacio del usuario, y los que
se ejecutan en modo kernel se dice que estn en el espacio del kernel. Los programas
del espacio del kernel no tienen ningn tipo de limitacin en cuando al acceso a los
recursos del sistema, es por esto que el ncleo del SO se ejecuta en este modo. En
cambio, los programas en el espacio del usuario tienen restricciones de cara al acceso
a muchos de los recursos del sistema (por ejemplo, de no poder acceder directamente
al hardware); los programas de los usuarios (incluido root) se ejecutan en este modo.
Hald Daemon
El demonio HAL o hald (Hardware Abstraction Layer, capa de abstraccin de hardware)
es un servicio que se ejecuta en el espacio del usuario que proporciona informacin
sobre el hardware del sistema a otros programas del espacio del usuario.
D-Bus
El Desktop BUS es otro demonio (daemon, servicio) que proporciona acceso a la
informacin del hardware. El D-Bus permite a los procesos comunicarse entre s
mediante eventos; esto es, otros procesos actuarn en funcin de determinados eventos
notificados por otros procesos o incluso por el propio hardware (por ejemplo, un evento
provocado al detectar un nuevo dispositivo USB conectado al equipo).
Udev
Anteriormente, en los sistemas GNU/Linux, se creaban de forma esttica ficheros para
los distintos dispositivos (device nodes) dentro del rbol de directorios /dev mediante el
comando mknod. Pero este sistema presentaba una serie de problemas, sobre todo con
los dispositivos de conexin en caliente (hotplug). Con udev se han resuelto estos
problemas a la hora de gestionar el rbol de directorios /dev y los ficheros de
dispositivos. Udev es un sistema de archivos virtual, montado en /dev, que gestiona los
ficheros de los dispositivos de forma dinmica conforme se cargan y descargan los

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

48

drivers en el kernel. Es posible configurar udev mediante los ficheros que hay dentro del
directorio /etc/udev, pero no suele ser necesario hacerlo.
El ncleo gestiona eventos y mensajes que udev lee e interpreta. Udev dispone de una
serie reglas que aplica en respuesta de los mensajes generados por el ncleo. A
continuacin se presentan tres reglas de ejemplo:
KERNEL=="raw1394*",GROUP="video"
KERNEL=="dv1394*",SYMLINK+="dv1394/%n",GROUP="video"
KERNEL=="video1394*",SYMLINK+="video1394/%n",GROUP="video"

El significado de las reglas es el siguiente:

KERNEL: nombre del evento generado por el ncleo.


GROUP: nombre del grupo al que pertenecer el fichero de dispositivo creado.
SYMLINK: crea un enlace simblico al fichero del dispositivo creado con el nombre
indicado. %n representa el nmero de orden en que se detect el dispositivo y se
cre su fichero.

En el ejemplo anterior, si conectamos una cmara de vdeo digital a un puerto Firewire,


el ncleo generar un evento que comienza por "video1394", ejecutndose la regla
correspondiente (en nuestro caso, la ltima que se ha definido):

Se crear /dev/video1394.
Se establecer como grupo "video".
Se crear el enlace simblico /dev/video1394/0 (el primero).

Las reglas se colocan en /dev/udev/rules.d. Es posible crear reglas propias creando un


fichero con las mismas con extensin ".rules" en este directorio: por ejemplo [Link].
Todas estas herramientas facilitan la comunicacin entre los procesos y los dispositivos,
posibilitando el acceso a la informacin del hardware a los procesos y proporcionando
mecanismos para que el hardware notifique a los procesos cualquier cambio en su
configuracin.
Mucha gente trata los dispositivos de conexin en fro (como los puertos paralelos, serie
o PS/2) como si fueran de conexin en caliente, conectndolos o desconectndolos
cuando el equipo se encuentra encendido. En la mayora de las ocasiones no suele
ocurrir nada, pero existe el riesgo de daar el dispositivo o el mismo puerto de conexin,
por lo que siempre es recomendable apagar el ordenador antes de conectar o
desconectar este tipo de dispositivos. Asimismo, cuando realizamos estas conexiones
en caliente los demonios anteriores (como hald o udev) no lo detectan, ya que el SO
slo gestiona el puerto y no el dispositivo que se conecta a dicho puerto.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

49

Resumen
En esta unidad, se vi la introduccin al sistema operativo GNU/Linux, la filosfica del
software Libre y Open Source, los comandos bsicos para poder utilizar Linux, as como
para poder ver los discos atachados a nuestro sistema operativo; asimismo, se conoci
las herramientas de utilera para saber diferenciar entre los dispositivos de
almacenamiento.

Bibliografa
BSICA
Angie Nash y Jason Nash

2001

LPIC 1 Certification Bible

2004

Edicin especial Linux


(005.43L BAND)

CIBERTEC
2004 Linux administrador e Internet: Linux administrador y security
(005.43L CIBE)
COMPLEMENTARIA
2013

([Link]
Proporciona guas rpidas para instalar, configurar servicios de red basados en Linux
Centos.

2013

([Link]
Proyecto de documentacin de Linux en espaol.

2013

([Link]
Proyecto de formacin en habla hispana para los candidatos a la certificacin LPI en
cualquiera de sus niveles

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

50

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

51

UNIDAD

2
INSTALACIN
DEL
SISTEMA
OPERATIVO GNU/LINUX
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al trmino de la unidad, el alumno instala el Sistema operativo GNU/Linux.
TEMARIO
2.1 Tema 2
2.1.1
2.1.2
2.1.3
2.1.4
2.1.5

:
:
:
:
:
:

Instalacin del Sistema Operativo GNU/Linux


Disear el esquema de discos duros
Instalar un gestor de arranque
Administracin de bibliotecas compartidas
Instalacin del Sistema Operativo Centos 6.8, 7 (1511)
Instalacin del Sistema operativo Ubuntu Desktop 16.04
LTS

ACTIVIDADES PROPUESTAS

Identificar el diseo previo antes de iniciar la instalacin del sistema


operativo GNU/Linux.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

52

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

2.1

53

INSTALACIN DEL SISTEMA OPERATIVO GNU/LINUX

2.1.1 Disear el esquema de discos duros


Una forma fcil de particionar un disco duro debe contener una sola particin grande
(bajo el directorio "/") de todo el sistema que ocupa el disco duro, menos espacio
destinado para intercambio. Si el usuario va a utilizar el mismo Sistema Operativo y slo
lo actualiza en lugar de instalar alguno nuevo, esto podra ser un buen esquema. Trazar
las particiones es fcil, ya que slo hay una y todo est en la misma particin. La
desventaja es que si el sistema se corrompe, exigir una reinstalacin del Sistema
Operativo, todos los datos de la particin se pueden perder.
Esquema 1: Separar la particin "/boot"
El usuario puede separar el directorio "/boot" en una particin del resto del Sistema
Operativo. El directorio /boot contiene el ncleo de Linux y la informacin de inicio. Los
usuarios que quieran personalizar sus ncleos y compartirlos a travs de mltiples
sistemas operativos Linux suelen crear una particin /boot. De esta manera, el usuario
puede personalizar su ncleo e instalar Fedora Linux en una particin que utilice su
ncleo personalizado e instalar Ubuntu Linux en otra particin que utilice el mismo
ncleo.
Esquema 2: Particin separada "/usr"
El directorio "/usr" contiene todos los archivos binarios, los programas que el usuario ha
instalado. Cualquier programa que un usuario pueda ejecutar se almacena en el
directorio /usr. En sistemas con varios usuarios, el administrador podra crear una
particin /usr de un tamao fijo. De esta manera, los usuarios del sistema no podran
mantener la instalacin de softwares ms all del lmite del tamao. En teora, el
administrador podra crear una particin /usr con espacio apenas suficiente para
mantener el software necesario y nada ms.
Combinaciones
Cualquiera de estos sistemas se puede combinar para obtener resultados diferentes.
Por ejemplo, un usuario podra crear una particin /boot separada por dos sistemas
diferentes de Linux, cada uno de los cuales tambin puede acceder a dos diferentes
particiones /home para sus usuarios. Sin embargo, algunos discos duros tienen
limitaciones a tantas particiones que un usuario puede crear. Lo mejor es consultar la
documentacin sobre el tipo de unidad de disco duro que utilizas para saber mejor cmo
crear las particiones.

2.1.2 Instalar un gestor de arranque


Cuando se enciende un equipo con Red Hat Enterprise Linux, el Sistema Operativo
es cargado en memoria por un programa especial llamado gestor de arranque. Un
programa gestor de arranque existe en el disco duro primario del sistema (o en otros
dispositivos) y es responsable de la carga del kernel de Linux con sus archivos
necesarios o (en algunos casos) de otros sistemas operativos en la memoria.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

54

Figura 34: Gestor de Arranque Red Hat


Fuente: Cibertec

a) Gestores de arranque y arquitectura del sistema


Cada arquitectura de sistemas que pueda ejecutar Red Hat Enterprise Linux usa un
gestor de arranque diferente. La lista siguiente muestra los gestores de arranque
disponibles para cada arquitectura:
Arquitectura Gestores de arranque
AMD AMD64 GRUB
IBM eServer. iSeries. OS/400
IBM eServer. pSeries. YABOOT
IBM S/390 z/IPL
IBM eServer. zSeries z/IPL
Intel Itanium. ELILO
x86 GRUB
Este captulo explica comandos y opciones de configuracin para el gestor de
arranque GRUB suministrado con Linux para la arquitectura x86.
b) GRUB
GNU GRand Unified Boot loader o GRUB es un programa que habilita al usuario a
seleccionar qu Sistema Operativo instalado o kernel cargar en el momento de
arranque del sistema. Permite tambin que el usuario transmita argumentos al
kernel.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

55

c) Proceso de arranque en un sistema x86 y GRUB


Esta seccin explica con ms detalle el papel especfico que desempea GRUB al
arrancar un sistema x86. Para hacerse una idea del proceso de arranque, GRUB se
carga asimismo en la memoria en las diferentes etapas:

La etapa 1 o cargador de arranque primario se lee en la memoria por el BIOS


desde el [Link] gestor de arranque primario existe en menos de 512 bytes de
espacio en disco dentro del MBR y es capaz de cargar bien sea la etapa 1.5 o la
etapa 2 del gestor de arranque.

La Etapa 1 del gestor de arranque se lee en la memoria por el gestor de arranque


de la Etapa 1, si es necesario. Determinados hardware requieren un paso
intermedio para pasar a la Etapa 2 del gestor de arranque. Esto sucede a
menudo cuando la particin /boot/ est por encima del cilindro 1024 del disco
duro o cuando se usa el modo LBA. La Etapa 1.5 del gestor de arranque se
encuentra en la particin /boot/ o en una pequea parte del MBR y la particin
/boot.

La Etapa 2 o el gestor de arranque secundario se lee en la memoria. El gestor


de arranque secundario visualiza el men GRUB y el entorno de comandos. Esta
interfaz le permite seleccionar qu Sistema Operativo o kernel arrancar, pasar
argumentos al kernel o ver los parmetros del sistema.

El gestor de arranque secundario lee el Sistema Operativo o el kernel as como


tambin los contenidos de /boot/sysroot/ en memoria. Una vez que GRUB
determina qu Sistema Operativo iniciar, ste lo carga en la memoria y transfiere
el control de la mquina a dicho Sistema Operativo.

El mtodo usado para arrancar Linux se conoce como mtodo de carga directa
porque el gestor de arranque carga el Sistema Operativo directamente. No existe un
intermediario entre el gestor de arranque y el kernel.
El proceso de arranque usado por otros sistemas operativos puede variar. Por
ejemplo, los sistemas operativos de Microsoft Windows, as como otros sistemas
operativos, se cargan mediante un mtodo de arranque de carga encadenada. Bajo
este mtodo, el MBR seala el primer sector de la particin que tiene el Sistema
Operativo. All encuentran los archivos necesarios para arrancar el Sistema
Operativo.
GRUB soporta ambos mtodos de arranque, directo y de carga encadenada,
permitiendo arrancar desde casi cualquier Sistema Operativo.
d) Funciones de GRUB
GRUB contiene una serie de funciones que lo convierten en el mtodo favorito
respecto al resto de gestores de arranque disponibles para la arquitectura x86. A
continuacin tiene una lista de las caractersticas ms importantes:

GRUB proporciona un verdadero entorno basado en comandos, pre-Sistema


Operativo, para las mquinas x86. Esta funcionalidad le otorga al usuario una
gran flexibilidad en la carga de sistemas operativos con opciones especficas o
con la recopilacin de informacin sobre el sistema. Durante muchos aos, las
arquitecturas diferentes a x86 han usado entornos previos al Sistema Operativo
que permiten arrancar el sistema desde una lnea de comandos.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

56

GRUB soporta el modo Direccionamiento Lgico de Bloques (LBA). El modo LBA


coloca la conversin de direccionamiento utilizada para buscar archivos en la
unidad de disco duro del firmware y se utiliza en muchos discos IDE y en todos
los discos duros SCSI. Antes de LBA, los gestores de arranque encontraban la
limitacin del cilindro 1024 del BIOS, donde el BIOS no poda encontrar un
archivo despus de ese cabezal de cilindro del disco. El soporte LBA permite
que GRUB arranque los sistemas operativos desde las particiones ms all del
lmite de 1024 cilindros, siempre y cuando el BIOS del sistema soporte el modo
LBA. La mayora de las revisiones ms modernas de la BIOS soportan el modo
LBA.

GRUB puede leer las particiones ext2. Esto permite que GRUB acceda a su
archivo de configuracin, /boot/grub/[Link], cada vez que el sistema
arranca, eliminando la necesidad que tiene el usuario de escribir una nueva
versin de la primera etapa del gestor de arranque al MBR en caso de que se
produzcan cambios de la configuracin. El nico caso en el que el usuario
necesitara reinstalar GRUB en el MBR es en caso de que la localizacin fsica
de la particin /boot/ se traslade en el disco.

e) Instalacin de GRUB
Si no instal GRUB durante el proceso de instalacin, se puede hacer despus. Una
vez instalado, se convierte en el gestor de arranque por defecto. Antes de instalar
GRUB, debera asegurarse de que cuenta con el ltimo paquete disponible de
GRUB desde los CD-ROMs de instalacin.
Una vez que el paquete GRUB est instalado, abra un intrprete de comandos de la
shell y ejecute el comando /sbin/grub-install <ubicacin> donde <ubicacin> es
la ubicacin en la que la Etapa 1 de GRUB debera ser instalado. Por ejemplo, el
comando siguiente instala GRUB al MBR del dispositivo maestro IDE en el bus IDE
primario:
/sbin/grub-install /dev/hda
La prxima vez que arranque el sistema, el men del gestor de arranque grfico
GRUB aparecer antes del que el kernel se cargue en memoria.
f) Terminologa de GRUB
Una de las cuestiones ms importantes que deben entenderse antes de utilizar
GRUB es cmo el programa hace referencia a los dispositivos, por ejemplo, a los
discos duros y a las particiones. Esta informacin es muy importante si desea
configurar GRUB para arrancar varios sistemas operativos.
g) Nombres de dispositivos
Cuando se refiera a un dispositivo especfico con GRUB, haga esto usando el
formato siguiente (observe que los parntesis y las comas son muy importantes en
la sintaxis):
(<tipo-de-dispositivo> <nmero-dispositivo-bios>, <nmero-particin>)
El <tipo-de-dispositivo> especifica el tipo de dispositivo desde el cual inicia GRUB.
Las dos opciones ms comunes son hd para un disco duro o fd para un disquete de
3.5. Un tipo de dispositivo menos usado tambin est disponible, llamado nd para
un disco de la red.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

57

El <nmero-dispositivo-bios> es el nmero del dispositivo BIOS. El disco duro IDE


primario se numera 0 y un disco duro IDE secundario se numera 1. La sintaxis es
equivalente a aquella utilizada para los dispositivos por el kernel. Por ejemplo, a en
hda para el kernel es anlogo a 0 en hd0 para GRUB, b en hdb es anlogo a 1 en
hd1, y as sucesivamente.
El <nmero-particin> hace referencia al nmero de una particin concreta en un
dispositivo. Al igual que en el caso de <nmero-particin>, la mayora de los tipos
de particiones son numeradas comenzando por 0. Aunque la mayora de las
particiones se especifican con nmeros, si el sistema usa particiones BSD a stas
se har referencia con letras, con a correspondiendo a 0, b correspondiendo a 1 y
as sucesivamente.
h) Nombres de archivos y listas de bloqueo
Al escribir comandos en GRUB que hagan referencia a un archivo, como una lista
de mens, es necesario especificar una ruta de archivos absoluta despus de los
nmeros de dispositivo y particin.
Lo siguiente ilustra la estructura de tal comando:

En este ejemplo, reemplace <tipo-dispositivo> con hd, fd o nd. Reemplace con


<nmero-dispositivo> el nmero entero para el dispositivo. Reemplace
</ruta/a/archivo> con una ruta absoluta relativa al nivel ms superior del dispositivo.
Tambin puede especificar archivos a GRUB que no aparecen realmente en el
sistema de archivos, tal como un gestor de arranque en cadena que aparece en los
primeros bloques de la particin. Para cargar tales archivos, deber indicar una lista
de bloques, que indique a GRUB, bloque por bloque, la ubicacin exacta del archivo
en la particin. Puesto que un archivo puede estar formado por varios conjuntos de
bloques, hay una sintaxis especfica para escribir listas de bloques. Cada bloque que
contiene el archivo se describe con un nmero de desplazamiento de bloques
seguido de un nmero de bloques de ese punto de desplazamiento. Los
desplazamientos de bloques se listan secuencialmente y delimitados por comas.
La siguiente es una lista de bloques de ejemplo:
0+50,100+25,200+1
Esta lista de bloques de ejemplo especifica un archivo que empieza en el primer
bloque de la particin y que usa los bloques del 0 al 49, del 99 al 124, y el 199.
Saber cmo escribir listas de bloques es til al utilizar GRUB para cargar sistemas
operativos que usan el mtodo de carga encadenada. Puede suprimir el nmero de
desplazamiento de bloques, si empieza por el bloque 0. Por ejemplo, el archivo de
carga encadenada de la primera particin del primer disco duro tendr el nombre
siguiente:
(hd0,0)+1

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

58

Lo siguiente muestra el comando chainloader con una designacin de lista de


bloques similar en la lnea de comandos de GRUB despus de establecer el
dispositivo correcto y la particin adecuada como raz:
chainloader +1

i)

El Sistema de archivos raz y GRUB

Algunos usuarios se confunden con el uso del trmino sistema de archivos raz tiene
un significado diferente con relacin a GRUB. Es importante recordar que el sistema
de archivos raz de GRUB no tiene nada que ver con el sistema de archivos raz de
Linux.
El sistema de archivos raz de GRUB es el nivel superior del dispositivo especificado.
Por ejemplo, el archivo imagen (hd0,0)/grub/[Link] est ubicado dentro
del directorio /grub/ en el nivel superior (o raz) de la particin (hd0,0) (la cual es en
verdad la particin /boot/ para el sistema).
Luego, se ejecuta el comando kernel con la ubicacin del archivo del kernel como
una opcin. Una vez que el kernel de Linux inicia, establece el sistema de archivos
raz con el cual los usuarios de Linux estn familiarizados. El sistema de archivos
raz de GRUB original y sus montajes se olvidan; la nica finalidad de su existencia
era arrancar el archivo del kernel.
j)

Archivo de configuracin de men de GRUB

El archivo de configuracin (/boot/grub/[Link]), usado para crear la lista en la


interfaz de men de GRUB de los sistemas operativos para el arranque,
bsicamente permite al usuario seleccionar un grupo predefinido de comandos para
su ejecucin de configuracin.

2.1.3 Administracin de bibliotecas compartidas


Una librera es un fichero que contiene un conjunto de funciones, escritas en un lenguaje
de programacin, para ser utilizadas por un programa, de forma que si un programa
necesita usar estas funcionalidades puede acceder a la librera sin tener que reescribir
el cdigo. La diferencia entre un programa y una librera es mnima, la nica
diferencia es que una librera no se ejecuta de forma autnoma (no contiene el bloque
de instruccin main), pero por lo dems funciona como un programa normal (tambin
puede requerir de otras libreras para funcionar).
TIPOS DE LIBRERAS
Existen dos tipos de libreras, las libreras compartidas o dinmicas y las libreras
estticas. La diferencia entre ambas es que mientras en las libreras compartidas el
acceso es dinmico y se realiza en tiempo de ejecucin, en las estticas las
funcionalidades son enlazadas en tiempo de compilacin y sustituidas por la llamada
en el fichero ejecutable final.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

59

Figura 35: Tipos de Libreras


Fuente: Cibertec

LIBRERAS COMPARTIDAS
En Linux (y en Unix) las libreras compartidas se llaman Shared Objects y llevan el sufijo
.so (su equivalente en Windows son las .dll).
Las libreras compartidas se vinculan a un programa en tiempo de ejecucin,
permitiendo que el cdigo de la librera se cargue en memoria una nica vez y pueda
ser usado por varios programas, de esta forma se consigue que el tamao del cdigo
sea menor con su correspondiente ahorro de espacio en memoria.
Ademas de esto con las libreras compartidas se cumple el principio de modularidad
(programacin modular u orientada a objetos), de forma que si necesitamos modificar
alguna funcionalidad nos bastara con editar la librera que la contiene, dejando el
programa que las utiliza sin modificar.
NOMBRES DE LAS LIBRERAS COMPARTIDAS
Por convenio las libreras compartidas pueden tener varios tipos de nombre:

El nombre usado por el enlazador (lib + nombre de la libreria + .so)


Nombre completo (lib + nombre de la libreria + .so + . + nmero de versin) // Link
hacia la librera con el nombre real
Nombre real (lib + nombre de la libreria + .so + . + nmero de versin + . +
nmero de subversin + . + revisin) // La revisin es opcional.

Para el cambio de versiones, hay que tener dos factores en cuenta, el nmero de la
subversin se cambia cuando se realizan cambios en la librera y esta no pierde
compatibilidad con la version anterior, pero si se pierde compatibilidad el cambio tiene
que ser de versin y no de subversin. Gracias a este convenio de nombres es posible
que mltiples versiones de una librera compartida coexistan en el sistema.
UBICACIN DE LAS LIBRERAS COMPARTIDAS
Las libreras compartidas se colocan en directorios denominados lib:

/lib: Libreras de sistema, vitales


/usr/lib: Libreras de usuario bsicas, no se necesitan en el boot
/usr/local/lib: Libreras que no forman parte de la distribucin estndar

La librera ms importante del sistema es la de C. Todos los programas compilados son


vinculados a libc, por lo que es mejor no borrar esta librera, de lo contrario el sistema
dejara de funcionar.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

60

LIBRERAS VINCULADAS A UN PROGRAMA


Gracias al comando ldd podemos conocer las libreras vinculadas a un programa. Como
parmetro tenemos que pasar la ubicacin del programa.
Por ejemplo, si queremos conocer las libreras asociadas al editor de texto Gedit el
comando seria el siguiente:
ldd /usr/bin/gedit
El comando ldd tambin nos indicar si falta alguna librera asociada.
AADIR NUEVAS LIBRERAS
Para aadir una nueva librera, tenemos que ubicarla en uno de los directorios
mencionados y despus ejecutar el programa ldconfig. Este programa se va a encargar
de dejar la librera accesible para el enlazador, creando los vnculos y cach necesarios
en el archivo /etc/[Link], y en los directorios de confianza (/lib y /usr/lib).
Si se da el caso que la ubicacin de la librera no es una de las estndares (las
mencionadas), sera necesario agregar el directorio a /etc/[Link].
ENLAZADOR DINMICO [Link]
Ya hemos dicho que los ficheros binarios en Linux requieren un enlace dinmico (a no
ser que se opte por el enlace esttico), y de este enlace se encargan los programas
[Link] y [Link]*. La misin de estos dos programas es encontrar y cargar las
bibliotecas compartidas requeridas por el programa en cuestin, preparar el programa
para ejecutarse y ejecutarlo. Para ello, el binario en cuestin ofrece el nombre de las
bibliotecas que necesita y [Link] se encarga de buscarlas en las siguientes ubicaciones:

Las definidas a travs de la variable de entorno LD_LIBRARY_PATH. Salvo cuando


el ejecutable tiene activo el bit setuid/setgid, en cuyo caso se ignora.
Las definidas en el propio binario.
En el fichero /etc/[Link], que contiene una lista compilada de bibliotecas
candidatas encontradas previamente en la ruta de bibliotecas ampliada.
En la ruta predeterminada /lib, y despues en /usr/lib/. Si el binario fue enlazado con
la opcin -znodeflib, se omite este paso.

La primera librera encontrada que cumpla la dependencia ser la utilizada. Hay que
tener en cuenta que lo que el binario contiene no es una lista con los enlaces a cada
librera, sino una lista de rutas adicionales en las que buscar las dependencias (si las
tiene).

2.1.4 Instalacin del Sistema Operativo Centos 6.8, 7 (1511)


a) Instalacin del Sistema Operativo Centos 6.8
Pasos previos:

Descargar imagen iso de Centos 6.8 de la siguiente url:


[Link]
Crear un maquina virtual para instalar Centos 6.8, cargar la imagen iso e iniciar.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

61

Se visualizar la siguiente imagen, y presionaremos <Enter> en la primera opcin:

Figura 36: Instalacin de Centos 6.8


Fuente: Cibertec

Podemos chequear si nuestro DVD o instalacin de USB estn OK. Si ya lo hicimos o


estamos seguros, presionamos <Enter> en Skip.

Figura 37: Revisin de CD de Instalacin


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

62

Inicia el entorno grfico. Damos clic al botn Next.

Figura 38: Instalacin de Instalacin


Fuente: Cibertec

Elegimos el idioma a usar durante la instalacin y damos clic al botn Next.

Figura 39: Seleccin del idioma para la instalacin


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

63

Elegimos la distribucin de nuestro teclado y damos clic al botn Siguiente.

Figura 40: Seleccin del idioma para el teclado del sistema


Fuente: Cibertec

En caso de contar con dispositivos de almacenamiento especializados como iSCSI,


SAN, etc, marcamos la segunda opcin, sino, la primera es la que elegiremos. Damos
clic al botn Siguiente.

Figura 41: Seleccin del tipo de disco para la instalacin


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

64

Se nos muestra el disco detectado, damos clic al botn Si descarte todos los datos.

Figura 42: Formateo del disco para la instalacin


Fuente: Cibertec

Escribimos un nombre para nuestro servidor Centos (hostname) y damos clic al botn
Configure la red.

Figura 43: Registro del nombre del servidor


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

65

Nuestra tarjeta (ethernet en este caso) debe estar conectada para garantizar una buena
configuracin, marcamos la eth0 (o la que usaremos en caso de haber ms) y damos
clic al botn Editar.

Figura 44: Configuracin de red


Fuente: Cibertec

Importante, marcamos la opcin Conectar automticamente. Por lo general, nuestra


conexin sera configurada por DHCP, en caso contrario podemos activar los valores en
las otras pestaas de esta ventana. Para este caso, DHCP me dar los valores de
conexin al hacer boot. Damos clic al botn Aplicar.

Figura 45: Configuracin de la tarjeta de red eth0


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

66

Ya configurada nuestra conexin, damos clic al botn Cerrar y Siguiente.

Figura 46: Tarjeta de red eth0 configurada


Fuente: Cibertec

Elegimos la zona donde esta ubicado el equipo. Dependiendo de esto sera la zona
horaria que se activar. Damos clic al botn Siguiente.

Figura 47: Configuracin de zona horaria


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

67

Escribimos una contrasea para el usuario root (administrador del sistema) y damos clic
al botn Siguiente.

Figura 48: Configuracin de contrasea de root


Fuente: Cibertec

Llegamos al paso donde decidiremos como particionaremos el disco para instalar. Si es


un equipo que usaremos en su totalidad con la primera es perfecto. En otro caso,
podemos compartir el disco con otro OS, por ejemplo Windows, con la 3ra o 4ta opcin
o nosotros mismos configurar el particionado con la 5ta opcin un poco mas avanzada.
Recomiendo la primera. Damos clic al botn Siguiente.

Figura 49: Seleccin del tipo de intalacin


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

68

Ultima oportunidad para no eliminar lo que hay en el disco. Damos clic al botn Escribir
cambios al disco.

Figura 50: Particionamiento del disco


Fuente: Cibertec

Siguiente paso, elegir como instalar Centos con la opcin Basic Server es suficiente
para instalar y tener las herramientas para despus personalizarlo. Aun as, si queremos
podemos usar las otras opciones dependiendo de para que lo necesitemos. Damos clic
al botn Siguiente.

Figura 51: Seleccin de instalacin de servidor bsico


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

69

Comienza la instalacin. Debemos esperar como mnimo 10 minutos.

Figura 52: Visualizacin del progreso de la instalacin


Fuente: Cibertec

Muy bien, ya tenemos Centos 6.8 instalado. Damos clic al botn Reiniciar.

Figura 53: Finaliza la instalacin


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

70

b) Instalacin del Sistema Operativo Centos 7 (1511)


Pasos previos:

Descargar imagen iso de Centos 7 (1511) de la siguiente url:


[Link]
Crear un maquina virtual para instalar Centos 7 (1511), cargar la imagen iso e
iniciar.

Se visualizar la siguiente imagen, y presionaremos <Enter> en la primera opcin:

Figura 54: Instalacin de Centos 7 (1511)


Fuente: Cibertec

Seleccionamos el idioma para la instalacin y damos clic en Continuar.

Figura 55: Seleccin del idioma para la instacin


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

71

Configuramos el sistema dando clic en la opcin DESTINO DE LA INSTALACIN.

Figura 56: Visualizacin del panel de Resumen de la Instalacin


Fuente: Cibertec

Seleccionamos el disco donde se instalar el sistema y damos clic al botn Listo.

Figura 57: Configuracin del disco para la instalacin


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

72

Seguimos configurando el sistema, damos clic en RED & NOMBRE DE EQUIPO.

Figura 58: Visualizacin del panel de Resumen de la Instalacin


Fuente: Cibertec

Habilitamos la casilla de la interfaz de red y damos clic al botn Listo.

Figura 59: Configuracin de la interfaz de red


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

73

Configuramos el software dando clic al botn SELECCIN DE SOFTWARE.

Figura 60: Visualizacin del panel de Resumen de la Instalacin


Fuente: Cibertec

Escogemos Escritorio Gnome y Aplicaciones de Gnome, damos clic en el botn Listo.

Figura 61: Seleccin del tipo de entorno a instalar


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

74

Una vez terminada la configuracin damos clic al botn Empezar instalacin.

Figura 62: Visualizacin del panel de Resumen de la Instalacin


Fuente: Cibertec

Empieza la instalacin, sobre la marcha podemos asignar contrasea al superusuario


dando clic en CONTRASEA DE ROOT.

Figura 63: Visualizacin del progreso de la instalacin del sistema


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

75

Asignamos una contrasea robusta para el superusuario y damos clic al botn Listo.

Figura 64: Configurancin de contrasea para superusuario


Fuente: Cibertec

Crearemos una cuenta de usuario dando clic al botn CREACIN DE USUARIO.

Figura 65: Visualizacin del progreso de la instalacin del sistema


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

76

Escribimos un nombre de usuario, le asignamos privilegios de administrador y


asignamos una contrasea robusta. Luego damos clic al botn Listo.

Figura 66: Creacin de cuenta de usuario local


Fuente: Cibertec

Damos clic al botn Finalizar configuracin.

Figura 67: Finalizando configuracin


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

77

Muy bien, ya tenemos Centos 7 (1511) instalado. Damos clic al botn Reiniciar.

Figura 68: Finaliza la instalacin del sistema


Fuente: Cibertec

2.1.5 Instalacin del Sistema Operativo Ubuntu Desktop 16.04 LTS


Pasos previos:

Descargar imagen iso de Ubuntu Desktop 16.04 LTS de la siguiente url:


[Link]
Crear un maquina virtual para instalar Ubuntu Desktop 16.04 LTS, cargar la
imagen iso e iniciar.
Se visualizar la siguiente imagen, se iniciar el asistente para instalar Ubuntu:

Figura 69: Instalacin de Ubuntu Desktop 16.04 LTS


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

78

Seleccionamos el idioma para la instalacin y damos clic al botn Instalar Ubuntu.

Figura 70: Seleccin de idioma para la instalacin


Fuente: Cibertec

Seleccionamos las casillas para descargar actualizaciones e instalar software de


terceros durante la instalacin. Damos clic al botn Continuar.

Figura 71: Descargar actualizaciones y software de terceros


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

79

Seleccionamos la opcin Borrar disco e instalar Ubuntu y damos clic al botn


Instalar ahora

Figura 72: Seleccin del tipo de instalacin


Fuente: Cibertec

Escribiremos los cambios en el disco haciendo clic al botn Continuar.

Figura 73: Particionamiento automtico del disco duro


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

80

Seleccionamos la zona horaria dando clic en el mapa del Per. Damos clic al botn
Continuar.

Figura 74: Seleccin de la zona horaria


Fuente: Cibertec

Seleccionamos la distribucin del teclado y damos clic al botn Continuar.

Figura 75: Seleccin del idioma para del teclado


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

81

Crearemos un usuario, escribiendo el nombre del nuevo usuario, el nombre de equipo y


asignando una contrasea robusta. Luego damos clic al botn Listo.

Figura 76: Creacin de usuario standard


Fuente: Cibertec

Inicia la instalacin del sistema, esperamos 20 minutos como mnimo.

Figura 77: Visualizacin del progreso de la instalacin.


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

82

Muy bien, ya tenemos Ubuntu Desktop 16.04 LTS instalado. Damos clic al botn
Reiniciar ahora.

Figura 78: Finaliza la instalacin del sistema


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

83

Resumen
En esta unidad, se realiz el estudio de las libreras que utiliza Linux, el concepto de
libreras y tipos de libreras. Se realiz el estudio de las libreras compartidas y empleo
de comandos para su administracin. Asimismo se realiz la instalacin de los Sistemas
Operativos Centos 6.8, Centos 7 (1511) y Ubuntu Desktop 16.04 LTS. Por otro lado, se
conoci el gestor de arranque del Sistema Operativo Red Hat, se reconoci su uso y la
importancia de este para el inicio del sistema operativo.

Bibliografa
BSICA
Angie Nash y Jason Nash

2001

LPIC 1 Certification Bible

2004

Edicin especial Linux


(005.43L BAND)

CIBERTEC
2004 Linux administrador e Internet: Linux administrador y security
(005.43L CIBE)
COMPLEMENTARIA
2013

[Link]
Procedimiento de instalacin de centos6.

2013

([Link]
Proporciona ayuda documentaria de manera sencilla, para ayudarles a evaluar,
desarrollar y dar soporte eficaz sobre las soluciones de la distribucin Red Hat
Enterprise Server.

2013

([Link]
Proyecto de formacin en habla hispana para los candidatos a la certificacin LPI en
cualquiera de sus niveles.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

84

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

85

UNIDAD

3
ARQUITECTURA DEL SISTEMA
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al trmino de la unidad, el alumno utiliza los comandos bsicos de GNU/Linux
para modificar parmetros de configuracin de arranque del sistema operativo.
TEMARIO
3.1 Tema 3 : Arrancar el sistema
3.1.1 : Proveer comandos comunes al cargador de arranque y
opciones al kernel al arranque del sistema.
3.1.2 : Demostrar conocimiento de la secuencia de arranque desde
el BIOS hasta completar el arranque.
3.1.3 : Revisar eventos relacionados al arranque en los archivos de
bitcora.
3.2 Tema 4 : Cambiar los niveles de ejecucin, apagar o reiniciar el
sistema
3.2.1 : Establecer el nivel de ejecucin predeterminado
3.2.2 : Cambiar entre niveles de ejecucin incluyendo el modo
usuario individual (single user).
3.2.3 : Inicializar el sistema SysV, Upstart y systemd.
3.2.4 : Apagar o reiniciar el sistema desde la lnea de comandos.
3.2.5 : Alertar a los usuarios antes de cambiar el nivel de ejecucin
o de algn otro evento de sistema mayor.
3.2.6 : Terminar procesos apropiadamente.

ACTIVIDADES PROPUESTAS

Validar los comandos aprendidos y validar la consistencia de los sistemas


despus de terminar los procesos adecuadamente.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

86

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

87

3.1. ARRANCAR EL SISTEMA


2. Fuente: Arial 12]

3.1.1. Proveer comandos comunes al cargador de arranque y opciones al


kernel al arranque del sistema
Existe la posibilidad de que llegue un da, en el que arranquemos uno de nuestros
sistemas GNU/Linux y en el momento en el que deberamos visualizar el men de Grub
con los sistemas y Kernel disponibles para arrancar nos encontremos con esto:
grub>

Figura 79: Cargador de arranque GRUB


Fuente: Cibertec

Antes de entrar en modo pnico debemos tener unas nociones bsicas que nos
permiten arrancar un sistema manualmente desde Grub cuando su fichero de
configuracin ha sido borrado o est vaco/incorrecto. Bsicamente se trata de construir
y ejecutar manualmente las lneas que componen cada entrada en el fichero [Link]
o [Link]. El siguiente ejemplo prctico ha sido realizado sobre un sistema CentOS
con el fichero /etc/[Link] y /boot/grub/[Link] eliminado.
Para arrancar el sistema de forma correcta tenemos que establecer una secuencia de
tres comandos en la que especifiquemos lo siguiente:

A) PARTICIN QUE CONTIENE EL KERNEL


Una vez que estemos en la shell de Grub, si ejecutamos el comando root a secas nos
dir la particin en la cual se encuentra el/los kernel (podemos usar la tecla [TAB] para
ver los comandos disponibles:
grub> root
(hd0,0): Filesystem type is ext2fs, partition type 0x83

Ya sabemos que la particin que contiene el kernel, imgenes initrd y dems es la


(hd0,0), podemos navegar por ella usando el comando find y haciendo uso de la
tabulacin para el auto-completado de nombres, lo verificamos:
grub> find (hd0,0)/ <- presionamos [TAB]
Possible files are: lost+found grub efi initramfs-2.6... vmlinux-2.6.....

Una vez verificado ejecutamos el siguiente comando (normalmente no es necesario ya


que como vemos anteriormente lo detecta automticamente):
grub> root (hd0,0)

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

88

B) ESPECIFICAR EL KERNEL Y RUTA AL FILESYSTEM


grub> kernel /vmlinuz-2.6.32-71.el6.i686

ro root=/dev/sda1

Ya sabemos que el kernel est en /vml* as que lo especificamos como se observa en


el cuadro superior, usemos el autocompletado con [TAB] para no tener que escribir todo
el nombre. Especificamos que en primera instancia se tiene que arrancar en modo
lectura (ro) y finalmente la ruta a la particin root de nuestro sistema (dev/sda1). La
particin root es la que contiene /sbin/init, tambin se puede especificar mediante el
UUID. Si no sabemos cual es podemos localizarla con el siguiente comando:
grub> find /sbin/init
(hd0,1)

(hd0,1)=/dev/sda2
Otra forma sera consultando el fichero fstab:
grub> cat (hd0,1)/etc/fstab

C) UBICACIN DEL INITIAL RAM DISK


El RAM disk se encuentra en la misma ruta/particin que el kernel:
grub> initrd /[Link]

SECUENCIA COMPLETA PARA ARRANCAR EL SISTEMA


Haciendo un resumen y aadiendo el ltimo comando para arrancar el sistema (boot)
quedara as:
grub> root (hd0,0)
grub> kernel /vmlinuz-2.6.32-71.el6.i686

ro root=/dev/sda1

grub> initrd /[Link]


grub> boot

Si todo va bien, debera arrancar sin problemas el sistema. Una vez dentro podremos
restaurar el Grub con tranquilidad.

COMANDOS COMUNES DE GRUB


GRUB permite varios comandos en su lnea de comandos. Algunos de los comandos
aceptan opciones despus del nombre y estas opciones deben ir separadas del
comando por comas y de otras opciones de esa lnea por carcteres de espacio.

En la lista siguiente se indican algunos comandos tiles:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

89

boot Arranca el sistema operativo o gestor de encadenamiento que se ha


cargado.

chainloader </ruta/a/archivo> Carga el archivo especificado como gestor de


encadenamiento. Si el archivo est ubicado en el primer sector de la particin
especificada, puede utilizar la notacin de lista de bloques, +1, en vez del nombre
del archivo.
Lo siguiente es un ejemplo del comando chainloader:
chainloader +1

displaymem Muestra el uso actual de memoria, en funcin de la informacin de


la BIOS. Esto es til si no est seguro de la cantidad de RAM que tiene un sistema
y todava tiene que arrancarlo.

initrd </ruta/a/initrd> Le permite especificar un disco RAM inicial para utilizarlo al


arrancar. Es necesario un initrd cuando el kernel necesita ciertos mdulos para
poder arrancar adecuadamente, tales como cuando la particin se formatea con el
sistema de archivos ext3.
A continuacin se muestra un ejemplo del comando initrd:
initrd /[Link]

install <etapa-1> <disco-instalacion> <etapa-2> p <archivo-configuracion>


Instala GRUB en la MBR del sistema.
o

<etapa-1> Significa un dispositivo, particin y archivo donde el primer gestor


de arranque puede ser encontrado, tal como (hd0,0)/grub/stage1.

<disco-instalacion> Especifica el disco donde la etapa 1 del gestor de


arranque debera ser instalado, tal como (hd0).

<etapa-2> Pasa la ubicacin de la etapa 2 del gestor de arranque a la etapa


1, tal como (hd0,0)/grub/stage2.

p <archivo-configuracion> Esta opcin le indica al comando install que busque


por el archivo de configuracin de men especificado por <config-file>, tal como
(hd0,0)/grub/[Link].

NOTA: El comando install sobreescribe cualquier informacin que ya se encontraba


en el MBR.

kernel </ruta/a/kernel><opcion-1> <opcion-N> ... Especifica el archivo del kernel


a cargar cuando se cargue el sistema operativo. Reemplace </ruta/a/kernel> con
una ruta absoluta desde la particin especificada por el comando root.
Reemplace <opcion-1> con las opciones para el kernel de Linux, tales
como root=/dev/hda5 para especificar el dispositivo en el que se ubica la particin

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

90

root para el sistema. Se pueden pasar mltiples opciones al kernel en una lista
separada por comas.
Lo siguiente es un ejemplo para el comando kernel:
kernel /vmlinuz-2.4.21 root=/dev/hda5
La opcin en el ejemplo anterior especifica que el sistema de archivos raz para
Linux est ubicado en la particin hda5.

root (<tipo-dispositivo><numero-dispositivo>,<particin>) Configura la particin


raz para GRUB, tal como (hd0,0) y monta la particin.
A continuacin se presenta un ejemplo para el comando root:
root (hd0,0)

rootnoverify (<tipo-dispositivo><numero-dispositivo>,<particin>) Configura la


particin raz para GRUB, tal como el comando root pero no monta la particin.

Tambin estn disponibles otros comandos; escriba help --all para una lista completa
de comandos. Para una descripcin de todos los comandos GRUB, consulte la
documentacin disponible en lnea en [Link]
CAMBIAR LOS NIVELES DE EJECUCIN EN EL TIEMPO DE ARRANQUE
Bajo Red Hat Enterprise Linux, es posible cambiar el nivel de ejecucin predeterminado
en el momento de arranque.
Para cambiar el nivel de ejecucin de una sesin de arranque, utilice las instrucciones
siguientes:

Cuando la pantalla de men de GRUB aparece durante el arranque, presione


cualquier tecla para entrar al men de GRUB (dentro de los primeros tres segundos).

Presione la tecla [a] para aadir al comando kernel.

Aada <espacio><nivel-de-ejecucion> al final de la lnea de opciones de arranque


para iniciar en el nivel de ejecucin deseado. Por ejemplo, la entrada siguiente
iniciar un proceso de arranque en el nivel 3.

grub append> ro root=/dev/VolGroup00/LogVol00 rhgb


quiet 3

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

91

3.1.2. Demostrar conocimiento de la secuencia de arranque desde el BIOS


hasta completar el arranque
La etapa del cargador de arranque no es totalmente necesaria. Determinadas BIOS
pueden cargar y pasar el control a Linux sin hacer uso del cargador. Cada proceso de
arranque ser diferente dependiendo de la arquitectura del procesador y el BIOS.

FASES DEL ARRANQUE EN LINUX

FASE 1: Hardware
FASE 2: BootLoader
FASE 3: Kernel
FASE 4: Init

Figura 80: Fases del arranque en Linux


Fuente: Cibertec

FASE 1: HARDWARE

En esta fase el sistema se inicia pasando el control a la BIOS

BIOS: Basic Input/Output System


o
o
o
o
o

La BIOS es un pequeo programa que se encuentra grabado en una memoria


en la placa base.
Esta memoria ha evolucionado desde ROM->PROM->EPROM- >Memoria
Flash.
Alimentado continuamente (batera)
Guarda la configuracin de nuestro sistema.
Realiza POST

FASE 2: BOOTLOADER
El objetivo del Bootloader es cargar parte del nucleo (kernel) del sistema operativo en
memoria y ejecutarlo. Despus de cargarse, el Bootloader toma el control y se encarga
de cargar el resto del sistema operativo.
Ubicacin de un Bootloader

En un disquete.- El primer sector de un disquete est reservado como sector de


arranque (boot).

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

92

En un disco duro.- Puede ubicarse en el primer sector de cda una de las particiones
del disco. A parte del primer sector del disco, existe un sector de arranque global
(Master Boot Record o MBR), este es el lugar ms comn para instalarlo.
En un CD-ROM.- Siguiendo la especificacin El Torito, es parte del proyecto
SYSLINUX.
Bootloader cargado desde la red.- Posible con LinuxBios y normalmente via
broadcasting (RARP).

Proyecto SYSLINUX
Este proyecto cubre booloaders ligeros para:

Floppy disks: SYSLINUX


Arranque en red: PXELINUX
Arranque desde CD-ROM (El Torito): ISOLINUX
Arranque de sistemas Legacy (como dos) via PXE.

Bootloaders en Linux

LILO: The LInux LOader


GRUB: GRand Unifying Bootloader

Ambos son capaces de cargar tanto sistemas Linux como otros sistemas operativos y
suelen ubicarse en el sector de arranque de disquetes o en el MBR del disco duro.

LILO

Bastante rudimentario.
Bootloader de una sola etapa.
No entiende de sistemas operativos, ni de sistemas de ficheros
Lee datos del disco utilizando llamadas nativas de la BIOS, con punteros directos a
los ficheros que necesita.
Los almacena a travs de un fichero mapa que se almacena en el sector de
arranque.

Figura 81: Bootloader LILO


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

93

Fases de LILO
1. El firmware carga el sector de arranque de LILO y lo ejecuta
2. LILO carga su fichero de mapa por medio de llamadas de la BIOS, este muestra
el prompt de opciones a cargar
3. El usuario selecciona el kernel que arrancar.
4. LILO carga el kernel seleccionado por medio de llamadas de la BIOS y utilizando
los parmetros de ubicacin en el fichero de mapa
5. (Opcional) LILO carga un ramdisk
6. LILO ejecuta el kernel indicando donde esta el root fs y si es necesario el ramdisk
Ficheros de LILO
Ejemplo de /etc/[Link]

boot=/dev/hda2
root=/dev/hda2
install=/boot/boot.b
map=/boot/map
vga=normal
delay=20
image=/vmlinuz
label=Linux
read-only
other=/dev/hda1
table=/dev/hda
label=win
Para cargar la configuracin hay que ejecutar el comando lilo.

# lilo /etc/[Link]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

94

GRUB

Ms avanzado (y ms moderno) que LILO


Trabaja en dos o tres etapas (Stages)
Tiene capacidad para arrancar un kernel via red
En cada etapa va cargando ms elementos para arrancar
Entiende de sistemas de ficheros
Permite especificar parmetros de forma dinmica en el arranque, no utiliza valores
estticos

Figura 82: Bootloader GRUB


Fuente: Cibertec

Fases de GRUB
1. Etapa 1: El firmware carga el sector de arranque de GRUB en memoria. (En l
estn los nmeros de bloque del disco donde se encuentra la siguiente etapa)
2. Etapa 1.5: (Se denomina as porque esta etapa podra ser opcional). Su objetivo
es cargar el cdigo que reconoce sistemas de ficheros y a partir de ah cargar la
etapa 2 como un fichero.
3. Etapa 2: GRUB muestra el men con las opciones de boot que hayamos definido
y un prompt donde podemos especificar ramdisks, kernels, etc. a cargar.
4. GRUB ejecuta los comandos introducidos, bien las definidas por nosotros en el
fichero de configuracin ([Link], [Link]) y comienza la carga del kernel.

NOTA: Aqu reside la potencia de GRUB, es capaz de cargar ficheros realizar


tareas dinmicas en la fase de arranque del sistema

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

95

Ficheros de GRUB
Depende de la distribucin pero suele ser similar a esto:

Figura 83: Listado de archivos de /boot/grub


Fuente: Cibertec

Un ejemplo de configuracin de GRUB

El fichero [Link] (o [Link])


GRUB es interactivo, para configurar hay que ejecutar grub y desde su prompt
utilizar los comandos.

Figura 84: Visualizacin del archivo [Link]


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

96

FASE 3: KERNEL

Arquitectura Monoltica
Es un largo y complejo programa compuesto de un gran nmero de subsistemas
lgicos
Gestionado directamente por Linus Torvalds
Con capacidad de carga de Mdulos
Si bien por definicin est formado por una capa lgica, internamente funciona con
ms.

Proceso de arranque

En esta fase comienza la ejecucin del kernel, descomprimindose a s mismo.


(Esto es cdigo en el principio de la propia imagen del kernel)
Comienza la inicializacin del kernel y el chequeo y puesta en marcha de algunos
de los dispositivos para los que se ha dado soporte.
o Detecta la CPU y su velocidad
o Inicializa el Display para mostrar informacin por pantalla
o Comprueba el bus PCI e identifica y crea una tabla con los perifricos
conectados (muestra por pantalla los mismos y su estado)
o Inicializa el sistema de gestin de memoria virtual, incluyendo el swapper
o Inicializa todos los perifricos compilados dentro del kernel (no como
mdulos), normalmente slo se configuran as los perifricos necesarios para
esta fase del arranque, el resto se configuran como mdulos
o Monta el sistema de ficheros root (/)
o A partir de aqu llama al proceso init que se ejecuta con uid 0 y ser el padre
de todos los dems procesos

Configuracin del Kernel

Debemos instalar las fuentes del kernel. Bien con el [Link], paquete deb o rpm.
Ir al Directorio /usr/src/Linux
Configurar los elementos del kernel
o make config
o make menuconfig
o make xconfig
Realizar las modificaciones de elementos a soportar, mdulos a cargar, etc.
Recompilar kernel y modulos
o make clean dep bzImage
o make modules
Instalar el kernel y los mdulos
o make install y/
o make modules_install

Kernel Monoltico vs MicroKernel


La mayor parte de los kernels Unix son monolticos. Cada capa del kernel est
integrada dentro del propio programa del kernel y se ejecuta en Modo Kernel con
independencia del proceso que la utilice. Las arquitecturas Microkernel (como Mach
de GNU o Minix) solicitan un pequeo conjunto de funciones al kernel y sus
componentes para implementar la mayor parte de las funciones.
Los sistemas operativos Microkernel obligan a mantener interfaces muy bien
definidos y estables entre sus componentes individuales as como el poder realizar

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

97

optimizaciones sofisticadas, lo cual suele redundar en rendimientos ms bajos que


los kernels monolticos.
En 1992 se sostuvo un debate entre Andrew S. Tanenbaum y Linus Torvalds, en
relacin al kernel de Linux y la arquitectura de nucleos en general, en el cual
Tanenbaum argumentaba que los microncleos son superiores a los ncleos
monolticos y por lo tanto Linux era obsoleto. Linus Torvalds reconoci la
superioridad de los microncleos y el incidente no paso a mayores quedando en
buenos trminos.

Ramdisks

Son discos virtuales creados utilizando la memoria RAM del sistema


Como consecuencia son discos muy rpidos y de tamao normalmente pequeo
Son voltiles, es decir sus datos no persisten tras un apagado o reinicio
Sirven para varias utilidades:
o Como cachs en Servidores Web
o Como cualquier disco con datos de alta velocidad
o En nuestro caso concreto se utilizan para descomprimir el kernel de

forma rpida y cargar los mdulos en un sistema montado.


FASE 4: INIT

En estos momentos el kernel est cargado, tenemos gestin de memoria, una parte
del hardware est inicializado y tenemos un sistema de ficheros root.
A partir de ahora el resto de operaciones se van a realizar directa o indirectamente
por el proceso init.
El proceso init lee del fichero /etc/inittab la configuracin a utilizar.
Ejecuta el comando /etc/[Link] el cual realiza una inicializacin bsica del sistema
En funcin del runlevel ejecuta los comandos establecidos

Ejemplo de inittab

Figura 85: Visualizacin del archivo inittab


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

98

Runlevels (System V)
0.
1.
2.
3.
4.
5.
6.

Halt
Single-user modo texto
(Definible por el usuario)
Multi-user completo modo texto
(Definible por el usuario)
Multi-user completo modo X-Windows
Reboot (rearranque)

[Link]
Este fichero vara segn la distribucin que utilicemos, parte puede estar incluida en
los scripts rc (runlevel scripts) e incluso puede presentarse con otros nombres, pero
en general realiza las tareas siguientes:
1.
2.
3.
4.
5.
6.

Configura el reloj del sistema en base al reloj hardware


Asigna el mapeo de teclado para la consola
Monta el sistema de ficheros /proc
Arranca el espacio de swap
Monta y chequea los sistemas de ficheros locales (no de red)
Inicializa el rbol de dependencias de mdulos (depmod). (Esto permitir la
posterior utilizacin de modprobe para cargar los mdulos)
7. Inicializa y configura las interfaces de red.
8. Carga los drivers para USB, PCMCIA, sonido.

Runlevel scripts (scripts rc)

El script rc ejecuta los scripts de arranque que se encuentran en el directorio


correspondiente al runlevel en el que se ha iniciado el sistema.
Normalmente estos se encuentran en el directorio
/etc/rc.d/rcN.d/ (siendo N el runlevel)
Es decir para el runlevel 3: /etc/rc.d/rc3.d
En este directorio se encuentran una serie de scripts que empiezan por S o por
K y dos dgitos
Los dgitos denotan el orden de ejecucin de los scripts:
Los que comienzan por S se ejecutan en orden ascendente (al arrancar o
comenzar un nuevo runlevel)
Los que comienzan por K se ejecutan en orden descendente al salir
(normalmente al hacer shutdown o al finalizar un runlevel)
En realidad es una convencin, porque rc llama a estos scripts con el parmetro
start o stop en funcin de si es arranque o parada (de hecho los scripts K* son
enlaces simblicos a los S*)
Hay un script particular que es el S99local donde se deben hacer configuraciones
locales del equipo (si es necesario), se trata de evitar tocar los scripts previos
por razones de facilidad de mantenimiento.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

99

Ejemplo de /etc/rc.d/rcN.d

Figura 86: Listado del directorio rc3.d


Fuente: Cibertec

3.1.3. Revisar eventos relacionados al arranque en los archivos de bitcora


Todas las distribuciones de Linux utilizan archivos de registro para registrar los eventos
del sistema, incluyendo conectar dispositivos, sesiones nuevas y otros mensajes. La
mayora de las distribuciones guardan estos archivos en el directorio /var/log. Los
comandos less y tail son tiles para leer estos archivos en tiempo real. Como los
archivos estn protegidos, hace falta iniciar una sesin como usario "root" o usar "sudo"
para leerlos.

El comando tail
Use el comando tail -f para ver las ltimas lneas de un archivo y las actualizaciones del
mismo. Por ejemplo, el comando tail -f /var/log/[Link] muestra eventos de
autenticacin como sesiones nuevas y el uso de "sudo" en el sistema.
Si un usuario inicia una nueva sesin, ver la actualizacin del archivo con la nueva
informacin usando este comando. Finalice el comando tail pulsando las teclas Ctrl y C
simultneamente.

El comando less
El comando less +F es casi igual a usar tail -f, pero proporciona acceso al archivo entero
en vez de las ltimas lneas y tambin muestra cualquier actualizacin en tiempo real.
Finalice el comando pulsando las teclas Ctrl y C simultneamente, seguido por la tecla
Q.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

100

Archivos comunes
Los archivos de registro varan por distribucin. No obstante, la mayora de las
distribuciones tienen al mnimo los siguientes archivos:

[Link]: Informacin sobre eventos de autenticacin de usuarios.


[Link]: Informacin del arranque
[Link]: Tareas de cron
[Link]: Alertas de servicios como ntfs-3g o dhcpd.
[Link]: Informacin de arranque del sistema y conexiones de hardware
principalmente.
[Link]: Errores del sistema
[Link]: Mensajes miscelneos no cubiertos por los otros archivos.
[Link]: Mensajes y errores de Apache.
[Link]: Guarda un registro de los mensajes del ncleo (Kernel).
[Link]: Mensajes del servidor de correo electrnico.
[Link]: Alertas generales del sistema.
[Link]: Archivo de MySQL.
secure: Registro de seguridad.
[Link]: Registro de mensajes del sistema y de sus programas.
[Link]: Informacin sobre el entorno grfico.

Si queremos ver al instante todo lo que esta pasando en nuestro sistema, solo hay que
aadir los logs que queramos monitorizar al siguiente comando:

# tail -f /var/log/messages

dmesg (diagnostic message, mensajes de diagnstico)


Es un comando presente en los sistemas operativos Unix que lista el buffer de mensajes
del ncleo. Este buffer contiene una gran variedad de mensajes importantes generados
durante el arranque del sistema y durante la depuracin de aplicaciones.

Figura 87: Uso del comando dmesg filtrando por dipositivos usb
Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

101

3.2. CAMBIAR LOS NIVELES DE EJECUCIN, APAGAR O


REINICIAR EL SISTEMA
3.2.1. Establecer el nivel de ejecucin predeterminado
Niveles de ejecucin de SysV Init
El sistema de niveles de ejecucin SysV init provee de un proceso estndar para
controlar cules programas init lanza o detiene cuando se inicializa un nivel de
ejecucin. SysV init fu escogido porque es ms fcil de usar y ms flexible que el
proceso tradicional init estilo BSD.
Los ficheros de configuracin para SysV init estn en el directorio /etc/rc.d/. Dentro de
este directorio, se encuentran los scripts rc, [Link], [Link], y, opcionalmente, los
[Link] as como los siguientes directorios:

Figura 88: Listado del directorio rc.d


Fuente: Cibertec

El directorio init.d/ contiene los scripts usados por el comando /sbin/init cuando se
controlan los servicios. Cada uno de los directorios numerados representa los seis
niveles de ejecucin predeterminados configurados por defecto bajo Red Hat Enterprise
Linux.

Niveles de ejecucin
La idea detrs de los niveles de ejecucin de SysV init gira alrededor del hecho que
sistemas diferentes se pueden usar de formas diferentes. Por ejemplo, un servidor
Linux se basa en modos de ejecucin para determinar que funciones hay disponibles,
enumerados del 0 al 6. Cada uno de ellos tiene asignado un conjunto de servicios.
Los modos de ejecucin 0,1 y 6 estn reservados para fines especiales; los modos de
ejecucin restantes estn disponible para los objetivos que desee o los que decidan los
proveedores de las distintas distribuciones Linux.
Nota: Puede haber modos de ejecuciones fuera del rango 0-6, pero es algo inusual.
El archivo /etc/inittab define y describe los distintos modos de ejecucin.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

102

NIVEL 0: Se emplea para apagar el sistema. Es un modo transitorio, es decir se


emplea para pasar de un estado a otro. En este caso de iniciado ha cerrado. En
equipos con hardware moderno el sistema se apaga por completo, no as en equipos
ms antiguos donde tiene que intervenir el usuario.
NIVEL 1: Modo monousuario, tambin representado por s, S o single. Se suele
emplear para realizar un mantenimiento a bajo nivel, como por ejemplo el
redimensionamiento de particiones, configuracin del servidor X, etc.
NIVEL 2: En Debian y sus derivados es un modo multiusuario completo con X en
ejecucin. Muchas otras distribuciones dejan este modo de ejecucin sin definir.
NIVEL 3: Para una gran mayora de distribuciones como Red Hat o sus derivados,
se define este modo como un modo multiusuario mediante terminal
NIVEL 4: Disponible para configuraciones personalizadas
NIVEL 5: En Fedora, Mandriva, Red Hat y la mayora de las dems distribuciones
tienen el mismo comportamiento que el nivel 3 pero con servidor X.
NIVEL 6: Se emplea para reiniciar el sistema. Al igual que el modo 0, este es un
modo transitorio, donde el ordenador se apaga por completo y vuelve a iniciar.

Generalmente, los usuarios utilizan Red Hat Enterprise Linux al nivel de ejecucin 3 o
nivel de ejecucin 5, ambos modos multiusuario. Ya que los niveles de ejecucin 2 y 4
no son usados, los usuarios a veces personalizan estos niveles para cubrir necesidades
especficas.
Las entradas de /etc/inittab siguen un formato sencillo:
<id>:<modosdeejecucin>:<accin>:<proceso>
Donde:

id es una secuencia de uno a cuatro caracteres que identifica su funcin


modosdeejecucin es una lista de los modos de ejecucin para los que se aplicar
la entrada. Puede definirse un solo modo (por ejemplo 3) o varios de ellos (2,3,5)
accin indica a init cmo tratar el proceso. Por ejemplo: wait inicia el proceso una
vez cuando pase a un modo de ejecucin y espera a que este
finalice, respawn reinicia el proceso cada vez que finalice, powerwait indica
a init que apague el sistema antes una falla en el sistema elctrico (se precisa un
UPS), ctraltdel reinicia el sistema cuando el usuario presione esas teclas (podemos
cambiar las funciones o anularlas), sysinit comando ejecutado cuando inicia el
sistema (por ejemplo limpiar /tmp), etc podremos conocer mas acciones a travs
de man inittab. Para la accin initdefault se ignora el campo proceso.
proceso es el proceso que ejecutar para una determinada entrada, incluyendo las
opciones y argumentos que sean necesarios.

El nivel de ejecucin por defecto para el sistema est listado en /etc/inittab. Para saber
el nivel de ejecucin por defecto de un sistema, busque por la lnea similar a la que se
muestra abajo en la parte inferior de /etc/inittab:

i[Link]initdefault:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

103

Figura 89: Visualizacin del archivo inittab


Fuente: Cibertec

El nivel de ejecucin predeterminado en este ejemplo es cinco, como indica el nmero


despus de los dos puntos. Para cambiarlo, modifique /etc/inittab como usuario root y
cambie del nivel 5 (modo multiusuario con entorno grfico) al nivel 3 (modo multiusuario
sin entorno grfico, slo terminal).

Figura 90: Visualizacin del archivo inittab


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

104

3.2.2. Cambiar entre los niveles de ejecucin incluyendo el modo usuario


individual (single user)
Comprobar y cambiar el modo de ejecucin
Podemos visualizar el modo de ejecucin actual con el comando runlevel:

#runlevel
N 2
El primer caracter es el modo de ejecucin anterior, en este caso N, lo cual indica que
el sistema no ha cambiado de modo de ejecucin desde el arranque. El segundo
caracter 2 es su modo de ejecucin actual.
Para cambiar el nivel de ejecucin actual, existe una utilidad para lnea de comandos
que permite cambiar de un nivel de ejecucin a otro. Esta es la herramienta init. Para
cambiar de nivel de ejecucin slo hay que ejecutar init seguido del nmero del runlevel.
Por ejemplo:

init 0: Cambia al runlevel 0 (se apaga el sistema, equivalente al comando halt).


init 2: Cambia al runlevel 2.
init 6: Cambia al runlevel 6 (reinicia el sistema, equivalente al comando reboot).

Se puede cambiar a modos de ejecucin diferentes en un sistema operativo en


funcionamiento con los programas init (o telinit), shutdown, halt, reboot y poweroff.
init no es el comando ms lgico para reiniciar, apagar o pasar a modo monousuario,
ya que lo hace de forma inmediata y podramos molestar a otros usuarios conectados
al sistema, pero si que sirve por ejemplo para que el sistema vuelva a leer el
archivo /etc/inittab
El comando telinit es una variante de init, normalmente es un enlace simblico, aunque
la pginas man de ambos comandos presentan una sintaxis ligeramente distinta. Si
quisiramos por ejemplo que se volviese a leer el archivo/etc/inittab, podramos
usar telinit o init de la siguiente manera:

# telinit q
# telinit Q
Nota: Las herramientas Upstart y systemd ofrecen los comandos init y telinit que
funcionan de una forma similar.
Cuando desee reiniciar (6), apagar (0) o pasar a modo monousuario (1) en un entorno
multiusuario, lo mejor ser emplear el comando shutdown.
Pasar a modo monousuario de forma inmediata:

# shutdown now

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

105

3.2.3. Inicializar el sistema SysV, Upstart y systemd


SysV
System V o tambin conocido como SysV, es el primer programa que se ejecuta en el
sistema tras cargar el ncleo en memoria. Lo primero que hace es leer el archivo
/etc/inittab, de donde obtiene algunos parmetros bsicos, y luego va ejecutando por
orden los scripts del directorio /etc/rcN.d de forma secuencial. Dependiendo de un
parmetro numrico llamado runlevel, posteriormente seguir cargando todos los scripts
del directorio /etc/rcN.d correspondiente, normalmente el 2 o el 3.

Identificar los servicios de un modo de ejecucin.


Existen varias maneras de identificar que programas se ejecutan cuando se pasa a
un modo de ejecucin concreto con SysV, como por ejemplo a travs del archivo
/etc/inittab o bien con la herramienta chkconfig. Con la herramienta update-rc.d
podremos activar y desactivar servicios para runlevels especficos.
Podemos usar la herramienta chkconfig de la siguiente manera:
# chkconfig list
O si estamos interesado en un servicio concreto:
# chkconfig --list <servicio>

Gestionar los servios de los modos de ejecucin


Al igual que existen dos formas para identificar servicios en un determinado modo
de ejecucin (o 3 si separamos el uso de chkconfig y la bsqueda de scripts por sus
directorios) podemos gestionar los programas para que sean ejecutados o parados
segn el modo de ejecucin de la misma manera.
Mediante el archivo /etc/inittab:
Bastar con aadir o eliminar entradas del archivo.
Con chkconfig:
Modificar los modos de ejecucin para un determinado servicio
# chkconfig --level 235 <servicio> on|off|reset
Nota: Con reset le asignaremos su valor por defecto

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

106

Si hemos aadido un script de inicio al directorio principal de los scripts (/etc/init.d,


por ejemplo) podemos hacer que chkconfig lo registre y aada los enlaces de inicio
y fin apropiados en los directorios de modo de ejecucin adecuados.
# chkconfig --add <servicio>
Cuando lo hagamos, chkconfig inspeccionar el script en busca de comentarios
especiales para indicar los modos de ejecucin por defecto. Puede que este mtodo
no funcione si el script carece de las lneas de comentario necesarias con los
nmeros de secuencia de los modos de ejecucin que utiliza chkconfig.
Podemos hacer este trabajo de forma manual que sera creando nosotros mismos
el enlace simblico del script principal en los directorios de los modos de ejecucion
en los que queremos que se inicie o detenga un programa concreto. Tenemos que
tener en mente los nombres de archivos con S, K y los nmeros de orden.
Importante: Podemos iniciar, detener o comprobar el estado de los servicios
mediante la ejecucin del comando service:
# service samba status|start|stop
O con la ejecucin del script principal
# /etc/init.d/samba status|start|stop
Existe la herramienta ntsysv la cual nos permitir marcar aquellos servicios que
queremos ejecutar durante el arranque. Es una herramienta grfica de lnea de
comandos, su uso es sencillo y puede resultar til incluso para ver que servicios
tenemos marcados en el arranque. Tambin puede ser usada para especificar un
runlevel concreto.

Upstart
Uno de los cambios importantes que hemos encontrado con la salida de Red Hat
Enterprise Linux 6 y por consiguiente CentOS 6 es el cambio del sistema de arranque
de los servicios. El nuevo sistema tiene por nombre Upstart y reemplaza al que nos
acompa durante muchos aos, System V.
Upstart se basa en eventos. Cada script de Upstart depende de una serie de eventos y
a su vez genera ms eventos. El primero que se genera es el startup y a partir de ah
van lanzndose scripts, que a su vez generan ms eventos que permiten que se lancen
ms scripts, hasta que el sistema completo se encuentra cargado.
Una de las principales diferencias entre System V y Upstart es que el primero trabaja de
forma sncrona mientras que Upstart lo hace de forma asncrona, es decir, no
arranca/para un servicio despus de otro sino que puede hacerlo en paralelo. Esto
implica un aumento considerable de la velocidad de arranque y evita que un servicio
tenga esperar a que otro termine para poder arrancar. Otra caracterstica interesante de
Upstart es que tiene la capacidad de supervisar los servicios mientras el sistema est

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

107

funcionando. Upstart tambin es compatible con los scripts de arranque del sistema
System V por lo cual la migracin de un sistema a otro es ms sencilla.
Los scripts de arranque basados en System V seguirn emplazados en /etc/init.d,
mientras que los basados en Upstart debemos aadirlos en /etc/init/*.conf. Podemos
ver un ejemplo de la sintaxis utilizada revisando cualquiera de los que ah se encuentran.
De momento podris ver que nicamente hay scripts propios de sistema, los servicios
siguen teniendo sus scripts de arranque en init.d. Vamos a crear un script sencillo para
que veis su funcionamiento. Bsicamente queremos que un script propio de prueba
est siempre corriendo, que arranque en el runlevel 3 y que si cae se levante de forma
automtica:
#vim /etc/init/[Link]

#
# Este servicio arranca y monitoriza nuestro script
[Link].
start on runlevel 3
respawn
respawn limit 15 5
exec sh /root/[Link]
Mediante respawn especificamos que en caso de que el servicio termine de forma
inesperada, Upstart intente levantarlo. Despus, con respawn limit especificamos el
nmero de intentos y durante cuanto tiempo. En caso de pasar ese tiempo/nmero de
intentos dejara de intentarlo y el servicio quedara detenido.
Arrancamos el servicio con el comando initctl:
# initctl start test
test start/running, process 1581
Si matamos el script, veremos en el log /var/log/messages como automticamente lo
levanta. En caso de tener 10 intentos fallidos durante 5 segundos (especificado en el
script) dejara de intentarlo y el script quedara parado:
# kill 1581
# tail -2 /var/log/messages
Oct 30 [Link] server1 init: test main process (1581)
killed by TERM signal
Oct 30 [Link] server1 init: test main process ended,
respawning
Podemos encontrar ms informacin sobre initctl en la salida de ayuda del propio
comando, pginas man, etc. Tambin de init:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

# initctl help
Job commands:
start
stop
restart
reload
status
list

108

Start job.
Stop job.
Restart job.
Send HUP signal to job.
Query status of job.
List known jobs.

Event commands: emit


emit an event.
Other commands:
reload-configuration
Reload the configuration of
the
init daemon.
version
Request the version of the
init daemon.
log-priority
Change the minimum priority
of log messages from the init daemon
help
display list of commands
For more information on a command, try `initctl COMMAND -help'.

# man init
# man initctl

systemd
systemd ha sido creado para ofrecer un inicio mas rpido y flexible que SysV,
permitiendo el arranque paralelo de servicios y su inicio basado en la deteccin de
conexin de nueva unidad externa.
Nota: Hasta ahora el PID1 era para el programa init, cosa que ha cambiado en systemd
a favor de /usr/lib/systemd/systemd y adems systemd al igual que Upstart deja de
utilizar el archivo /etc/inittab
Algunas de las mejoras que ofrece systemd:

Se ha mejorado sustancialmente la velocidad de inicializacin del sistema


systemd asume que cualquier dispositivo puede ser conectado o desconectado en
cualquier momento (hotplug)
systemd utiliza la activacin de daemons por medio de sockets, aportando
capacidades de paralelizacin
Una de sus caractersticas es el registro (journal) mediante cgroups de todos los
servicios y procesos iniciados
systemd es modular, esto quiere decir que se han elaborado una sere de
paquetes en los que varios servicios son administrados de forma conjunta

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

109

Es un sistema y administrador de servicios para Linux, compatible con scripts de inicio


(init) SysV y LSB. Systemd proporciona capacidades de paralelizacin agresiva, utiliza
socket y activacin D-Bus para iniciar los servicios, ofrece la puesta en marcha de
demonios bajo demanda, realiza el seguimiento de procesos utilizando Linux cgroups,
soporta copia instantnea de volumen y la restauracin de estado del sistema, mantiene
puntos de montaje y automontaje e implementa un elaborado servicio lgico de control
transaccional basado en la dependencia.
Vamos a desglosar un poco esta definicin:

Capacidades de paralelizacin agresiva usando socket: systemd crea de una


misma vez todos los sockets para todos los demonios acelerando as el arranque
completo e iniciar ms procesos en paralelo. En un segundo paso systemd ejecutar
a la vez todos los demonios.
Activacin D-Bus para iniciar servicios: Utilizando la activacin D-Bus, un servicio
puede ser iniciado la primera vez que es accedido.
Seguimiento de procesos utilizando Linux cgroups: cgroup tambin llamados
grupos de control, es una caracterstica del kernel para crear lmites, polticas e
incluso explicar el uso de los recursos de ciertos grupos de procesos. cgroup asocia
un conjunto de tareas con un conjunto de parmetros, para uno o ms subsistemas,
proporcionando un control de servicios y tareas, as como todos sus futuros hijos
en grupos jerrquico. Un subsistema es un mdulo resultado de la agrupacin de
diversas tareas con el fin de mantener un mejor control sobre estas de forma
particular.
Mantiene puntos de montaje y automontaje: Puede utilizarse para montar o
desmontar los puntos de montaje, quedando /etc/fstab como una fuente de
configuracin adicional a la que podremos llamar para su supervisin con la opcin
comment= de fstab para marcar las entradas controladas por systemd.

Nota: La herramienta systemd-cgls nos muestra recursivamente el contenido del rbol


de jerarquas de un determinado grupo de control de Linux.

Unidades de servicios (units)


systemd inicia y supervisa todo el sistema y se basa en la nocin de unidades,
compuestas de un nombre (el nombre del demonio) y una extensin. Ser la extensin
la que indique de qu tipo de unidad se trata. Adems cada unidad tiene su
correspondiente archivo de configuracin cuyo nombre es idntico. Un ejemplo sera el
servicio [Link] cuyo archivo de configuracin sera [Link]. Los archivos de
unidades
disponibles
en
nuestro
sistema
podemos
encontrarlos
en
/usr/lib/systemd/system/ y /etc/systemd/system/
Nota: Los archivos bajo el directorio /etc/systemd/system/ prevalecern en caso de
duplicados.
Existen siete tipos diferentes de unidades:

service: Demonios que pueden ser iniciados, detenidos, reiniciados o recargados.


socket: Esta unidad encapsula un socket en el sistema de archivos o en Internet.
Cada unidad socket tiene una unidad de servicio correspondiente.
device: Esta unidad encapsula un dispositivo en el rbol de dispositivos de Linux.
mount: Esta unidad encapsula un punto de montaje en la jerarqua del sistema de
archivos.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

110

automount: Encapsula un punto de montaje automtico. Cada unidad automount


tiene una unidad mount correspondiente, que se inicia al acceder al directorio de
automontaje.
target: Utilizada para la agrupacin lgica de unidades. Referencia a otras unidades,
que pueden ser controladas conjuntamente, un ejemplo sera [Link], que
bsicamente desempea el papel de nivel de ejecucin 3 en el sistema clsico SysV.
snapshot: Similar a las unidades target.

Entonces los archivos de configuracin tendrn los nombres: [Link],


[Link], [Link], [Link], etc.
Nota: La unidad [Link] activa servicios y otras unidades dependientes, durante
el arranque de systemd. Esto lo comentaremos en el apartado target

Compatibilidad de systemd con SysV


systemd al igual que Upstart ofrece compatibilidad con SysV (comando service y
chkconfig) para aquellos servicios que aun soportan o funcionan nicamente con scripts
de inicio SysV (actualmente en 2016, son pocos los servicios que corren bajo SysV).
Upstart pese a mantener compatibilidad con los comandos service y chkconfig de SysV
implement su propia utilidad para la administracin de servicios, de igual modo systemd
lo hace con su herramienta systemctl.
#systemctl stop [Link]
En SysV habilitbamos servicios con chkconfig (o reproducamos listas de estos para
ver cual de ellos se ejecutaba al arranque), algo que ahora bajo systemd podemos hacer
con los siguientes comandos:
Habilitar el servicio httpd al arranque del sistema (chkconfig httpd on, para SysV):
#systemctl enabled [Link]
Listar todas las unidades de servicios instaladas (algo parecido a chkconfig list)
#systemctl list-unit-files
O solo aquellas que se encuentran en activadas:
#systemctl list-units
#systemctl
Podemos apreciar que a la hora de pasar el nombre del servicio lo hacemos con el
nombre completo, es decir incluyendo su sufijo, pero existen una serie de atajos:

Si no se especifica el sufijo, systemctl asumir que es .service. Por ejemplo, netcfg


y [Link] se consideran equivalentes.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

111

Los puntos de montaje se traducirn automticamente en la correspondiente unidad


.mount. Por ejemplo, si especifica /home ser equivalente a [Link].
Similar a los puntos de montaje, los dispositivos se traducen automticamente en la
correspondiente unidad .device, por lo tanto, la especificacin /dev/sda2 es
equivalente a [Link].

Nota: Consulte man [Link] para ms detalles.

Uso de systemctl
La utilidad de administracin de las unit de systemd es systemctl, la cual combina las
herramientas service y chkconfig de SysV, por lo tanto podremos arrancar, parar,
recargar servicios, activar o desactivar servicios en el arranque, listar los estados de los
servicios, etc.
En la siguiente tabla veremos el uso bsico de systemctl adems de sus iguales en
SysV.

Figura 91: Cuadro comparativo de systemd vs. SysV


Fuente: Cibertec

1* Puede que un servicio este enable pero no tiene porqu estar activo cuando
iniciemos sesin ya que puede que ese servicio este configurado para ejecutarse solo
en determinados runlevels (o target en nuestro caso), a diferencia de chkconfig list de
SysV que mostraba todos los servicios con todos los runlevels posibles y para cada uno
indicaba si estaba on o off. Para conseguir algo parecido en systemd, tendramos que
listar los target disponibles y veramos que servicios se ubican dentro de estos, as
sabremos con que target (o runlevel) un servicio ser iniciado. Podemos emplear el
siguiente listado

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

112

#ls /etc/systemd/system/*.wants/[Link]
/etc/systemd/system/[Link]/[Link]
Este comando nos devuelve que el servicio httpd se encuentra bajo [Link] lo
que viene siendo el runlevel 3 de SysV. En los siguientes apartados conoceremos los
distintos target que de algn modo tienen similitud con los runlevels de SysV
Nota: Podramos haber omitido el subdirectorio /[Link] para conocer la lista
completa de targets y sus unit (mount, service, socket)
Podemos hacerlo de una forma inversa (para lo cual hay que conocer el target), es decir
ver que servicios estn ejecutndose para un target concreto:
#systemctl show -p Wants [Link]
Adems de los comandos de la tabla tambin podemos ver las units de servicios que
tenemos cargados en el sistema con el comando:
#systemctl -t service list-units all
Con este comando veremos que servicios estn cargados y adems si estn activos o
muertos a parte de una pequea descripcin.
Nota: Podemos cambiar service por mount, socket, device para listar otros tipos (-t)
de units.
Si en vez de ver las units cargadas queremos ver cuantas hay instaladas (es decir
aquellas que tienen archivos de configuracin instalados en nuestro sistema y por lo
tanto estn disponibles):
#systemctl -t service list-unit-files all
Nota: Podemos cambiar el tipo de unit o directamente omitir el parmetro -t y listar todas.
Aprenderemos mas sobre el comando systemctl en el apartado de comandos para este
tema (Tema-5)
Sugerencia: Puede utilizar las siguientes rdenes systemctl con el parmetro -H
usario@host para controlar una instancia de systemd en una mquina remota. Esto
utilizar SSH para conectarse a la instancia systemd remota.

Target
systemd utiliza target en vez de runlevels (0123456) que reciben un nombre (en vez de
un nmero) para identificar un propsito especfico, con la posibilidad de realizar ms
de una accin al mismo tiempo. Algunos targets pueden heredar todos los servicios de
otro target e implementarse con servicios adicionales. La siguiente tabla muestra la
similitud entre algunos de los target con los runlevels de SysV:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

113

Figura 92: Cuadro comparativo de targets de systemd vs. runlevels SysV.


Fuente: Cibertec

Nota: Actualmente no existen target similares a los runlevels 2 y 4 de SysV, pero


podramos definirlos nosotros mismos.
Existen otros target que podremos ver con el comando:
#systemctl list-units type=target
Podemos cambiar de target (o modo de ejecucin) actual con el comando:
# systemctl isolate [Link]
Nota: Esto podra ser equivalente a la orden #telinit 5 de SysV
systemd tambin nos permite cambiar el target predeterminado e incluso aadir nuevos
servicios a otros target, pero antes de esto, es importante dejar claro algunos de los
directorios de los que hace uso systemd:

Los archivos unit (archivos de configuracin de service, mount, device) se


encuentran en: /usr/lib/systemd/system/ o /etc/systemd/system/
Los target (runlevels) igualmente pueden situarse en ambos directorios
Los directorios *.wants (ubicados igualmente en ambos directorios) contienen los
enlaces simblicos que apuntan a determinados servicios, sern estos servicios los
que se ejecuten con el target al que corresponde dicho directorio wants, recordar
que si un target precisa de otro, tambin sern cargados los servicios de este otro
target.

Nota: Los archivos unit de /etc/systemd/system tienen una mayor precedencia sobre
archivos unidad de /lib/systemd/system
El target /etc/systemd/system/[Link] es el target predeterminado de arranque,
es un enlace simblico que por defecto apunta a /lib/systemd/system/[Link]
por lo que para cambiar de target de arranque, bastar con eliminar dicho link y crear
uno nuevo apuntando al nuevo target.
Si quisiramos podramos crear un target desde 0 a nuestro gusto y darle un nombre
([Link]) y a continuacin habilitarlo:
# systemctl enable [Link]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

114

El efecto de esta orden crea un enlace simblico (/etc/systemd/system/[Link])


que apunta a nuestro [Link]. Esto solo funciona si hemos aadido la etiqueta
[Install] al archivo, de la siguiente manera:
[Install]
Alias=[Link]
Tambin podemos aadir o quitar nuevos servicios a un target determinado, bastar con
crear nuevos enlaces simblicos dentro del directorio *.wants del target de arranque (o
de algunos de los que dependa) apuntando a los servicios deseados.
Otra forma de modificar el target de inicio es a travs de los parmetros que le pasamos
al kernel en el archivo de configuracin del gestor de arranque aadiendo por ejemplo
[Link]=[Link] para arrancar en nivel3

Journal
journal es un componente mas de systemd, que capta los mensajes syslog, los
mensajes de registro del kernel, los del disco RAM inicial y los mensajes de arranque
iniciales, as como mensajes escritos en stdout y stderr de todos los servicios, haciendo
que estn disponible para el usuario. Se puede utilizar en paralelo, o en lugar de un
demonio syslog tradicional, como rsyslog o syslog-ng.
Hasta Fedora 18 (e inclusive a da de hoy, Enero del 2015, en Centos7) el registro de
journal se almacena de forma voltil en /run/log/journal por lo que ser eliminado tras
un reinicio. La intencin es que venga configurado por defecto de manera que sea un
registro persistente y con directorio principal /var/log/journal (que no venga por defecto
no quiere decir que no lo podamos configurar de tal modo).
Una de las razones por las que syslog comenzaba a quedarse anticuado es la
necesidad por ejemplo de mostrar las ltimas lneas del registro de un determinado
servicio en el momento de preguntar por su estado (con systemctl), esto necesita que
archivos de registro sean descomprimido en tiempo real y a la vez mostrado, algo que
con syslog se haca casi imposible y adems, ineficiente y poco seguro.
Nota: Estudiaremos ms sobre los log de registros (syslog, rsyslog, syslog-ng, y
journal), ms adelante.
Hasta ahora nos haremos la idea de que journal es el sustituto de syslog, el cual nos
permite filtrar la salida del registro por campos, dejar el registro de forma voltil o volverlo
persistente mediante su archivo de configuracin (/etc/systemd/[Link]), darle un
tamao mximo al fichero de registro, permite la compatibilidad con el antiguo syslog
mediante el socket /run/systemd/journal/syslog (tendremos que asociar syslog a este
socket y no a /dev/log, el paquete syslog-ng proporciona automticamente la
configuracin necesaria), reenviar la salida del registro a una terminal, etc.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

115

3.2.4. Apagar o reiniciar el sistema desde la lnea de comando


Para apagar Linux, el usuario root puede ejecutar el comando /sbin/shutdown.
La pgina man para shutdown tiene una lista completa de opciones, pero las dos usadas
ms comnmente son las siguientes:
#/sbin/shutdown -h now //El Sistema se apaga al instante
#/sbin/shutdown -r now //El Sistema se reinicia al instante
Despus de apagar todo, la opcin -h detendr la mquina, y la opcin -r la reiniciar.
Los usuarios de consola PAM pueden usar los comandos reboot y halt para apagar el
equipo mientras se est en niveles de ejecucin 1 hasta 5. Para ms informacin sobre
los usuarios de consola. Si la computadora no se apaga asi misma, tenga cuidado de
no apagar la computadora hasta que aparezca un mensaje indicando que el sistema ha
sido detenido. Si no espera por este mensaje, puede significar que no todas las
particiones del disco duro han sido desmontadas, y puede llevar a un sistema de
archivos corrupto.
Otros comandos utilizados para apagar el sistema:
#halt
#shutdown
#init 0

Otros comandos utilizados para reiniciar el sistema:


#reboot
#init 6

3.2.5. Alertar a los usuarios antes de cambiar el nivel de ejecucin o de


algn otro evento de sistema mayor
Aunque podemos apagar y reiniciar la mquina mediante init o su alias telinit es ms
conveniente hacerlo mediante el comando shutdown. Son varias las razones de esto, la
primera es porque shutdown avisa a los usuarios. Indicar a los usuarios que se va a
reiniciar o apagar la mquina con un mensaje que es personalizable. En segundo lugar
podemos fijar un tiempo de espera, podemos decir que la mquina se apague a una
hora en concreto o pasado un tiempo, de esta forma podramos hacer que nuestro
ordenador deje de funcionar despus de las 12 que ya no le necesitaremos o tras 10
minutos y as alertar a usuarios conectados y tengan tiempo as a guardar sus trabajos.
Shutdown tiene una serie de opciones con las que ejecutarse que resultan interesantes,
estan son:

-f arranque rpido, en el siguiente arranque no comprobar los filesystems.


-h despus de parar todos los servicios la mquina se apagar.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

116

-k en realidad no se apaga pero manda el mensaje de apagado.


-r tras parar los servicios se reiniciar.
-F es el contrario de F en el siguiente arranque le toque o no se forzar a una
comprobacin de los filesystems.

Para indicar el tiempo podemos usar lo siguiente:

+(nmero) nmero ser el nmero de minutos tras lo cual se har shutdown de la


mquina
now: la mquina har un shutdown en ese mismo instante
hh:mm la mquina har shutdown a la hora indicada (con formato 24h)
#shutdown h +10
#shutdown h 22:30
#halt
#init 0

//El Sistema se apagar en 10 minutos


//El Sistema se apagar a las 22:30hrs
//Apagado del Sistema
//Apagado forzoso del Sistema

3.2.6. Terminar procesos apropiadamente


Dentro de esta carpeta ubicada en /etc o en /etc/rc.d dependiendo de la distribuccin,
se encuentran una serie de scripts que permiten iniciar/detener la gran mayora de los
servicios/servidores que estn instalados en el equipo. Estos scripts estn programados
de tal manera que la mayora reconoce los siguientes argumentos:
start
stop
restart
status
Los argumentos son autodescriptivos, y tienen permisos de ejecuccin, entonces siendo
root es posible iniciar un servicio de la siguiente manera, por ejemplo samba:
#> /etc/rc.d/init.d/smb start
Starting Samba SMB daemon [OK]
Solo que hay que cambiar start por stop | restart | status para detenerlo, reiniciarlo (releer
archivos de configuracin) o checar su estatus. Ahora bien, si ests parado dentro del
directorio puedes hacerlo de la siguiente manera:
#> pwd
/etc/rc.d/init.d
#> ./smb stop
Shutting down Samba SMB daemon [OK]
Se trata de tan solo un script asi que con el permiso de ejecuccin (x) puedes ejecutarlo
con ./ seguido del nombre del servicio, sin espacios y despus el argumento que
necesites, iniciarlo, detenerlo, etc.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

117

Resumen
En esta unidad, se vio el proceso del sistema de arranque del sistema operativo,
diferencias entre los 6 niveles de arranque, as como las diferencias tcnicas entre cada
uno de ello. Tambin, se trat de la importancia de ingreso en modo single user para
poder solucionar problemas al iniciar el sistema operativo o algn inconveniente con
este modo de arranque, donde se alojan los archivos de cada modo. Por ltimo, se vio
cmo alertar a los usuarios antes de cambiar de nivel de ejucin y finalizar los procesos
de manera adecuada.

Bibliografa
BSICA
Angie Nash y Jason Nash

2001

LPIC 1 Certification Bible

2004

Edicin especial Linux


(005.43L BAND)

CIBERTEC
2004 Linux administrador e Internet: Linux administrador y security
(005.43L CIBE)
COMPLEMENTARIA
2013

([Link]
Proyecto de documentacin de Linux en espaol.

2013

([Link]
Proyecto de documentacin de Linux en espaol.

2013

([Link]
Proporciona guas rpidas para instalar, configurar servicios de red basados en Linux.

2013

([Link]
Proyecto de formacin en habla hispana para los candidatos a la certificacin LPI en
cualquiera de sus niveles.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

118

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

119

UNIDAD

4
COMANDOS GNU Y UNIX
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al trmino de la unidad, el alumno utiliza la lnea de comandos (shell), comandos
de ayuda, formato, uso de diferentes parmetros, personaliza el entorno y usa
el historial de comandos.
TEMARIO
4.1 Tema 5
4.1.1
4.1.2
4.1.3
4.1.4

:
:
:
:
:

Comandos GNU y Unix


Trabajar en lnea de comandos.
Personalizar y utilizar el entorno del terminal.
Procesar flujos de texto usando filtros.
Realizar administracin de archivos bsicos.

ACTIVIDADES PROPUESTAS

Identificar la sentencia del uso de los comandos bsicos.


Identificar la administracin de archivos y su importancia.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

120

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

121

4.1. COMANDOS GNU Y UNIX


2. Fuente: Arial 12]

4.1.1. Trabajar en lnea de comandos


En linux hay disponibles varias consolas. La mayora ofrece funciones similares, por lo
que es muy til conocer determinados puntos bsicos de su funcionamiento, as como
las variables de entorno que contienen datos que pueden utilizar muchos programas.
Explorar las opciones de la consola de linux
Linux proporciona un rango de opciones para las consolas; entre las ms comunes se
encuentran las siguientes:

bash: est basada en la consola bourne, aunque la ampla de varias maneras; es la


consola por defecto ms comn para las cuentas de usuario.
tcsh: est basada en la antigua consola #C (csh); no es la consola por defecto de
las principales distribuciones, es similar a bash pero difiere de ella en algunos
detalles operacionales.
csh: es la consola #C original, no se usa mucho en linux.
ksh: consola korn, diseada con las mejores funcionalidades de las consolas bourne
y #C y las ampla. Tiene pocos seguidores en linux.
zsh: lleva la evolucin de la consola ms all de la korn, incorporando
funcionalidades de las consolas anteriores y aadiendo otras nuevas.

Hay disponibles ms consolas poco conocidas, pero la mayora de usuarios linux


ejecutan bash que es la opcin por defecto, otros SO emplean por defecto csh o tcsh,
lo que puede resultar ms comodo si se tiene experiencia con un SO de tipo UNIX
distinto de linux.
El fichero /bin/sh es un enlace simblico a la consola por defecto del sistema, que en
linux, suele ser /bin/bash.
Utilizar una consola
El uso de la consola es bastante intuitivo: se escribe un comando, al que se pueden
haber aadido o no opciones, y el ordenador ejecuta el comando. La mayora de los
comandos son externos, programas independientes de la consola; pero existen algunos
comandos internos, y puede ser importante saber la diferencia entre ellos. Permite
algunos pequeos trucos: hacer que el ordenador complete un comando o nombre de
fichero largo, recuperar un comando que se ha ejecutado, etc. Existe una clase de
comandos muy importantes, que son aquellos que se emplean para la administracin
bsica de ficheros.
Iniciar una consola
En linux, se puede acceder directamente a la consola a travs de una pantalla de acceso
en modo texto que abre directamente la consola por defecto; pero tambin podemos
acceder a travs de una interfaz grfica de usuario (GUI), lo que har que tengamos
que iniciar una consola manualmente. Para abrir esta consola, algunas GUI
proporcionan una opcin de men; en caso de que esta opcin no exista, deberemos
buscar una opcin que permita ejecutar un comando arbitrario donde escribiremos el
nombre de nuestra consola para que se ejecute.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

122

Figura 93: Iniciando una consola por interfaz grfica (GUI)


Fuente: Cibertec

Otra manera de iniciar una consola es con la combinacin de teclas Alt+F2, y


escribiendo gnome-terminal en el cuadro de dilogo.

Figura 94: Iniciando una consola


Fuente: Cibertec

Como resultado obtendremos un terminal o consola.

Figura 95: Consola de Centos


Fuente: Cibertec

Consolas virtuales
Una consola virtual es un intrprete de comandos en un ambiente no grfico, accesado
desde la mquina fsica, no remotamente. Se pueden acceder a mltiples consolas
virtuales simultneamente.
Desde la interfaz grfica, es posible conectarse a una consola virtual utilizando la
combinacin de teclas Ctrl+Alt+FN, donde N es un nmero del 1 al 6.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

123

Ejemplo: Acceder a la consola 3 desde la interfaz grfica


CTRL+ALT+F3
Una vez que est en una consola virtual, la navegacin entre las consolas se hace con
la combinacin de teclas Alt+FN, donde N es un nmero del 1 al 6.
A continuacin una tabla con las combinaciones de teclas para acceder a cada consola.
N de Consola Virtual

Combinacin de teclas

CV1

CTRL + ALT + F1

CV2

CTRL + ALT + F2

CV3

CTRL + ALT + F3

CV4

CTRL + ALT + F4

CV5

CTRL + ALT + F5

CV6

CTRL + ALT + F6

Algunos trucos de la consola de comandos


Escribir los comandos resulta una tarea tediosa que puede derivar en errores, sobre
todo si quien escribe es lento o descuidado; para evitar esto, la consola incluye varias
herramientas que ayudan a acelerar las operaciones. La primera es la complecin de
comandos, que nos ayudar a rellenar el resto del comando o el nombre de fichero una
vez tengamos escritas algunas letras; se emplea pulsando la tecla TAB y, si los
caracteres escritos no identifican a un nico comando o nombre de fichero, la consola
rellenar lo que pueda y se detendr. Si volvemos a pulsar TAB, se nos mostrarn las
posibles finalizaciones y, entonces, escribiremos uno o dos caracteres ms y
volveremos a pulsar TAB para que complete con el comando o nombre de fichero
deseado.
Los comandos bsicos suelen tener nombres cortos, pero hay otros que son muy largos:
los nombres de ficheros pueden ser bastante largos (hasta 255 caracteres en algunos
sistemas de ficheros), por lo que la complecin de comandos suele resultar muy til. Las
consolas ms habituales incluyen est opcin.
Otro atajo til es el historial, que guarda un registro de todos los comandos escritos, se
almacena en ~/.bash_history en el caso de bash. Para recuperar un comando del
historial que se haya escrito recientemente pulsaremos la fecha arriba tantas veces
como sea necesario hasta encontrarlo. Si nos pasamos de largo, pulsaremos flecha
abajo. Las combinaciones control+p y control+n duplican la accin flecha arriba y
flecha abajo. Si pulsamos control+r activamos la bsqueda inversa: escribiremos
caracteres que sean exclusivos del comando a localizar (no tienen por qu ser los
primeros caracteres del comando); podemos escribir ms caracteres o pulsar control+r
varias veces, hasta encontrar el comando. La combinacin control-s es similar, pero
busca hacia adelante. Si en cualquiera de los dos casos no queremos seguir con la
busqueda, pulsaremos control+g; si, por el contrario, localizamos el comando y
queremos editarlo, bash ofrece funcionalidades de edicin a partir de las del editor
emacs:

Desplazarse dentro de la lnea: control+a o control+e, desplazan el cursor al inicio


o final de la lnea. Las teclas flecha izquierda y flecha derecha sirven para
desplazarse caracter a caracter. control+flecha izquierda o flecha derecha sirve para

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

124

desplazarse de palabra en palabra, igual que si pulsamos la tecla escape (esc)


seguido de b o f.

Borrar texto: control+d o la tecla suprimir (supr) borran el caracter que hay bajo el
cursor; la tecla retroceso borra el caracter a la izquierda del cursor, control+k borra
todo el texto que hay entre el cursor y el final de la lnea. Si pulsamos control+x
seguido de retroceso, borraremos el texto que va del cursor al comienzo de la linea.

Intercambiar texto: pulsando control+t se intercambia el caracter que hay delante del
cursor por el que esta debajo del cursor; escape (esc) seguido de t intercambia las
dos palabras que hay justo antes del cursor o debajo de ste.

Cambiar maysculas y minsculas: escape (esc) seguido de u convierte a


maysculas el texto que hay entre el cursor y el final de la palabra; escape (esc)
seguido de l convierte a minsculas el texto que hay entre el cursor y el final de la
palabra. Escape (esc) seguido de c convierte en mayscula la letra que hay bajo
el cursor o la primera de la siguiente palabra, dejando intacto el resto de la palabra.

Llamar a un editor: podemos usar el editor que queramos para editar el comando, si
pulsamos control+x seguido de control+e, bash intentar iniciar el editor definido en
las variables de entorno $FCEDIT o $EDITOR o como ltimo recurso EMACS.

Estos comandos de edicin son los ms tiles de los que soporta bash; en la prctica,
se har un uso intensivo de la complencin de comandos y nombres de fichero del
historial de comandos y quizs alguna funcin de edicin.
El comando history proporciona una interfaz para visualizar y administrar el historial. Si
se escribe solo mostrar, por lo general, los ltimos 500 comandos; si aadimos un
nmero, mostrar ese nmero de comandos. La opcin -c limpia el historial, algo muy
til si hemos escrito comandos que no queremos mostrar, como aquellos que incluyen
contraseas.
Explorar la configuracin de la consola
Las consolas se configuran a travs de ficheros que contienen opciones de
configuracin en texto plano. Estos ficheros son realmente scripts en la consola bash y
sus principales ficheros de configuracin general son: /etc/[Link] y /etc/profile;
los principales para el espacio de usuario son: ~/.bashrc y ~/.profile. Se pueden realizar
cambios sencillos con nuestro editor de texto favorito en los scripts de la consola sin
saber mucho. Si no tenemos mucha experiencia, antes de cambiar una configuracin
es recomendable guardar una copia del fichero original, pues as, en el caso de
encontrarnos algn problema, podremos regresar a la copia guardada, hasta conocer
las causas del problema que se ha producido.
Uso de las variables de entorno
Las variables de entorno contienen informacin a la que se accede a travs del nombre
de la variable. Forman parte del entorno de un programa y pueden modificar dicho
entorno. Las variables de entorno definen informacin que se puede aplicar a muchos
programas diferentes, lo que evitar que tengamos que configurar ciertos datos
individualmente para cada programa. En bash se pueden definir utilizando un operador
de asignacin (=) seguido del comando export:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

125

#NNTPSERVER=[Link]
#export NNTPSERVER
O podemos combinar estos dos comandos en uno solo:
#export

NNTPSERVER=[Link]

Cualquiera de los dos mtodos define la variable de entorno $NNTPSERVER con el


valor [Link], las variables se definen omitiendo el signo de $, pero se utilizan
incluyndolo, lo que las identifica como variables de entorno.
Podemos ver el contenido que tiene una variable de entorno utilizando el comando echo
seguido del nombre de la variable:
#echo $NNTPSERVER
Tambin se puede ver el entorno completo escribiendo env, que dar como resultado
decenas de lneas de variables de entorno con sus valores. Si lo que queremos es borrar
una variable, utilizaremos el comando unset seguido del nombre de la variable sin el
smbolo dolar ($):
#unset NNTPSERVER
Obtener ayuda
Linux proporciona un sistema de ayuda de tipo texto conocido como man. Sus entradas
proporcionan breves resmenes de lo que hace un comando, fichero u otra funcin. El
comando man emplea el paginador less para mostrar la informacin. Para avanzar por
una pgina, pulsaremos barra espaciadora, para retroceder, escape (esc) seguido de
v; si lo que queremos es desplazarnos lnea a lnea, utilizaremos las flechas del cursor
arriba y abajo; con la barra (/) buscaremos texto, si queremos salir de less y de la pagina
man que nos esta mostrando, pulsaremos q.
Las pginas man se clasifican en varias secciones y hay veces que una misma palabra
posee entradas en diferentes secciones. Si esto ocurre, man devuelve la entrada de
nmero inferior, si lo que deseamos es una entrada superior, podemos forzar a man
escribiendo un nmero delante de la palabra clave. Por ejemplo, passwd tiene entradas
en las secciones 1 y 5, si queremos localizar la entrada nmero 5, escribiremos, man 5
passwd.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

126

Figura 96: secciones del manual MAN


Fuente: Cibertec

Hay programas que han pasado de las pginas man a tener pginas info. El objetivo es
el mismo, pero las info utilizan un formato de hipertexto que permite moverse entre las
secciones de la documentacin de un programa. Tanto man como info presentan un
estilo conciso y estn concebidas como herramientas de consulta, no como totorales,
por lo que suelen asumir cierta familiaridad con el comando o, al menos, con linux.
Comandos internos y externos
La diferencia entre estos dos tipos de comando no es ms que los internos son los
nativos de la consola. Digamos que los externos el intrprete no los sabe ejecutar y para
ello requiere su localizacin en el disco duro. Para encontrarlos, los buscar en una
serie de directorios, en concreto aquellos que estn indicados en la variable PATH.
Veamos que contiene la variable PATH del sistema:
# echo $PATH
/home/super/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R
6/bin:/usr/games:/usr/lib/jvm/jre/bin

Cada directorio separado por : es un lugar donde bash va a buscar dichos comandos
externos.
Algunos de los comandos internos de bash son:

cd: Comando utilizado para el cambio de directorio de trabajo.


pwd: Este comando muestra por pantalla el directorio de trabajo actual.
echo: Muestra el texto que le sigue. Se podra decir que es como un printf en C.
Al pasarle una variable, muestra su contenido.
exec: este comando se utiliza para la ejecucin de un programa especificado. Tiene
la funcionalidad adicional de ejecutarse junta a la consola, no crea un nuevo proceso.
Con esto, cuando finalice la ejecucin del programa, finalizar tambin la consola.
time: Muestra el tiempo que tardan en ejecutarse los siguientes procesos:
exit: cierra la consola.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

127

Podemos ver ms comandos internos ejecutando el comando help (tambin interno)


en nuestra consola.
De entre los comandos externos, podramos citar algunos:

ls: sin argumentos, muestra el contenido del directorio actual. Si le indicamos un


directorio, muestra el contenido de dicho directorio.
cp: copia un fichero o directorio.
mv: mueve un fichero a otro lugar. Si l directorio de destino es el mismo que el de
origen, en fichero se renombrar.
rm: borra un fichero

Comandos tiles
A continuacin, daremos una serie de comandos tiles para conocer aspectos generales
del sistema.
uname [parmetros]
La funcin de este comando es similar al anterior, la nica diferencia es que este nos
Arroja ms informacin del sistema de acuerdo al nmero de parmetros que le
[Link] parmetros que podemos usar son los siguientes:

-a: imprime el nombre kernel, del equipo, version del kernel, fecha en que fue
apagado el sistema por ultima vez, arquitectura del sistema
-s: imprime el nombre del kernel
-n: imprime el nombre del equipo
-r: imprimeversion del kernel
-i o p: imprime la arquitectura del equipo
-o: imprime el nombre del sistema operativo

Ejemplo:

Figura 97: Validando salida de uname -a


Fuente: Cibertec

date
Nos muestra la fecha que tiene registrado el sistema.
Ejemplo:

Figura 98: Salida del comando date


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

128

En caso de querer modificar la fecha solo se debe de seguir la siguiente sintaxis:


date [[Link]]
Ejemplo:

Figura 99: Cambiamos el da y la hora


Fuente: Cibertec

w
Indican los usuarios que se encuentran en el sistema as como lo que hacen en l.
Ejemplo:

Figura 100: Vemos quienes estn conectados


Fuente: Cibertec

whoami
Lo que hace es mostrar el nombre del usuario (username) en que estamos. whoami
equivale a id un o a who m.
Ejemplo:

Figura 101: Visualizamos usuario actual.


Fuente: Cibertec

who
El comando who nos sirve para ver los usuarios logueados y conocer diferentes datos
de las sesiones activas.

Figura 102: Visualizamos usuarios logueados.


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

129

Existen muchas opciones que pueden usarse como parmetros para el comando.
Algunas de ellas y su descripcin:
-b, tiempo transcurrido desde el inicio del sistema (boot).
-q, conteo de usuarios logueados al sistema.
-r, runlevel actual del sistema.
-u, usuarios logueados.
-a, listado detallado de sesiones con informacin extendida, tiempo de sistema y runlevel
actual.

Figura 103: Listado detallado de sesiones.


Fuente: Cibertec

pwd
El comando pwd nos muestra el directorio de trabajo actual donde nos encontramos en
este momento.

Figura 104: Visualizacin del directorio actual.


Fuente: Cibertec

hostname
Muestra o establece el nombre del sistema. Tambin sirve para obtener informacin
relativa sobre el mismo.
Opciones:

hostname -f Muestra el nombre de ni nodo completo, con dominio DNS.

hostname -i Muestra la direccin IP de mi nodo.

hostname -a Muestra los alias para mi nodo.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

130

hostname --fqdn muestra el FQDN (Nombre de Dominio Completamente


Especificado).

hostname nuevo_nombre cambia el nombre de mi nodo a nuevo_nombre, esto lo


realiza solo para la sesin actual, para hacer los cambios permanentes editar los
archivos /etc/sysconfig/network y /etc/hosts

Figura 105: Visualizacin de hostname.


Fuente: Cibertec

rmdir
El comando rmdir sirve para borrar carpetas, proviene de las palabras en ingls remove
directory (borrar directorio) y es una orden de Unix. Los directorios deben de estar vacos
para poderlos eliminar.
Opciones:

--ignore-fail-on-non-empty
o no tiene en cuenta los fallos que se producen nicamente porque un
directorio no est vaco
-p, --parents borra DIRECTORIO y sus ancestros.
o ej. `rmdir -p a/b/c' es similar a `rmdir a/b/c a/b a'.
-v, --verbose muestra un mensaje por cada directorio procesado
--help muestra esta ayuda y finaliza
--version informa de la versin y finaliza

Figura 106: Borrado de directorio vaco.


Fuente: Cibertec

touch
Este comando se utiliza para cambiar la fecha de acceso y/o modificacin a un archivo.
Su sintaxis es la que sigue:
touch [opcin...] archivo...
Si el argumento archivo corresponde al nombre de un archivo que no existe, a menos
que se le diga, touch crear el archivo con dicho nombre y sin ningn contenido.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

131

Figura 107: Creacin de archivo vaco.


Fuente: Cibertec

Opciones:

-a Cambia solamente el tiempo de acceso.

-c No crear archivos que no existan antes.

-d fecha Usar fecha en lugar de la fecha actual.


El formato de fecha es el siguiente: MMDDHHMMAAAA, por ejemplo para
representar el 7 de abril de 2002 a la 1:00 a.m., se escribir: 040701002002. Si el
ao a usar es el ao actual, se puede obviar, entonces el ejemplo anterior quedara
as: 04070100.

Este comando es muy til cuando se necesita recompilar cierta parte de un programa
evitando compilar todo el programa completo, slo aquellos sectores modificados
file
El comando file sirve para determinar el tipo de archivo.
Con este comando podemos comprobar fcilmente el tipo de fichero, esto es til porque
no tiene extensin, que por algn motivo creemos no es la correcta o porque
desconfiamos por alguna razn. Y entre otras cosas muestra la codificacin de
caracteres de los archivos de texto, srt, etc.

Figura 108: Visualizacin de tipo de archivo.


Fuente: Cibertec

dd
El comando dd copia archivos. Es usado para copiar particiones completas o incluso
clonar discos. Vamos a estudiar este comando mediante ejemplos:
Sintaxis:
dd if=origen of=destino
Por lo que si quisiramos clonar un disco duro:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

132

# dd if=/dev/hda of=/dev/hdb bs=1M


Con esto clonaramos el disco hda en hdb. (Discos IDE)
O para discos SATA:
# dd if=/dev/sda of=/dev/sdb bs=1M
Con bs=1M, estamos diciendo que tanto la lectura como la escritura se haga en bloques
de 1 megabyte (menos, sera ms lento pero ms seguro, y con ms nos arriesgamos
a perder datos por el camino).
Tambin sirve para copiar la informacin de un archivo a otro.

Figura 109: Visualizacin de copia de archivo con el comando dd.


Fuente: Cibertec

Info
El comando info se usa para mostrar la documentacin de lectura en lnea para el
comando especificado.
La sintaxis es
# info nombre_comando

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

133

Opciones:

-n Especifica los nodos en el primer archivo info visitado.


-f Especifica el archivo info a visitar.

Figura 110: empleo del comando info para mkdir.


Fuente: Cibertec

Figura 111: Visualizacin de ayuda del comando mkdir a travs de info..


Fuente: Cibertec

Gzip
Para comprimir ficheros en formato .gz, se utiliza el siguiente comando:
# gzip -9 fichero
Donde -9 le indica a gz que utilice el mayor factor de compresin posible.
Para descomprimir ficheros .gz, se utilizara el siguiente comando:
# gzip -d [Link]
Donde -d indica descompresin.
Bzip2
Para comprimir ficheros en formato bz2, se utiliza el siguiente comando:
# bzip2 fichero
Para descomprimir ficheros .bz2, se usa el comando siguiente:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

134

# bzip2 -d fichero.bz2
Donde -d indica descompresin.

Nota: Tanto el compresor gzip como bzip2, solo comprimen ficheros, no directorios,
para comprimir directorios (carpetas), se debe de usar en combinacin con tar.

Tar
El comando tar se usa para crear archivos y extraer los archivos archivados.
Ficheros tar
La sintaxis es:
# tar [opciones] [archivo-archivador] [Archivo o directorio a archivar]
Opciones:

Figura 112: Opciones del comado tar.


Fuente: [Link]

Ejemplo
:
Para archivar un directorio o archivo:
# tar -cvf [Link] /etc
Este comando crea un archivo tar llamado [Link] que es el archivo del directorio
/etc, donde [Link] es un archivo tar creado y /etc es un directorio archivado.
Para archivar un directorio o archivo y guardarlo en un dispositivo de almacenamiento:
# tar -cvf /dev/cdrom0 /home/user1/HGB

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

135

Este comando archivar el directorio /etc y lo guardar en el CD, donde /dev/cdrom0 es


el nombre de CD donde se guarda el archivo y /home/user1/HGB es un directorio
archivado. Para extraer el archivo:
# tar -xvf [Link]
Este comando extraer el archivo [Link]
Para listar los archivos de un archivo tar:
# tar -tvf [Link]
El comando anterior mostrar los archivos y directorios archivados en [Link].
Ficheros [Link]
Para comprimir ficheros en formato [Link], se utiliza el siguiente comando:
# tar -czfv [Link] ficheros

-c : indica a tar que cree un archivo.


-z : indica que use el compresor gzip
-f : indica a tar que el siguiente argumento es el nombre del [Link]
-v : indica a tar que muestre lo que va empaquetando

Para descomprimir ficheros con extensin [Link], se usa el siguiente comando:


# tar -xzvf [Link]

-x : le dice a tar que extraiga el contenido del fichero [Link]


-z : le indica a tar que esta comprimido con gzip
-v : va mostrando el contenido del fichero
-f : le dice a tar que el siguiente argumento es el fichero a descomprimir.

Para poder ver el contenido de un fichero comprimido en [Link], se usa el siguiente


comando:
# tar -tzf [Link]
Ficheros tar.bz2
Para comprimir en tar.bz2, se hace uso del parmetro pipeline ( | ), que consiste en que
filtra la salida de un comando a la entrada de otro, como es en este ejemplo: tar
empaqueta los distintos ficheros o directorios y su salida lo pasa al comando bzip2 para
que este lo comprima y el resultado de este, lo redirecciona ( > ) al fichero final tar.bz2.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

136

# tar -c ficheros | bzip2 > [Link].bz2


Para descomprimir ficheros tar.bz2, se utiliza el siguiente comando:
# bzip2 -dc [Link].bz2 | tar -xv
Y para ver el contenido de un fichero tar.bz2, se usa el siguiente comando:
# bzip2 -dc [Link].bz2 | tar t
zip
Para poder comprimir en formato zip, se usar el comando siguiente:
# zip [Link] ficheros a comprimir
Para poder descomprimir los ficheros zip, se usa el siguiente comando:
# unzip [Link]
Para ver el contenido de un fichero zip, se pone el siguiente comando:
# unzip -v [Link]
cpio
El comando cpio crea y elimina archivos cpio. Es capaz de copiar archivos a cosas
distintas de un disco duro. Probablemente, este comando se usa tambin para hacer
copia de seguridads y restaurar archivos.
Sintaxis:
# cpio [opciones]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

137

Opciones:

Figura 113: Opciones del comado cpio.


Fuente: [Link]

Ejemplo:
Encuentra la lista de archivos y directorios y los copia al cd.
# find . -print | cpio -ocv > /dev/cdrom0
Encuentra la lista de archivos y directorios y los copia o hace una copia de seguridad al
usuario.
# find . -print | cpio -dumpv /home/admin
Recupera los archivos del cd.
# cpio -icuvd < /dev/cdrom0
Set
Permite la modificacin de variables del Shell del usuario y tambin lista todas las
variables locales y variables del ambiente.
Sintaxis:
# set [-o | +o] opcin
Opciones:

Set
Lista todas las variables.
Set -o Lista cada opcin del Shell y su propiedad (on | off)

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

138

Set -o allexport Si activa esta opcin cada variable que se defina automticamente
ser exportada.
Set +o Desactiva la opcin.

Un error muy comn que las personas cometen cuando sobrescriben comandos como
cp y mv es sobrescribir los archivos correctos sin darse cuenta. Usted puede evitar ese
riesgo al utilizar un ''alias'' por ej., utilizando mv i en vez de mv. No obstante, cmo
puede evitar que alguien o algn script sobrescriba los archivos utilizando el operador
de re-direccionamiento (''>'')?
Veamos un ejemplo. Supongamos que usted tiene un archivo denominado
muy_importante.txt. Alguien (o algn script) involuntariamente utiliz algo como:
# ls -l > muy_importante.txt
El archivo inmediatamente se sobrescribi y usted pierde los contenidos originales del
archivo. Para evitar este riesgo, usted puede utilizar el comando set con la opcin -o
noclobber como se muestra a continucin:
# set -o noclobber
Luego de este comando, si alguien intenta sobrescribir el archivo:
# ls -l > muy_importante.txt
-bash: muy_importante.txt: cannot overwrite existing file
El shell ahora evita que se sobrescriba un archivo existente. Qu sucedera si desea
sobrescribirlo? Usted puede utilizar el operador >|.
# ls -l >| muy_importante.txt
Para desactivarlo:
# set +o noclobber
El comando set es tambin muy til para utilizar el editor vi para editar comandos. Una
manera rpida de reejecutar el comando es repitiendo los comandos utilizando el editor
vi. Para que ste ejecute este comando primero:
# set -o vi
Ahora supongamos que usted est buscando un comando que contenga la letra ''v''
(como en vi, o vim, etc.). Para buscar el comando, ejecute estas teclas. Las teclas que
deben presionarse se encuentran dentro del corchete:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

139

# [Escape Key][/ key][v key][ENTER Key]


Esto muestra el ltimo comando ejecutado que contenga la letra ''v''. El ltimo comando
en este caso fue set o vi; por lo tanto eso aparece en el command prompt.
# set -o vi
Si ese no es el comando que usted est buscando, presione la tecla ''n'' para obtener el
siguiente comando ms reciente. De esta manera usted puede recorrer todos los
comandos ejecutados con la letra ''v''. Cuando usted ve el comando, puede presionar
[tecla ENTER] para ejecutarlo. La bsqueda puede ser explcita si lo desea.
Supongamos que usted est buscando un comando mpstat ejecutado anteriormente.
Todo lo que tiene que hacer es ingresar esta cadena de bsqueda ''mpstat'':
# [Escape Key][/ key]mpstat[ENTER Key]
Supongamos que el comando de arriba muestra mpstat 5 5 y usted realmente desea
ejecutar mpstat 10 10. En vez de retipearlo, puede editar el comando en el editor vi.
Para hacerlo, presione [Tecla Escape] y la tecla [v], la cual colocar el comando en el
editor vi. Ahora puede editar el comando que desee. Cuando lo guarda en vi
presionando : wq, el comando modificado ser ejecutado.
Listado variables del sistema con set
Asimismo el comando set tambin es utilizado para listar las variables de entorno del
sistema:

Figura 114: Listado de variables del sistema con set.


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

140

El listado es muy amplio, as que acotamos la bsqueda a la variable que nos interesa:

Figura 115: Listado y filtro de la variable de entorno HOSTNAME con set y grep.
Fuente: Cibertec

Tee
El comando tee lee de la entrada estndar y escribe en la salida estndar o un archivo.
Sintaxis:
# tee a file
Ejemplo
Agrega la entrada al final del archivo prueba.
# cat /etc/passwd | tee prueba
Sobreescribe
# echo Texto | tee prueba
Enva la salida a dos archivos.
# cat /etc/group | tee file1 >file2

4.1.2. Personalizar y utilizar el entorno del terminal


Revisin de las variables de entorno
Las variables de entorno proporcionan medios para pasar datos con nombre a
programas iniciados desde la consola. Las propias consolas tambin se basan en
variables de entorno. Por ejemplo, $HOSTNAME normalmente almacena el nombre del
ordenador. Las variables de entorno se configuran manualmente a travs del operador
de asignacin de igualdad (=); para que est disponible utilizaremos el comando export:
#HOSTNAME=[Link]
#export HOSTNAME

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

141

O podemos combinar estos dos comandos en uno solo:


#export HOSTNAME=[Link]
En una lnea de comandos podemos revisar el contenido de una variable de entorno con
el comando echo o podemos escribir env para mostrar todas las variables de entorno.
#echo $HOSTNAME
Los nombres de variables de entorno van precedidos de un signo de dolar ($) en los
scripts y en las lneas de comandos de la consola, excepto cuando no estn asignadas.
El mtodo ms comn para definir una variable de entorno es definirla global o
localmente en un script de inicio.
Variables de entorno comunes y su significado
Podemos averiguar cmo estn configuradas las variables de entorno escribiendo env,
que se suele utilizar para ejecutar un programa con un conjunto de variables
modificadas; slo devuelve las variables que estn definidas actualmente en un formato
similar al de su asignacin:
#env | grep HOSTNAME
HOSTNAME= [Link]
Las variables y sus valores suelen ser nicos para cada sistema e incluso para cada
cuenta.
Nombre de la variable
USER o USERNAME
SHELL

PWD

HOSTNAME

PATH

CARRERA DE REDES Y COMUNICACIONES

Explicacin
Nombre del usuario actual. Es una
variable que mantiene el sistema.
Contiene la ruta a la consola de
comandos actual.
Directorio de trabajo actual, la variable la
mantiene el sistema. La utilizan los
programas para buscar cuando no se
proporciona una ruta completa.
Nombre de host tcp/ip actual del
ordenador.
Es una variable inusualmente importante.
Define la ruta de una sesin, que es una
lista de directorios separados por dos
puntos en los que linux busca los
programas ejecutables. Por ejemplo, si
PATH es /bin:/usr/bin y escribimos ls,
linux buscara un programa ejecutable
llamado ls en /bin y despus en /usr/bin.
Si el comando no se encuentra en la ruta
el sistema devolver un error. Esta
variable suele definirse en varios ficheros

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

HOME

MAIL
LANG

LD_LIBRARY_PATH

PS1

NNTPSERVER

TERM

DISPLAY

CARRERA DE REDES Y COMUNICACIONES

142

de configuracin como /etc/profile o


.bashrc.
Apunta a nuestro directorio home y hay
programas que la utilizan para buscar
ficheros de configuracin o como
ubicacin por defecto en la que
almacenar ficheros.
Contiene la ubicacin del buzn de correo
del
usuario.
Suele
ser
/var/spool/mail/nombredeusuario.
En el se guarda el idioma actual,
especificado como un ajuste local.
Hay programas que utilizan esta variable
para indicar los directorios en los que se
pueden encontrar los ficheros de
biblioteca. Es similar a PATH.
Es el promptpor defecto en bash
normalmente, incluye variables propias,
como \u para el nombre de usuario, \h
para el nombre de host y \w para el
directorio de trabajo actual, estos valores
se suelen definir en /etc/profile aunque los
suelen invalidar los usuarios.
Hay programas lectores de noticias de
usenet que utilizan esta variable para
especificar el nombre del servidor de
noticias. Su valor se puede definir en
/etc/profile o en los ficheros de
configuracin de los usuarios.
Contiene el nombre del tipo de terminal
actual. Linux necesita conocer que
comandos admite el terminal y as
mostrar un cursor de tipo texto y los
efectos en programas como los editores
de texto. TERM especifica el terminal en
uso, esta informacin junto con los datos
de los ficheros adicionales proporcionan
informacin del cdigo especifico del
terminal.
Se
suele
definir
automticamente al acceder a la terminal.
Identifica la visualizacin utilizada por X.
Suele ser :0.0, que corresponde a la
primera visualizacin del ordenador
actual. Cuando utilicemos X en un
entorno de red, este valor puede ir
precedido por el nombre del ordenador en
el que estamos sentados como por
ejemplo, [Link].0. El valor
se define automticamente cuando
accedemos pero podemos cambiarlo si lo
necesitamos. Podemos ejecutar varias
sesiones X en un ordenador y cada una
obtendr un nmero de DISPLAY distinto,

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

143

por ejemplo :0.0 para la primera sesin y


:1.0 para la segunda.
Suelen utilizarla algunos programas
cuando necesitan llamar a un editor de
texto, por lo que puede ser de utilidad
configurar esta variable con nuestro
editor de texto favorito. Lo mejor suele ser
definira con un editor en modo texto ya
que los editores GUI pueden causar
problemas si se les llama desde un
programa iniciado desde un acceso de
tipo texto.

EDITOR

Fuente: [Link]

Advertencia:
La variable PATH, a veces, incluye el indicador de directorio actual (.) para que se
puedan ejecutar programas en el directorio actual. Esta prctica supone un riesgo para
la seguridad, ya que alguien podra crear un programa con el mismo nombre que algn
otro y engaar a otro usuario para que lo ejecute dejndolo en un directorio que
frecuente la vctima. Incluso root podra verse afectado. Es preferible omitir este
directorio en la variable PATH. Si es necesario para los usuarios normales, los
colocaremos al final de la ruta.
Es probable que haya otras variables de entorno definidas, pero suelen estar
relacionadas con programas especificos. Si un programa dice que necesita tener
definidas determinadas variables de entorno, podemos definirlas para todo el sistema
en /etc/profile o bien en los ficheros de configuracin del usuario. La salida de env es
demasiado larga, por lo que, sii queremos conocer el valor de una variable, lo mejor es
utilizar el comando echo. Si le pasamos el nombre de la variable precedido de un signo
de dolar, echo mostrar el contenido de la variable.
Uso de los alias
Los alias de comandos son nuevos nombres que se les pueden dar a los comandos
normales. Se suelen utilizar para asignar a los comandos ms raros unos nombres ms
fciles de recordar, para implementar las opciones deseadas como valores por defecto
para los comandos o para crear una versin reducida de un comando y as minimizar el
nmero de teclas a pulsar. Se pueden definir los alias de manera especfica en cualquier
prompt de bash, pero lo normal es incluirlos en un script de inicio de bash. Para
implementar un alias utilizaremos la siguiente sintaxis:
# alias nombre_alias=comandos
nombre_alias es lo que escribiremos en el prompt de manera que la consola sustituya
comandos por lo que hayamos escrito. Por ejemplo, para activar la opcin color del
comando ls y que se utilice por defecto, emplearemos alias de la siguiente manera.
# alias ls=ls color
De esta manera ls se convierte en un alias para una versin extendida de s mismo. El
ls de la derecha del signo de igualdad no est expandido. Despus de crear este alias,

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

144

al escribir ls funcionar como si hubieramos escrito ls colot. Este alias suele formar
parte de los scipts de inicio de bash de muchas distribuciones.
El nombre de alias no tiene por que estar relacionado con el nombre del comando. Por
ejemplo, si deseamos escribir bye en lugar de logout para finalizar una sesin en modo
texto, haremos lo siguiente:
# alias bye=logout
En la prctica estos alias no resultan tiles si los introducimos manualmente en el prompt
de comandos, ya que si salimos de la sesin no volvern a estar disponibles. Lo
aconsejable es incluirlos en un script de inicio de bash para as no tener que escribir el
alias manualmente en cada sesin, pues se crear automticamente cada vez que
accedamos.
Modificar los ficheros de configuracin de la consola
La configuracin de la consola requiere la edicin de ficheros que se pueden clasificar
de un par de maneras. En primer lugar, puede tratarse de ficheros globales que afecten
a todos los usuarios o de ficheros locales que afecten slo a un usuario. Por otra parte,
puede tratarse de ficheros de acceso que slo se ejecutan una vez en un proceso de
acceso (por ejemplo, acceso a una consola) o de ficheros que no pertenecen al acceso
y que ejecutan otros procesos (por ejemplo, iniciar una ventana xterm). El resultado es
una matriz 22 de ficheros de configuracin, como se muestra en la siguiente tabla:

Figura 116: Ficheros de configuracin de bash comunes


Fuente: [Link]

Los ficheros utilizados varan segn la distribucin pero, independientemente del


nombre, estos ficheros son scripts de consola. La mayora de ellos contienen una serie
de comandos de bash, tanto nativos como externos.
Los ficheros de configuracin global afectan a todos los usuarios, pero los usuarios
individuales pueden invalidar sus parmetros, bien mediante ficheros de configuracin
de usuario, bien a travs de comandos escritos por los propios usuarios. Por tanto, no
deberamos confiar en los ficheros de configuracin globales para definir opciones que
los usuarios no deberan cambiar. Es preferible centrarse en las funcionalidades de
seguridad global, como los permisos sobre los ficheros ejecutables.
El directorio /etc/skel contiene ficheros que se copian en los directorios home de los
usuarios cuando se crean las cuentas. Normalmente, este conjunto de ficheros incluye
ficheros de inicio de bash locales; podemos alterarlos para que se ajusten a nuestras
necesidades. Los cambios en estos ficheros slo afectarn a las nuevas cuentas, no a
las existentes. Para realizar cambios que afecten tanto a los usuarios existentes como
a los nuevos, deberamos editar un fichero de configuracin global. Las consolas poseen
scripts de inicio y de desconexin, en bash este script es ~/.bash_logout. La mayora

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

145

de distribuciones crean este script como parte del directorio home, aunque los usuarios
tambin pueden hacerlo. Este script de desconexin podra ejecutar programas para
limpiar los directorios temporales, eliminar claves de seguridad de la memoria u otro tipo
de tareas apropiadas cuando un usuario se desconecta.
Advertencia:
Un problema de los scripts de desconexin es que puede que no funcionen
correctamente cuando un usuario accede varias veces. Si tenemos abiertas varias
sesiones, como en el caso de tener varias terminales virtuales de Linux, debemos tener
cuidado con lo que incluimos en el script de desconexin para evitar borrar ficheros
temporales importantes cuando salgamos slo de una sesin.
Otro fichero de configuracin de bash es ~/.inputrc, que sirve para poder personalizar la
configuracin del teclado. Consta de lneas que tienen el siguiente aspecto:
M-Control-u: universal-argument
Esta lnea asocia la combinacin de teclas Meta-Control-U con la accin universalargument. La tecla Meta suele ser la tecla Esc y la accin universal-argument es una de
las acciones definidas por la biblioteca readline, que es una de las bibliotecas bsicas
de introduccin en modo texto.
Normalmente no es necesario ajustar el fichero ~/.inputrc, las asociaciones por defecto
de redline funcionan correctamente con teclados estndar. Sin embargo, si una
combinacin de teclas no funciona como debera en modo texto, deberamos investigar
ms sobre esta configuracin. X utiliza sus propias rutinas de introduccin por teclado,
por lo que ~/.inputrc no afectar a los programas que se ejecuten en X, aunque sean
programas en modo texto que se ejecuten dentro de ventanas xterm.

4.1.3. Procesar flujos de texto usando filtros


La filosofa linux es proporcionar herramientas pequeas que puedan combinarse
mediante pipes y redirecciones para realizar tareas ms complejas. Es por esto que hay
disponibles muchos comandos sencillos para manipular textos y que realizan tareas
como combinar ficheros, transformar datos en ficheros, formatear texto, mostrar texto o
resumir la informacin. Muchos comandos permiten omitir los ficheros de entrada y
pasan directamente a leer la informacin de la entrada estndar.
Comandos para combinar ficheros
En esta categora hay 3 comandos importantes: cat, join y paste, que unen ficheros
completos o los fusionan lnea a lnea.
Combinar ficheros con cat
cat es la abreviatura de concatenar, sirve para enlazar de principio a fin un nmero
arbitrario de ficheros y enva el resultado a la salida estndar. Si lo combinamos con la
redireccin de salida, podremos obtener fcilmente dos ficheros en uno.
#cat

[Link] [Link] > [Link]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

146

cat tambin se suele utilizar para mostrar el contenido de un fichero pequeo, pasndole
a cat slo el nombre del fichero a mostrar. Para ficheros grandes es mejor utilizar
paginadores como more o less. cat admite varias opciones que realizan pequeas
modificaciones a los ficheros segn los combina:

Mostrar los finales de lnea: -E o show-ends muestra un signo de dolar ($) al final
de cada lnea.
Numerar lneas: las opciones -n o number agregan nmeros de lnea al comienzo
de cada una. Las opciones -b o number-nonblank son similares, pero slo
muestran las lneas que contienen texto.
Minimizar as lineas en blanco: -s o squeeze-blank comprimen los grupos de
lineas en blanco en una sola linea en blanco.
Mostrar los caracteres especiales: -T o show-tabs muestra los caracteres de
tabulacin como ^I. -v o show-nonprinting muestra la mayora de los caracteres de
control y otros caracteres especiales empleando circunflejos (^) y notaciones M-.

Figura 117: Imprimir el contenido del archivo a la salida standar


Fuente: Cibertec

El comando tac es similar a cat, pero invierte el orden de las lneas de salida.

Figura 118: comando tac hace todo lo contrario del comando cat
Fuente: Cibertec

Asociar ficheros por campos con join


join combina dos ficheros comparando el contenido de los campos especificados de los
ficheros. Los campos suelen ser entradas separadas por espacios dentro de una lnea;
se puede especificar otro caracter como separador con la opcin -t char (char es el
carcter que se quiere usar). join puede ignorar maysculas y minsculas durante las
comparaciones utilizando la opcin -i.
Fichero 1: nmeros de telfono y nombres
555-2397
555-5116
555-7929
555-9871

Beckett,
Carter,
Jones,
Orwell,

Barry
Gertrude
Theresa
Samuel

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

147

Fichero 2: nmeros de telfono y estado


555-2397
555-5116
555-7929
555-9871

unlisted
listed
listed
unlisted

Si combinamos estos dos ficheros con join quedaria de la siguiente manera:


#join

[Link]

555-2397
555-5116
555-7929
555-9871

Beckett,
Carter,
Jones,
Orwell,

[Link]
Barry
Gertrude
Theresa
Samuel

unlisted
listed
listed
unlisted

join, por defecto, utiliza el primer campo para realizar las comprobaciones con el resto
de los ficheros. En este ejemplo, el campo clave de la salida es el primero, ya que los
dos contienen el nmero de telfono. Con las opciones -1 o -2 podremos especificar el
campo de asociacin del primer o segundo fichero respectivamente, por ejemplo, join 1 3 -2 2 [Link] [Link] asocia el tercer campo de [Link] y el segundo campo
de [Link]. -o FORMAT permite especificaciones ms complejas para el formato de
fichero de salida.
join se puede utilizar en un conjunto de sencillas herramientas personalizadas para la
manipulacin de bases de datos que empleen los comandos de manipulacin de texto
de linux, aunque est muy limitado. Por ejemplo, hace falta que las lneas de sus dos
ficheros tengan el mismo orden.
Fusionar lneas con paste
paste fusiona ficheros lnea a lnea, separando las lneas de cada fichero mediante
tabulaciones:
#paste

[Link]

555-2397
555-5116
555-7929
555-9871

Beckett,
Carter,
Jones,
Orwell,

[Link]

Barry 555-2397 unlisted


Gertrude 555-5116 listed
Theresa 555-7929 listed
Samuel 555-9871 unlisted

Figura 119: Imprimir el contenido de unin de dos archivos


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

148

Figura 120: Imprimir el contenido de unin de dos archivos con delimitador @


Fuente: Cibertec

Se puede utilizar paste para combinar datos de ficheros que no estn codificados de
manera que puedan ser utilizados por join. Para que el resultado tenga sentido, los
nmeros de lnea de los ficheros deben ser exactamente equivalentes. Tambin se
puede utilizar como medio rpido para crear una salida de dos columnas de datos de
tipo texto; si las longitudes de las lneas no son parejas, stas no quedarn alineadas
con exactitud, al igual que en el ejemplo anterior.
Comandos de transformacin de ficheros
Muchos comandos de manipulacin de texto estn pensados para transformar el
contenido de los ficheros: lo que hacen es enviar el fichero modificado a la salida
estndar para que, despus, podamos canalizar esta salida hacia otro comando o a un
nuevo fichero. Uno de los comandos importantes para la transformacin de ficheros es
sed, que es muy complejo.
Convertir tabulaciones en espacios con expand
En ocasiones, los ficheros de texto contienen tabulaciones y hay programas que tienen
que procesarlos, pues no las toleran directamente. Tambin puede ocurrir que el editor
que utilicemos emplee un carcter de tabulacin diferente al editor en el que se creo el
fichero. En casos como stos es recomendable convertir las tabulaciones en espacios
lo que se puede realizar con expand. Este comando, por defecto, supone que hay una
tabulacin cada 8 caracteres, este espaciado se puede cambiar con las opciones -t num
o tabs=num, donde num es el valor del espaciado.

Figura 121: empleo del comando expand con t1 para quitar la primera tabulacin.
Fuente: Cibertec

Mostrar ficheros en octal con od


Algunos ficheros emplean caracteres que no pertenecen a ASCII y pueden parecer un
galimatas o provocar resultados extraos al intentar visualizarlos. Puede que deseemos
visualizar estos ficheros, sobre todo si queremos investigar la estructura de un fichero
de datos. Quizs queramos tambin inspeccionar un fichero ASCII de un modo que
despeje ciertas ambigedades, como si un salto entre palabras se debe a una tabulacin
o varios espacios, en estos casos od (octal dump) puede ser de ayuda, ya que muestra
los ficheros en un formato sin ambigedades, empleando por defecto nmeros octales
(en base 8).

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

149

El tipo de salida que genera od puede ser difcil de interpretar a menos que estemos
acostumbrados a la notacin en octal y al cdigo ASCII, od no slo genera salida en
octal sino que tambin puede generar muchos otros formatos de salida, como
hexadecimal (base16), decimal (base 10) e incluso ASCII con caracteres de control
indicados mediante caracteres de escape.

Figura 122: Volcado de datos a hexadecimal


Fuente: Cibertec

Figura 123: Volcado de datos a hexadecimal (od t x2 file5)


Fuente: Cibertec

Figura 124: Volcado de datos en octal (od t oC file5 es lo mismo)


Fuente: Cibertec

Obtener ficheros con sort


sort genera un fichero de salida ordenado de varias maneras, entre las que se incluyen:

Ignorar maysculas y minsculas: -f o ignore-case hacen que sort no tenga en


cuenta la diferencia entre maysculas y minsculas.
Ordenar por meses: -M o month-sort hace que el programa ordene en
abreviaturas de tres letras los meses que van de JAN a DEC.
Ordenacin numrica: podemos ordenar por nmeros empleando las opciones -n
o numeric-sort.
Invertir el orden: las opciones -r o reverse ordenan a la inversa.
Campo de ordenacin: por defecto, sort utiliza el primer campo como campo para
la ordenacin. Para especificar otro campo, utilizaremos las opciones: -k campo o
key=campo. campo puede estar compuesto por dos campos numerados separados
por comas (,), para ordenar por varios campos.

Figura 125: fichero ordenado a la inversa


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

150

Figura 126: fichero ordenado numricamente usando k Numero de campo


Fuente: Cibertec

El comando sort admite muchas ms opciones, aunque bastantes de ellas son muy
exticas.
Dividir en partes un fichero con split
split puede dividir un fichero en dos o ms ficheros. Este comando requiere que
introduzcamos el nombre de fichero de salida y, normalmente, tambin deberemos
especificar el tamao que deseemos que tengan los ficheros individuales:

Dividir por bytes: -b tamao o bytes=tamao divide el fichero de entrada en partes


del tamao indicado. Esta opcin puede tener la desagradable consecuencia de
cortar el fichero por la mitad de una lnea.
Dividir por bytes en bloques determinados por las lineas: podemos dividir un
fichero en ficheros de un tamao no superior al especificado sin romper sus lneas
utilizando las opciones -C=tamao o line-bytes=tamao, las lneas se seguirn
dividiendo en ficheros si la longitud de stas es superior al tamao indicado.
Dividir por nmero de lineas: -l lneas o lines=lneas divide el fichero en bloques
de un tamao no superior al nmero de lneas especificado.

Figura 127: Visualizacin de contenido de fichero file


Fuente: Cibertec

Figura 128: Split divide el archivo en n partes teniendo en cuenta las lneas que se tienen. Por defecto es 1.
Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

151

Traducir caracteres con tr


tr cambia caracteres individuales de la entrada estndar. Su sintaxis es la siguiente:
tr

[opciones]

SET1

[SET2]

SET1 especifica los caracteres que se quieren remplazar y SET2 especifica los
caracteres con los que se quieren remplazar. Cada carcter de SET1 ser reemplazado
por el de su posicin equivalente en SET2. Si SET2 es ms corto que SET1, tr sustituye
con la ultima letra de SET2 las que faltan de SET1. Las opciones -t o truncate-set1
hace que tr corte SET1 en funcin del tamao de SET2.
La opcin -d hace que el programa borre los caracteres de SET1. Si utilizamos esta
opcin, podemos omitir totalmente SET2. tr acepta tambin varios atajos como [:alnum:]
(todos los nmeros y letras), [:upper:] (todas las letras maysculas), [:lower:] (todas las
letras minsculas) y [:digit:] (todos los dgitos). Tambin podemos especificar un rango
de caracteres separndolos con guiones (-); por ejemplo, A-M engloba los caracteres
que van de la A a la M, ambas incluidas.

Figura 129: Parmetros de comando tr


Fuente: Cibertec

De uso ms frecuente:
-d borra los caracteres en el string1 de la salida.
-s borra los caracteres repetidos
-c se usa para complentar al string1 o todos los caracteres que no estan.

Figura 130: empleo del comando tr


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

152

Figura 131: eliminacinde los caracteres no imprimibles, salvo el caracer de nueva lnea.
Fuente: Cibertec

Convertir espacios en tabulaciones con unexpand


Es el opuesto a expand y convierte varios espacios en tabulaciones. Sirve para
comprimir el tamao de ficheros con muchos espacios y es til si un fichero va a ser
procesado por una utilidad que espera tabulaciones en determinados puntos. Acepta las
opciones -t num o tabs=num que definen el espaciado de la tabulacin a num
caracteres. En caso de omitir esta opcin, unexpand supone que las tabulaciones son
cada 8 caracteres.

Figura 132: unexpand convierte espacios en tabulaciones.


Fuente: Cibertec

Borrar lneas duplicadas con uniq


uniq elimina las lneas duplicadas. Es til cuando ordenamos un fichero y no deseemos
tener elementos duplicados en l, por lo que, por lo general, lo utilizaremos junto al
comando sort. Su sintaxis junto al comando sort sera la siguiente:
#sort

archivo_a_ordenar

CARRERA DE REDES Y COMUNICACIONES

| uniq

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

153

La salida de uniq va dirigida a la salida estndar, por lo que podremos visualizarlo por
pantalla o usar los redirectores para enviar la informacin a un fichero.

Figura 133: empleo de comando uniq para mostrar datos unicos.


Fuente: Cibertec

Figura 134: Conteo de las repeticiones


Fuente: Cibertec

Figura 92: Muestra solo los datos que se repiten


Fuente: Cibertec

Figura 135: Muestra solo los datos que no se repiten


Fuente: Cibertec

Comandos de formato de ficheros


fmt, nl y pr dan formato al texto de un fichero. fmt est pensado para volver a dar formato
a los ficheros de texto; por ejemplo, en un fichero donde las lneas son demasiado largas
para poder visualizarlas, nl numera las lneas de un fichero y pr es una herramienta de
procesamiento de la impresin, que da a los documentos un formato de pgina
adecuado para tal fin.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

154

Volver a dar formato a prrafos con fmt


A veces los ficheros vienen con lneas muy largas, con longitudes irregulares y otros
problemas esto se puede arreglar utilizando un editor de texto o bien limpiando el
fichero con fmt. Si lo ejecutamos sin opciones, el programa intentar limpiar los prrafos,
que supone delimitados por dos o ms lineas en blanco o por cambios de sangra. El
formato por defecto para el nuevo prrafo tiene no menos de 75 caracteres de ancho,
con las opciones -ancho, -w ancho o width=ancho podemos modificar el
comportamiento por defecto de fmt e indicar el ancho en caracteres que tendran las
lneas.

Figura 136: empleo del comando fmt


Fuente: Cibertec

Numerar las lneas con nl


Si necesitamos realizar numeraciones complejas, emplearemos nl y no cat que tiene
una numeracin de lneas ms limitada. nl obtiene casi el mismo resultado que cat -b
(numerar todas las lneas que no estn vacas). Podemos aadir opciones a nl para
conseguir determinados efectos:

Estilo de numeracin del cuerpo: -b estilo o body-numbering definen el estilo de


numeracin para el grueso de las lneas. estilo es el cdigo del formato del estilo,
descrito abreviadamente (hay diferentes tipos de estilo).
Estilo de numeracin de encabezado y pie: si el texto tiene encabezado o pie de
pgina, podemos definir el estilo de stos con las opciones -h estilo o headernumbering=estilo para el encabezado y -f estilo o footer-numbering=estilo para el
pie.
Separador de pginas: algunos esquemas de numeracin reinicializan lo nmeros
de lnea en cada pgina. Podemos indicarle a nl como identificar una nueva pgina
con las opciones -d cdigo o section-delimited=cdigo, donde cdigo es el cdigo
del caracter que identifica la nueva pgina.
Opciones de nmero de lnea para las nuevas pginas: si le pasamos las
opciones -p o no-renumber, nl no reinicializara el nmero de lnea al llegar a una
nueva pgina.
Formato de los nmeros: -n formato o numberformat=formato especifica el
formato de la numeracin, donde formato es: ln justificado a la izquierda, sin ceros
iniciales, rn justificado a la derecha sin ceros iniciales o justificado a la derecha con
ceros iniciales.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

155

Las opciones body, header y footer permiten especificar un estilo de numeracin para
cada uno de estos elementos de pgina:

Numerar slo las lneas que no estn vacas: este es el comportamiento por
defecto que corresponde con el valor t de style.
Numerar todas las lneas: para lograrlo especificaremos el valor a para style.
No numerar las lneas: especificando el valor n para style omitiremos los nmeros
de lnea.
Numerar las lneas que coincidan con una expresin regular: un valor REGEXP
para style numera aquellas lneas que coincidan con la expresin regular REGEXP.

Si creamos un script que no funciona como esperbamos, cuando lo ejecutemos


obtendremos mensajes de error que hacen referencia nmeros de lnea. Para poder
localizar estas lneas podemos crear una versin del script con las lneas numeradas y
as encontrar ms fcilmente donde est el error. Este script con las lneas numeradas
no podr ser ejecutado, ya que tiene nmeros al principio de cada lnea, pero si
podremos utilizar un paginador o un editor de textos para visualizarlo y, gracias a la
numeracin, localizar las lneas que fallan.

Figura 137: Visualizacin del archivo a utilizar.


Fuente: Cibertec

Figura 138: empleo del comando nl con h (seteo de estilo header) con a para numerar.
Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

156

Figura 139: empleo del comando nl con b (seteo de estilo body) con a para numerar.
Fuente: Cibertec

Preparar un fichero para imprimir con pr


EL comando pr prepara un fichero en texto plano para imprimirlo en su forma ms
bsica. Se usa de la siguiente manera:
#pr

[Link]

El resultado es un texto formateado para imprimir en una impresora, pr asume por


defecto una longitud de lnea de 80 caracteres con una fuente monoespacial. Se puede
utilizar pr (|) en un pipe tanto para aceptar la entrada de otro programa como para enviar
su salida hacia otro programa. Por defecto, pr genera una salida con el texto original y
encabezados con la fecha y hora actuales, el nombre del fichero original y en nmero
de pgina. Se puede alterar la salida de varias maneras:

Generar una salida multi-columna: las opciones -numcols o columms=numcols


crean una salida con un nmero de columnas numcols. pr no altera el formato del
texto: si hay lneas demasiado largas, se truncarn o se desbordarn ocupando
varias columnas.
Generar una salida con espacios dobles: -d o double-space generan una salida
con espacios dobles a partir de un fichero con espacios simples.
Utilizar el salto de pgina: pr separa las pginas utilizando un nmero fijo de lneas
en blanco. Esto funciona si la impresora utiliza el mismo nmero de lneas que
espera pr. Si tenemos problemas, utilizaremos las opciones -F,-f o form-feed para
crear una salida con un carcter de salto de pgina entre pginas, que es ms
adecuado para ciertas impresoras.
Definir la longitud de pgina: -l lneas o length=lneas definen la longitud en
lneas de la pgina.
Definir el texto del encabezado: -h texto o header=texto definen el texto a mostrar
en el encabezado sustituyendo al nombre del fichero. Para especificar varias
palabras, las entrecomillaremos. Las opciones -t o omit-header omiten totalmente
el encabezado.
Definir el margen izquierdo y el ancho de pginas: -o caracteres o
indent=caracteresdefinen el nmero de caracteres del margen izquierdo, que se
suma al ancho de la pgina, el cual es, por defecto, de 72 caracteres; puede ser
ajustado con las opciones -w caracteres o width=caracteres.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

157

pr admite muchas ms opciones que se pueden consultar en su pgina MAN. Por


ejemplo, si queremos imprimir una versin numerada y a doble espacio del
fichero /etc/profile para poder consultarlo, lo haremos de la siguiente manera:
#cat -n /etc/profile | pr -d | lpr
cat -n genera una salida numerada, pr -d genera una salida con espacios dobles y lpr
imprime el fichero. Si el fichero contiene lneas que se acercan o exceden los 80
caracteres, el resultado puede tener lneas que ocupen el espacio de dos, lo que
sobrepasar los lmites de la pgina. La solucin es definir una longitud de pgina ms
corta con la opcion -l, y -f para asegurarnos que la impresora recibe los saltos de pgina
tras cada una de ellas:
#cat -n /etc/profile | pr -dfl 50 | lpr

Figura 140: empleando comando pr para paginar archivo antes de imprimir.


Fuente: Cibertec

Comandos para visualizar ficheros


Hay unos cuantos comandos que nos pueden ayudar a visualizar los ficheros sin tener
que cargarlos en un editor, el comando cat tambin resulta til para este fin aunque no
fue diseado para ello.
Visualizar el inicio de los ficheros con head
El comando head muestra las 10 primeras lneas de uno o ms ficheros por la salida
estndar. En caso de que sean varios nombres de fichero, la salida de cada uno ir
precedida de un encabezado que permitir identificarlo. Se puede modificar la cantidad
de informacin mostrada por head de dos maneras:

Especificar el nmero de bytes: -c num o bytes=num hacen que head muestre num
bytes en lugar de las 10 lneas por defecto.
Especificar el nmero de lneas: -n num o lines=numcambian el nmero de lneas
a mostrar.

Figura 141: empleando comando head imprimiendo los primeros n bytes.


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

158

Visualizar el final de los ficheros con tail


El comando tail muestra las 10 ltimas lneas de un fichero, aunque se pueden utilizar
las opciones -c/bytes y -n/lines para cambiar la cantidad de informacin mostrada, al
igual que con head. Se suele utilizar para examinar la actividad reciente en los ficheros
de registro o en otros ficheros a los que haya que aadir datos. Admite varias opciones
que permiten al programa abordar tareas adicionales entre las que se incluyen:

Hacer el seguimiento de un fichero: -f o follow le indican a tail que mantenga el


fichero abierto y que muestre las nuevas lneas que se le aadan. Es til para hacer
un seguimiento a los ficheros de registro, ya que permite visualizar los cambios
conforme se van incorporando al fichero.
Dejar de hacer el seguimiento al finalizar el programa: pid=PID le indican a tail que
deje de hacer un seguimiento (iniciado por -f o follow) una vez que haya finalizado
el proceso cuya PID es pid.

Figura 142: empleando comando tail, con c 1k vemos los primeros 1k del archivo.
Fuente: Cibertec

Figura 143: empleando comando tail, con f muestra en tiempo real lo que se escriba en el archivo.
Fuente: Cibertec

Recorrer los ficheros pgina a pgina con less


less es una versin mejorada de more pues permite leer un fichero de pantalla en
pantalla. Cuando escribimos less fichero se muestran las primeras lneas del fichero.
Despus, podremos avanzar o retroceder en las pginas del fichero:

Pulsando barra espaciadora, avanzaremos por el fichero de pantalla en pantalla.


Pulsar esc seguido de v permite retroceder en el fichero de pantalla en pantalla.
Las teclas flecha arriba y flecha abajo recorren el fichero lnea a lnea.
Para buscar dentro de un fichero escribiremos / seguido del trmino a buscar. La
bsqueda se realizar a partir de la posicin actual. Si escribimos una / y pulsamos
intro, pasaremos a la prxima aparicin del termino a buscar. n repite la bsqueda
hacia adelante y N repite la bsqueda hacia atrs.
Para buscar hacia atrs en el fichero utilizaremos el signo de interrogacin (?) en
lugar de la barra (/).
Para moverse a una lnea especfica escribiremos g seguido del nmero de lnea,
de modo que g50 nos llevara a la lnea 50.
Para salir del programa escribiremos q.
less no se puede utilizar en un pipe (|) a menos que sea el comando final de ste. En
esta situacin, resulta til para examinar fcilmente una salida larga. Suele ser el
paginador por defecto en los sistemas linux, aunque muchos sistemas de tipo unix
utilizan more, lo que limita las funciones de visualizacin de ficheros. less dispone de

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

159

muchas ms utilidades: una de ellas es h, que mostrar el sistema de ayuda interno con
un resumen de los comandos que podemos utilizar.
Comandos para resumir ficheros
El comando cut toma segmentos de un fichero de entrada y los enva a la salida
estndar, mientras que el comando wc muestra algunas estadsticas bsicas del fichero.
Extraer texto con cut
El comando cut permite especificar por dnde cortar las lneas de entrada y despus
mostrar las lneas modificadas por la salida estndar:

Por byte: -b lista o bytes=lista cortan la lista especificada de bytes del fichero de
entrada.
Por carcter: -c lista o characters=lista cortan la lista especificada de caracteres
del fichero de entrada. Suele dar el mismo resultado que el de corte por byte, a no
ser que el fichero de entrada utilice una codificacin multi-byte.
Por campo: -f lista o fields=lista cortan la lista de campos especificada del fichero
de entrada. Un campo es una seccin de una lnea delimitada por tabulaciones. Se
puede cambiar el carcter delimitador con las opciones -d char, delim=char o
delimiter=char, donde char es el carcter que delimita los campos. Por lo general,
cut muestra lneas que no contienen delimitadores; las opciones -s o only-delimited
hacen que el programa no muestre las lneas que no contienen el carcter
delimitador. Una lista es una forma de especificar muchos bytes, caracteres o
campos, lo que se puede hacer a travs de un nmero (como 4), un rango cerrado
(como 2-4) o un rango abierto (como -4 o 4-). El comando cut se utiliza en scripts
para extraer datos de la salida de otros comandos.

Para extraer datos de una salida se puede combinar cut con grep mediante un pipe (|).
As, de esta manera, slo tendremos que cortar las lneas que necesitemos.

Figura 144: empleando comando cut para mostrar caracteres por columnas de 1-10 del archivo passwd.
Fuente: Cibertec

Generar un contador de palabras con wc


wc genera un contador de palabras de un fichero, que tambin cuenta lneas y bytes:
#wc
308

[Link]
2343

15534

[Link]

Este fichero contiene 308 lneas (ms exactamente 308 caracteres de salto de lnea),
2343 palabras y 15534 bytes. Se puede limitar la salida al recuento de saltos de lnea
(lines o -l), el de palabras (words o -w), el de bytes (bytes o -c) o al de caracteres (
chars o -m). Tambin podemos saber la longitud mxima de lnea con la opcin maxlinelenght o -L.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

160

Figura 145: empleando comando wc.


Fuente: Cibertec

Figura 146: empleando comando wc para contar caracteres.


Fuente: Cibertec

Figura 147: empleando comando wc para contar lneas.


Fuente: Cibertec

Figura 148: empleando comando wc para contar palabras.


Fuente: Cibertec

4.1.4. Realizar administracin de archivos bsicos


A continuacin, daremos una serie de comandos tiles para conocer aspectos generales
/proc/mounts
Nos muestra los sistemas de ficheros que se encuentran montados
Ejemplo

Figura 149: Visualizacin de puntos de montura.


Fuente: Cibertec

df -h
Reporta el uso de espacio en los discos duros.
Ejemplo

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

161

Figura 150: Visualizacin de puntos de montura.


Fuente: Cibertec

mkdir
Este comando sirve para crear una carpeta
Ejemplo:

Figura 151: Creacin de la carpeta Documentos


Fuente: Cibertec

Figura 152: Creacin de rbol de carpetas con parmetro -p


Fuente: Cibertec

touch
Sirve para generar archivos sin contenido.
Ejemplo

Figura 153: Creacin de archivo en blanco.


Fuente: Cibertec

cd
Comando que nos permite movernos entre directorios, su sintaxis es:
cd [carpeta de destino]
Ejemplo

Figura 154: Ingresando al directorio Desktop.


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

162

Figura 155: Regresando al directorio origen.


Fuente: Cibertec

cp
Comando que sirve para copiar archivos o carpetas, su sintaxis es el siguiente;
cp [parmetros] [archivo/Directorio] [rutaDestino]
Los parmetros son
-r: Copiadirectorios recursivamente
-v: Muestra el estado de la copia
-f: Forza la copia sin pedirnos confirmacin
Ejemplo 1: Copiar un archivo a una carpeta

Figura 156: Copia de un archivo a una carpeta.


Fuente: Cibertec

Ejemplo 2: Copiar una carpeta a otra carpeta

Figura 157: Copia de una carpeta a otra.


Fuente: Cibertec

mv
Comando que sirve para mover archivos o carpetas, su sintaxis es la siguiente:
mv [parmetros][archivo/Directorio] [rutaDestino]
Los parmetros son las siguientes:
-v: Muestra el estado del proceso
-f: Forza el movimiento sin pedirnos confirmacin
Ejemplo 1: Mover un archivo a una carpeta

Figura 158: Mover archivos a una carpeta.


Fuente: Cibertec

Ejemplo 2: Mover una carpeta a otra carpeta

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

163

Figura 159: Mover una carpeta a otra carpeta.


Fuente: Cibertec

rm
Comando que sirve para eliminar archivos o carpetas, su sintaxis es la siguiente:
rm [parmetros] [archivo/Directorio]
Los parmetros son los siguentes:
-r: Borra directorios recursivamente
-v: Muestra el estado del borrado
-f: Forza el borrado sin pedirnos confirmacin
Ejemplo 1:

Figura 160: Eliminar un archivo


Fuente: Cibertec

Ejemplo 2:

Figura 161: Eliminar un archivo de una carpeta


Fuente: Cibertec

ls
Lista los archivos que contiene una carpeta, su sintaxis es la siguiente;
ls [parmetros]
Los parmetros son los siguientes:
-l: Muestra los detalles de archivos y carpetas
-a: Muestra los archivos o carpetas ocultas
Ejemplo:

Figura 162: Listar contenido de la carpeta.


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

164

find
Busca archivos en una ruta especfica, su sintaxis es la siguiente:
find [ruta] [expresion]
Ejemplo1:
Buscar archivos y carpetas con el nombre [Link] en todo el directorio Raz.

Figura 163: Buscar [Link] desde la raz.


Fuente: Cibertec

Ejemplo 2:
Buscar archivos y carpetas que le pertenezcan al usuario rdelvillar en todo el
directorio raz.

Figura 164: Buscar archivos y carpetas de rdelvillar


Fuente: Cibertec

Ejemplo 3:
Buscar archivos con extension .bin dentro del directorio '/home/rdelvillar'

Figura 165: Buscar todos los archivos con extensin -bin


Fuente: Cibertec

Ejemplo 4:
Buscar archivos binarios que no han sido usados en los ultimos 100 das.

Figura 166: Buscar los binarios modificados en los ltimos 100 das.
Fuente: Cibertec

Ejemplo5:
Buscar archivos binarios creados o modificados en los ultimos diez das.

Figura 167: Buscar los binarios modificados en los ltimos 10 das.


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

165

Resumen
En esta unidad, se consigui tener mayor conocimiento del modo de trabajo de
plataformas Linux va comandos. Se conoci comandos bsicos para poder trabajar
con el sistema operativo, como el comando date para el cambio de da y hora con una
sola lnea de comando, tambin el filtro de bsqueda en los texto de Linux, con lo cual
se puede iniciar una administracin bsica de un sistema operativo Linux.

Bibliografa
BSICA
Angie Nash y Jason Nash

2001

LPIC 1 Certification Bible

2004

Edicin especial Linux


(005.43L BAND)

CIBERTEC
2004 Linux administrador e Internet: Linux administrador y security
(005.43L CIBE)
COMPLEMENTARIA
2013

([Link]
Proporciona guas rpidas para instalar, configurar servicios de red basados en Linux.

2013

([Link]
Proporciona guas rpidas para instalar, configurar servicios de red basados en
Linux Centos.

2013

([Link]
Proyecto de formacin en habla hispana para los candidatos a la certificacin LPI en
cualquiera de sus niveles.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

166

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

167

UNIDAD

5
USANDO FLUJOS, TUBERAS Y
REDIRECCIONES,
ADMINISTRACIN DE
PROCESOS Y BSQUEDA EN
ARCHIVOS DE TEXTO
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al trmino de la unidad, el alumno conecta archivos a comandos y comandos a
otros comandos para procesar datos de texto de forma eficaz, ejecuta procesos
en primer y segundo plano, cambiar de plano, monitorizar procesos actuales,
ordenarlos segn varios parmetros, enviar seales a los procesos y terminar
procesos innecesarios para el sistema/usuario.
TEMARIO
5.1 Tema 6 : Usando flujos, tuberas y redirecciones, Administracin
de Procesos y Bsqueda en archivos de texto
5.1.1 : Usar flujos, tuberas y redirecciones.
5.1.2 : Crear, monitorizar y eliminar procesos.
5.1.3 : Modificar prioridades en la ejecucin de procesos.
5.1.4 : Buscar en archivos de texto usando expresiones regulares.

ACTIVIDADES PROPUESTAS

Identificar el id del proceso a terminar.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

168

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

5.1

169

USANDO FLUJOS, TUBERAS Y REDIRECCIONES,


ADMINISTRACIN DE PROCESOS Y BSQUEDA EN
ARCHIVOS DE TEXTO

5.1.1 Usar flujos, tuberas y redirecciones


El objetivo de este apartado es el de explicar las distintas formas de redireccionamiento
de salida existentes en LINUX. Redireccionar significa modificar la direccin de los datos
de un comando. El redirecionamiento de salida modifica en concreto la direccin de los
resultados de un comando.
Los flujos, la redireccin, y los pipes son algunas de las herramientas ms potentes de
la lnea de comandos. Linux trata lo que entra y lo que sale de los programas como un
flujo, que es una entidad de datos que se pueden manipular. Generalmente, la entrada
viene del teclado y la salida va hacia la pantalla. No obstante, puede redirigir estos flujos
de entrada y salida para que vengan de otras fuentes (como ficheros) o se dirijan a
stas. De igual manera, pueden canalizar (pipe) la salida de un programa hacia otro
programa. Estos recursos pueden suponer una magnfica herramienta de conexin
entre varios programas.
Tipos de flujos
Para empezar a entender el redireccionamiento y los pipes, primero debe conocer los
distintos tipos de flujos de entrada y salida, de entre los que destacan tres:

Entrada estndar: Los programas aceptan la entrada de datos a travs de la


entrada estndar, o stdin, que en la mayora de los casos es la informacin que
llega al ordenador desde el teclado.

Salida estndar: Los programas de modo texto envan a sus usuarios la mayora
de los resultados a travs de la salida estndar, o stdout, que se suele mostrar en
modo texto a pantalla completa o bien en una ventana GUI, como pueden ser xterm
(los programas que son totalmente GUI, como los procesadores de texto GUI, no
emplean la salida estndar para sus interacciones normales, aunque pueden
emplear la salida estndar para mostrar mensajes en el xterm desde el que fueron
iniciados, La salida de los GUI no se gestiona a travs de un flujo de salida en el
sentido aqu descrito).

Error estndar: Linux proporciona un segundo tipo de flujo de salida, conocido


como error estndar o stderr. Este flujo de salida est pensado para llevar
informacin de alta prioridad, como los mensajes de error.

Normalmente, los mensajes de error se envan al mismo dispositivo de salida que la


salida estndar, por lo que cuesta diferenciarlos, aunque algunos se pueden redirigir
independientemente, lo cual puede resultar muy til. Por ejemplo, puede redirigir el error
estndar a un fichero a la par que la salida estndar se sigue mostrando en la pantalla,
de manera que puede interactuar con el programa y estudiar los mensajes de error
mucho ms adelante.
Internamente, los programas tratan estos flujos como simples ficheros de datos; los
abren, leen los ficheros o escriben en ellos y los cierran cuando terminan. Dicho de otro
modo, los ficheros normales son flujos desde el punto de vista de los programas. Lo que
ocurre es que estos flujos son los que se utilizan para interactuar con los usuarios.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

170

Redirecionar la salida
Existen dos modos de redireccionar la salida a un archivo:

n> redireccione la salida desde el descriptor del archivo a un archivo. Usted deber
tener autoridad para escribir al archivo. Si el archivo no existe, ste es creado. Si ya
existe, los contenidos existentes generalmente se pierden sin previo aviso.
n>> tambin redirecciona la salida desde el descriptor del archivo n a un archivo.
Nuevamente, deber tener la autorizacin para escribir en el archivo. Si el archivo
no existe, ste es creado. Si existe, la salida se anexa al archivo existente.

La n en n> o en n>> se refiere al descriptor del archivo. Si se omite, se asume la salida


estndar.
Redireccin de la salida
#ls
ls:
xaa
#ls
#ls
ls:
yaa

x* z*
cannot access z*: No such file or directory
xab
x* z* >[Link] 2>[Link]
w* y*
cannot access w*: No such file or directory
yab

#ls w* y* >>[Link] 2>>[Link]


#cat [Link]
xaa
xab
yaa
yab
#cat [Link]
ls: cannot access z*: No such file or directory
ls: cannot access w*: No such file or directory
Se dijo que la redireccin de la salida utilizando n> generalmente sobrescribe los
archivos existentes. Usted puede controlar esto con la opcin noclobber del set builtin.
Si ya se ha definido, usted puede anularla utilizando n> como se indica.
Redireccin de la salida con noclobber
#set -o noclobber
#ls x* z* >[Link] 2>[Link]
-bash: [Link]: cannot overwrite existing file
#ls x* z* >|[Link] 2>|[Link]
#cat [Link]
xaa
xab
#cat [Link]
ls: cannot access z*: No such file or directory
#set +o noclobber
#restore original noclobber setting

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

171

A veces, usted puede querer redireccionar la salida estndar y el error estndar en un


archivo. Esto se suele hacer en los procesos automatizados o en "background jobs" de
tal modo que usted pueda revisar la salida ms tarde. Utilice &> o &>> para redireccionar
la salida estndar y el error estndar al mismo lugar. Otra manera de hacerlo es
redireccionar el descriptor del archivo n y luego, redireccionar el descriptor del archivo
hacia el mismo lugar utilizando la herramienta m>&n o m>>&n. El orden en el que se
direccionan las salidas es importante.
Por ejemplo:
command 2>&1 >[Link]
No es lo mismo que:
command >[Link] 2>&1
En el primer caso, stderr es redireccionada a un sitio actual de stdout y luego stdout es
redireccionada a la salida .txt, pero esta segunda redireccin afect slo a stdout, no a
stderr. En el segundo caso, stderr es redireccionada al sitio actual de stdout y sa es la
[Link]. Observe en el ltimo comando que la salida estndar fue redireccionada
despus de que el error estndar, por lo tanto la salida del error estndar todava va a
la ventana de la terminal.
Redireccionar dos series a un archivo
#ls x* z* &>[Link]
#cat [Link]
ls: cannot access z*: No such file or directory
xaa
xab
#ls x* z* >[Link] 2>&1
#cat [Link]
ls: cannot access z*: No such file or directory
xaa
xab
#ls x* z* 2>&1 >[Link]
# stderr no va a la [Link]
ls: cannot access z*: No such file or directory
#cat [Link]
xaa
xab
En otras ocasiones es posible que usted deseara ignorar por completo la salida estndar
o el error estndar. Para hacer esto, hay que redirigir la serie adecuada al archivo vaco,
/dev/null. A continuacin indica cmo ignorar la salida del error desde el comando ls, y
tambin utiliza el comando cat para mostrarle que /dev/null est, realmente, vaco.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

172

Ignorar la salida utilizando/dev/null


#ls x* z* 2>/dev/null
xaa xab
#cat /dev/null
Redireccionar la entrada
Del mismo modo que podemos redireccionar las series stdout y stderr, tambin
podemos redireccionar stdin desde un archivo, utilizando el operador <. En ese ejemplo
utilizamos la salida desde el comando cat para crear la entrada estndar para el
comando tr. En lugar de llamarlo innecesariamente cat, podemos utilizar la redireccin
de la entrada para convertir los espacios a tabs.
#tr ' ' '\t'<text1
1
apple
2
pear
3
banana
Shells, incluyendo bash, tienen tambin el concepto de un here-document, que es otra
forma de redireccionar la entrada. Se utiliza << junto con una palabra, tal como END,
para un marcador o centinela a fin de indicar el final de la entrada.
Redireccin de la entrada con un here-document.
#sort -k2 <<END
> 1 apple
> 2 pear
> 3 banana
> END
1 apple
3 banana
2 pear
Usted se preguntar qu hubiera sucedido si no hubiera podido escribir sort -k2, ingresar
sus datos, y luego pulsar Ctrl-d para indicar el final del ingreso. La respuesta breve es
que usted hubiera podido, pero no hubiera aprendido sobre here-documents. La
verdadera respuesta es que here-documents es utilizado con mayor frecuencia en los
scripts de shell. (Un script no posee ningn otro modo de indicar qu lneas del script
deben ser tratadas como una entrada). Dado que los scripts de shell realizan un amplio
uso de la tabulacin para dar una sangra a los fines de la legibilidad, hay otro giro para
here-documents. Si usted utiliza <<- en lugar de slo <<, los tabs principales son
eliminados.
Creamos un carcter de tabulacin cautivo utilizando la sustitucin del comando y luego
creando un script muy pequeo de shell que contenga dos comandos cat, de tal modo
que cada uno pueda leer desde un here-document. Observe que utilizamos END como
el centinela del here-document que estamos leyendo desde la terminal. Si utilizamos la
misma palabra para el centinela dentro del script, podremos finalizar nuestra escritura
en forma prematura. Por lo tanto, utilizamos EOF en su lugar. Despus de crearse

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

173

nuestro script, utilizamos el comando (dot) para originar lo que significa ejecutarlo en el
contexto actual de shell.
Redireccionamiento
#ht=$(echo -en "\t")
#cat<<END>[Link]
> cat <<-EOF
> apple
> EOF
> ${ht}cat <<-EOF
> ${ht}pear
> ${ht}EOF
> END
#cat [Link]
cat <<-EOF
apple
EOF
cat <<-EOF
pear
EOF
#. [Link]
apple
pear
Para almacenar los datos y el codigo ejecutable, los procesos que corren el sistema de
Direccionar stdout a stdin.
Usted utiliza el operador | (pipe) entre dos comandos para dirigir el stdout del primero
al stdin del segundo. Podr construir un conducto ms largo agregando ms comandos
y ms operadores de conductos. Cualquiera de los comandos puede tener opciones o
argumentos. Muchos utilizan un guin (-) en lugar de un nombre de archivo como
argumento para indicar cundo una entrada debera provenir de un stdin en lugar de
hacerlo de un archivo. Verifique en las pginas del manual para estar seguro del
comando. La construccin de los conductos largos de comandos de tal modo que cada
uno tenga una capacidad limitada es una forma muy comn que tiene Linux y UNIX para
la realizacin de las tareas. En el conducto hipottico en el Listado 10, command2 y
command3 ambos tienen un parmetro, mientras que command3 utiliza el -parmetro
nicamente para indicar la entrada desde stdin.
Salida del conducto a travs de varios comandos
command1 | command2 paramater1 | command3 parameter1 parameter2 | command4
Algo para tener en cuenta es que los conductos solamente conducen desde stdout hasta
stdin. Usted no puede usar 2 | para canalizar stderr aisladamente, al menos, no con las
herramientas que hemos aprendido hasta ahora. Si stderr hubiera sido redireccionada
a stdout, ambas secuencias seran canalizadas. A continuacin, ilustramos un comando
ls poco probable con cuatro argumentos comodines que no se encuentran en orden
alfabtico, luego usamos una clase de tubera, la normal combinada y la salida de
errores.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

174

Direccionar dos secuencias de salida


#ls
ls:
ls:
ls:
xaa
#ls
ls:
ls:
ls:
xaa
xab
yaa
yab

y* x* z* u* q*
cannot access z*:No such file or directory
cannot access u*: No such file or directory
cannot access q*: No such file or directory
xab yaa yab
y* x* z* u* q* 2>&1 |sort
cannot access q*: No such file or directory
cannot access u*: No such file or directory
cannot access z*: No such file or directory

Una ventaja de los sistemas de los conductos de Linux y UNIX es que, a diferencia de
algunos otros sistemas operativos populares, no existe un archivo intermedio
involucrado con un conducto. El stdout del primer comando no se escribe en un archivo
y luego es ledo por el segundo comando. Si por casualidad est trabajando en un
sistema UNIX en donde el comando tar no da soporte a la compresin utilizando z
(para gzip) o j (para bzip2), eso no es un problema. Usted puede utilizar una tubera
como la siguiente para realizar la tarea.
bunzip2 -c [Link].bz2 | tar -xvf
El comienzo de las tuberas con un archivo en lugar de un stdout
En las tuberas anteriores comenzamos con algunos comandos que generaron la salida
y luego se direccion esa salida a cada etapa de la tubera. Qu sucedera si
quisiramos comenzar con un archivo de datos que ya existe?
Muchos de los comandos tomaran un stdin o un archivo como entrada, por lo tanto
esos no seran un problema. Si usted tuviese un filtro que requiriera una entrada desde
stidin, debera pensar en usar el comando cat para copiar el archivo a stdout, lo que
funcionara. Sin embargo, puede usar la redireccin de la entrada para el primer
comando y direccionar la salida del comando a travs del resto de la tubera para la
solucin ms habitual. Slo utilice el operador < para redirigir el stdin de su primer
comando al archivo que desee procesar.
Usar la salida como argumento
En el debate anterior sobre las tuberas, usted aprendi cmo tomar la salida de un
comando y utilizarla como la entrada a otro comando. Supongamos en cambio, que
quiera utilizar la salida de un comando o los contenidos de un archivo como argumento
a un comando en lugar de como entrada. Las tuberas no funcionaran en ese caso.
Existen tres mtodos comunes.

El comando xargs
El comando find con la opcin -exec
Comando sustitucin

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

175

Usted aprender sobre las dos primeras ahora. Ya vio el ejemplo del comando de
sustitucin cuando creamos un carcter de tabulacin cautivo. La sustitucin del
comando se utiliza en la lnea de comando, pero con ms frecuencia en el scripting.
Usar el comando xargs
El comando xargs lee la entrada estndar y luego crea y ejecuta los comandos con la
entrada como parmetros. Si no hay ningn comando dado, entonces el comando echo
es utilizado.
#cat text1
1 apple
2 pear
3 banana
#xargs<text1
1 apple 2 pear 3 banana
Por qu slo hay una lnea de salida desde xargs? Por omisin, xargs interrumpe la
entrada en los espacios en blanco, y cada token resultante se convierte en un
parmetro. Sin embargo, cuando xargs crea el comando pasarn tantos parmetros a
la vez como se posible. Usted puede anular este procedimiento con -n, o con el
parmetro --[Link] el uso de ambas formas y agregamos una invocacin
explcita de echo a nuestro uso de xargs.
Usar xargs y echo
#xargs<text1 echo "args >"
args > 1 apple 2 pear 3 banana
#xargs --max-args 3 <text1 echo "args >" args > 1 apple 2
args > pear 3 banana
#xargs -n 1 <text1 echo "args >"
args > 1
args > apple
args > 2
args > pear
args > 3
args > banana
Si la entrada contiene espacios que estn protegidos por comillas simples o dobles, o
por la barra invertida de escape, entonces xargs no interrumpir el ingreso a dichos
puntos
Usar xargs con encomillado
#echo '"4 plum"' | cat text1
1 apple
2 pear
3 banana
"4 plum"
#echo '"4 plum"' | cat text1 - | xargs -n 1

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

1
2
3
4

176

apple
pear
banana
plum

Hasta el momento, todos los argumentos han sido agregados al final del comando. Si
usted tiene la obligacin de utilizarlos como argumentos con otros argumentos a
continuacin, entonces utilice la opcin I para especificar una cadena de reemplazo.
En cualquier lugar del comando en que se produzca la cadena de reemplazo que usted
pida ejecutar xargs ser reemplazada por un argumento. Cuando usted haga esto,
solamente un argumento ser pasado a cada comando. Sin embargo, el argumento ser
creado desde una lnea de ingreso completa, no slo desde un nico token. Usted
tambin puede utilizar la opcin L de xargs al tener que tratar a las lneas como
argumentos en lugar de hacerlo por la omisin de los tokens individuales delimitados
por los espacios en blanco. El uso de la opcin-I implica L 1.
Usar xargs con lneas de entrada
#xargs -I XYZ echo "START XYZ REPEAT XYZ END" <text1
START 1 apple REPEAT 1 apple END
START 2 pear REPEAT 2 pear END
START 3 banana REPEAT 3 banana END
#xargs -IX echo "<X><X>" <text2
<9
plum><9 plum>
<3
banana><3
banana>
<10
apple><10
apple>
#cat text1 text2 | xargs -L2
1 apple
2 pear
3 banana 9 plum
3 banana 10 apple
Aunque nuestros ejemplos hayan usado archivos de textos simples como ilustracin,
usted rara vez desear utilizar xargs con una entrada como sta. Por lo general estar
tratando con una larga lista de archivos generados de un comando como ls, find, o grep.
A continuacin se muestra una forma en la que se podra pasar un listado de directorios
a travs de xargs a un comando como grep.
Usar xargs con las listas de archivos
#ls |xargs grep "1"
text1:1 apple
text2:10
apple
xaa:1 apple
yaa:1
Qu sucede en el ltimo ejemplo si uno o ms de los nombres del archivo contienen
un espacio? Si usted slo utiliza el comando, podra encontrar un error. En el mundo
real, su lista de archivos pude venir de alguna fuente como un script o un comando

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

177

personalizado, en lugar de venir de ls, o usted podra desear pasarlo a travs de otro
estadio del conducto para luego filtrarlo, entonces lo que vamos a ignorar es el hecho
de que usted podra solamente utilizar grep "1" * en lugar de esta construccin.
Para el comando ls, usted puede utilizar la opcin --quoting-style para obligar al nombre
del archivo con problemas a ser citado entre comillas o a ser evitado. Una mejor
solucin, cuando est disponible, es la opcin -0 de xargs, de tal modo que el carcter
nulo (\0) sea utilizado para delimitar los argumentos de entrada. Aunque ls no posee
una opcin que suministre los nombres de los archivos terminados en cero como salida,
muchos comandos la poseen.
Primero copiamos el text1 al "text 1" y luego mostramos algunas maneras de utilizar una
lista de nombres de los archivos que contengan espacios en blanco con xargs. Estos
son para ilustrar los conceptos, ya que xargs podra ser dificil de dominar. En particular,
el ltimo ejemplo para convertir los caracteres de la lnea nueva a nulos no funcionara
si alguno de los nombres de los archivos ya contuviera los caracteres de la lnea nueva.
Uso de xargs con espacios en blanco en los nombres de los archivos
#cp text1 "text 1"
#ls *1 |xargs grep "1"
# error
text1:1 apple
grep: text: No such file or directory
grep: 1: No such file or directory
#ls --quoting-style escape *1
text1 text\ 1
#ls --quoting-style shell *1
text1 'text 1'
#ls --quoting-style Shell *1|xargs grep "1" text1:1 apple
text 1:1 apple
# Illustrate -0 option of xargs #ls *1 | tr '\n' '\0' |xargs
-0 grep "1" text1:1 apple text 1:1 apple
El comando xargs no construir comandos largos en forma arbitraria. Hasta Linux kernel
2.26.3, el tamao mximo de un comando estaba limitado. Un comando comorm
somepath/*, para un directorio que contenga muchos archivos con nombres largos
podra fallar con un mensaje que indique que la lista de argumentos era demasiado
extensa. En los anteriores sistemas Linux, o en los sistemas UNIX que an pueden tener
dicha limitacin, es til saber cmo utilizar xargs para que usted pueda manejar dichas
situaciones.
Usted puede utilizar la opcin --show-limits para mostrar los lmites por omisin de
xargs, y la opcin s para limitar el tamao de los comandos de salida a un nmero
mximo especfico de caracteres. Ver las pginas del manual para obtener otras
opciones que no hemos tratado aqu.
Usar el comando find con la opcin-exec o con xargs
En este tema, usted aprende cmo utilizar el comando find para encontrar los archivos
por nombre, por la hora de modificacin, por el tamao o por otras caractersticas. Una
vez que usted encuentra esa serie de archivos, con frecuencia desear hacer algo con
ella: eliminarla, copiarla en otro sitio, cambiarle el nombre o alguna otra operacin. Ahora

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

178

veremos la opcin exec de find, que posee una funcionalidad similar a la de find y
canaliza la salida a xargs.
Usar find y exec
#find text[12] -exec cat text3 {} \;
This is a sentence. This is a sentence.
1 apple
2 pear
3 banana
This is a sentence. This is a sentence.
9
plum
3
banana
10
apple

This is a sentence.

This is a sentence.

En comparacin con lo que usted ya ha aprendido acerca del uso de xargs, existen
algunas deferencias.
Usted debe incluir el {} para marcar dnde va el nombre del archivo en el comando.
No se agregar en forma automtica al final.

Debe terminar el comando con un punto y coma y ste debe ser escapado; \;, ';', o
";" lo har.

El comando se ejecutar una vez para cada archivo de entrada.

Intente ejecutar find text[12] |xargs cat text3 para que usted mismo pueda ver las
diferencias.

Ahora, retornemos al espacio en blanco en el nombre del archivo. A continuacin


intentaremos usar find con -exec en lugar de ls con xargs.
Usar find y -exec con los espacios en blanco en los nombres de los archivos
#find . -name "*1" -exec grep "1" {} \; 1 apple
1 apple
Hasta ahora est todo bien. Pero, no hay algo que falta? Qu archivos contienen las
lneas encontradas por grep?
El nombre del archivo falta porque find llam a grep una vez para cada archivo, y grep
es lo suficientemente inteligente como para saber que si usted slo le entrega el nombre
de un archivo, entonces no necesita decirle de qu archivo se trata.
Podramos ver xargs en su lugar, pero ya hemos visto los problemas con los espacios
en blanco en los nombres de los archivos. Tambin aludimos al hecho de que find
pudiera producir una lista de nombres de archivos con delimitadores nulos, y eso es lo
que la opcin -print0 hace. Las versiones modernas de find pueden ser delimitadas con
un signo + en lugar de un punto y coma, y esto hace que find pase tantos nombres como
le sea posible en una invocacin de un comando, del mismo modo que funciona xargs.
No es necesario decir que usted puede usar solamante {} una vez en este caso, y ste
deber ser el ltimo parmetro del comando. El Listado 20 nos muestra ambos mtodos.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

179

Usar find and xargs con los espacios en blanco en los nombres de los archivos
#find . -name "*1" -print0 |xargs -0 grep "1"
./text 1:1 apple
./text1:1 apple
#find . -name "*1" -exec grep "1" {} + ./text 1:1 apple
./text1:1 apple
Generalmente, cualquier mtodo funcionara, y la eleccin es a menudo una cuestin
de estilo personal. Recuerde que direccionar cosas con espacios en blanco
desprotegidos o espacios vacos puede causar problemas, por lo tanto utilice la opcin
-print0 con find si est direccionando la salida a xargs, y utlice la opcin -0 para indicarle
axargs que espere la entrada delimitada nula. Otros comandos, incluyendo tar, tambin
dan soporte a la entrada delimitada nula utilizando la opcin 0 de tal modo que usted
debera utilizarla para los comandos que le dan soporte, a menos que est seguro de
que su lista de ingreso no ser un problema.
Un ltimo comentario al operar sobre las listas de archivos. Es siempre una buena idea
probar a fondo su lista y tambin probar su comando con mucho cuidado antes de
comprometerse a realizar una operacin masiva, tal como quitar o renombrar los
archivos. Tener un buen backup puede resultar muy til tambin.
Divisin de la salida
Esta seccin termina con un breve debate sobre un comando ms. A veces, usted puede
querer ver la salida en su pantalla mientras est salvando simultneamente una copia
para verla ms tarde. Aunque pudiera hacer esto redireccionando la salida del comando
a un archivo en una ventana y luego utilizando tail -fn1 para seguir la salida en otra
pantalla, el uso del comando tee es ms sencillo.
Usted utiliza tee con una tubera. Los argumentos son un archivo (o mltiples archivos)
para una salida estndar. La opcin a anexa en lugar de sobrescribir los archivos.
Como vimos antes en nuestro debate acerca de las tuberas necesita redirigir stderr a
stdout antes de direccionarla a tee si desea salvar ambas. El Listado 21 muestra tee
utilizado para salvar la salida en dos archivos, f1 y f2.
Divisin de stdout con tee
#ls text[1-3]|tee f1 f2
text1
text2
text3
#cat f1
text1
text2
text3
#cat f2
text1
text2
text3

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

180

5.1.2 Crear, monitorizar y eliminar procesos.


Cuando usted ejecuta un comando en su ventana de terminal, est ejecutando en el
primer plano. La mayora de esos comandos se ejecutan rpidamente, pero suponga
que est ejecutando un escritorio grfico y que deseara que un reloj digital se mostrar
en el escritorio. Por ahora, ignoremos el hecho de que la mayora de escritorios grficos
ya tienen uno; simplemente vamos a usar esto como ejemplo.
Si usted tiene el X Window System instalado, probablemente tambin tendr instaladas
algunas herramientas como xclock o xeyes. Probablemente, usted las encuentre en un
paquete llamado xorg-x11-apps o x11-apps si an no las ha instalado. Cualquiera de
ellas sirve para este ejercicio, pero utilizaremos xclock.
La pgina principal explica que usted puede iniciar un reloj digital en su escritorio grfico
usando el comando:
xclock -d -update 1
La parte -update 1 solicita actualizaciones cada segundo; en caso contrario, el reloj se
actualiza solo cada minuto. As que vamos a ejecutar esto en una ventana de terminal.
Nota
En el momento de la escritura, hay un error que afecta a xclock cuando estn habilitados
los efectos de escritorio. El efecto ms notorio es que la barra de ttulo no cambia, ni
siquiera cuando se enfoca. Si su xclock no se ve como ninguno en este artculo, tal vez
desee desactivar los efectos de escritorio durante un tiempo.
Un reloj digital con xclock

Figura 168: Reloj digital


Fuente: Cibertec

Iniciando xclock
ian@attic4:~$ xclock -d -update 1
Desafortunadamente, su ventana de terminal ya no tiene un prompt, por lo cual usted
realmente necesita retomar el control. Afortunadamente, el Bash shell tiene una clave
suspend, Ctrl-z. Presionar esta combinacin de claves le proporciona un prompt de
terminal de nuevo.
Suspendiendo xclock con Ctrl-z
ian@attic4:~$ xclock -d -update 1
^Z
[1]+ Stopped
xclock -d -update 1

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

181

El reloj todava est en su escritorio, pero se ha detenido. Eso fue exactamente lo que
hizo la suspensin. De hecho, si usted arrastra otra ventana sobre parte de esta, la parte
del reloj ni siquiera se volver a dibujar. Note el mensaje de resultado de terminal
indicando "[1]+Stopped". El 1 del mensaje es un nmero de tareas. Usted puede
reiniciar el reloj escribiendo fg %1. Tambin puede usar el nombre de comando o parte
de l escribiendo fg %xclock o fg %?clo. Finalmente, usted simplemente escribe fg sin
parmetros, usted puede reiniciar el trabajo detenido ms recientemente, el trabajo 1 en
este caso. Reiniciar con fg tambin trae el trabajo de nuevo al primer plano y usted ya
no tendr un prompt de comando shell. Lo que usted necesita hacer es poner el trabajo
en el segundo plano; un comando bg toma el mismo tipo de especificacin de trabajo
que el comando fg y hace exactamente eso.
A continuacin, muestra cmo traer el trabajo xclock de nuevo al primer plano y
suspenderlo usando dos formas del comando fg. Usted puede suspenderlo de nuevo y
ponerlo en segundo plano; el reloj continuar ejecutndose mientras usted hace otros
trabajos en su terminal.
Colocar xclock en primer plano o en segundo plano
ian@attic4:~$ fg %1
xclock -d -update 1
^Z
[1]+ Stopped
ian@attic4:~$ fg %?clo
xclock -d -update 1 ^Z
[1]+ Stopped
ian@attic4:~$ bg
[1]+ xclock -d -update 1 &

xclock -d -update 1
xclock -d -update 1

Uso de "&"
Posiblemente usted haya notado que cuando pone la tarea xclock en segundo plano, el
mensaje ya no dir "Stopped" y estar terminado por un signo (&). De hecho, usted no
necesita suspender el proceso para ponerlo en segundo plano; simplemente aada un
signo & al comando y el shell iniciar el comando (o lista de comandos) en el segundo
plano. Vamos a iniciar un reloj anlogo con un wheat de trasfondo usando este mtodo.
Reloj anlogo con xclock

Figura 169: Reloj digital


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

182

Inicio de un xclock anlogo con &


ian@attic4:~$ xclock -bg wheat -update 1&
[2] 4320
Note que el mensaje es ligeramente diferente esta vez. Este representa un nmero de
trabajo y una ID de proceso (PID). Cubriremos las PID y ms sobre el estado en un
momento. Por ahora, vamos a usar el comando jobs para descubrir cules trabajos se
estn ejecutando. Aada la opcin -l para listar las PID y ver que el trabajo 2 de hecho
tiene una PID 4320 como se muestra. Note tambin que el trabajo 2 tiene un signo de
suma (+) junto al nmero de trabajo, indicando que este es el trabajo actual.
Este trabajo vendr al primer plano si no se da ninguna especificacin de trabajo con el
comando fg.
Mostrar informacin de trabajo y de proceso
ian@attic4:~$ jobs -l
[1]- 3878 Running
[2]+ 4320 Running

xclock -d -update 1 &


xclock -bg wheat -update 1 &

Antes de resolver algunos otros problemas relacionados con trabajos de segundo plano,
vamos a crear el reloj digital de un hombre pobre. Usamos el comando sleep para causar
una demora de dos segundos y usamos el comando date para imprimir la fecha y hora
actuales. Empaquetamos este comando en un bucle while con un bloque do/done para
crear un bucle infinito.
Finalmente, ponemos todo entre parntesis para hacer una lista de comandos y poner
toda la lista en segundo plano usando un signo &. Usted aprender ms sobre cmo
construir comandos complejos usando bucles y scripts.
Reloj digital de un hombre pobre
ian@attic4:~$ (while sleep 2; do date;done)&
[2] 4856
ian@attic4:~$ Tue Jan 19 [Link] EST 2010
Tue Jan 19 [Link] EST 2010
Tue Jan 19 [Link] EST 2010
fTue Jan 19 [Link] EST 2010
Tue Jan 19 [Link] EST 2010
gTue Jan 19 [Link] EST 2010
( while sleep 2; do
date;
done )
Tue Jan 19 [Link] EST 2010
Tue Jan 19 [Link] EST 2010
Tue Jan 19 [Link] EST 2010
^C

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

183

Nuestra lista se est ejecutando como trabajo 2 con PID 4856. Cada dos segundos se
nohup.
El comando nohup se utiliza para iniciar un comando que ignora seales de hangup y
anexar stdout y stderr a un archivo. El archivo predeterminado es [Link] o
$HOME/[Link]. Si el archivo no puede ser escrito, entonces el comando no se
ejecutar. Si usted desea que el resultado se dirija a cualquier otra parte, redirija stdout,
o stderr.
El comando nohup ahora ejecutar una interconexin o una lnea de comandos. Usted
puede guardar una interconexin o lista en un archivo y luego ejecutarla usando el sh
(shell predeterminado) o el comando bash. Otro artculo de esta serie le mostrar cmo
hacer ejecutable el archivo de script, pero por ahora nos apegaremos a los script en
ejecucin usando el comando sh o el bash. A continuacin muestra cmo podemos
hace resto para nuestro reloj digital de hombre pobre. No es necesario decirlo, hacer
que la hora se escriba a un archivo no es particularmente til, y el archivo seguir
creciendo, por lo que configuraremos el reloj para que se actualice cada 30 segundos
en lugar de cada segundo.
Uso de nohup en una lnea de comandos en un script
ian@attic4:~$
ian@attic4:~$
[2] 5485
ian@attic4:~$
`[Link]'
ian@attic4:~$
[3] 5487
ian@attic4:~$
`[Link]'

echo "while sleep 30; do date;done">[Link]


nohup sh [Link]&
nohup: ignoring input and appending output to
nohup bash [Link]&
nohup: ignoring input and appending output to

Si mostramos el contenido de [Link], veremos lneas, con cada lnea a


aproximadamente 30 segundos despus de la que est dos lneas antes que ella.
Resultado de procesos nohup
ian@attic4:~$cat [Link]
Tue Jan 19 [Link] EST 2010
Tue Jan 19 [Link] EST 2010
Tue Jan 19 [Link] EST 2010
Tue Jan 19 [Link] EST 2010
Tue Jan 19 [Link] EST 2010
Tue Jan 19 [Link] EST 2010
Tue Jan 19 [Link] EST 2010
Tue Jan 19 [Link] EST 2010
Las versiones antiguas de nohup no escribieron un mensaje de estado en la terminal de
control, por lo que si usted cometi un error, puede que no lo sepa inmediatamente.
Usted puede ver la conducta anterior si redirige tanto stdout como stderr hacia un
archivo de su propia eleccin.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

184

Suponga que usted ha decidido que sera ms fcil aprovisionar el comando usando en
lugar de escribir sh o bash. A continuacin muestra qu sucede si usted usa nohup como
lo hicimos antes, pero redirigiendo con stdout y stderr. Despus de que usted ingresa el
comando, puede ver el mensaje que indica que el trabajo 4 ha iniciado con PID 5853.
Pero presione Enter de nuevo y ver otro mensaje diciendo que el trabajo se termin
con el cdigo de salida 126
Errores con nohup
ian@attic4:~$ nohup . [Link] >[Link] 2>&1 &
[4] 5853
ian@attic4:~$
[4]+ Exit 126
nohup . [Link] > [Link] 2>&1
A continuacin, muestra el contenido de [Link]. No es sorprendente en realidad.
Usted usa nohup para ejecutar un comando en segundo plano, y utiliza source (.) para
leer comandos de un archivos y luego ejecutarlos en el Shell actual. L o que es
importante recordar sobre esto es que usted tal vez necesita presionarEnter para
permitir que el shell muestre el estado de salida del trabajo en segundo plano, y usted
tal vez necesite observar el archivo de salida nohup para ver qu fue realmente los que
sali mal.
Mensaje oculto de nohup
ian@attic4:~$ cat [Link]
nohup: ignoring input
nohup: cannot run command `.': Permission denied
Ahora, enfoquemos nuestra atencin en el estado de nuestro proceso. Si usted est
siguiendo todo y planea tomar un descanso en este punto, por favor permanezca cerca
pues ahora usted tiene dos trabajos que estn creando archivos cada vez ms grandes
en su sistema de archivos. Usted puede usar el comando fg para traer cada uno, a su
vez, al primer plano, y luego usar Ctrl-c para terminarlos, pero si desea dejar que se
ejecuten un poco ms, ver otras formas de supervisarlos e interactuar con ellos.
Supervisin de procesos
Antes tuvimos una breve introduccin al comando jobs y vimos cmo usarlo para listar
los ID de Proceso (o PIDs) de nuestros trabajos.
ps
Existe otro comando, el comando ps, el cual utilizamos para mostrar en pantalla varias
piezas de informacin de estado procesos. Recuerde que "ps" es el acrnimo de
"process status", El comando ps acepta cero o ms PIDs como argumentos y muestra
los estados de proceso asociados. Si usamos el comando jobs con la opcin p, el
resultado es simplemente el PID del lder de grupo de proceso para cada trabajo.
Usaremos este resultado como argumento para el comando ps como se muestra en el

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

185

Estado de procesos de segundo plano


ian@attic4:~$ jobs -p
3878
5485
5487
ian@attic4:~$ ps $(jobs -p)
PID TTY
3878 pts/1
5485 pts/1
5487 pts/1

STAT
S
S
S

TIME COMMAND
0:06 xclock -d -update 1
0:00 sh [Link]
0:00 bash [Link]

Si usted usa ps sin opciones, ver una lista de procesos que tienen su terminal como
su terminal de control, como se muestra a continuacin. Note que los comandos [Link]
no aparecen en esta lista. En un momento ver por qu.
Mostrar estado con ps
ian@attic4:~$
PID TTY
2643 pts/1
3878 pts/1
5485 pts/1
5487 pts/1
6457 pts/1
6467 pts/1
6468 pts/1

ps
TIME CMD
[Link] bash
[Link] xclock
[Link] sh
[Link] bash
[Link] sleep
[Link] sleep
[Link] ps

Diversas opciones, incluyendo -f (full), -j (jobs) y -l (long) proporcionan control sobre


cunta informacin se muestra. Si usted no especifica ningn PID, entonces otra opcin
til es la opcin --forest, la cual muestra los comandos en una jerarqua en rbol,
mostrando cules procesos tienen a cules otros como padres. Particularmente, usted
ver que los comandos sleep del anterior listado son hijos de los script que usted ha
ejecutado en segundo plano. Si usted ha podido ejecutar el comando en un momento
diferente, podr ver el comando en un instante diferente, usted podr ver el comando
date listado en su lugar en el estado de proceso, pero esto es muy poco probable con
este script.
Ms informacin de estado
ian@attic4:~$ ps -f
UID
PID PPID
ian
2643 2093
ian
3878 2643
update 1
ian
5485 2643
ian
5487 2643

C STIME TTY
0 Jan18 pts/1
0 09:17 pts/1

TIME CMD
[Link] bash
[Link] xclock -d -

0 15:00 pts/1
0 15:01 pts/1

[Link] sh [Link]
[Link] bash [Link]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

186

ian
6635 5485 0 15:41 pts/1
[Link] sleep 30
ian
6645 5487 0 15:42 pts/1
[Link] sleep 30
ian
6647 2643 0 15:42 pts/1
[Link] ps -f
ian@attic4:~$ ps -j --forest
PID PGID
SID TTY
TIME CMD
2643 2643 2643 pts/1
[Link] bash
3878 3878 2643 pts/1
[Link] \_ xclock
5485 5485 2643 pts/1
[Link] \_ sh
6657 5485 2643 pts/1
[Link] |
\_ sleep
5487 5487 2643 pts/1
[Link] \_ bash
6651 5487 2643 pts/1
[Link] |
\_ sleep
6658 6658 2643 pts/1
[Link] \_ ps
Ahora que usted cuenta con algunas herramientas bsicas para monitorear sus
procesos usando los comandos jobs y ps , observemos brevemente otros comandos de
supervisin antes de pasar a otras formas de seleccionar y ordenar procesos para
mostrar.
free
El comando free muestra la cantidad de memoria libre y usada en su sistema. De forma
predeterminada se muestra en kilobytes, pero usted puede alterar esto usando b para
bytes, -k para kilobytes, -m para megabytes, o -g para gigabytes. La opcin t muestra
una lnea total, y la opcin -s junto con un valor renueva la informacin con la frecuencia
especificada. El nmero es en segundos, pero puede ser un valor flotante.
Usando el comando free
ian@attic4:~$ free
total
used
cached
Mem:
4057976
1543164
613488
-/+ buffers/cache:
731084
Swap:
10241428
0
ian@attic4:~$ free mt
total
used
cached
Mem:
3962
1506
599
-/+ buffers/cache:
713
Swap:
10001
0
Total:
13964
1506

free
2514812

shared
0

buffers
198592

3326892
10241428
free
2456

shared
0

buffers
193

3249
10001
12457

uptime
El comando uptime le muestra una visualizacin de una lnea que incluye el tiempo
actual, por cunto tiempo se ha estado ejecutando el sistema, cuntos usuarios estn
actualmente en sesin activa y los promedios de carga de sistema durante los ltimos
1, 5 y 15 minutos.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

187

Mostrar informacin de tiempo de operacin


ian@attic4:~$ uptime
[Link] up 20:03, 5 users,

load average: 0.00, 0.00, 0.00

Seleccione y organice procesos para mostrar.


Usando ps
El comando ps que ya tratamos solo lista procesos que fueron iniciados desde su sesin
de terminal (note la columna de SID, o ID de sesin, en el segundo ejemplo del Listado
14). Para ver todos los procesos con terminales de control, use la opcin -a . La opcin
-x muestra procesos sin una terminal de control, y la opcin -e muestra informacin para
cada proceso.
Mostrar otros procesos
ian@attic4:~$ ps -af
UID
PID PPID
ian
3878 2643
ian
5485 2643
ian
5487 2643
ian
7192 5485
ian
7201 5487
ian
7202 2095

C
0
0
0
0
0
0

STIME
09:17
15:00
15:01
16:00
16:00
16:00

TTY
pts/1
pts/1
pts/1
pts/1
pts/1
pts/0

TIME
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]

CMD
xclock -d -update 1
sh [Link]
bash [Link]
sleep 30
sleep 30
ps -af

Note la terminal de control listada en la columna TTY. Para este listado, cambi la
ventana de terminal que abr originalmente (pts/0), as que el comando ps -af se est
ejecutando bajo pts/0, mientras que los comandos creados para este artculo se estn
ejecutando bajo pts/1.
Hay muchas opciones para ps, incluyendo un nmero que proporciona control
significativo sobre cules campos son mostrados y cmo son mostrados. Otros
proporciona control sobre la seleccin de procesos a mostrar, por ejemplo,
seleccionando los procesos para un usuario particular (-u) o un comando particular (C).
Quin est ejecutando el comando getty?
ian@attic4:~$ ps -C getty -o user,pid,tty,time,comm
USER
PID TT
TIME COMMAND
root
1192 tty4
[Link] getty
root
1196 tty5
[Link] getty
root
1209 tty2
[Link] getty
root
1219 tty3
[Link] getty
root
1229 tty6
[Link] getty
root
1731 tty1
[Link] getty
Algunas veces usted desear ordenar el resultado por algn campo en particular, y
puede hacerlo usando la opcin --sort para especificar los campos a ordenar. Lo

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

188

predeterminado es ordenar en orden ascendente (+), pero usted tambin puede


especificar orden descendente
Ordenar el resultado de ps
ian@attic4:~$ ps -aj --sort -sid,+comm
PID PGID
SID TTY
TIME CMD
5487 5487 2643 pts/1
[Link] bash
9434 9434 2643 pts/1
[Link] ps
5485 5485 2643 pts/1
[Link] sh
9430 5485 2643 pts/1
[Link] sleep
9433 5487 2643 pts/1
[Link] sleep
3878 3878 2643 pts/1
[Link] xclock
8019 8019 2095 pts/0
[Link] man
8033 8019 2095 pts/0
[Link] pager
ian@attic4:~$ ps -aj --sort sid,comm
PID PGID
SID TTY
TIME CMD
8019 8019 2095 pts/0
[Link] man
8033 8019 2095 pts/0
[Link] pager
5487 5487 2643 pts/1
[Link] bash
9435 9435 2643 pts/1
[Link] ps
5485 5485 2643 pts/1
[Link] sh
9430 5485 2643 pts/1
[Link] sleep
9433 5487 2643 pts/1
[Link] sleep
3878 3878 2643 pts/1
[Link] xclock
Como es usual, vea las pginas man para ps para conocer todos los detalles sobre las
diversas opciones y campos que usted puede especificar, o puede obtener un breve
resumen usandops --help.
Usar top
Si usted ejecuta ps varias veces en una fila para ver lo que est cambiando,
probablemente necesite el comando top en lugar de ello. Este muestra una lista de
procesos actualizada continuamente, junto con til informacin de resumen.
Mostrar procesos usando top
top - [Link] up 18:29, 5 users, load average: 0.03, 0.02, 0.00
Tasks: 170 total,
1 running, 169 sleeping,
0 stopped,
0
zombie
Cpu(s): 2.1%us, 0.5%sy, 0.0%ni, 97.4%id, 0.0%wa, 0.0%hi,
0.0%si, 0.0%st
Mem:
4057976k total, 1543616k used, 2514360k free,
194648k
buffers
Swap: 10241428k total,
0k used, 10241428k free,
613000k
cached
PID
6820
1381
2093
6925

USER
ian
root
ian
ian

PR
20
20
20
20

NI VIRT RES
0 506m 78m
0 634m 40m
0 212m 15m
0 1118m 298m

CARRERA DE REDES Y COMUNICACIONES

SHR
26m
18m
10m
19m

S %CPU %MEM
S
1 2.0
S
1 1.0
S
1 0.4
S
1 7.5

TIME+
0:23.97
2:06.74
0:13.53
1:07.04

COMMAND
firefox
Xorg
gnometerminal
java

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

6855
7351
1
2

ian
ian
root
root

20
20
20
15

0 73416 11m 8808 S


0 19132 1364 980 R
0 19584 1888 1196 S
-5
0
0
0 S

189

1
0
0
0

0.3
0.0
0.0
0.0

0:05.01
0:00.07
0:00.74
0:00.01

[Link]
top
init
kthreadd

El comando top tiene cierto nmero de subcomandos, de los cuales los ms tiles para
comenzar son los siguientes:

h le muestra la ayuda
q termina el comando top.
f le permite aadir o eliminar campos desde la pantalla
o ordena el orden de presentacin
F selecciona campos por los cuales ordenar

Vea las pginas man para top para detalles completos sobre opciones, incluyendo cmo
ordenar por uso de memoria o por otros criterios.
Ordenar el resultado de top
top - [Link] up 18:43, 5 users, load average: 0.16, 0.06, 0.01
Tasks: 170 total,
3 running, 167 sleeping,
0 stopped,
0
zombie
Cpu(s): 2.1%us, 0.8%sy, 0.0%ni, 96.6%id, 0.0%wa, 0.0%hi,
0.5%si, 0.0%st
Mem:
4057976k total, 1588940k used, 2469036k free,
195412k
buffers
Swap: 10241428k total,
0k used, 10241428k free,
613056k
cached
PID USER PR NI VIRT RES SHR S %CPU %MEM
TIME+ COMMAND
6925 ian
20
0 1171m 338m 21m S
0 8.5
1:44.10 java
1381 root 20
0 634m 40m 18m S
0 1.0
2:13.63 Xorg
6820 ian
20
0 506m 83m 26m S
3 2.1
0:51.28 firefox
2004 ian
20
0 436m 23m 15m S
0 0.6
0:01.55 nautilus
2031 ian
20
0 419m 13m 10m S
0 0.3
0:00.11
evolutionalarm
2118 ian
20
0 372m 10m 7856 S
0 0.3
0:00.06
evolutiondata2122 ian
20
0 344m 13m 10m S
0 0.3
0:00.10
evolutionexcha
2001 ian
20
0 331m 22m 14m S
0 0.6
0:13.61 gnome-panel
1971 ian
20
0 299m 9.9m 7244 S
0 0.3
0:05.00
gnomesettings1989 ian
20
0 288m 15m 11m S
0 0.4
0:11.95 metacity
1954 ian
20
0 265m 5460 3412 S
0 0.1
0:00.28 pulseaudio
Enve seales a procesos
Ahora observemos las seales Linux, que son una forma asncrona para comunicarse
con procesos. Ya hemos mencionado la seal SIGHUP, y hemos usado tanto Ctrl-c
como Ctrl-z, que son otras formas de enviar una seal a los procesos. LA forma general
para enviar una seal es con el comando kill.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

190

Enviando seales usando kill


El comando kill enva una seal a un trabajo o proceso especificado. El Listado 22
muestra el uso de seales SIGTSTP y SIGCONT para detener y reanudar un trabajo en
segundo plano. El uso de la seal SIGTSTP es equivalente a usar el comando fg para
llevar el trabajo al primer plano y luego hacer Ctrl-z para suspenderlo. Usar SIGCONT
es como usar el comando bg.
Detener y reiniciar trabajos en segundo plano
ian@attic4:~$ kill -s SIGTSTP %1
[1]+ Stopped
xclock -d -update 1
ian@attic4:~$ jobs -l
[1]+ 3878 Stopped
xclock -d -update
[2]
5485 Running
nohup sh [Link] &
[3]- 5487 Running
nohup bash [Link]
ian@attic4:~$ kill -s SIGCONT 3878
ian@attic4:~$ jobs -l
[1]
3878 Running
xclock -d -update
[2]- 5485 Running
nohup sh [Link] &
[3]+ 5487 Running
nohup bash [Link]

1
&
1 &
&

Utilizamos la especificacin de trabajo (%1) para detener el proceso xclock de este


ejemplo, y luego el ID de proceso (PID) para reiniciarlo (continuarlo). Si usted detuvo el
trabajo %2 y luego us tail con la opcin -f para seguirlo, ver que solo un proceso est
actualizando el archivo [Link].
Existen nmerosas seales adicionales posibles que usted puede visualizar en su
sistema usando kill -l. Algunas se utilizan para reportar errores, como cdigos de
operacin ilegales, excepciones de punto flotante, o intentos de acceso a memoria a los
que un proceso no tiene acceso. Note que las seales tienen tanto un nmero, como
20, y un nombre, como SIGTSTP. Usted puede usar o el nmero con un signo - como
prefijo, o la opcin -s y el nombre de seal. En mi sistema podra haber usado kill -20 en
lugar de kill -s SIGTSTP. Usted siempre debe verificar los nmeros de seal de su
sistema antes de suponer cul nmero pertenece a cul seal.
Manejadores de seal y terminacin de procesos
Usted ha visto que Ctrl-c termina un proceso. De hecho, este enva una seal SIGINT
(o interrupt) al proceso. Si usted usa kill sin ningn nombre de seal, este enva una
seal SIGTERM. Para la mayora de los propsitos, estas seales son equivalentes.
Usted ha visto que el comando nohup hace que un propsito sea inmune a la seal
SIGHUP. En general, un proceso puede implementar seales signal handler hasta
catch. As un proceso podra implementar un manejador de seales para capturar
SIGINT o SIGTERM. Como el manejador de seales sabe cul seal se ha enviado,
este puede optar por ignorar SIGINT y solo terminarlo cuando reciba SIGTERM, por
ejemplo.
Terminando un proceso con SIGTERM
ian@attic4:~$ kill -s SIGTERM %2

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

ian@attic4:~$
[2]- Terminated
ian@attic4:~$ jobs -l
[1]- 3878 Running
[3]+ 5487 Running

191

nohup sh [Link]
xclock -d -update 1 &
nohup bash [Link] &

Los manejadores de seal proporcionan a los procesos gran flexibilidad. Un proceso


puede hacer su trabajo normal y puede ser interrumpido por una seal por algn
propsito especial. Adems de permitir que un proceso capture solicitudes de
terminacin y que lleve a cabo las acciones posibles, como cerrar archivos o marcar
puntos de verificacin en transacciones en curso, las seales se usan a menudo para
decirle a un proceso daemon que vuelva a leer su archivo de configuracin
yposiblemente que reinicie la operacin. Usted puede hacer esto para el proceso inetd
cuando cambia parmetros de red, o el daemon de impresora de lnea (lpd) cuando
aade una nueva impresora.
Terminando procesos incondicionalmente
Algunas seales no se pueden atrapar, como algunas excepciones de hardware.
SIGKILL, el que ms probablemente utilizar usted no puede ser capturado por un
manejador de seales y termina un proceso incondicionalmente. En general, Usted
necesitar esto solo si todos los otros medios de terminacin de proceso han fallado.
Cierre de sesin y nohup
Recuerde que vimos que usar nohup le permitira a sus procesos seguir funcionando
despus de que usted cerrara sesin. Bien, vamos a hacerlo y luego volveremos a iniciar
sesin. Despus de que usted inicie sesin, revise su proceso remanente de reloj de
hombre pobre usandojobs y ps como lo hemos hecho arriba.
Volver a iniciar sesin
ian@attic4:~$ jobs -l
ian@attic4:~$ ps -a
PID TTY
TIME CMD
10995 pts/0
[Link] ps
Esta vez estamos ejecutando pts/0, pero no hay signos de nuestros trabajos, solo el
comando ps. No es tal vez lo que estbamos esperando. No obstante, no todo est
perdido. Suponga que no puede recordar si usted termin el trabajo nohup que comenz
con bash o el que inici con bash. Arriba usted vio cmo encontrar los procesos que
estaban ejecutando el comando getty, as que puede usar el mismo truco para mostrar
solo SID, PID, PPID y la serie de comandos. Luego puede usar la opcin -js para mostrar
todos los procesos de la sesin.
Encontrando nuestros comandos perdidos
ian@attic4:~$ ps -C bash -C sh -o pid,sid,tname,cmd
PID
SID TTY
CMD
5487 2643 ?
bash [Link]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

7050 7050 pts/3


-bash
10851 10851 pts/0
bash
ian@attic4:~$ ps -js 2643
PID PGID
SID TTY
5487 5487 2643 ?
11197 5487 2643 ?

192

TIME CMD
[Link] bash
[Link] sleep

Note que el [Link] todava se est ejecutando, pero que ahora tiene un signo de
interrogacin (?) para el TTY que controla.

5.1.3 Modificar prioridades en la ejecucin de procesos


Los procesos iniciados por usuarios regulares normalmente tienen una prioridad de 0.
El comando ps -l puede mostrar la prioridad (nivel de cortesa, o NI, por ejemplo) de los
procesos desde un terminal.
El comando nice tambin puede usarse para iniciar un proceso con una prioridad
diferente. Usted usa la opcin -n o (--adjustment) el valor de las priridades van de -20
(la ms alta) a 19 la ms baja. Recuerde que los procesos con el menor valor de
prioridad se ejecutan a la prioridad de programacin ms alta, as que piense en el
aumento del valor de prioridad como sercorts con otros procesos. Note que usted
normalmente necesita ser el superusuario para especificar ajustes de prioridad
negativos. En otras palabras, los usuarios regulares usualmente solo pueden hacer que
sus procesos sean ms corteses.
Uso de 'nice' para establecer prioridades a los procesos
Para demostrar el uso de nice para establecer prioridades, vamos a iniciar con el
comando yes con prioridad -5 y dejar ejecutando el comando yes en el terminal.
ian@attic4:~# nice -n -5 yes
Despus de un momento en otro terminal ejecutar ps -al para mostrar el estado del
proceso donde muestra el cambio de prioridad.
ian@attic4:~# ps -al
F S UID PID PPID C PRI
4 S
0 12826 12208 4 15

NI ADDR SZ WCHAN
-5 708

TTY
pts/2

TIME
CMD
[Link] yes

Uso de 'renice' para cambiar prioridad a procesos ejecutados


Asi como nice establece la prioridad de un proceso cuando se incia su ejecucin, renice
permite alterarla en tiempo real, sin necesidad de detener el proceso.
ian@attic4:~# renice n 8 12826
12826: prioridad antigua -5, nueva prioridad 8
ian@attic4:~# ps -el

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

F S
CMD
4 S
yes

UID

PID

PPID

0 12826 12208

193

C PRI
4

28

NI ADDR SZ WCHAN
8 -

708

TTY

TIME

pts/2 [Link]

Cuando se trata ejecutar procesos en background (segundo plano) se utiliza el comando


nohup o el operador &. Aunque realizan una funcin similar, pero no son lo mismo.
Si se desea liberar al terminal de un programa que se espera durar un tiempo
considerable ejecutndose, como por ejemplo cuando se ejecuta el comando yes desde
la consola o terminal. Para lograr esto basta con escribir el comando especificado y
agregar al final el smbolo & (ampersand).
ian@attic4:~# yes > /dev/null &
[1] 26837
Sin embargo lo anterior produce que el padre del proceso PPID que se invoc sea el
proceso de la terminal en si, por lo que si cerramos la terminal o salimos de la sesin
tambin se terminaran los procesos hijos que dependan del terminal, no muy
conveniente si se desea que el proceso continu en ejecucin.
Para solucionar lo anterior, entonces se usa el comando nohup que permite al igual que
'&' mandar el proceso a background y que este quede inmune a los hangups (de ah su
nombre nohup) que es cuando se cuelga o termina en el terminal o consola de la cual
se ejecut el proceso.
ian@attic4:~# nohup yes > /dev/null &
Si por ejemplo, se tiene acceso a una nica consola o terminal, y se tienen que ejecutar
varios comandos que se ejecutarn por largo tiempo, se pueden entonces como ya se
vi previamente con nohup y el operador '&' mandarlos a segundo plano o background
con el objeto de liberar al terminal y continuar trabajando.
Pero si solo se est en una terminal esto puede ser difcil de controlar y para esto
tenemos el comando jobs que lista los procesos actuales en ejecucin:
ian@attic4:~# yes > /dev/null &
[1] 26854
ian@attic4:~# jobs
[1]+ Running
yes >/dev/null &
En el ejemplo previo, se ejecut el comando yes y se envi a background (&) y el sistema
devolvi [1] 26854, indicando asi que se trata del trabajo o de la tarea [1] y su PID.
Con los comandos fg (foreground) y bg (background) es posible manipular procesos que
esten suspendidos temporalmente, ya sea porque se les envi una seal de suspensin
como STOP (20) o porque al estarlos ejecutando se presion ctrl-z. Entonces para
reanudar su ejecucin en primer plano

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

ian@attic4:~# jobs
[1]+ Stopped
ian@attic4:~# fg %1
ian@attic4:~# jobs
[1]+ Running

194

yes >/dev/null &


yes >/dev/null &

Obsrvese como al traer en primer plano al proceso, este adquiri el smbolo [+] que
indica que esta al frente. Lo mismo sera con bg que volvera a reinicar el proceso pero
en segundo plano.

5.1.4 Buscar en archivos de texto usando expresiones regulares


Una expresin regular es un patrn que nos permite buscar un texto formado por
metacaracteres y caracteres ordinarios.
Los metacaracteres son ciertos caracteres con un significado especfico dentro de una
expresin regular. Estos caracteres tienen un significado que va ms all del smbolo
que representan y tienen un comportamiento especial en una expresin regular.
Aqu tenemos una lista de metacaracteres que usamos en expresiones regulares:
. Significa cualquier caracter.
^ Indica el principio de una lnea.
$ Indica el final de una lnea.
* Indica cero o ms repeticiones del caracter anterior.
+ Indica una o ms repeticiones del caracter anterior.
\< Indica el comienzo de una palabra.
\> Indica el final de una palabra.
\ Caracter de escape. Da significado literal a un metacaracter.
[ ] Uno cualquiera de los caracteres entre los corchetes. Ej: [A-Z] (desde A hasta
Z).
[^ ] Cualquier caracter distinto de los que figuran entre corchetes: Ej: [^A-Z].
{ } Nos permiten indicar el nmero de repeticiones del patrn anterior que deben
darse.
| Nos permite indicar caracteres alternativos: Ej: (^|[?&])
( ) Nos permiten agrupar patrones. Ej: ([0-9A-F]+:)+
Nota: En las expresiones regulares se distingue entre maysculas y minsculas.
Si queremos representar un caracter entre la a y la z, lo haremos de la siguiente manera:
[a-z]
Dentro del conjunto, podemos especificar todos los caracteres que queramos. Por
ejemplo: [a-zA-Z] representara los caracteres alfabticos en minsculas y maysculas.
El conjunto representa a un slo caracter. Si lo que queremos es representar identificar
un nmero o una letra, podramos hacerlo as: [a-zA-Z0-9]
Los conjuntos pueden representarse, nombrando todos y cada uno de los elementos, o
el intervalo. Ej: [0-9] representa lo mismo que [0123456789].
Si queremos representar un nmero que se compone de cero o ms dgitos: [0-9]*

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

195

Y si queremos representar un nmero que se compone de uno o ms dgitos: [0-9]+


Si ahora queremos representar cualquier caracter menos los dgitos: [^0-9]
Ahora, imaginemos que queremos representar un nmero de 5 dgitos: [0-9]{5}
Y si quisieramos representar una palabra que tiene entre dos y cuatro caracteres: [a-zAZ]{2,4}
Dentro de los conjuntos de caracteres individuales, se reconocen las siguientes
categoras
[:alnum:] alfanumricos
[:alpha:] alfabticos
[:cntrl:] de control
[:digit:] dgitos
[:graph:] grficos
[:lower:] minsculas
[:print:] imprimibles
[:punct:] de puntuacin
[:space:] espacios
[:upper:] maysculas
[:xdigit:] dgitos hexadecimales
Vamos a ver algunos ejemplos de expresiones regulares:
# grep '^La' fichero
El comando anterior nos devuelve todas las lneas del fichero que comienzan por La.
# grep '^ *La' fichero
El comando anterior nos devuelve todas las lneas del fichero que comienzan por
cualquier nmero de espacios seguido de La.
# grep '^\..*' fichero
El comando anterior nos devuelve todas las lneas del fichero que comienzan por punto
y tienen cualquier nmero de caracteres.
# ls -la | grep ' \..*'
El comando anterior nos devuelve la lista de ficheros que comienzan por un espacio
seguido de un punto y cualquier nmero de caracteres, es decir, la lista de ficheros
ocultos.
# ls -l | grep '^d'
El comando anterior nos devuelve la lista de ficheros que comienzan por d, es decir, la
lista de directorios.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

196

Resumen
En esta unidad, se aprendi el uso de tuberas en un sistema operativo Linux con varios
ejemplos para comprender el uso y lo importante de este en la administracin, el
monitoreo de los procesos; tambin, cmo se pueden brindar prioridades entre los
procesos que se ejecutan y bsqueda en archivos de texto usando expresiones
regulares.

Bibliografa
BSICA
Angie Nash y Jason Nash

2001

LPIC 1 Certification Bible

2004

Edicin especial Linux


(005.43L BAND)

CIBERTEC
2004 Linux administrador e Internet: Linux administrador y security
(005.43L CIBE)
COMPLEMENTARIA
2013

([Link]
Proyecto de documentacin de Linux en espaol.

2013

([Link]
Proporciona guas rpidas para instalar, configurar servicios de red basados en
Linux Centos.

2013

([Link]
Proyecto de formacin en habla hispana para los candidatos a la certificacin LPI en
cualquiera de sus niveles.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

197

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

198

UNIDAD

6
ENLACES DE ARCHIVOS Y
ESTRUCTURA JERRQUICA
LINUX
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al trmino de la unidad, el alumno comprende la estructura de directorios del
sistema de archivos definido en el FHS, identifica y crea los enlaces utilizado
para soportar tareas de administracin del sistema.
TEMARIO
6.1 Tema 7
6.1.1
6.1.2
6.1.3
6.1.4

:
:
:
:
:

Crear y cambiar enlaces duros y simblicos


Crear enlaces.
Identificar enlaces duros y/o simblicos.
Copiar vs enlazar archivos.
Usar enlaces para soportar tareas de administracin de
sistema.
6.1.5 : Comprender la ubicacin correcta de archivos en el FHS.
6.1.6 : Encontrar archivos y comandos en un sistema Linux.
6.1.7 : Conocer la ubicacin y propsito de archivos y directorios
importantes definidios en el FHS.

ACTIVIDADES PROPUESTAS

Identificar los enlaces simblicos.


Identificar el uso y utilidad de los enlaces simblicos.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

199

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

6.1

200

CREAR Y CAMBIAR ENLACES DUROS Y SIMBOLICOS

6.1.1 Crear enlaces


Un enlace es un medio de proporcionar varias identidades a un comando, archivo o
directorio (similar a un acceso directo de Windows) facilitndoles la accesibilidad, por
ejemplo, permitir a los programas, buscar los mismos archivos en distintas ubicaciones
o, referenciar a un ejecutable que se encuentra escondido tras una larga ruta, desde
un enlace creado en el directorio en el que trabajamos.
Hay dos tipos de enlaces en Linux: Enlace de referencia (hard links) o enlaces
simblicos (soft links).
Los enlaces de referencia normalmente no se pueden crear a directorios, solo root
puede intentarlo si pasa como argumento las opciones -d, -F o directory. En la prctica
es improbable que esto funcione, ya que la mayora de los filesystem no lo soportan, en
cambio, esto no supone ningn problema para los enlaces simblicos.
Los enlaces de referencias creados por defecto con ln (sin opciones) produce dos
entradas de directorio que apuntan al mismo archivo (mas concretamente, al mismo
nodo de ndice). Ninguno de los dos nombres es mas autntico que otro por lo que para
borrar el archivo, deberemos de eliminar ambos enlaces de referencia. Otra restriccin
de los enlaces de referencia es que deben referenciar a archivos dentro del mismo
sistema de archivos a bajo nivel, por ejemplo, no podramos crear un enlace duro o de
referencia (hard link) desde / (raz) hacia /home, suponiendo que /home est en una
particin independiente.
Por el contrario, los enlaces simblicos son un tipo especial de archivo (archivos que
contienen nombres de archivos) cuyo contenido apunta al archivo enlazado. Linux
accede al archivo enlazado (archivo original) cada vez que intenta acceder al enlace
simblico, por lo que acceder a un enlace simblico es como acceder al archivo original.
Esto nos permite crear punteros entre sistemas de archivos de bajo nivel. En la teora
acceder al archivo original desde el enlace simblico consume una cantidad mnima de
tiempo, por lo que es ms lento acceder a los enlaces simblicos que a los enlaces de
referencia, aunque no lo suficiente como para percatarnos de ello.
En la prctica, los enlaces simblicos son ms comunes que los de referencia; sus
desventajas son menores y la capacidad de enlazar entre sistemas de archivos
independientes y directorios puede ser importante. Con ellos podemos llamar a un
mismo fichero usando varios nombres, los identificar el sistema operativo por su
nmero de inodo generado de forma semialeatoria.
Un inodo es un enlace identificador nico para el sistema de ficheros.
En un directorio, hay mltiples nmeros de inodo correspondientes cada uno de ellos
con un nombre de fichero. La estructura de linux de ficheros se basa en que cada
nombre de fichero en un directorio (comunmente llamado en windows carpeta) es un
enlace a un inodo concreto.
Nota: Cada enlace simblico consume un nico nodo de ndice.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

201

6.1.2 Identificar enlaces duros y simblicos


Los Hard Links (Enlaces duros)
Estos enlaces comparten el inodo del fichero original. De hecho, un hard link es
indistinguible del original y por eso los cambios en el link afectan al fichero original,
excepto en el borrado. Borrar el link no elimina al original ni a la inversa. Este tipo de
enlace conserva los permisos del original y marcas de tiempo. Por contra, no se pueden
usar para hacer enlaces a directorios ni pueden extenderse a otros sistemas de ficheros.
Su sintaxis es la siguiente:
# ln t </ruta/completa/fichero> <nombre_enlace>
Los Symlinks (Enlaces simblicos)
Estos enlaces si que pueden extenderse a otros sistemas de ficheros. Tambin pueden
hacer referencia a directorios, de hecho, pueden referenciar hasta ficheros inexistentes.
La lectura y escritura, as como la copia del enlace, afectan al fichero origen, mientras
que el borrado afecta al propio enlace. Borrar el fichero origen tampoco elimina el enlace
automticamente.
Su sintaxis es como sigue:
# ln -s </ruta/completa/fichero> <nombre_enlace>

6.1.3 Copiar vs enlazar archivos


Segn lo que usted intenta lograr, en algunas ocasiones usar vnculos y en otras ser
mejor crear una copia de un archivo. La diferencia principal es que los vnculos proveen
mltiples nombres para un solo archivo, mientras que una copia crea dos grupos de
datos idnticos bajo dos nombres diferentes. Usted seguramente usar copias para
crear una copia de seguridad y tambin para probar un nuevo programa sin poner en
riesgo sus datos operativos. Usted usa vnculos cuando necesita un alias para un
archivo (o directorio), posiblemente para proveer una ruta de acceso ms conveniente
o corta. In la siguiente seccin, veremos otros usos para los vnculos.
Como usted ha visto, cuando se actualiza un archivo, todos los vnculos hacia l ven la
actualizacin, lo cual no sucede cuando usted copia un archivo. Tambin ha observado
que los vnculos simblicos pueden romperse pero que con operaciones de escritura
posteriores se pueden crear un nuevo archivo. Use los vnculos cuidadosamente.

6.1.4 Usar enlaces para soportar tareas de administracin del sistema


Sirva de ejemplo la siguiente sentencia
# ln -s $HOME/www /opt/joomla1.5.1/joomla-1.5.2-0/apache2/htdocs/

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

202

Donde:

/opt/joomla1.5.1/joomla-1.5.2-0/apache2/htdocs/ es la ruta al directorio en el que


se encuentran los archivos del servidor web.
$HOME es nuestro directorio de usuario
www es un directorio que hemos creado en nuestra carpeta de usuario

Con ese enlace simblico conseguimos tener todos los proyectos web que iremos
creando en nuestro equipo dentro de nuestra carpeta de usuario.
La idea es que si algn da cambiamos de distribucin Linux no perderemos ese trabajo
por un despiste: toda nuestra documentacin y proyectos estn en nuestro directorio de
usuario ($HOME) as no tenemos que recordar que dentro del sistema de ficheros de
Linux tenemos cosas que nos podran hacer falta.
Ahora si queremos crear un enlace duro en vez de uno simblico, la sintaxis es la misma
cambiando nica y exclusivamente el parmetro por -t; sirva de ejemplo:
# ln -t $HOME/www /opt/joomla1.5.1/joomla-1.5.2-0/apache2/htdocs/

Identificar enlaces simblicos


Desde el administrador de archivos pueden identificarse fcilmente por contar con una
flecha en la parte inferior del icono de carpeta:

Figura 170: Enlace simblico


Fuente: [Link]

Desde la terminal (lanzando un ls -l para que muestre informacin adicional) veremos


que en el bit de tipo en lugar de aparecer una d (de Directorio) aparece una l (de Link).

Figura 171: Enlace simblico


Fuente: [Link]

Ya que estamos con la terminal y recordando el aviso que hicimos sobre los enlaces
duros (al borrar el ltimo se borra el DIRECTORIO_ORIGINAL) comentar que para
saber cuntos enlaces DUROS apuntan al directorio original basta con mirar el nmero
que hay justo a la derecha de los permisos (en el ejemplo es un 1 porque slo hay un
enlace duro al DIRECTORIO_ORIGINAL).

Figura 172 Enlace simblico


Fuente: [Link]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

203

Eliminar enlaces
Tan sencillo como ejecutar el comando unlink.
# unlink RUTA_AL_ENLACE_NO_DESEADO

Donde:
RUTA_AL_ENLACE_NO_DESEADO es la ruta a alguno de los enlaces que hemos
creado y han dejado de sernos tiles.

6.1.5 Comprender la ubicacin correcta de los archivos FHS


El estndar de jerarqua del sistema de archivos (o FHS, del ingls Filesystem Hierarchy
Standard) es una norma que define los principales directorios y sus contenidos en
GNU/Linux y otros sistemas operativos similares a Unix. En agosto de 1993, inici el
proceso para desarrollar un estandar de sistema de archivos jerrquico, como un
esfuerzo para reorganizar las estructuras de archivos y directorios de GNU/Linux. El 14
de Febrero de 1994 se public el FSSTND (Filesystem Standard), un estndar de
jerarqua de archivos especifico para GNU/Linux. Revisiones de este se publicaron el 9
de octubre de 1994 y el 28 de marzo de 1995.
A principios de 1996, con la ayuda de miembros de la comunidad de desarrolladores de
BSD, se fij como objetivo el desarrollar una version de FSSTND ms detallada y dirigida
no solo hacia Linux sino tambien hacia otros sistemas operativos similares a Unix. Como
uno de los resultados el estandar cambio de nombre a FHS o Filesystem Hierarchy
Standard.
El FHS es mantenido por Free Standards Group, una organizacion sin fines de lucro
constituida por companias que manufacturan sustento fisico (Hardware) y equipamiento
logico (Software) como Hewlett Packard, Dell, IBM y Red Hat. La mayoria de las
distribuciones de Linux, inclusive las que forman parte de Free Software Standards, sin
aplicar de forma estricta el estndar.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

204

Figura 173: Descripcin de directorios


Fuente: [Link]

6.1.6 Encontrar archivos y comandos en un sistema Linux


find
Busca archivos en una ruta especfica, su sintaxis es la siguiente:
find [ruta] [expresion]

Ejemplo1
Buscar archivos y carpetas con el nombre [Link] en todo el directorio Raz.

Figura 174 Buscar el [Link]


Fuente: Cibertec

Ejemplo2
Buscar archivos y carpetas que le pertenezcan al usuario rdelvillar en todo el directorio
raz.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

205

Figura 175: Buscar los archivos del usuario rdelvillar


Fuente: Cibertec

Ejemplo3
Buscar archivos con extensin .doc dentro del directorio home/rdelvillar.

Figura 176: Buscar archivos con extensin *.doc


Fuente: Cibertec

Ejemplo4
Buscar archivos binarios que no han sido usados en los ltimos 100 das.

Figura 177 Buscar archivos binarios.


Fuente: Cibertec

Ejemplo5
Buscar archivos binarios creados o modificados en los ltimos diez das.

Figura 178: Buscar archivos binarios.


Fuente: Cibertec

whereis
El comando whereis busca un archivo especfico dentro de archivos fuente, binarios y
pginas del manual. Los nombres especificados, antes de ser buscados, se separan de
la definicin de la ruta y de las extensiones del tipo .ext (por ejemplo .c). As pues, la
utilidad whereis trata de encontrar los programas deseados dentro de las localizaciones
de cdigo.
Opcin
-b
-m
-s
-u

Uso
Bsqueda de binarios.
Bsqueda de entradas manuales.
Bsqueda de fuentes.
Bsqueda de entradas inusuales que no tienen una entrada por cada
tipo.

Algunos ejemplos seran:


1. Localizar informacin sobre el comando ls.
# whereis ls

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

206

2. Pedir la pgina del manual de este mismo comando.


# whereis man

3. Pedir todos los archivos que tengan que ver con el comando passwd.
# whereis passwd

which
El comando which para cada uno de sus argumentos, muestra por la salida estndar
(stdout) la ruta completa a los ejecutables que se pueden ejecutar cuando dicho
argumento se escribe en la lnea de comandos. sto lo hace buscando ficheros
ejecutables o scripts en los directorios especificados en la variable de entorno PATH.
Esta utilidad nos permite ver la ruta completa a un comando antes de ejecutarlo. Puede
ser til para comprobar que estamos haciendo uso del comando que queremos ejecutar.
La utilidad utiliza la siguiente sintaxis:
# which -opciones nombre_de_programa

Algunos ejemplos seran:


1. Averiguar dnde se encuentra instalado el programa find.
# which find

/usr/bin/find
2. Averiguar dnde se encuentra instalado el programa find y todas las ocurrencias que
encuentre.
# which -a find

/usr/bin/find
/usr/bin/X11/find
type
Muestra informacin del comando indicado informando si es alias o comando interno.

Figura 179: empleo del comando type.


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

207

locate
locate es un comando de bsqueda de archivos, bastante parecido al comando find. La
diferencia de locate es que la bsqueda la hace en una base de datos indexada para
aumentar significativamente la velocidad de respuesta. Locate proporciona un mtodo
seguro para indexar y buscar rpidamente archivos en el sistema. Utiliza codificacin
incremental para comprimir su base de datos y hacer las bsquedas ms veloces, pero
tambin almacena los permisos y propietario del archivo, de modo que los usuarios que
no puedan ver esos archivos, no podrn acceder a ellos. Este comando utiliza por
defecto la base de datos slocate para encontrar los archivos. Es posible especificar otra
base de datos para ser usada.
La sintaxis del comando es la siguiente:
locate -opciones argumentos

La base de datos se actualiza por medio del comando updatedb, sin argumentos. Slo
el usuario root est autorizado a utilizar este comando en el sistema.
Opcin
-u
-U /PATH
-e DIR
-c
-i
-o FILE
-d PATH

Uso
Comienza por el directorio raz / cuando se crea la base de datos slocate.
Comienza por el directorio especificado cuando se crea la base de datos
slocate.
Excluye los directorios especificados cuando se crea la base de datos
slocate.
Analiza el archivo /etc/[Link] cuando se crea la base de datos
slocate.
Busca sin tener en cuentas maysculas y minsculas.
Especifica el archivo de salida a crear.
Especifica la ruta a las bases de datos a buscar.

Algunos ejemplos seran:


1. Listar todos aquellos archivos que posean la palabra locate en su nombre.
#locate locate

2. Buscar los archivos comprimidos con gzip que adems estn debajo de /home.
# locate *.gz |grep ^/home

En este ejemplo se pone de manifiesto que es posible combinar los comandos de


bsqueda con la utilidad grep.
updatedb
El truco de locate se haya en tener indexadas todas las entradas del sistema de ficheros
de ste modo consigue la gran diferencia de tiempo frente al comando find que tiene
que ir rastreando el contenido completo del sistema de archivos.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

208

El nico inconveniente de locate es que puede dar resultados incorrectos (no mostrar
nada cuando sabemos a ciencia cierta que tienen que existir entradas para el trmino
buscado)
Para solucionarlo contamos con el comando updatedb; simplemente lanzando un
# updatedb

Nos aseguramos que encontraremos cualquier valor que le pidamos (siempre que
exista).

6.1.7 Conocer la ubicacin y propsito de archivos y directorios

importantes definidos en FHS


Todos los archivos y directorios aparecen debajo del directorio raz /, aun si estn
almacenados en dispositivos fsicamente diferentes.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

209

Figura 180: Descripcin del contenido de cada directorio.


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

210

Resumen
En esta unidad, se vio la importancia del uso de enlaces simblicos para la
administracin, solucin de problemas en la instalacin de aplicacin o copia de
archivos. Tambin, se aprendi a crearlos. Por otro lado, se conoci el uso del comando
find para la bsqueda de archivos, directorios, binarios modificados por fecha, y archivos
que pertenecen a un usuario para poder solucionar algn problema de acceso a archivos
y directorios.

Bibliografa
BSICA
Angie Nash y Jason Nash

2001

LPIC 1 Certification Bible

2004

Edicin especial Linux


(005.43L BAND)

CIBERTEC
2004 Linux administrador e Internet: Linux administrador y security
(005.43L CIBE)
COMPLEMENTARIA
2013

([Link]
Proyecto de documentacin de Linux en espaol.

2013

([Link]
Proporciona guas rpidas para instalar, configurar servicios de red basados en
Linux Centos.

2013

([Link]
Proyecto de formacin en habla hispana para los candidatos a la certificacin LPI en
cualquiera de sus niveles.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

211

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

212

UNIDAD

7
USANDO EL EDITOR VI
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al trmino de la unidad, el alumno conoce el funcionamiento bsico del editor
de texto Vi. Navegar, insertar, copiar, mover, pegar y buscar sern algunas de
las tareas que servirn de ahora en adelante para editar los archivos de texto,
ya sean textos o bien ficheros de configuracin del sistema.
TEMARIO
7.1 Tema 8 : Editor Vi
7.1.1 : Editar archivos con vi, utilizar los modos de vi.
7.1.2 : Realizar operaciones bsicas de edicin de archivos vi.

ACTIVIDADES PROPUESTAS

Identificar las opciones para utilizar el editor vi.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

213

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

7.1

214

EDITOR VI

7.1.1 Editar archivos de vi, utilizar los modos de vi


El editor vi es un editor de texto de pantalla completa que maneja en memoria el texto
entero de un archivo. Es el editor clsico de UNIX; est en todas las versiones. Puede
usarse en cualquier tipo de terminal con un mnimo de teclas; esto lo hace difcil de usar
hasta que uno se acostumbra.
Existe un editor vi ampliado llamado vim que contiene facilidades adicionales, as como
diversas versiones del vi original. En todos los casos, el conjunto de comandos bsicos
es el mismo.
Modos de vi.
Existen tres modos o estados en vi:

modo comando: las teclas ejecutan acciones que permiten desplazar el cursor,
recorrer el archivo, ejecutar comandos de manejo del texto y salir del editor. Es el
modo inicial de vi.
modo texto o modo insercin: las teclas ingresan caracteres en el texto.
modo ltima lnea o ex: las teclas se usan para escribir comandos en la ltima lnea
al final de la pantalla.

El modo por defecto es el modo de comandos. En este modo no se puede realizar la


edicin del texto. Vi espera al comando apropiado antes de realizar una operacin. En
general, vi volver al modo de comandos despus de ejecutar un comando.
La ventaja de este modo de trabajar es que se pueden ejecutar comandos desde
ficheros, y los documentos pueden ser formateados o reestructurados simplemente
ejecutando comandos de vi.
Si al presionar ESC el terminal emite un pitido quiere decir que estamos en modo de
comandos.
Iniciando vi
Para comenzar a usar vi, teclear
vi nuevo_fichero

Este comando inicia el editor y, como el fichero no existe todava, lo crea para ser
editado. El editor est ahora en modo de comandos esperando por un comando.
vi +5 nombre_fichero

//Comienza la edicin en la lnea 5

vi + nombre_fichero

//Comienza la edicin en la ltima lnea

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

215

Moviendo el cursor
Las siguientes teclas controlar el movimiento del cursor.
k
j
h
l

arriba
abajo
izquierda
derecha

Cuando se carga vi con un nuevo fichero, el cursor est en la esquina superior izquierda
de la pantalla, y no puede ser movido con las teclas de cursor.
Modo de entrada de texto (aadir, insertar)
a aade texto a partir del carcter en que est situado el cursor.
A aade texto al final de la lnea actual.
i inserta texto a partir de la posicin del cursor
I inserta texto al principio de la lnea actual.
o inserta una lnea debajo de la posicin del cursor
O inserta una lnea encima de la posicin del cursor
:r fich permite insertar el fichero fich tras la lnea actual

Borrando y cambiando texto


Los tres comandos ms utilizados para alterar el texto son
x borra el carcter en el cursor
nx borra n caracteres hacia la derecha, incluido el que est sobre
el cursor.
nX borra n caracteres hacia la izquierda.
r sustituye el carcter en el cursor
dd borra la lnea en la que est el cursor
ndd borra n lneas hacia abajo incluyendo la que contiene el cursor.

Estos tres comandos son ejecutados en el modo de comandos, y vuelven al modo de


comandos despus de ejecutarse.
Deshaciendo cambios
Hay veces que se realizan cambios y nos damos cuenta inmediatamente que hemos
cometido un error. El editor vi facilita mecanismos para deshacer acciones de comandos
previos.
El comando u deshace el comando previo.
El comando U deshace todos los cambios realizados en la lnea actual.
Guardando cambios y permaneciendo en vi
Es muy recomendable guardar los cambios que se van realizando de una forma regular.
Para ello se utiliza :w

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

216

Si decides que no quieres sobreescribir el fichero que ests editando, sino que quieres
guardar los cambios como un fichero nuevo, aade al comando :w el nombre del nuevo
fichero,
:w nuevo_fichero2

Edicin simultnea de ficheros


Podemos pasar de la edicin de un fichero a la edicin de otro usando ':e fichero' pero
antes deberemos salvar el contenido de la edicin actual. Tambin podemos forzar el
paso a editar otro fichero con ':e! fichero' pero en ese caso se perdern las
modificaciones realizadas. Usando ':e#' volvemos a retomar la edicin del fichero
anterior situados en la misma lnea donde lo dejamos.
Abandonando vi
Para dejar vi se utiliza:
ZZ Guarda los cambios en el fichero original, y vuelve al intrprete
de comandos
:wq Igual que ZZ
:q! Abandona el editor, no guarda los cambios, y vuelve al
intrprete de comandos

Comandos adicionales para posicionamiento del cursor


Adems de las teclas h, j, k, l existen cuatro ms:
b
e
0
$

mueve
mueve
mueve
mueve

el
el
el
el

cursor
cursor
cursor
cursor

al
al
al
al

comienzo
final de
comienzo
final de

de
la
de
la

la palabra anterior
palabra siguiente
la lnea (cero)
lnea

Scroll de pantalla
Los comandos para avanzar una pantalla arriba y abajo (12 lneas) son
ctrl-d una pantalla abajo
ctrl-u una pantalla arriba

Para ficheros muy largos, se puede ir a una lnea del texto


3000G va a la lnea nmero 3000

Para posicionar el curso en la ltima lnea del fichero, teclea


G

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

217

Para posicionar el cursor al comienzo del fichero, teclea


1G

El siguiente comando muestra el nmero de lnea actual


ctrl-g

Bsqueda
Otro mtodo de posicionarse dentro de un fichero es buscando una cadena de
caracteres. En el modo de comandos, cualquier cadena de caracteres precedida por /
significa el comando de bsqueda hacia adelante. El cursor se posiciona en la primera
ocurrencia de dicha cadena.
El comando n busca hacia adelante la siguiente ocurrencia.
Para buscar hacia atrs, se utiliza el comando ?
Borrar texto
Ya se vio anteriormente el comando dd para borrar la lnea actual.
El comando dw borra la palabra actual. Ntese que el comando de borrado comienza
por d, seguido por el mbito de aplicacin (d para una lnea, w para una palabra (word
en ingls)).
Quitar y poner
Cuando se borra algo, es almacenado en un buffer temporal. El contenido de este buffer
puede ser accedido y 'puesto' o pegado en cualquier sitio del texto.
Para recuperar el ltimo texto borrado, se usa el comando p
nyw guarda en la memoria intermedia n palabras contadas desde la posicin
del cursor.
y$ guanda en la memoria intermedia desde la posicin del cursor hasta el
final de la lnea.
yy guarda en la memoria intermedia la lnea entera en la que se encuentra
el cursor.
yn guarda en la memoria intermedia n+1 lneas desde la lnea actual.

7.1.2 Realizar operaciones bsicas de edicin de archivos usando vi


Averige la versin de vim que est ejecutando y las caractersticas que tiene incluidas
usando el comando:
vi --version

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

218

Por ahora, usaremos el comando sin opciones.


vi [Link]

El editor vi fue creado cuando no todos los teclados de terminal tenan teclas de
movimiento de cursor, por consiguiente, todas las tareas que pueden realizarse en vi,
tambin pueden llevarse a cabo con las teclas alfanumricas tradicionales y otras pocas
teclas como Esc e Insert. Sin embargo, si lo desea, puede configurar vi para usar teclas
adicionales; la mayora de las teclas tienen funciones tiles en vi. Debido a sus orgenes
y al hecho de que las primeras conexiones de terminales eran lentas, vi se destac por
el uso de comandos muy breves y crpticos. Veamos primero las teclas que se usan
para navegar dentro de un archivo.
Edicin de texto
Ahora que ya sabemos cmo abrir un archivo en vi, desplazarnos dentro de ste y salir,
lleg el momento de aprender a editar el texto dentro del archivo.
Modificar texto
Use los siguientes comandos para insertar, eliminar o modificar texto. Tome en cuenta
que algunos de estos comandos poseen una forma en mayscula que es similar a la
forma en minscula; lea las descripciones proporcionadas a continuacin.
I
Ingrese al modo insertar antes del carcter en la posicin actual. Tipee el texto deseado
y presione Esc para volver al modo de comandos. Use I para insertar texto al comienzo
de la lnea actual.
A
Ingrese al modo insertar antes del carcter en la posicin actual. Tipee el texto deseado
y presione Esc para volver al modo de comandos. Use A para insertar texto al final de
la lnea actual.
C
Use c para modificar el carcter actual e ingrese al modo insertar para tipear caracteres
de reemplazo.
O
Abra una lnea nueva para insertar texto debajo de la lnea actual. Use O para abrir una
lnea arriba de la lnea actual.
Cw
Elimine el resto de la palabra actual e ingrese al modo insertar para reemplazarla. Use
un conteo de repeticin para reemplazar varias palabras. Use c$ para reemplazar hasta
el final de la lnea.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

219

dw
Igual a cw y c$, con la excepcin de que no se ingresa al modo insertar.
dd
Elimine la lnea actual. Use un conteo de repeticin para eliminar varias lneas.
x
Elimine el carcter en la posicin del cursor. Use un conteo de repeticin para eliminar
varios caracteres.
p
Coloque el ltimo texto eliminado despus del carcter actual. Use P para colocarlo
antes del carcter actual.
xp
Esta combinacin de x y p es una expresin muy til que intercambia lugares entre el
carcter en la posicin del cursor y el que tiene a la derecha.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

220

Resumen
En esta unidad, se vio el uso de un editor de archivos, en Linux, va el comando vi, con
el cual se puede modificar, eliminar contenido de los archivos con mltiples opciones
para poder seguir ampliando la administracin del sistema operativo Linux. El uso de
este comando es muy importante, en Linux, debido a que todo administrador siempre
est realizando cambios de parmetros a la aplicacin que levanta en el sistema
operativo y se deben modificar los archivos de las distintas aplicaciones que corren
sobre este.

Bibliografa
BSICA
Angie Nash y Jason Nash

2001

LPIC 1 Certification Bible

2004

Edicin especial Linux


(005.43L BAND)

CIBERTEC
2004 Linux administrador e Internet: Linux administrador y security
(005.43L CIBE)
COMPLEMENTARIA
2013

([Link]
Proyecto de documentacin de Linux en espaol.

2013

([Link]
Proporciona guas rpidas para instalar, configurar servicios de red basados en Linux.

2013

([Link]
Proyecto de formacin en habla hispana para los candidatos a la certificacin LPI en
cualquiera de sus niveles.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

221

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

222

UNIDAD

8
ADMINISTRACIN DE
PAQUETES DEBIAN
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al trmino de la unidad, el alumno instala y administra paquetes Debian.
TEMARIO
8.1 Tema 9 : Instalacin de Paquetes Debian
8.1.1 : Instalar, actualizar y desinstalar paquetes binarios de
Debian.
8.1.2 : Encontrar paquetes que contengan archivos especficos o
bibliotecas las cuales pueden estar o no instaladas.
8.1.3 : Obtener informacin de un paquete como la versin,
contenido, dependencias, integridad de paquete y estado de
instalacin (est o no instalado el paquete).

ACTIVIDADES PROPUESTAS

Identificar la informacin de los paquetes en Debian.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

223

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

8.1

224

INSTALACIN DE PAQUETES DEBIAN

8.1.1 Instalar, actualizar y desinstalar paquetes binarios de Debian


En esta seccin estudiaremos como se gestionan los paquetes (programas) en Debian
y sus distribuciones derivadas. La forma en que se har ser muy similar a la gestin de
paquetes rpm que se ver ms adelante. Los paquetes, que realmente son ficheros
binarios, se llaman as porque no solo contienen el programa que se desea instalar, sino
que adems incluyen los ficheros (scripts) de configuracin, la documentacin y sus
dependencias.
Es muy importante conocer lo que significa dependencias, este trmino pone de
manifiesto la necesidad que tienen los programas que otros estn presentes para poder
funcionar. Por ejemplo, si pretendemos instalar el paquete X que es un entorno grfico,
posiblemente tenga dependencias, es decir, que necesite de otros paquetes sobre los
que apoyarse para funcionar correctamente, por ejemplo libreras.
Los nombres de los paquetes Debian tienen la siguiente estructura:
nombre-del-paquete_nombre-del-paquete-build_arquitectura.deb

Donde:

nombre-del-paquete: Ser corto y descriptivo, si esta formado por varias palabras


suelen estar separadas por guiones.
nombre-del-paquete: Vara en cada revisin y suele ser numrica siguiendo el
esquema siguiente: [Link].
build: Indica la versin del paquete.
arquitectura: Plataforma hardware para la cual fue diseada la compilacin del
paquete.
deb: Es la extensin del fichero que, para los paquetes Debian, es siempre .deb

Ejemplos:
ethereal_0.8.13-2_i386.deb;

arj_3.10.22-9_i386.deb

Base de datos de los paquetes


La informacin correspondiente a los paquetes que hay instalados se conserva en una
base de datos que suele estar en /var/lib/dpkg. Dentro de este directorio tenemos el
fichero /var/lib/dpkg/status que contiene la totalidad de paquetes conocidos por dpkg
con su estado y tambin el fichero /var/lib/dpkg/available que contiene los paquetes
que hay disponibles y se pueden instalar. Estos ficheros son muy similares y nos darn
bastante informacin: quin mantiene el paquete, su tamao, versin, dependencias,
descripcin, etc. Es muy til para saber que uso tiene un paquete o ponerse en contacto
con su desarrollador.
Herramientas para la gestin de paquetes .deb
El sistema Debian tiene varias herramientas para el manejo de los paquetes, pero los
cuatro comandos principales son dpkg, apt-get, deselect y alien.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

225

dpkg
Esta herramienta permite manejar los paquetes de forma individual tratando
directamente con los ficheros .deb. Es el ncleo del sistema de empaquetado Debian y
equivalente al comando rpm en otras distribuciones.
Permite instalar, actualizar, suprimir y gestionar los paquetes. Su uso se suele limitar
para forzar instalaciones, arreglar dependencias rotas y el ms comn, ver los paquetes
instalados.
Este comando no gestiona las dependencias. Si al instalar un paquete con dpkg faltaran
dependencias informar de ello y tendremos que instalarlas previamente o en la misma
lnea de comando que nos ha dado el aviso. Un aspecto importante de esta orden es la
necesidad de haber descargado previamente los paquetes a instalar.
La herramienta dpkg usa muchos de los archivos de la carpeta /var/lib/dpkg ya
mencionada anteriormente. Su sintaxis es:
# dpkg

orden

[paquete/s]

Donde orden puede ser:


-i; --install
Sirve para instalar el/los paquete/s que se le pase/n como segundo parmetro. (Debe
escribirse el nombre completo del paquete). Si el paquete que se pretende instalar tiene
dependencias de otros paquetes que no se encuentren instalados el programa lo
detectar, y ser necesario instalar previamente (o en la misma lnea) aquellos
abortando la operacin.
La opcin tambin se puede usar para actualizar un paquete, pero hay que tener en
cuenta que si el paquete estaba instalado lo actualizar si hay una versin ms nueva
disponible y si no estaba instalado lo instalar. Por eso hay que tener cuidado si slo se
quieren actualizar los existentes sin instalar paquetes nuevos.
-r; --remove
Elimina el/los paquete/s que se le indique/n como segundo parmetro. No borra los
ficheros de configuracin para evitar reconfigurar la herramienta si se vuelve a reinstalar.
Esta opcin tambin comprueba las dependencias y si el paquete que se pretende
desinstalar es una dependencia de otro que est instalado, abortar la operacin.
-P; --purge
Elimina todo incluyendo los ficheros de configuracin.
-R
Esta opcin junto con i instala todos los paquetes contenidos en un directorio que se
indique.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

226

-l; --list
Da el estado de de los paquetes Debian que aparecen en la base de datos. Si le
aadimos una cadena nos muestra los paquetes que en su nombre contienen esa
cadena. Es una opcin muy usada que devuelve una sola lnea por paquete y permite
usar comodines.
En el listado resultante aparecer a la izquierda de cada paquete unas indicaciones que
podrn ser, por ejemplo, un, ii o rc. Esos valores indicarn respectivamente paquete
sin instalar, paquete instalado o paquete desinstalado pero del que se conservan sus
ficheros de configuracin.
-s; --status
Da informacin sobre el paquete que le indicamos a continuacin. Si esta instalado,
tamao, etc.
-S; --search
Busca un paquete de los instalados que contenga la cadena que le indiquemos a
continuacin. Si en vez de una cadena le pasamos un fichero nos indicar a que paquete
corresponde dicho fichero. Este segundo uso es el ms comn, encontrar un paquete
que contiene un fichero, o lo que es lo mismo, el paquete propietario de un fichero
-L; --listfiles
Muestra la lista de ficheros que usa el paquete cuyo nombre indiquemos a continuacin,
vamos, los ficheros que instala. La mayora de las veces basta con aadir en nombre
del paquete, sin versin, pero a veces pueden existir varias y entonces habra que
especificarla en el nombre del paquete.
--configure
Ejecuta los scripts de configuracin del paquete que indiquemos a continuacin.
--get-selections
Imprime slo los nombres de los paquetes que estn instalados. Permite comodines.
Ejemplos:
# dpkg

-i

[Link]

[Link]

Instala los dos paquetes indicados. Obviamente los archivos [Link] y


[Link] deben existir en el directorio desde donde se invoca el comando dpkg.
# dpkg

-r

zip

Elimina el paquete ya instalado en el sistema de nombre zip.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

# dpkg

-P

227

apache

Elimina completamente el paquete apache del sistema, incluyendo los ficheros de


configuracin, algo que no ocurre con la opcin anterior: -r
# dpkg

--purge

arj

Igual que la anterior pero aplicado al paquete arj.


# dpkg

-i

-R

/var/tmp/packs/

Instala todos los paquetes que haya en el directorio /var/tmp/packs/ as como los que
pudieran encontrarse en subdirectorios que cuelguen de l a todos los niveles de
profundidad.
# dpkg

-l

dpkg

-i

-R

/var/tmp/packs/

Imprime por la salida estandar la relacin ordenada alfabticamente de todos los


paquetes instalados en el sistema.
# dpkg

-l apache

Igual que el anterior pero slo la informacin correspondiente al paquete apache.


# dpkg

--get-selections xserver* zip*

Imprime por la salida estandar la relacin ordenada alfabticamente de todos los


paquetes cuyos nombres coinciden con los patrones proporcionados.
# dpkg

-s

wawk

Imprime por la salida estandar el estado del paquete proporcionado as como


informacin complementaria de inters.
# dpkg

-S

/usr/bin/basename

Busca entre los todos ficheros de todos los paquetes instalados el archivo proporcionado
o patrn de coincidencia.
# dpkg

-L

coreutils

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

228

Imprime por la salida estandar la relacin completa de archivos que el paquete -en este
caso coreutils- a depositado en el arbol de directorios despus de instalarlo.
Nota: La ejecucin y posterior salida de un comando en pantalla puede variar
dependiendo de la distribucin Linux, pero bsicamente contendr la misma informacin
con distinto formato.
Gestor APT ( Advanced Packaging Tool )
Con la herramienta anterior, cuando se quiere instalar algo, puede resultar que se
necesite a su vez 3 4 paquetes ms y, cuando se van a instalar estos, estos segundos
necesitan de otros pudiendo la historia convertirse en un autntico laberinto existiendo
incluso dependencias cruzadas. Como ya dijimos antes, dpkg instala los paquetes
individualmente slo informando de las dependencias pero no instalndolas. Esta nueva
herramienta gestiona esas dependencias instalndote todo lo necesario.
El programa apt-get sirve para automatizar la gestin de paquetes en las distribuciones
que derivan de Debian. Su principal ventaja es que resuelve l mismo las dependencias
y, si quieres instalar un paquete que tiene dependencias y estas a su vez otras
resultando que hay que instalar un nmero determinado de paquetes, nos informar de
ello mostrndonos la lista de paquetes que se instalarn, nos consultar si deseamos
proseguir y, si se contesta afirmativamente, lo instalar todo. Esta herramienta instala
todas las dependencias requeridas (depends), pero ignora los paquetes recomendados
(recommends) y sugeridos (suggests) que tambin puede haberlos.
Para poder controlar todo, apt-get en vez de trabajar directamente con paquetes lo hace
con repositorios de paquetes, que satisfacen las dependencias de manera automtica.
Leer una lista de paquetes del repositorio, crear un rbol de dependencias, y
determinar que paquetes son requisitos previos obligatorios y que todava no estn
instalados. Tambin puede ser que le sugiera instalar algn otro paquete.
Estos repositorios contendrn todos los paquetes necesarios y pueden estar en local
(en un cd, dvd o directorio), aunque lo ms habitual es que sean remotos, estn online
y que sean mantenidos y actualizados a diario siendo el inconveniente de esta segunda
opcin el tiempo de descarga, pero con la gran ventaja de que con un solo comando
podemos actualizar todos los paquetes del sistema.
Los paquetes contenidos en los repositorios dependern unos de otros, o de otros
paquetes procedentes de otros repositorios. El sistema APT puede gestionar varios
repositorios de distintos sitios, y cuando instala un paquete, tambin instala sus
dependencias (si las encuentra).
El fichero /etc/apt/[Link]
La configuracin de los repositorios se encuentra en el fichero /etc/apt/[Link] que
es el que indica al comando apt-get donde coger los paquetes para su instalacin.
Un ejemplo de este fichero para un Debian o Ubuntu sera:
[root@servidor]# cat

/etc/apt/[Link]

#deb cdrom:[Ubuntu 11.04 _Natty Narwhal_ - Release i386


(20110427.1)]/ natty main restricted
deb [Link] natty main restricted

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

229

deb-src [Link] natty main


restricted
##Major bug fix updates produced after the final release of the
distribution.
deb [Link] natty-updates main
restricted
deb-src [Link] natty-updates main
restricted

La primera lnea, que se encuentra comentada, indica el dispositivo desde donde se


instal nuestro Linux y podra interesar quitar el comentario para actualizar desde el
CD/DVD. El resto de lneas indican fuentes desde donde se puede recuperar
informacin y paquetes al sistema local. Posteriormente habra que usar el comando
apt-get update para sincronizar la informacin que figura en su base de datos local con
las fuentes especificadas en el fichero. La sincronizacin debera de realizarse siempre
antes de instalar o actualizar un paquete y tambin despus de modificar
/etc/apt/[Link]. Tambin se recomienda poner los recursos ms rpidos al inicio
del fichero. Se pueden aadir comentarios poniendo al principio de la lnea el smbolo
#.
apt-get
La sintaxis del comando es:
# apt-get

[opcin/es]

orden

[paquete/s]

Entre las opciones tenemos las siguientes:

-f

Intenta corregir dependencias rotas.

-d

Descarga un paquete pero no lo instala.

-s

Simula la ejecucin de la orden pero no la realiza. Se usa por ejemplo para


ver si un paquete depende de otros paquetes o que implicara un upgrade.

-y

Responde a todo que si, cuidado con esta opcin.

-h

Muestra la ayuda.

La orden podr ser:


update
Actualiza la base de datos, solo la lista de paquetes y versiones disponibles, desde los
repositorios. Se suele utilizar esta opcin despus de modificar el fichero [Link].
install
Instala el paquete que indiquemos a continuacin. Si el paquete ya estuviera instalado
lo actualiza. Ejecute apt-get update antes de actualizar paquetes para asegurarse de
que la base de datos local muestre las ltimas versiones disponibles. Si el nombre del
paquete va seguido de (menos) indica que en vez de instalarlo hay que desinstalarlo.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

230

Cuando se ordena la instalacin de un paquete, el apt-get revisa primero si ya fue


descargado, si no lo fue, ir al primer recurso del [Link] a buscar la versin ms
nueva del programa, y si este tiene dependencias se aadirn a la lista de instalacin.
remove
Borra el paquete que indiquemos a continuacin. Hay que tener en cuenta que borra el
paquete indicado pero no los paquetes que tuvieron que instalarse como requisito previo
a aquel aunque no vayan a ser necesarios segn nuestro rbol de dependencias. Esta
orden avisa de esta eventualidad pero no borra esos paquetes. Tambin indica los
paquetes no necesarios que pudiera haber de antes. Tampoco borra los archivos de
configuracin del paquete.
autoremove
Eliminar los paquetes que le indiquemos junto con sus dependencias que no vayan a
ser necesarias para los paquetes que queden instalados en el sistema. Incluir tambin
aquellas dependencias innecesarias para el sistema aunque no hallan sido instaladas
por el/los que se pretenden eliminar. La opcin remove junto con --auto-remove es
equivalente.
Si se usa autoremove sin ningn nombre de paquete, los paquetes que no se estn
usando y que se instalaron como dependencias de otros se eliminarn de su sistema de
forma automtica.
purge
Junto con el nombre de un paquete lo desinstala y borra sus archivos de configuracin.
upgrade
Actualiza todos los paquetes instalados de los que haya nuevas versiones disponibles.
Tambin es muy conveniente ejecutar apt-get update antes de su uso.
clean
Elimina todos los archivos de paquetes descargados y que estn en la cache.
Cuando apt-get instala un programa, guarda una copia del fichero deb en los directorios
/var/cache/apt/archives y /var/cache/apt/archives/partial. Con el tiempo esos directorios
pueden llegar a ocupar mucho espacio, para limpiar ambos directorios se usa esta
opcin.
check
Actualiza la cache y verifica las dependencias.
Ejemplos:
# apt-get

update

Actualiza la cache local con la de los repositorios de referencia indicados en


/etc/apt/[Link]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

# apt-get

install

231

vim-gtk

Instala el paquete vim-gtk y todas sus dependencias.


# apt-get

install

tzdata

Instala el paquete tzdata y todas sus dependencias.


# apt-get

install

libqt*

Instala todos los paquetes cuyos nombres coinciden con el patrn asi como las
dependencias que necesitan.
#apt-get

install

-s

gcl apt-get

[opcin/es]

orden

[paquete/s]

Instala el paquete gcl de forma simulada, no produce n ingn efecto real en el sistema.
# apt-get

install

-d

gcl

Descarga un paquete sin instalarlo y luego podr visualizar la informacin del paquete
con dpkg --info. Generalmente los archivos descargados estn en
/var/cache/apt/archives/
# apt-get

remove

-s

gcl

Elimina el paquete gcl de forma simulada, no produce ningn efecto real en el sistema.
# apt-get

clean

Borra totalmente el repositorio local que contiene los ficheros de los paquetes
descargados.
apt-cache
Busca informacin sobre paquetes en nuestro sistema, en la cach local. Puede utilizar
expresiones regulares.
Su sintaxis es:
# apt-cache

orden

paquete/patron_de_busqueda

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

232

Veamos sus opciones ms comunes:

search

show

Busca, por su nombre o comentario, un paquete en la base de datos local


APT.
Muestra la descripcin del paquete.

Ejemplos:
# apt-cache
# apt-cache
# apt-cache

search torrent
search linux loader
show torrent

dselect
Es una interfaz grfica (front-end) del comando dpkg que gestiona las dependencias y
los conflictos. Normalmente no suele estar instalada y por tanto se necesita usar el
comando anterior para hacerlo. La orden completa sera apt-get install dselect y luego
se ejecutara con dselect.
Por defecto, al arrancarlo selecciona automticamente todos los paquetes "Requeridos"
("Required"), "Importantes" ("Important") y "Estndar" ("Standard"), pero podemos
configurar otros.

Figura 181: Ejecucin de dselect.


Fuente: [Link]

alien (Convertidor de paquetes)


Al igual que dselect esta herramienta a veces no est instalada, por lo que la
instalaramos previamente con apt-get install alien.
Este comando permite convertir paquetes que no son de Debian sino de Redhat (rpm),
Stampede (slp), Slackware (tgz), Solaris (pkg) o genricos a Debian y viceversa. Lo que
hace es generar una salida lo ms parecida a Debian y siempre ser preferible usar
paquetes originales para esta distribucin, pero a veces no hay ms remedio porque no
exista el paquete buscado en los repositorios.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

233

La sintaxis del comando es:


# alien

opcion/es

paquete

Las opciones tpicas son:

-d o --to-deb Es la opcin por defecto. Convierte un paquete rpm a formato debian


(.deb).

-r o --to-rpm Para convertir un paquete a formato RPM.

-t o --to-tgz

--to-slp

-i o --install

-c o --scripts Incluye en la conversin los scripts de pre y postinstalacin.

-h o --help

--description=Comentario

Para convertir un paquete a formato tgz.

Para convertir un paquete a formato slp.


Instala el paquete tras crearlo.

Muestra la ayuda.
Pone una descripcin al paquete creado.

Ejemplos:
#alien
#alien
#alien
#alien
#alien
#alien

-d [Link]
-d --scripts [Link]
--scripts -d [Link]
-d [Link]
-d [Link]
--scripts -d [Link]

Para este comando debe indicarse el nombre completo del paquete con su versin,
arquitectura, etc. Adems hay que decir que una conversin simple comprobar las
dependencias, pero no incluir los scripts de pre y postinstalacin. Para esto hay que
especificar el parmetro --scripts.
Aptitude
Si no est presente la instalaramos con:
# apt-get

install

aptitude.

El comando aptitute ofrece una interfaz para las funciones de gestin de APT. Se puede
usar para instalar o eliminar paquetes y controlar los indicadores de estado que
muestran, por ejemplo, si se deberan actualizar o conservar en su estado actual. Es
como una evolucin del dselect pero mucho ms amigable.
Utilice Enter para expandir o comprimir las ramas de seleccin y llegar hasta los
paquetes, y ctrl-t para acceder a la barra de men.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

234

Figura 182: Interfaz de aptitude.


Fuente: [Link]

Una "i" en la columna izquierda indica que en el estado actual se hace necesario instalar
el paquete. La tecla ? le ofrecer ayuda en cualquier momento y "/" le permitir buscar
paquetes. Por ejemplo, si tecleamos /arj la bsqueda nos llevara a ese paquete o
algn otro con nombre similar, por ejemplo, arj-doc, si es el caso pulse n (next) para ir
al prximo resultado. Luego podr usar +/- o el men Package para marcar/desmarcar
el paquete para su instalacin. Cuando termine, seleccione Acciones -> Instalar/Eliminar
paquetes (o presione la tecla "g") para aplicar los cambios. Tambin se puede usar la
opcin quit (q) para salir sin aplicarlos.
Synaptic
Adems de aptitude existen otras interfaces de gestin de paquetes para los sistemas
Debian. Una de ellas es synaptic que est preparada para el X Window System y es un
front-end, una interfaz grfica, que llama a las funciones de APT. Tiene todas las
funciones de APT y, adems, disfruta de una interfaz muy atractiva. El botn Aplicar
instalar los paquetes que se marquen y actualizar todos los paquetes que sea
necesario actualizar. El botn Reload (Recargar) actualizar la lista de paquetes.

Figura 183: Interfaz de synaptic.


Fuente: [Link]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

235

8.1.2 Encontrar paquetes que contengan archivos especficos


bibliotecas las cuales pueden estar o no instaladas

Utilizando dpkg para conocer los nombres de paquetes


Uno de los caminos para conocer el nombre de un paquete es saber el nombre de un
archivo importante que sea contenido por ese paquete.
Para averiguar a qu paquete pertenece un archivo determinado:
# dpkg {-S|--search} patrn

Lo cual busca 'patrn' en los paquetes instalados.


Por ejemplo, para conocer el paquete que ofrece ciertos archivos ".h" puede ejecutar:

Figura 184: Empleo de dpkg para encontrar a que paquete pertenece stdio.h.
Fuente: Cibertec

8.1.3 Obtener informacin de un paquete como la versin, contenido,


dependencias, integridad del paquete y estado de instalacin (este o
no instalado el paquete)
Descubriendo nombres de paquetes
Por ejemplo, supongamos que usted quiere revivir la gloria de la poca dorada del Atari
2600. Quiere utilizar APT para instalar un emulador de Atari, y despus bajar algunos
juegos, puede hacer lo siguiente:

Figura 185: Empleo del comando apt-cache con la orden search.


Fuente: Cibertec

Hemos encontrado muchos paquetes relacionados con lo que estamos buscando. Para
obtener mayor informacin de un paquete especfico, hacemos lo siguiente:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

236

Figura 186: Empleo del comando apt-cache con la orden show.


Fuente: Cibertec

En este desplegado tiene muchos detalles sobre paquete seleccionado as como su


descripcion.
Para mayor informacin sobre un paquete puede utilizar:

Figura 187: Empleo del comando apt-cache con showpkg


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

237

Y slo para saber de que paquetes depende:

Figura 188 Empleo del comando apt-cache con depends.


Fuente: Cibertec

En resumen, tenemos una gran variedad de armas que podemos utilizar para averiguar
el nombre del paquete que queramos.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

238

Resumen
En esta unidad, se vio cmo instalar los paquetes para Sistema Operativo Debian, la
manera sencilla de realizarlo, la actualizacin de este. Asimismo, se conoci la
bsqueda de paquetes para obtener informacin de ellos validando la versin, as como
realease que est instalado en el sistema operativo para validar algn problema con
estos paquetes.

Bibliografa
BSICA
Angie Nash y Jason Nash

2001

LPIC 1 Certification Bible

2004

Edicin especial Linux


(005.43L BAND)

CIBERTEC
2004 Linux administrador e Internet: Linux administrador y security
(005.43L CIBE)
COMPLEMENTARIA
2013

([Link]
Proyecto de documentacin de Linux en espaol.

2013

([Link]
Proporciona guas rpidas para instalar, configurar servicios de red basados en Linux.

2013

([Link]
Proyecto de formacin en habla hispana para los candidatos a la certificacin LPI en
cualquiera de sus niveles.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

239

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

240

UNIDAD

9
ADMINISTRACIN DE
PAQUETES RPM
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al trmino de la unidad, el alumno instala y administra paquetes RPM.
TEMARIO
9.1 Tema 10 : Instalacin de Paquetes RPM y YUM
9.1.1 : Instalar, re-instalar, actualizar o eliminar paquetes usando
RPM y YUM.
9.1.2 : Obtener informacin de un paquete RPM como la
versin, estado, dependencias, integridad y firmas.
9.1.3 : Determinar que archivos provee un paquete, as como
encontrar de que paquete viene un archivo especifico.

ACTIVIDADES PROPUESTAS

Identificar las diferencias de instalar, re- instalar con rpm y yum.


Identificar que pre-requisitos tiene que tener un servidor para instalar con
yum

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

241

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

9.1

242

INSTALACIN DE PAQUETES RPM Y YUM

9.1.1 Instalar, re-instalar, actualizar o eliminar paquetes usando RPM y


YUM
RPM
El gestor de paquetes RPM es tpico de las distribuciones GNU/Linux basadas en RedHat, como por ejemplo Fedora, CentOS, Suse, Mandriva, etc. Para nuestros ejemplos
usaremos Centos.
El sistema RPM se compone de:

Ficheros de paquetes (*.rpm)


La base de datos RPM
La herramienta rpm

Los paquetes RPM


Los ficheros RPM contienen los paquetes de software compilado, preparado para ser
instalado, y que contienen lo siguiente:

Ficheros comprimidos de la aplicacin


Nombre y versin del paquete
Fecha, host y autor de la construccin del paquete
Descripcin
Informacin de integridad y verificacin (MD5 checksum)
Dependencias

El esquema de nombrado de los paquetes RPM es el siguiente:


[Link].

Donde:

package: nombre de la aplicacin


version: nmero de versin de la aplicacin
patch: nmero de compilacin del paquete.
architecture: arquitectura para la que ha sido compilado el paquete.
rpm: es la extensin del fichero.

Por ejemplo el paquete "[Link]", contiene la versin 0.8.9 del


programa Ethereal, y es la primera compilacin para la plataforma i386 (Intel PC).
Comando RPM
El comando rpm lo usaremos para:
Instalar, actualizar, desintalar y eliminar paquetes.
Preguntar informacin a la base de datos RPM.
Verificar paquetes y comprobar los ficheros instalados.
Construir ficheros binarios a partir de cdigo fuente.
El comando rpm realiza las siguientes comprobaciones:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

243

Asegurarse de que existe espacio suficiente en disco para el paquete.


Comprobar que los ficheros existentes no sern sobreescritos.
Que se encuentran todas las dependencias.

Principales opciones del comando rpm


Opcion Principal
-i o --install:
-U o --update:
-F o --freshen:
-V o --verify:
-q o --query:
-e o --erase:

Descripcin
Instala el paquete.
Actualiza o instala el paquete.
Actualiza el paquete solamente si estubiera instalado.
Verifica el tamao, MD5, permisos, tipo, integridad, etc.
Investiga paquetes y archivos.
Desinstala el paquete.

El comando rpm debe ejecutarse con alguna de las opciones principales, para
determinar de este modo qu funcionalidad del comando queremos invocar. Adems
podemos acompaar a las opciones principales de otras subopciones que modifican la
menara en que acta la opcin principal.
Las principales subopciones del comando rpm son las siguientes:

a: aplica una variable a todos los paquetes instalados.


c: Con la opcin principal "q", lista los archivos de configuracin.
d: Con la opcin principal "q", lista los archivos de documentacin.
f: Con la opcin principal "q", verifica qu paquete instal el referido archivo.
h: Muestra el progreso del procedimiento solicitado.
i: Con la opcin principal "q", lista informacin sobre un determinado paquete.
l: Con la opcin principal "q", lista todos los archivos y directorios del paquete.
p: Con la opcin principal "q", indica que la investigacin se realiza en el archivo
.rpm.
v: Modo ms descriptivo.

Otras opciones importantes del comando rpm son:

--nodeps: Instala el paquete sin verificar las dependencias.


--force: Fuerza la instalacin/actualizacin.
--test: Muestra cmo sera la instalacin, pero no instala.
--requires: Con la opcin principal "q", muestra las exigencias para el paquete
especificado.
--whatrequieres: Con la opcin principal "q", muestra qu programas dependen del
paquete.

Ejemplos:

Supongamos que ha borrado unos cuantos ficheros por accidente, pero no est
seguro de qu es lo que ha borrado. Si quiere verificar completamente su sistema y
ver qu se ha perdido, puede hacer:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

244

Figura 189: Visualizamos el resultado del comando


Fuente: Cibertec

Supongamos que se encuentra con un fichero que no reconoce. Para saber a qu


paquete pertenece puede hacer lo siguiente:

Figura 190: Se visualiza la salida de rpm qf


Fuente: Cibertec

Supongamos que acaba de encontrarse con un nuevo paquete RPM de koules, pero
no sabe qu puede ser. Para obtener informacin al respecto:
#rpm -qpi [Link]

La salida podra ser la siguiente:


Name
: koules
Distribution: Red Hat Linux Colgate
Version
: 1.2
Vendor: Red Hat Software
Release
: 2
Build Date: Mon Sep 02 [Link] 1996
Install date: (none)
Build Host: [Link]
Group
: Games
Source RPM: [Link]
Size
: 614939
Summary: SVGAlib action game with multiplayer, network, and sound
support
Description : This arcade-style game is novel in conception and
excellent in execution.
No shooting, no blood, no guts, no gore. The play is simple, but
you still must develop skill to play. This version uses SVGAlib to
run on a graphics console.

Ahora si quiere saber qu ficheros instala el paquete RPM. Puede hacer lo siguiente:
#rpm -qpl [Link]

La salida es la siguiente:
/usr/doc/koules
/usr/doc/koules/ANNOUNCE
/usr/doc/koules/BUGS
/usr/doc/koules/COMPILE.OS2
/usr/doc/koules/COPYING

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

245

/usr/doc/koules/Card
/usr/doc/koules/ChangeLog
/usr/doc/koules/INSTALLATION
/usr/doc/koules/[Link]
/usr/doc/koules/[Link]
/usr/doc/koules/[Link]
/usr/doc/koules/[Link]
/usr/doc/koules/README
/usr/doc/koules/TODO
/usr/games/koules
/usr/games/[Link]
/usr/games/[Link]
/usr/man/man6/[Link].6

Base de datos RPM


La informacin de los paquetes instalados se guarda en una base de datos. Esta base
de datos se guarda en el directorio /var/lib/rpm. Cada vez que se usa el comando rpm
se consulta la informacin de esta base de datos.
Normalmente no nos preocuparemos de cmo se guarda la informacin en la base de
datos porque esto se hace de forma automtica.
Si tenemos errores estraos instalando o desinstalando paquetes, puede ser debido a
una base de datos inconsistente o daada. Si se corrompe dicha informacin, podemos
reconstruir la base de datos con el comando siguiente: rpm --rebuilddb.

YUM
Para poder instalar paquetes RPM con el comando rpm es necesario que previamente
hayamos localizado y descargado en nuestro equipo el paquete .rpm en cuestin. Las
distribuciones de GNU/Linux tienen unos repositorios accesibles desde Internet con
todos los paquetes de la propia distribucin.
El comando YUM es similar al comando apt-get de Debian, hacindonos ms fcil el
trabajo. Por ejemplo, para instalar el paquete zsh con el comando YUM hacemos:
# yum install zsh

Y tenemos lo siguiente:

El comando yum se encarga de localizar el fichero rpm que necesitamos buscando


en los repositorios de la distribucin.
Una vez localizado el fichero, lo descarga a nuestro equipo.
Una vez descargado lo instala.
Si el paquete tuviera dependencias con otros paquetes, automticamente yum se
encarga de localizar los ficheros rpm de las dependencias de los repositorios.
Descargar los ficheros de las dependencias a nuestro equipo.
Instalar los paquetes de las dependencias.

El fichero de configuracin de YUM es /etc/[Link].

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

246

Algunas de las opciones de este archivo son:

cachedir: Directorio de almacenamiento de los paquetes y otros archivos de datos.


El estndar es /var/cache/yum.
keepcache: Valor 1 0. Determina si yum debe mantener los paquetes y archivos
relacionados despus de una instalacin exitosa. El estndar es 1.
reposdir: Lista de directorios donde yum buscar los archivos .repo que defienen
los repositorios. El estndar es /etc/yum/repos.d
debuglevel: Nivel de mensajes de aviso.
errorlevel: Nivel de mensajes de error.
logfile: Fichero de log de yum. Donde se registran los mensajes generados por yum.
gpgcheck: Valor 1 0. Determina si yum debe o no realizar la verificacin GPG de
los paquetes.

Por defecto, el directorio donde YUM descarga los paquetes rpm es /var/cache/yum.
Los archivos .repo definen repositorios de Internet desde donde se pueden descargar
los paquetes. Y tienen el siguiente formato:
[Identificador]
name=Nombre descriptivo del repositorio
baseurl=url::/camino/para/el/repositorio

[Indentificador]: Trmino nico que identifica cada repositorio.


name: Texto de descripcin del repositorio.
baseurl: URL del directorio donde se encuentra el directorio repodata del yum.
enable: Valor 1 0. Determina si debe utilizarse el repositorio.
gpgcheck: Valor 1 0. Determina si debe realizarse la verificacin GPG para los
paquetes de este repositorio.

Opciones ms comunes del comando yum:

yum search paquete: Localiza un determinado paquete.


yum install paquete: Instala el paquete.
yum remove paquete o yum erase paquete: Desinstala el paquete.
yum provides recurso o yum whatprovides recurso: Localiza qu paquete,
instalado o no, ofrece un determinado recurso.
yum updade: Actualiza los paquetes desactualizados que estn instalados.
yum upgrade: Similar a update, pero se utiliza para actualizar la distribucin a una
versin ms actual.
yum info paquete: Es similar a rpm -qi paquete

Existe otro comando llamado yumdownloader, similar a yum pero solamente localiza y
descarga el paquete RPM de los repositorios sin instalarlo. Con la opcin "--source",
descarga el cdido fuente del paquete en lugar del programa compilado.
Existen herramientas de instalacin para el entorno grfico como yumex, kyum, etc.
Ejemplos de uso de YUM

Actualizacin del sistema con todas las dependencias que sean necesarias:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

247

Figura 191: Comando yum update


Fuente: Cibertec

Consultar la informacin contenida en un paquete en particular

Figura 192: Informacin del paquete bind


Fuente: Cibertec

Instalacin de paquetera con resolucin automtica de dependencias.

Figura 193 Instalacin del paquete bind


Fuente: Cibertec

Desinstalacin de paquetes junto con todo aquello que dependa de estos.

Figura 194: Removiendo el paquete bind


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

248

Listado de paquetes
Lo siguiente listar todos los paquetes disponibles en la base de datos yum y que
pueden instalarse:
# yum list available | less

Lo siguiente listar todos los paquetes instalados en el sistema:


# yum list installed |less

Lo siguiente listar todos los paquetes instalados en el sistema y que pueden (deben)
actualizarse:
# yum list updates | less

Limpieza del sistema


YUM deja como resultado de su uso cabeceras y paquetes RPM almacenados en el
interior del directorio localizado en la ruta /var/cache/yum/. Particularmente los paquetes
RPM que se han instalado pueden ocupar mucho espacio y es por tal motivo conviene
eliminarlos una vez que ya no tienen utilidad. Igualmente conviene hacer lo mismo con
las cabeceras viejas de paquetes que ya no se encuentran en la base de datos. A fin de
realizar la limpieza correspondiente, puede ejecutarse lo siguiente:
# yum clean all

9.1.2 Obtener informacin de un paquete RPM como la versin, estado,


dependencias, integridad y firmas.
Opcines de las consultas para un paquete rpm.
Opcion
-q
-qa
-qi
-ql
-qf Archivo
-qs
-qd
--dump
--provides
-requires, -R
--scripts

Descripcin
Mostrar informacin sobre un paquete, como nombre, versin y otros
Mostrar todos los paquetes que estn instalados.
Mostrar infomacin de un paquete
Mostrar lista de archivos contenidos en el paquete
Consultar por el paquete que contiene el archivo Archivo; se requiere
la especificacin de Archivo con su rama completa.
Mostrar estado de los archivos (implica -l)
Nombrar archivos de documentacin (implica -l)
Mostrar toda la informacin de verificacin de todos los archivos
(utilizarlo con -l, -c o -d)
Mostrar posibilidades del paquete; otro paquete puede pedirlas con -requires
Mostrar dependencias entre los paquetes
Mostrar los distintos scripts de desinstalacin

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

249

Obtener informacin de paquetes instalados o no instalados.


Para consultar informacin de paquetes instalados o no instalados se utiliza el
modificador "-q", la diferencia principal, es que para paquetes no instalados se debe
indicar el nombre completo del archivo rpm, ademas de agregar el modificador "-p", si
no indicamos ninguno de los modificadores listados a continuacin, solo obtendremos
el nombre del paquete mas su versin y la versin de la distribucin para la que fue
empaquetado.
Modificadores

-i : Muestra informacin relacionada con el paquete, compilacin de este,


distribucin y una breve descripcin del paquete.
-d : Muestra el listado de archivos de documentacin del paquete.
-c : Muestra el listado de archivos de configuracin del paquete.
-l : Muestra el listado completo de archivos contenidos dentro del paquete.

Por ejemplo, si quisiramos obtener informacin del paquete, mas el listado de archivos
que incluye, utilizaramos:
Para un paquete instalado.
# rpm -qil ''paquete''

Para un paquete no instalado.


# rpm -qpil ''paquete''

Obtener el nombre de todos los paquetes instalados.


# rpm qa

Este comando mostrara un listado de todos los paquetes instalados en el sistema, en


el formato nombre de paquete, versin del paquete y finalmente distribucin de linux
para el que fue empaquetado.
Versin
Para obtener informacin del paquete como el nombre o la versin, usaremos el
sguiente comando:
# rpm -q nombredelpaquete

El comando rpm -q mostrar el nombre del paquete, la versin y el nmero de la


realizacin del paquete instalado. Usted puede usar este comando para verificar si el
paquete est instalado o no en el sistema.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

250

[root@ns]# rpm -qi php


Name
: php
Relocations: (not relocatable)
Version
: 5.2.6
Vendor: [Link]
Release
: [Link]
Build Date: Fri 02 May 2008 [Link] PM
BRT
Install Date: Mon 16 Jun 2008 [Link] PM BRT
Build Host:
[Link]
Group
: Development/Languages Source RPM: [Link]
Size
: 10040864 License: PHP
Signature
: DSA/SHA1, Mon 05 May 2008 [Link] PM BRT, Key ID
32a951145ebd2744
Packager
: Scott Shinn <scott@[Link]>
URL
: [Link]
Summary : The PHP HTML-embedded scripting language. (PHP: Hypertext
Preprocessor)
Description : PHP is an HTML-embedded scripting language. PHP
attempts to make it easy for developers to write dynamically
generated webpages. PHP also offers built-in database integration
for several commercial and non-commercial database management
systems, so writing a database-enabled webpage with PHP is fairly
simple. The most common use of PHP coding is probably as a
replacement for CGI scripts.
The php package contains the module which adds support for the PHP
language to Apache HTTP Server.

Como usted puede observar este comando muestra la informacin del paquete,
incluyendo el nombre, versin, y descripcin del programa instalado.
Estado
Para obtener el estado del paquete, usaremos el sguiente comando:
# rpm -s nombredelpaquete

-s muestra el estado de todos los ficheros contenidos en el paquete.


Dependencias
Los paquetes RPM pueden "depender" de otros paquetes, lo cual significa que requieren
de la instalacin de otros paquetes para poder ejecutarse adecuadamente. Si intenta
instalar un paquete que tiene una dependencia no resuelta, ver lo siguiente:
# rpm -ivh [Link]
failed dependencies:
bar is needed by foo-1.0-1

Para resolver este error deber instalar los paquetes indicados. Si de todos modos
desea forzar la instalacin (no es una idea muy buena ya que el paquete probablemente
no se ejecutar adecuadamente), use la opcin --nodeps.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

251

Integridad
RPM nos ofrece una utilidad muy valiosa que nos permite verificar la integridad y
seguridad de todos los paquetes y aplicaciones instaladas en el sistema (con yum o
rpm). Bsicamente, lo que vamos a hacer es verificar todos los ficheros de todos los
paquetes instalados en el sistema. La verificacin consiste en comprobar la informacin
de estos ficheros con la que hay almacenada en la base de datos rpm. Vamos a verificar
el MD5 checksum, los permisos, el propietario y grupo, tamao del fichero, etc. Para ello
utilizaremos los parmetros verify o -V.
En primer lugar podemos descartar los ficheros de configuracin, ya que lo ms normal
es que su contenido cambie, aunque todava podramos revisar su configuracin de
permisos, propietario, etc.
Si queremos hacer una revisin de todos los ficheros del sistema, algo que lgicamente
puede tardar bastante tiempo, utilizaremos el siguiente comando. Hay que tener en
cuenta que en caso de no haber salida todo es correcto:
# rpm -Va

Si queremos hacer la revisin de un nico paquete lo indicamos y quitamos el parmetro


a:
# rpm -V telnet

Y si quisiramos revisar un nico fichero:


# rpm --verify --file /usr/bin/chcon

Y qu sucede si se detecta algn problema? Vamos a verlo. Vamos a hacer un backup


del binario /usr/sbin/apachectl y a reescribirlo:
# mv /usr/sbin/apachectl /usr/sbin/[Link]
# touch /usr/sbin/apachectl
# rpm -V --file /usr/sbin/apachectl
S.5....T. c /etc/httpd/conf/[Link]
S.5....T.
/etc/rc.d/init.d/httpd
S.5....T. c /etc/sysconfig/httpd
SM5....T.
/usr/sbin/apachectl

Como vemos ahora s que hay salida. Los caracteres de verificacin que se muestran
son los siguientes:

.(punto): Prueba exitosa.


?: La prueba no puede realizarse.
5: La suma MD5 del archivo es diferente
S: discrepancia en el tamao del fichero
T: La fecha del archivo ha cambiado.
L: El enlace simblico se modific.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

252

D: El dispositivo se modific
U: El dueo del archivo ha cambiado.
G: El grupo del archivo ha cambiado.
M: El permiso o el tipo de archivo ha cambiado.

As pues, en el ejemplo anterior vemos como el binario apachectl tiene un checksum


MD5 distinto, distinto tamao, fecha de modificacin y de permisos. La c es de fichero
de configuracin.
Si queremos comprobar la integridad de todos los binarios de /usr/sbin, es tan sencillo
como:
# rpm -Va | grep "/usr/sbin"
S.5....T.
/usr/sbin/apachectl

Podemos aadir un mayor nivel de debug con el parmetro v, vv ms debug an:


# rpm -Vv --file /usr/sbin/apachectl
# rpm -Vvv --file /usr/sbin/apachectl

Esta es una buena y sencilla forma de asegurarnos que los binarios del sistema no han
sido alterados y tambin de tener un control del estado de los ficheros de configuracin.
Firmas
Para verificar la firma de un paquete y ver si el paquete ha sido daado o alterado
usaremos el sguiente comando:
# rpm -K [Link]

Si nos muestra como resultado:


# [Link]: md5 gpg OK

Nos indicar que no ha habido problemas y el archivo no ha sido daado en el momento


de la descarga.
Puede utilizar tambin:
# rpm checksig paquete

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

253

9.1.3 Determinar que archivos provee un paquete as como encontrar de


que paquete viene un archivo especfico.
Listar el contenido
Para ver las libreras que contiene un RPM, se ejecuta el siguiente comando:
# rpm -qlp nombre_de_paquete.rpm

Por ejemplo:
[root@localhost ~]# rpm -qlp [Link]
warning: [Link]: Header V3 DSA signature:
NOKEY, key ID 37017186
/usr/lib/[Link].1
/usr/lib/[Link].1.0.0
/usr/share/doc/libgomp-4.4.4
/usr/share/doc/libgomp-4.4.4/ChangeLog.bz2
/usr/share/info/[Link]

Obtener el nombre de un paquete


Para obtener el nombre de un paquete conociendo su libreria, se ejecuta el siguiente
comando:
# rpm -qf /lib64/[Link].6
openssl-0.9.8b-10.el5

La opcin -f slo funciona cuando se indica el nombre de archivo completo con la ruta
incluida; se pueden indicar tantos archivos como se desee.
Por ejemplo el comando rpm -q -f /bin/rpm /usr/bin/wget produce como resultado lo
siguiente:
# rpm -q -f /bin/rpm /usr/bin/wget
rpm-3.0.3-3
wget-1.5.3-55

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

254

Resumen
En esta unidad, el punto fuerte que se vi fue reconocer cmo se instala, busca,
actualiza paquetes con el comando rpm, paquete pre requisito instalado, y la fcil o
complicado que puede ser mediante este comando. Tambin, se vio cmo puede ser,
con el comando median yum, la actualizacin, bsqueda e instalacin de una manera
rpida y sencilla para cumplir con los requerimientos de tener salida a internet o un
repositorio para la descarga y actualizacin de los paquetes para el sistema operativo.

Bibliografa
BSICA
Angie Nash y Jason Nash

2001

LPIC 1 Certification Bible

2004

Edicin especial Linux


(005.43L BAND)

CIBERTEC
2004 Linux administrador e Internet: Linux administrador y security
(005.43L CIBE)
COMPLEMENTARIA
2013

([Link]
Proyecto de documentacin de Linux en espaol.

2013

([Link]
Proporciona guas rpidas para instalar, configurar servicios de red basados en
Linux Centos.

2013

([Link]
Proyecto de formacin en habla hispana para los candidatos a la certificacin LPI en
cualquiera de sus niveles.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

255

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

256

UNIDAD

10
DISPOSITIVOS, SISTEMAS DE
FICHEROS Y SUS ESTNDARES
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al trmino de la unidad, el alumno crear y formatea particiones del Sistema
Operativo GNU/Linux.
TEMARIO
10.1 Tema 11 : Creando particiones y sistemas de ficheros
10.1.1 : Usar diversos comandos mkfs para configurar particiones
y crear sistemas de archivos.
10.2 Tema 12 : Mantener la integridad de los sistemas de archivos
10.2.1 : Verificar la integridad de un sistema de archivos
10.2.2 : Monitorizar el espacio e inodos libres
10.2.3 : Reparar problemas simples en un sistema de archivos

ACTIVIDADES PROPUESTAS

Identificar problemas simples de archivos.


Identificar si un archivo esta ntegro

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

257

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

258

10.1 CREANDO PARTICIONES Y SISTEMA DE ARCHIVOS


10.1.1 Usar diversos comandos mkfs para configurar particiones y crear
sistemas de archivos.
Si aadimos un nuevo disco al sistema ya instalado deberemos crear las particiones y
los sistemas de ficheros.
Esta operacin implica los siguientes pasos:
Creacin de particiones (comando fdisk)
Creacin de los sistemas de ficheros (comando mkfs)
Montado de los sistemas de ficheros (comando mount)
El comando para crear particiones es fdisk

Formato:
#fdisk [opciones] dispositivo

Donde dispositivo es el dispositivo del disco (/dev/hdx en IDE, /dev/sdx para SCSI o
SATA)

Debemos tener permiso de administrador para usarlo


Opciones
-l muestra la tabla de particiones del dispositivo

fdisk se usa mediante un men:

Figura 195: Inicializar un disco


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

259

Ejemplo:
Cree una particin primaria de 5 GB.
Usamos n (new):
Command (m for help): n
Command action
e
extended
p
primary partition (1-4)
p
Partition number (1-4):
1 First cylinder (1-20805, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-20805, default
20805): +5G
Command (m for help): p
Disk /dev/hdb: 10.7 GB, 10737418240 bytes
16 heads, 63 sectors/track, 20805 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot
Start
End
Blocks
Id System
/dev/hdb1
1
9689
4883224+ 83 Linux

Por defecto, crea la particin tipo Linux (Id 83)

con l (list) vemos el tipo de particiones soportadas


para cambiar el tipo de particin se usa t (type)
Command (m for help): t 1
Selected partition 1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap / Solaris)
Command (m for help): p
Disk /dev/hdb: 10.7 GB, 10737418240 bytes
16 heads, 63 sectors/track, 20805 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot
/dev/hdb1
Solaris

Start
1

End
9689

Blocks
Id System
4883224 + 82 Linux swap /

Para que se guarden los cambios debemos usar w (write)

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

260

Otras Herramientas
Existen otras herramientas para modificar las particiones:

Figura 139: herramientas para particionar


Fuente: Cibertec

Creacin de los sistemas de ficheros


Sobre cada particin debemos crear sistemas de ficheros con el comando mkfs
Formato:
mkfs [-V] [-t filesystem] dispositivo [n_bloques]

Opciones:

-V verbose
-t filesystem tipo de sistema de ficheros a crear (ext2, ext3, xfs, etc.) si no se
especifica se crea el por defecto del sistema (en Linux ext2)
n_bloques nmero de bloques usados para el sistema de ficheros (si no se pone,
se usa toda la particin)

mkfs es un front-end a distintos comandos, que permiten crear particiones de los tipos
especficos:

mkfs.ext2 o mke2fs crea sistemas ext2


mkfs.ext3 crea sistemas ext3, equivalente a mkfs.ext2 -j
[Link], [Link], [Link] crean sistemas JFS,
respectivamente
[Link], [Link] crea sistemas MS-DOS
mkswap crea un sistema de ficheros de tipo Linux swap

ReiserFS

XFS,

Cada uno de estos comandos puede tener distintas opciones.


Comandos relacionados

dumpe2fs muestra informacin de sistemas de ficheros ext2/ext3 Informacin sobre


inodos, bloques y grupos
tune2fs permite ajustar parmetros en sistemas ext2/ext3 p.e. define el intervalo
entre chequeos automticos, convierte ext2 en ext3, etc.
e2label cambia la etiqueta de un sistema ext2/ext3
existen comandos similares para otros tipos de sistemas de ficheros, p.e.
reiserfstune, jfs_tune, etc.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

261

Particin de intercambio
Si lo que creamos es una particin de intercambio, la debemos inicializar con mkswap
# fdisk -l /dev/hd
Disk /dev/hdb: 10.7 GB, 10737418240 bytes
16 heads, 63 sectors/track, 20805 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start
End
Blocks Id System
/dev/hdb1
1
9689
4883224+ 83 Linux
/dev/hdb2
9690
20805 5602464 82 Linux swap /Solaris

# mkswap /dev/hdb2
Setting up swapspace version 1, size = 5736919 kB
no label, UUID=a6c2849b-c33e-478e-8a8d-fecfe3f18f6d

Una vez creada debemos activarla con swapon.


# swapon /dev/hdb2
# swapon -s
Filename
Type
/dev/hda7
partition
/dev/hdb2
partition

Size
Used
377488 0
5602456 0

Priority
-1
-2

Finalmente, para que se active en el arranque, debe incluirse la entrada correspondiente


en el fichero /etc/fstab.
/dev/hda2

none

swap

CARRERA DE REDES Y COMUNICACIONES

sw

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

262

10.2 MANTENER LA INTEGRIDAD DE LOS SISTEMAS DE


ARCHIVOS
10.2.1 Verificar la integridad de un sistema de archivos
El monitoreo peridico del sistema de ficheros de Sistema Operativo resulta tema de
suma importancia para los administradores de red, ya que durante el transcurso del
tiempo estos sistemas de ficheros pueden terminar presentando problemas como los
siguientes:

El sistema de ficheros se llena hasta el lmite de su capacidad, causando que las


aplicaciones o quizs, el sistema entero dejen de funcionar.
El sistema de ficheros se corrompe, seguramente por un corte de alimentacin o
por una cada del sistema.
El sistema de ficheros se queda sin inodos libres de tal forma que no se pueden
crear nuevos objetos en el mismo.

Monitorizar y comprobar cuidadosa y regularmente los filesystems de Linux nos ayudar


a prevenir o corregir estos problemas.
Para verificar la integridad de un sistema de archivos, utilizaremos el comando fsck.
fsck es una utilidad unix que se utiliza ante alguna inconsistencia del sistema de
archivos, para corregir los posibles errores que hubiese es necesario ejecutar fsck. Para
verificar un sistema de archivos se aconseja hacerlo mientras este est desmontado.
Generalmente se ejecuta automticamente al inicio del sistema ante alguna anomala.
#fsck [-opciones] /dev/hdXXX (o sdXXX)

Opciones:

-a confirmar automticamente. No recomendado.


-c comprobar bloques en el disco.
-f forzar el chequeo aunque todo parezca ok.
-v (verbose) despliega ms informacin.
-r Modo interactivo. Espera nuestra respuesta.
-y asume yes de respuesta.

Ejemplo:
#fsck -c -v /dev/sda1

10.2.2 Monitorizar el espacio e inodos libres


Un sistema de lectura escritura no sirve de mucho si crece hasta el punto en que no
pueda admitir nuevos ficheros. Esto podra ocurrir si nuestro sistema de ficheros se llena
o si se queda sin inodos libres. Los inodos son las estructuras de datos dentro del
sistema de ficheros que describen los ficheros (valga la redundancia) en el disco.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

263

Cada sistema de ficheros contiene un nmero finito de inodos que se establece en el


momento de creacin del sistema de fcheros. Este nmero es, a su vez, el mximo
nmero de ficheros que un sistema de ficheros puede acomodar. Como los sistemas de
ficheros se crean con un nmero de inodos enorme, probablemente nunca crears
tantos ficheros como para agotar este nmero. No obstante, es posible quedarse sin
inodos libres en particiones que contengan muchos ficheros pequeos.
Es muy importante prevenir la escasez de inodos libres en las particiones del sistema.
El comando df proporciona informacin necesaria tanto sobre la uso del espacio en
disco como de los inodos libres. El comando df nos muestra informacin general sobre
el uso del disco en los sistemas de ficheros montados en directorios. Normalmente, en
directorios indicamos ficheros de dispositivos de particiones como /dev/hda1, pero si
indicamos otro tipo de nombre de fichero o directorio obtendremos informacin sobre la
particin donde est ubicado dicho fichero o directorio. Si omitimos directorios, se
mostrar la informacin relativa a los sistemas de ficheros montados en los dispositivos
incluidos en /etc/fstab. La forma correcta de utilizar el comando df sera de la siguiente
manera.
#df

[opciones]

/dev/sd[a|b|c|d][1,2,3,4

En la tabla siguiente, se muestran las opciones ms usadas:


Opciones
-h
-i

Descripcin
Muestra los resultados en un formato legible para las personas,
incluyendo sufijos como M (megabytes) y G (gigabytes).
Muestra informacin sobre los inodos libres en lugar de la informacin
por defecto sobre el espacio libre en disco.

El comando du nos puede ayudar, mostrndonos directorio por directorio el uso del
espacio en disco, asi mismo examina los directorios recursivamente y muestra
informacin detallada o resumida sobre el espacio en disco consumido. La forma
correcta de utilizar el comando du sera de la siguiente manera.
#du

[opciones] [directorio]

En la tabla siguiente, se muestran las opciones ms usadas:


Opciones
-a
-c
-h
-s

-S

Descripcin
Muestra todos los ficheros, no solo los directorios.
Genera un gran total de todos los elementos listados.
Muestra los resultados en un formato legible para las personas,
incluyendo sufijos como M (megabytes) y G (gigabytes).
Visualiza un sumario para cada uno de los directorios especificados,
en lugar de los totales encontrados recursivamente en cada
subdirectorio.
Excluye los subdirectorios de las sumas y los totales, limitndose a
totalizar los directorios.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

264

10.2.3 Reparar problemas simples en un sistema de archivos


La verificacin del disco rgido bajo Linux se realiza mediante el comando fsck. Sin
embargo, por cuestiones de seguridad relativos a los datos presentes en el disco, no es
muy recomendable iniciar fsck en una particin montada. Ten en cuenta que es difcil
eliminar las particiones que requieren fsck ya que estas son usadas por el sistema.
Durante la comprobacin del sistema de archivos, fsck se hace lo siguiente:
1. Comprueba inodos, bloques y tamaos.
2. Comprueba la estructura de directorios.
3. Comprueba la conectividad de directorios.
4. Comprueba las referencias.
5. Comprueba el total de la informacin.
Para comprobar el sistema de archivos al arranque del sistema se pueden aplicar las
siguientes soluciones:
Solucin 1
El objetivo es solicitar al sistema que ejecute fsck en el siguiente reinicio.
Para ello se debe ejecutar el comando shutdown con el parmetro -F:
#shutdown -r -F now

Solucin 2
Otra solucin es crear el archivo forcefsck en la raz del sistema:
#touch /forcefsck

En el prximo reinicio tu disco duro ser analizado y el archivo /forcefsck ser


eliminado.
En la tabla siguiente se muestran las opciones ms usadas:
Opciones
-A

Descripcin
Ejecuta comprobaciones en todos los sistemas de ficheros incluidos
en /etc/fstab. Esta opcin est pensada para utilizarse en tiempo de
carga del sistema, antes de montar los filesystems
-N
No se ejecuta, pero muestra lo que debera hacerse
-t tipo
Especifica el tipo de sistema de ficheros a comprobar; por defecto se
asume ext2. El valor de tipo determina que verificador especfico
para el sistema de ficheros es utilizado.
-b
Utiliza una copia del superbloque alternativa. En el modo interactivo,
superbloque e2fsck utiliza automticamente superbloques alternativos.
Normalmente, para restaurar un superbloque defectuoso, utilizars
-b 8193 en el modo no interactivo.
-c
Comprobar bloques defectuosos.
-f
Fuerza una comprobacin, incluso si el sistema de ficheros parece
limpio
-p
Repara automticamente el sistema de ficheros sin hacer preguntas.
-y
Responde automticamente "yes" a todas las preguntas interactivas
permitiendo la utilizacin no interactiva de e2fsck.
-v
Muestra el estado del proceso.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

265

Resumen
En esta unidad, se sigui ampliando el conocimiento acerca de los comandos para la
administracin del sistema operativo Linux. Se vieron comandos para el uso de
particiones en Linux, como el mkfs para solucionar problemas bsicos de los archivos y
ver los inodos del sitema operativo.

Bibliografa
BSICA
Angie Nash y Jason Nash

2001

LPIC 1 Certification Bible

2004

Edicin especial Linux


(005.43L BAND)

CIBERTEC
2004 Linux administrador e Internet: Linux administrador y security
(005.43L CIBE)
COMPLEMENTARIA
2013

([Link]
Proyecto de documentacin de Linux en espaol.

2013

([Link]
Proporciona guas rpidas para instalar, configurar servicios de red basados en
Linux Centos.

2013

([Link]
Proyecto de formacin en habla hispana para los candidatos a la certificacin LPI en
cualquiera de sus niveles.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

266

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

267

UNIDAD

11
MONTANDO Y DESMONTANDO
FILESYSTEM
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al trmino de la unidad, el alumno monta y desmonta sistemas de ficheros para
poder trabajar con ellos.
TEMARIO
11.1 Tema 13 : Controlar el montaje y desmontaje de sistemas de
archivos
11.1.1 : Montar y desmontar sistemas de archivos manualmente.
11.1.2 : Configurar el montaje de sistemas de archivos al
arranque del sistema.
11.1.3 : Configurar sistemas de archivos para dispositivos
extrables.
11.1.4 : Establecer cuotas de disco para un sistema de archivos.
11.1.5 : Editar, revisar y generar reportes de cuotas de usuario.

ACTIVIDADES PROPUESTAS

Identificar el proceso de montura manual y dispositivos extrables.


Identificar las cuotas en un sistema de archivos.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

268

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

11.1 CONTROLAR EL MONTAJE


SISTEMAS DE ARCHIVOS

269

DESMONTAJE

DE

11.1.1 Montar y desmontar sistemas de archivos manualmente.


Los sistemas de ficheros son montados con el comando mount. Durante el arranque,
los sistemas de ficheros que no contienen un 0 en el pass number son chequeados y
luego montados. Despus del arranque se pueden aadir ms sistemas de ficheros
manualmente con el comando mount.
El comando mount se usa para montar sistemas de fichros dentro de la estructura del
rbol del sistema. La primera y segunda entrada consulta al fichero /etc/fstab para
montar los dispositivos y as tomar las opciones que se le especifiquen en el /etc/fstab.
La tercera opcin es independiente del fichero /etc/fstab y monta el sistema de ficheros
en el directorio El comando mount admite dos tipos de opciones, unos para el comando
en si, y otros para especificar opciones del sistema de ficheros. La sintaxis bsica de
esta utilidad es la siguiente:
#mount [opciones] [dispositivo|directorio

El comando mount admite dos tipos de opciones, unos para el comando en si, y otros
para especificar opciones del sistema de ficheros:
Opciones
-a
-h
-o
-r
-t fstype
-v
-w

Descripcin
Monta todos los fileystems especificados en el /etc/fstab menos los
que tengan la opcin noauto
Ayuda del comando mount
Especifica las opciones del mount en la linea de comandos
Monta filesystems en modo de solo lectura
Especifica un tipo de fileystem
Salida interactiva
Monta fileystems de lectura/escritura

Opciones del mount


Estas opciones se especifican en el fichero /etc/fstab o bien en la linea de comandos
con la opcin -o. Estas opciones modifican el modo de montaje del comando mount,
algunas de las opciones son las siguientes:
Opciones
async
auto
defaults
dev
exec
noauto
noexec

Descripcin
Toda la E/S al sistema de ficheros debera hacerse asncronamente.
Puede montarse con la opcin a.
Establece las opciones: rw, suid, dev, exec, auto, nouser y async. Es
la opcion por defecto en sistemas ext2.
Interpretar dispositivos especiales de caracteres o bloques en el
sistema de ficheros
Permitir la ejecucin de binarios
Slo puede montarse explcitamente (esto es, la opcin -a no har
que el sistema de ficheros se monte)
No permitir la ejecucin de ningn binario en el sistema de ficheros
montado. Esta opcin puede ser til para un servidor que tiene

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

nosuild
nouser
ro
rw
suid
sync
user
users

270

sistemas de ficheros que contienen binarios para otras arquitecturas


distintas de la suya
No permitir el efecto de los bits SUID ni SGID
Prohibir a un usuario ordinario (esto es, distinto de root) montar el
sistema de ficheros. Esto es lo predeterminado
Montar el sistema de ficheros en modo de slo lectura
Montar el sistema de ficheros de lectura y escritura
Permitir el efecto de los bits SUID y SGID
Toda la E/S al sistema de ficheros debera hacerse sncronamente
Permitir a un usuario ordinario montar el sistema de ficheros
Permite a cualquier usuario el montaje/desmontaje de el sistema de
ficheros

Desmontando el sistema de ficheros


Los sistemas de ficheros pueden ser desmontados usando el comando umount. Cuando
un sistema de ficheros es desmontado, los contenidos del rbol principal se actualizan,
no pudiendose usar el umount si el sistema de ficheros que se quiere desmontar est
en uso. Si el sistema de ficheros est en uso el comando umount dar un error. Esto
puede ocurrir por ejemplo cuando tenemos abierto un fichero de un DVD o un proceso
est haciendo uso del mismo. Otros errores pueden surgir si quitamos dispositivos
removibles sin antes desmontarlos.
La sintaxis bsica de esta utilidad es la siguiente:
# umount [opciones] [dispositivo|directorio

El comando mount admite dos tipos de opciones, unos para el comando en si, y otros
para especificar opciones del sistema de ficheros.
Opciones
-a

-t fstype

Descripcin
Desmonta todos los filesystems descritos en /etc/mtab. Este fichero
est mantenido por los comando mount y umount en tiempo real, se
usa normalmente cuando se apaga/reinicia el PC
Desmonta slo los filesystems del tipo especificado

11.1.2 Configurar el montaje de sistemas de archivos al arranque del


sistema.
Todos los archivos de un sistema UNIX estn organizados en un gran rbol de
directorios/archivos
Pueden estar distribuidos entre diferentes dispositivos de almacenamiento o incluso
entre otros equipos conectados en red. El comando mount permite vincular el sistema
de archivos de un dispositivo fsico dentro de una determinada ruta del rbol de archivos
de UNIX. El contenido del directorio desaparecer cuando el dispositivo se desmonte
del rbol mediante la orden umount.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

271

Sintaxis:
# mount [-t type] [-o mount_options] device directory

Fuerza al S.O. a unir el sistema de ficheros del tipo type del dispositivo device al
directorio directory.
mount h: Muestra una pequea ayuda en lnea.
Consultar los comandos man mount o info mount.
mount: Muestra todos los sistemas de archivos montados actualmente.
La orden mount soporta muchos sistemas de archivos, en la siguiente tabla se listan los
tipos ms utilizados.
Tipo
ext2
ext3
Iso9660
msdos
vfat
ntfs
auto

Descripcin
sistema nativo de linux /ext2
sistema nativo de linux /ext3 con journaling
sistema de archivo utilizado en los CD-ROMs
sistema de archivo utilizado por MSDOS (FAT 12 o FAT 16)
sistema de archivo utilizado por Windows (FAT 32)
sistema de archivo utilizado por Windows NT y posteriores
deteccin automtica del sistema de archivo del dispositivo

Si se omite la opcin t, la orden mount realizar una deteccin automtica, que


funciona correctamente en la mayora de los casos.
No obstante en aquellos que la asignacin sea incorrecta (por ejemplo un sistema
FAT32 es asignado a FAT16 y no es posible acceder a los nombres largos de los
archivos) ser necesario indicar el tipo de archivos del dispositivo con la opcin t.
Montar y dejar particin en el arranque
#mkdir /media/multimedia

Se monta el disco duro por medio de la siguiente sintaxis;


mount -t sistema_archivos /dev/dispositivo /media/directorio_creado
#mount -t ext3 /dev/sdb1 /media/multimedia

Donde:

mount: comando para montar dispositivos.


-t: Hace referencia al tipo de sistema de archivos.
ext3: Sistema de archivos.
/dev/sdb1: Dispositivo Primario esclavo.
/media/multimedia: directorio creado donde se montara el disco duro.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

272

Sino conoce el sistema de archivos ejecute la siguiente sintaxis;


# fdisk -l

Se verifica si se monto correctamente el disco duro en el directorio multimedia


ejecutando la siguiente sintaxis;
# df h
/dev/sdb1

459G

200M

435G

1%

/media/multimedia

Ahora se deja de forma permanente el disco duro en el arranque del sistema, para esto
es necesario editar el archivo fstab con un editor de texto, ejemplo vim, pico, joe, etc.
As mismo no esta dems hacer una copia de respaldo del archivo antes que sea
editado;
#cp /etc/fstab [Link]
#vim /etc/fstab

Se agrega la siguiente sintaxis en el archivo fstab;


/dev/sdb1

/media/multimedia

ext3

defaults

0 0

Listo, en el prximo reinicio del sistema, se montar de forma automtica el disco duro
en el directorio asignado para su montaje.

11.1.3 Configurar sistemas de archivos para dispositivos extrables


Como ya se vi anteriormente, la estructura de los sistemas de ficheros estn
generalmente divididos en particiones, unidas todas ellas en el punto de montaje raiz (/)
o separadas. Los sistemas de ficheros de los dispositivos removibles como un USB o
un Disco CD se unen a la raiz del sistema de la misma manera, como directorios o
puntos de montaje. En principio estos directorios destinados a los dispositivos estn
vacos, a la espera de su montaje, puede darse el caso de que el directorio destinado a
este fin contenga subdirectorios o archivos, en cuyo caso quedarn ocultos hasta que
el dispositivo se desmonte
Montaje de dispositivos extrables
Los datos de DVDs, CDs, disquetes y dispositivos USB normalmente se montan
manualmente, a menos que se disponga de un automontador que lleve a cabo esta
tarea. Linux asigna directorios bajo /mnt o /media para dispositivos extrables. En la lnea
de comandos es necesario escribir el nombre del fichero del dispositivo y el punto de
montaje. Si se est montando un dispositivo de almacenamiento en masa USB, tiene
sentido comprobar el fichero log /var/log/messages para ver si el fichero ha sido
detectado correctamente y para descubrir el nombre del fichero del dispositivo.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

273

Para montar un dispositivo detectado por ejemplo sdd, en un directorio existente,


/media/usb, escribimos lo siguiente:
#mount /dev/sdd /media/usb

No es necesario especificar la particin, si el stick USB no est particionado, para un


stick formateado ser preciso especificar /dev/sdd1.
Linux auto-detecta el tipo de sistema de ficheros para un medio. Si en su lugar se obtiene
un mensaje de error, puede echarse una mano a Linux y especificarle explcitamente el
tipo de ficheros, suministrando un valor para el parmetro -t, por ejemplo:
#mount t vfat /dev/sdd /media/usb

Sirve para un viejo sistema de ficheros Windows en un medio con formato FAT. Adems
de vfat (para el sistema de ficheros Windows/DOS), los valores soportados sin ext2
(Extended Filesystem, Version 2), ext3 (Extended Filesystem, Version3), reiserfs (Reiser
Filesystem), iso9660 (ISO9660), ntfs (NT Filesystem), etc., por citar unos pocos.
La mayora de los sistemas definen los nombres de los dispositivos y puntos de montaje
para CDs/DVDs y disquetes, esto significa que con un comando tal como
#mount /media/cdrom

Puede ser todo lo necesario para montar un CD.

11.1.4 Establecer cuotas de discos para un sistema de archivos


La utilizacin de cuotas en el sistema de archivos permite a los administradores de
sistemas realizar la gestin eficiente del espacio compartido en disco por mltiples
usuarios. Las cuotas restringen la capacidad de los usuarios para acceder hacia los
recursos de sistema, tales como bloques (asignacin de unidades), e inodos (entradas
del sistema de archivos). Cuando una cuota es excedida se aplica una poltica
determinada por el administrador. Las cuotas se administran individualmente por cada
sistema de archivos y son nicas para usuarios y/o grupos.
Acerca de las cuotas.
Una cuota de disco es un lmite establecido por un administrador, el cual restringe ciertos
aspectos del uso del sistema de archivos. El objetivo de las cuotas es limitar, de forma
razonable, el espacio utilizado en el sistema de archivos. Suelen configurarse en
servidores de correo electrnico, servidores HTTP con anfitriones virtuales, servidores
de archivos, en algunos sistemas de escritorio y en cualquier escenario donde el
administrador del sistema necesite controlar el espacio utilizado por lo usuarios en el
sistema de archivos.
Muchos entienden mal el cmo las cuotas funcionan. Las cuotas normalmente no se
activan en los demonios, no es labor del demonio controlar las cuotas. Es labor del
kernel.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

274

En el kernel se activa un mdulo que permite llevar la contabilidad de las cuotas, y como
el kernel es el que recibe las solicitudes de escritura, entonces el mismo kernel se
ocupar de negarlas si la contabilidad as lo indica o no.
Existen dos variantes de quotas en Linux:
1. Quotas por usuario
2. Quotas por grupo
Las cuotas por usuario afectarn el qu o cunto escribe el usuario hacia disco. Y las
cuotas de disco afectarn el qu o cunto escribe un grupo de usuarios al disco.
De las dos, trabajaremos con cuotas por usuario. Aunque mencionaremos cmo se
llevan las cuotas de grupo.
Las cuotas se dividen a su vez en
1. cuotas de espacio en disco (bloques)
2. quotas de cantidad de archivos (inodos)
Las cuotas de espacio en disco se miden en K y es la que comunmente es ms fcil de
entender: Es cuntos KBytes puede escribir un usuario (o grupo) a disco.
Las cuotas de cantidad de archivos (inodos) indica cuntos archivos (no importa el
tamao) pueden escribir los usuarios (o grupos). Es util cuando tenemos riesgos de que
un usuario cree por ejemplo 100000 archivos de 0 bytes de tamao. An cuando tengan
0 de tamao, consumir todos los inodos del sistema.
Normalmente las cuotas de inodos no se utilizan a no ser que tenga una razn
especfica.
Las cuotas de espacio en disco y/o archivos se dividen en dos tipos:
1. Soft Quotas
2. Hard Quotas
Hard quotas: Son aquellas que no te puedes pasar, por ejemplo, si digo que tienes
10000KBytes de hard quota, eso significar que no puedes pasarte de los 10000kbytes
(10mb).
Soft quotas: Significa que te puedes pasar de ellas, pero por un tiempo determinado (7
das) llamado periodo de gracia. Una vez superado este valor, se considerarn hard
quotas.
Se utilizaban antes cuando haba poco disco, a los usuarios se les deca:
Tienes un espacio en disco de 10MB
Sin embargo el sistema de quotas se programaba de la siguiente forma:
- Soft Quota: 10MB
- Hard Quota: 20MB
De forma tal que el usuario, si tena un requerimiento muy especial poda pasarse de
los 10MB hasta 20MB. pero eso s, antes de los 7 das deba ajustarse a la soft quota
(10MB).

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

275

Instalacion:
Debe iniciarse el sistema en nivel de ejecucin 1 (mono usuario), ya que se requiere
no haya procesos activos utilizando contenido de la particin a la cual se le aplicar la
cuota de disco.
Una vez en modo mono usuario, verificamos si tenemos instalado el paquete quota.
# rpm -q quota

Si el paquete no estuviera presente, deberamos instalarlo con:


# yum install quota

Las cuotas se manejan por particin, supongamos que yo quiero activar las cuotas en
la particin /home.
Edito el archivo /etc/fstab, busco la lnea de /home y la edito, en mi caso est as:
#vi /etc/fstab
LABEL=/home /home ext3 defaults 1 2

Lo importante es agregarle soporte para quotas por usuario y/o grupo, detrs de default
#vi /etc/fstab
LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2

Una vez haya hecho el cambio procedemos a remontar la particin /home:


#mount -o remount /home

Se deben crear los ficheros [Link], [Link], [Link] y [Link],


los cuales se utilizarn en adelante para almacenar la informacin y estado de las cuotas
en cada particin.
#cd /home
#touch [Link] [Link] [Link] [Link]

Ejecutamos el comando quotacheck


#quotacheck -avug

La primera vez que se ejecuta el mandato anterior es normal marque advertencias


refirindose a posibles ficheros truncados que en realidad no eran otra cosa sino

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

276

ficheros de texto simple vacos a los cuales se les acaba de convertir en formato binario.
Si se ejecuta de nuevo quotacheck - avug, no deber mostrar advertencia alguna
Para activar las cuotas de disco recin configuradas, solo bastar ejecutar
#quotaon /home

Ahora vamos al nivel de corrida 3 a fin de aplicar cuota de disco a algunos usuarios
#init 3

edquota
Es importante conocer que significa cada columna mostrada por edquota.
Blocks: Bloques. Corresponde a la cantidad de bloques de 1 Kb que est utilizando el
usuario.
Inodes: Inodos. Corresponde al nmero de ficheros que est utilizando el usuario. Un
inodo (tambin conocido como Index Node) es un apuntador hacia sectores especficos
de disco duro en los cuales se encuentra la informacin de un fichero. Contiene adems
la informacin acerca de permisos de acceso as como los usuarios y grupos a los cuales
pertenece el fichero.
Soft: Limite de gracia. Limite de bloques de 1 KB que el usuario puede utilizar y que
puede rebasar hasta que sea excedido el periodo de gracia (de modo predeterminado
son 7 das).
Hard: Limite absoluto. Limite que no puede ser rebasado por el usuario bajo
circunstancia alguna.
Asignar cuotas de disco a cualquier usuario o grupo solo har falta utilizar edquota
citando el nombre del usuario al cual se le quiere aplicar:
#edquota fulano

Lo anterior deber devolver algo como lo siguiente a travs de vi u otro editor de texto
simple:
Disk quotas for user fulano (uid 501):
Filesystem
blocks
soft
hard
inodes
/dev/hda7
0
0
0
0
/dev/hda5
24
0
0
10

CARRERA DE REDES Y COMUNICACIONES

soft
0
0

hard
0
0

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

277

Cuota absoluta (Hard)


Suponiendo que se quiere asignar una cuota de disco de 6 MB para el usuario fulano
en en /dev/hda7 y /dev/hda5, se utilizara lo siguiente:
Disk quotas for user fulano (uid 501):
Filesystem
blocks
soft
hard
/dev/hda7
0
0
6144
/dev/hda5
24
0
6144

inodes
0
10

soft
0
0

hard
0
0

El usuario siempre podr rebasar una cuota de gracia, pero nunca una cuota absoluta.
Cuota de gracia (Soft)
El sistema tiene de modo predeterminado un periodo de gracia de 7 das que se puede
modificar con el mandato edquota -t, donde se puede establecer un nuevo periodo de
gracia por das, horas, minutos o segundos.
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds Filesystem
Block grace period
Inode grace period
/dev/hdb7
7days
7days
/dev/hdb5
7days
7days

La cuota de gracia establece los lmites de bloques o inodos que un usuario tiene en
una particin. Cuando el usuario excede el lmite establecido por la cuota de gracia, el
sistema advierte al usuario que se ha excedido la cuota del disco sin embargo permite
al usuario continuar escribiendo hasta que trascurre el tiempo establecido por el periodo
de gracia, tras el cual al usuario se le impide continuar escribiendo sobre la particin.
Suponiendo que quiere asignar una cuota de gracia de 6 MB en /dev/hda7 y /dev/hda5,
la cual podr ser excedida hasta por 7 das, se utilizara lo siguiente:
Disk quotas for user fulano (uid 501):
Filesystem
blocks
soft
hard
/dev/hda7
0
6144
0
/dev/hda5
24
6144
0

inodes
0
10

soft
0
0

hard
0
0

Aplicar cuotas masivamente


Si se quiere que todo aplique para los usuarios existentes, a partir de UID 510, por
ejemplo, suponiendo que tiene al usuario "pepito" como molde (note por favor el
acento grave en el mandato justo antes de awk, no es una comilla ni apostrofe):
#edquota -p pepito `awk -F: '$3 > 510 {print $1}' /etc/passwd`

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

278

11.1.5 Editar, revisar y generar reportes de cuotas de usuario.


Utilice el mandato edquota con el usuario fulano.
#edquota fulano

Asigne al usuario fulano una cuota de disco de 50 MB en todas las particiones con
cuota de disco habilitada:
Disk quotas for user fulano (uid 501):
Filesystem
blocks
soft
hard
/dev/hda7
0
0
51200
/dev/hda5
24
0
51200

inodes
0
10

soft
0
0

hard
0
0

Desde otra terminal acceda hacia el sistema como el usuario fulano y ejecute el mandato
quota y observe con detenimiento la salida:
Disk quotas for user fulano (uid 501):
Filesystem blocks quota limit
grace
/dev/hda7
0
0
51200
/dev/hda5
24
0
51200

files
1
10

quota
0
0

limit grace
0
0

Realice una copia del directorio /usr/lib como el subdirectorio ~/prueba-cuotas dentro de
su directorio de inicio.
#cp -r /usr/lib ~/prueba-cuotas

Notar que llegar un momento en el que el sistema indicar que ya no es posible


continuar copiando contenido dentro de ~/prueba-cuotas debido a que se ha agotado
el espacio en la particin.
Utilice de nuevo el mandato quota y observe con detenimiento la salida, en donde
aparecer un asterisco justo junto a la cantidad en la columna de bloques bloques, el
cual indica que se ha excedido la cuota del disco:
Disk quotas for user fulano (uid 501): Filesystem blocks
limit grace
files quota limit grace /dev/hda7
0
51200
1
0
0 /dev/hda5
51200*
0
7439
0
0

quota
0
51200

Para poder volver a escribir sobre la particin, es necesario liberar espacio. Elimine por
completo el directorio ~/prueba-cuotas y vuelva a utilizar el mandato quota:
#rm -fr ~/prueba-cuotas quota

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

279

Resumen
En esta unidad, se revis la manera de montar un usb o dispositivos externo en el sistema
operativo Linux con el comando mount y desmontarlo, luego, con el comando umount. Se
vio cmo colocar cuotas a los discos para que, los distintos usuarios que ingresan al
sistema operativo, no sobrepasen de su uso. Asimismo, se vio cmo revisar las cuotas
para poder tomar medidas con los usuarios que no respetan los mensajes de advertencia
de las cuotas de disco.

Bibliografa
BSICA
Angie Nash y Jason Nash

2001

LPIC 1 Certification Bible

2004

Edicin especial Linux


(005.43L BAND)

CIBERTEC
2004 Linux administrador e Internet: Linux administrador y security
(005.43L CIBE)
COMPLEMENTARIA
2013

([Link]
Proyecto de documentacin de Linux en espaol.

2013

([Link]
Proporciona guas rpidas para instalar, configurar servicios de red basados en Linux.

2013

([Link]
Proyecto de formacin en habla hispana para los candidatos a la certificacin LPI en
cualquiera de sus niveles.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

280

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

281

UNIDAD

12
ADMINISTRACIN DE
USUARIOS Y GRUPOS
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al trmino de la unidad, el alumno configura usuarios y grupos en Linux con
atributos especficos.
TEMARIO
12.1 Tema 14 : Administracin de cuentas
13.1.1 : Administrar permisos de acceso en archivos regulares y
archivos especiales, as como directorios.
13.1.2 : Usar modos de acceso como suid, sgid y sticky bit para
mantener la seguridad.
13.1.3 : Conocer cmo cambiar la mscara de creacin de
archivos.
13.1.4 : Usar el campo de grupo para garantizar acceso a
miembros de grupo.

ACTIVIDADES PROPUESTAS

Identificar los accesos suid, sgid.


Identificar la mascara de archivos.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

282

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

283

12.1 ADMINISTRACIN DE CUENTAS


12.1.1 Administrar permisos de acceso en archivos regulares y archivos
especiales, as como directorios.
El sistema de permisos en Linux se basa en un esquema de usuarios/grupos que lo
convierte en la base principal de la seguridad en Linux, a estos usuarios y grupos se les
asignan distintos derechos sobre los archivos y directorios.
Esta es una de las caractersticas que ayudan a que Linux sea casi inmune a los Virus
de computadora, los virus deben ser capaces de escribir sobre un archivo para poder
infectarlo y ejecutarse de alguna manera para poder infectar mas archivos, con el
sistema de permisos de Linux los virus no pueden copiarse a cualquier archivo, si el
usuario carece de permisos el virus no podr infectar ms archivos y por lo tanto no
podr reproducirse.
Todos los archivos y directorios en Linux tienen permisos que verifican quien puede
hacer o no alguna accin con l.
Los permisos son los siguientes:

r: read (lectura): Cuando el permiso de lectura est activo sobre un directorio


significa que se podr listar los recursos almacenados en l, si est asignado a un
archivo se podr leer su contenido.

w: write (escritura): Cuando el permiso de escritura est activo sobre un directorio


significa que se podr crear y borrar archivos en su interior, si esta activado para un
archivo significa que se podr modificar su contenido.

x: execute (ejecucin): Si el permiso de ejecucin est activo sobre un directorio


significa que el usuario podr realizar otras funciones dentro de l mediante los otros
permisos de lectura y escritura, y si est activo sobre un archivo se podr ejecutarlo
desde la lnea de comandos.

Y dnde estn los permisos?


Para poder ver los permisos de los archivos y directorios es necesario ejecutar el
siguiente comando:
#ls -l

Este comando nos dar una salida similar a la siguiente:

Figura 196: Listando contenido de carpeta


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

284

Ahora describamos la salida que hemos obtenido:

Figura 197: Descripcin de la salida


Fuente: Cibertec

Con la siguiente lnea interpretamos la informacin as:


- rw- r-- r-- 1 raul raul 594 2005-09-13 13:13 [Link]

1 2
3
4
5 6
7
8
9
10
11
1 : Tipo de archivo = es un archivo regular
2 : Permisos = los permisos para el propietario son de lectura y
escritura
3 : Permisos = el grupo tiene permiso de slo lectura
4 : Permisos = los otros usuarios tienen el permiso de slo lectura
5 : Enlace Fsico = tiene un enlace fsico
6 : Propietario = el usuario raul es el propietario de este archivo
7 : Grupo = este archivo pertenece al grupo raul
8 : Tamao = su tamao es de 246417 bytes
9 : Fecha = fue creado el 03 de marzo de 2005
10 : Hora = a 13:13 horas
11 : Nombre = el archivo se llama [Link]

Como se puede apreciar, los permisos estn asignados en grupos de 3 (rwx) y


corresponde al: propietario (owner: dueo del archivo o directorio), grupo (group: grupo
del archivo o directorio) y otros (others: otro usuario diferente del propietario).

Figura 198: Descripcin de la salida


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

285

12.1.2 Usar modos de acceso como suid, sgid y sticky bit para mantener la
seguridad.
Pueden ser utilizados 3 tipos de permisos en determinadas circunstancias. Aparte de
los siempre aplicables de lectura, escritura y ejecucin, algunas veces es necesario algo
ms para un archivo o directorio. Estos permisos especiales son los 3 siguientes:

Sticky bit
Asignar ID de usuario (set user ID) (SUID)
Asignar ID de grupo (set group ID) (SGID)

Stiky Bit
El Sticky bit se utiliza para permitir que cualquiera pueda escribir y modificar sobre un
archivo o directorio, pero que solo su propietario o root pueda eliminarlo. Un ejemplo de
uso es el directorio /tmp, que debe tener permisos para ser utilizado por cualquier
proceso, pero solo el dueo o root puede eliminar los archivos que crea.
Para aplicar el Sticky bit a un directorio:
[hvivani@test archivos]$ chmod 1755 dirtest/
[hvivani@test archivos]$ ls -l
total 8
drwxr-xr-t. 2 hvivani group 4096 sep 6 09:32 dirtest

Al directorio con el Sticky Bit aplicado se le agrega la t al final del descriptor de permisos.
SUID
El bit SUID activo en un archivo significa que el que lo ejecute va a tener los mismos
permisos que el que cre el archivo. Esto puede llegar a ser muy util en algunas
situaciones pero hay que utilizarlo con cuidado, dado que puede generar grandes
problemas de seguridad.
Para que sea efectivo el archivo debe tener permisos de ejecucin.
Para activarlo:
[hvivani@test
[hvivani@test
-rwsrwxr-x. 1
[hvivani@test
[hvivani@test
-rwSrw-r--. 1

~]$ chmod 4775 [Link]


~]$ ls -l [Link]
hvivani group 133 ago 27 08:25 [Link]
~]$ chmod -x [Link]
~]$ ls -l [Link]
hvivani group 133 ago 27 08:25 [Link]

Vean que en la ltima lnea le saqu el permiso de ejecucin al archivo y en los permisos
se reemplaza la s por la S. En este caso no tiene efecto el bit.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

286

SGID
El SGID es lo mismo que en el SUID, pero a nivel de grupo. Es decir, todo archivo que
tenga activo el SGID, al ser ejecutado, tendr los privilegios del grupo al que pertenece.
Esto es muy usado cuando queremos configurar un directorio colaborativo: si aplicamos
este bit al directorio, cualquier archivo creado en dicho directorio, tendr asignado el
grupo al que pertenece el directorio.
[hvivani@test tmp]$ chmod 2775 dirtest/
[hvivani@test tmp]$ ll
total 8
drwxrwsr-x. 2 hvivani grupo 4096 sep 6 09:32 dirtest
[hvivani@test tmp]$ su usuario1
Contrasea:
[usuario1@test tmp]$ cd dirtest/
[usuario1@test dirtest]$ touch [Link]
[usuario1@test dirtest]$ ll
total 0
-rw-r--r--. 1 usuario1 grupo 0 Sep 6 09:50 [Link]

Al igual que con el SUID, aparece una s o una S reemplazando la x en los permisos del
grupo.

12.1.3 Conocer cmo cambiar la mscara de creacin de archivos.


En GNU/Linux cuando un usuario crea un fichero o directorio, se le asigna unos
permisos por defecto. Usualmente, para un fichero nuevo se le asignan los permisos rwr--r-- (644), mientras que para un directorio nuevo rwxr-xr-x (755).
Para conseguir esta asignacin por defecto, se utiliza una mscara de permisos, cuya
misin no es asignar los permisos, sino restringirlos. Esto quiere decir que la mscara
especifica los permisos que no se asignarn a los nuevos objetos que se vayan creando.
El valor de la mscara se puede consultar y modificar mediante el comando umask. El
valor por defecto de la mscara suele ser 0022.
El procedimiento de aplicacin de permisos para nuevos objetos es el siguiente:
1.
2.
3.
4.
5.

Por defecto, se crean todos los ficheros con los permisos 666 (rw-rw-rw-)
Por defecto, se crean todos los directorio con los permisos 777 (rwxrwxrwx)
Se aplica la mascara (por defecto 0022)
Se utiliza la misma mscara para todos los ficheros y directorios.
La mscara no modifica los permisos de los objetos existentes, sino que se aplica
solamente a los nuevos objetos.

Para consultar el valor de la mscara hay que utilizar el comando umask sin parmetros:
# umask
0022

Para asignar un nuevo valor de mscara, indicamos el nuevo valor como parmetro:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

287

# umask 0026
# umask
0026

Ejemplos de aplicacin de la mscara:

Para un fichero
Predeterminado

rwrwrw

(666)

Retirar

-w--w-

(022)

Resultado

rwrr

(644)

Para un directorio
Predeterminado

rwxrwxrwx

(777)

Retirar

--w--w-

(022)

Resultado

rwxrxrx

(755)

Suprime permisos, no realiza la resta aritmtica


Predeterminado
Retirar
Resultado

rwrwrw
wxrwx
rwr

(666)
(037)
(640) (y no 629, imposible en octal)

Modificar los permisos de los archivos.


Linux dispone de 3 comandos que permite cambiar los permisos, el propietario y el grupo
de un archivo y/o directorio respectivamente:

Comando chmod: se utiliza para cambiar los permisos del archivo o directorio
$ chmod [permisos] [archivo/directorio] [opciones]

Comando chown: se utiliza para cambiar el propietario del archivo o directorio


# chown [nuevo usuario propietario] [archivo/directorio] [opciones]

Comando chgrp: utilizado para cambiar el grupo del archivo o directorio


# chgrp [nuevo grupo] [archivo/directorio] [opciones]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

288

Cmo se cambian los permisos?


Para cambiar los permisos se puede hacer de 2 maneras.

Utilizando taquigrafa basada en caracteres, o


Utilizando nmeros.

Cambio de permisos utilizando taquigrafa de caracteres


Para poder utilizar la taquigrafa basada en caracteres tomemos en cuenta la siguiente
lista con su respectiva correspondencia:

Figura 199: Tabla de taquigrafa basada en caracteres.


Fuente: Cibertec

Vamos a practicar con el comando chmod, para ello lo primero que haremos ser crear
el archivo [Link] para ver los cambios de permisos, as que les recomiendo seguir la
secuencia:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

289

Figura 200: Empleo del comando chmod.


Fuente: Cibertec

Si cambiamos los permisos a un directorio y deseamos que estos permisos tengan


efecto sobre todos sus subdirectorios y archivos slo deberemos aadir la opcin R.
Ejemplo
$ chmod a=rw DIRECTORIO R

Cambio de permisos utilizando nmeros


Cada permiso tienen asignado un valor, incluso cuando el permiso no est activo. Para
poder utilizar los nmeros tendremos que tener en cuenta la siguiente tabla con sus
respectivos valores:

Figura 201: Valores de permisos.


Fuente: Cibertec

Cuando asignamos los permisos utilizando nmeros debemos tener en cuenta que
primero se sumarn los valores y dicho resultado ser el que se coloque, aqu una tabla
que muestra dichos valores:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

290

Figura 202: Tablka de valores por permisos.


Fuente: Cibertec

Los permisos por nmeros se asignan en grupos de 3, es decir, para el propietariogrupo-otros, no es factible asignar solo para uno o dos de ellos. Acontinuacin
mencionaremos algunos ejemplos:
rw-------- (600): Slo el propietario tiene el derecho de leer y escribir.
rw-r--r-- (644): Slo el propietario tiene los permisos de leer y escribir; el grupo y los
dems slo pueden leer.
rwx------ (700): Slo el propietario tiene los derechos de leer, escribir y ejecutar el
archivo.
rwxr-xr-x (755): El propietario tiene los derechos de leer, escribir y ejecutar; el grupo y
los dems slo pueden leer y ejecutar.
rwx--x--x (711): El propietario tiene los derechos de lectura, escritura y ejecucin; el
grupo y los dems slo pueden ejecutar.
rw-rw-rw- (666): Todo el mundo puede leer y escribir en el archivo. No es una buena
eleccin!
rwxrwxrwx (777): Todo el mundo puede leer, escribir y ejecutar. Tampoco es buena
eleccin!
Utilizaremos el mismo ejercicio anterior para poder practicar con los permisos utilizando
nmeros, el nico cambio que haremos ser utilizar otro archivo llamado [Link]:

Figura 203: Empleo del comando chmod.


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

291

12.1.4 Usar el campo de grupo para garantizar acceso a miembros de grupo.


Cuentas de usuario
Para poder utilizar el sistema operativo Unix es necesario disponer de una cuenta de
usuario que se compone de nombre de usuario (login) y de contrasea (password). Las
cuentas de usuario son creadas por el administrador que en Unix es un usuario especial
llamado root (ver ms abajo). Los usuarios debern pertenecer al menos a un grupo de
usuarios ya que obligatoriamente deben tener asignado un grupo principal o grupo
primario.
Cuando un usuario entra en un sistema Unix, debe identificarse indicando su nombre de
usuario (en ingls login) y su contrasea (en ingls password). Si se equivoca al
introducir su nombre o su contrasea, el sistema le denegar el acceso y no podr
entrar.
Otro de los puntos a la hora de establecer permisos es la necesidad de poder cambiar
el propietario y grupo del archivo o directorio, para hacer esta operacin debe estar
como root y los usuarios y grupos que utilizar deben haber sido creados previamente.
La cuenta de usuario le permite acceder al sistema tanto de forma presencial (sentado
delante del ordenador) como de forma remota accediendo desde otro equipo por la red.
Los permisos que tiene el usuario cuando utiliza el sistema presencialmente son los
mismos que tiene cuando lo hace remotamente. Lo habitual es utilizar el sistema de
forma remota ya que al ser Unix un sistema multiusuario, la nica forma de que varios
usuarios lo utilicen de forma simultnea es remotamente.
El sistema Unix codifica los usuarios con un nmero diferente a cada uno que es el
identificador de usuario (uid = User IDentifier). Internamente el sistema trabaja con el
uid, no con el nombre del usuario. Normalmente a los usuarios que creemos se les
asignan uids desde 1000 en adelante. Los nmeros uid menores que 100 se reservan
para usuarios especiales del sistema.
En Unix, por defecto, la informacin de los usuarios de un sistema se guarda en el
archivo /etc/passwd. Es un archivo de texto que puede visualizarse con cualquier editor.
Cada linea del archivo /etc/passwd almacena los parmetros de un usuario. Solo puede
modificarlo el administrador (root). A continuacin mostramos el archivo passwd:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

292

Figura 204: Listado del archivo passwd.


Fuente: Cibertec

Las contraseas de cada usuario se guardan encriptadas con un sistema de codificacin


irreversible, en el archivo /etc/shadow que tambin es un archivo de texto.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

293

Figura 205: Listado del archivo shadow.


Fuente: Cibertec

Grupos de usuarios
Para poder administrar los permisos de los usuarios de una forma ms flexible, el
sistema Unix permite la organizacin de usuarios en grupos y establecer permisos a los
grupos. Ejemplo, si en un centro educativo el grupo "profesores" tiene acceso a ciertas
carpetas, cuando demos de alta un profesor nuevo, tan solo tendremos que aadirle al
grupo "profesores" para que pueda acceder a todas esas carpetas. Es lo que se
denomina administracin de permisos por grupos.

Figura 206: Usuario y grupos.


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

294

Todos los usuarios pertenecen al menos a un grupo que es el grupo principal del usuario,
tambin llamado grupo primario del usuario, pero pueden pertenecer a ms grupos. En
caso de que pertenezcan a ms grupos, stos sern grupos secundarios.
Todo usuario debe pertenecer a un grupo principal obligatoriamente
Los grupos pueden contener varios usuarios. Los grupos de usuarios solo pueden
contener usuarios, nunca podrn contener a otros grupos.
El sistema Unix codifica los grupos de usuarios con un nmero diferente a cada uno que
es el identificador de grupo (gid = Group IDentifier). Internamente el sistema trabaja con
el gid, no con el nombre del grupo. Normalmente a los grupos que creemos se les
asignan gids desde 1000 en adelante. Los nmeros gid menores que 100 se reservan
para grupos especiales del sistema.
En Unix por defecto, la informacin de los grupos de un sistema se guarda en el archivo
/etc/group. Es un archivo de texto que puede visualizarse con cualquier editor. Cada
lnea del archivo /etc/group almacena los parmetros del grupo y los usuarios que
contiene. Solo puede modificarlo el administrador (root). Las contraseas de los grupos
se guardan encriptadas con un sistema de codificacin irreversible, en el archivo
/etc/gshadow que tambin es un archivo de texto.
Usuario root
El usuario root, a veces llamado superusuario, es el usuario administrador del sistema.
Est identificado con el nmero de usuario cero (uid=0) y tiene permisos sobre todo el
sistema sin ningn tipo de restriccin. El usuario root puede acceder a cualquier archivo,
ejecutar, instalar y desinstalar cualquier aplicacin, modificar los archivos de
configuracin del sistema y administrar usuarios. Si dispones de la contrasea de root
tendrs control total sobre todo el sistema.
Administracin de usuarios y grupos
La administracin de usuarios y grupos solamente puede realizarlas el usuario root
utilizando los comandos de gestin de usuarios. Las tareas y los comandos para
realizarlas son:

Creacin de usuarios / useradd


Modificacin de usuarios / usermod
Eliminacin de usuarios / userdel
Creacin de grupos / groupadd
Modificacin de grupos / groupmod
Eliminacin de grupos / groupdel
Aadir usuarios a un grupo / adduser
Quitar usuarios de un grupo / deluser

Creacin de usuarios
El comando useradd permite aadir un usuario indicando como parmetros la
informacin particular para crear el usuario en la misma lne de comandos. La sintaxis
es:
#useradd [opciones] nombre-usuario

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

295

Entre las opciones ms destacables tenemos:

-g: Grupo principal que queremos tenga el usuario (debe existir previamente)
-d: Carpeta home del usuario. Suele ser /home/nombre-usuario
-m: Crear carpeta home si es que no existe.
-s: Intrprete de comandos (shell) del usuario. Suele ser /bin/bash

Ejemplo, si deseamos crear un usuario llamado 'pedro' cuyo grupo principal sea
'profesores', cuya carpeta home sea /home/pedro y su intrprete de comandos sea
/bin/bash, ejecutaremos el siguiente comando:
#useradd -g profesores -d /home/pedro -m -s /bin/bash pedro

De esta manera habremos creado al usuario pedro y su carpeta home. Si no utilizamos


la opcin -m, no se crear la carpeta home del usuario; en tal caso tendramos que
crearla manualmente. Tan solo nos quedar establecer su contrasea con el comando
passwd:
# passwd pedro

Entonces el sistema nos preguntar dos veces la contrasea que queremos asignar a
pedro.
Tambin podemos ver informacin sobre la expiracin de la contrasea del usuario con
el comando chage.
[root@ localhost ~]# chage -l pedro
Last password change
Password expires
Password inactive
Account expires
Minimum number of days between password change
Maximum number of days between password change
Number of days of warning before password expires

:
:
:
:
:
:
:

Feb 20, 2016


never
never
never
0
99999
15

Si queremos que el usuario cambie su contrasea cada 90 das, escribimos lo siguiente:


# chage -M 90 pedro

Ahora se observa que la contrasea de "pedro" expirar el 21 de mayo de 2016 (90 das
ms tarde):
[root@localhost ~]# chage -l pedro
Last password change
Password expires
Password inactive
Account expires
Minimum number of days between password change
Maximum number of days between password change
Number of days of warning before password expires

CARRERA DE REDES Y COMUNICACIONES

:
:
:
:
:
:
:

Feb 20, 2016


May 21, 2016
Jun 20, 2016
never
0
90
15

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

296

El comando useradd permite crear muchos usuarios automticamente mediante


archivos de comandos (scripts).
Se recomienda que el nombre de usuario sea en minsculas y adems de letras tambin
puede contener nmeros y algn signo como guiones normales y guiones bajos.
Debemos recordar que unix distingue entre maysculas y minsculas, es decir, Pepe es
distinto de pepe.
Modificacin de usuarios
Se utiliza el comando usermod y permite cambiar el nombre del usuario, su carpeta
home, su intrprete de comandos, los grupos a los que pertenece y algunos otros
parmetros.
Para cambiar el home de un usuario:
# usermod -d /home/carpeta_pedro pedro

Eliminacin de usuarios
Se realiza con el comando userdel seguido del nombre del usuario. Con la opcin -r
eliminar tambin su carpeta home, ejemplo:
# userdel -r pedro

Eliminara el usuario pedro y su carpeta home.


Creacin de grupos
El comando groupadd permite aadir un grupo indicando como parmetro el nombre del
grupo. Ejemplo, si deseamos crear un grupo llamado 'alumnos' ejecutaremos:
# groupadd alumnos

Modificacin de grupos
El comando groupmod permite modificar el nombre de un grupo o el gid del mismo. La
sintaxis es: sudo groupmod [-g nuevo-gid] [-n nuevo-nombre] nombre-grupo, ejemplo:
Para cambiar el gid del grupo profesores:
# groupmod -g 2000 profesores

Eliminacin de grupos
Se realiza con el comando groupdel seguido del nombre del grupo, ejemplo:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

297

# groupdel profesores

Eliminara el grupo profesores. Si algn usuario tuviera dicho grupo como grupo
primario, el comando groupdel no eliminar el grupo.
Aadir usuarios a un grupo
Distribucin Centos
Se utiliza el comando gpasswd seguido de -a para aadir el usuario y seguido del
nombre del grupo al que queremos aadirle, ejemplo:
Para aadir juan al grupo profesores:
# gpasswd -a juan profesores

Distribucin Ubuntu
Se utiliza el comando adduser seguido del nombre del usuario y del nombre del grupo
al que queremos aadirle, ejemplo:
Para aadir juan al grupo profesores:
# adduser juan profesores

Quitar usuarios de un grupo


Distribucin Centos
Se utiliza el comando gpasswd seguido de -d para eliminar el usuario y seguido del
nombre del grupo del que queremos quitarle, ejemplo:
Para quitar a 'juan' del grupo 'profesores':
# gpasswd -d juan profesores

Distribucin Ubuntu
Se utiliza el comando deluser seguido del nombre del usuario y del nombre del grupo
del que queremos quitarle, ejemplo:
Para quitar a 'juan' del grupo 'profesores':
# deluser juan profesores

Para ms informacin de todos estos comandos se puede consultar la ayuda del manual
ejecutando man seguido del nombre del comando, ejemplo man adduser.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

298

Cambiando el propietario
Otro de los puntos a la hora de establecer permisos es la necesidad de poder cambiar
el propietario y grupo del archivo o directorio, para hacer esta operacin debe estar
como root y los usuarios y grupos que utilizar deben haber sido creados previamente
Utilizamos el comando chown.
# chown clases [Link]

Estamos cambiando el propietario del archivo, ahora el usuario clases ser el propietario
del archivo [Link]
# chown raul [Link]

El usuario raul ser el propietario del archivo [Link]


Si vamos a cambiar el propietario de un directorio y con todos sus subdirectorios y
archivos en forma recursiva utilizaremos la opcin R:
# chown clases datos/ R

El usuario clases sera el nuevo propietario de todos los archivos y subdirectorios que
estn dentro del directorio datos/
Cambiando el grupo
Utilizamos el comando chgrp.
# chgrp clases [Link]

Estamos cambiando el propietario del archivo, ahora el archivo [Link] ser del grupo
clases.
# chgrp raul [Link]

El archivo [Link] ser del grupo raul


Si vamos a cambiar el grupo de un directorio y con todos sus subdirectorios y archivos
en forma recursiva utilizaremos la opcin R:
# chgrp clases datos/ R

Todos los archivos y subdirectorios del directorio datos/ sern del grupo clases

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

299

Resumen
En esta unidad, se valid la administracin de los archivos y directorios mediante los
usuarios o grupos, a los cuales pertenecen los usuarios. Tambin, se vio los modos de
accesos de suid, gid y sticky, y cmo poder modificar el acceso a los archivos y directorios
mediante los comando chmod.

Bibliografa
BSICA
Angie Nash y Jason Nash

2001

LPIC 1 Certification Bible

2004

Edicin especial Linux


(005.43L BAND)

CIBERTEC
2004 Linux administrador e Internet: Linux administrador y security
(005.43L CIBE)
COMPLEMENTARIA
2013

([Link]
Proyecto de documentacin de Linux en espaol.

2013

([Link]
Proporciona guas rpidas para instalar, configurar servicios de red basados en Linux.

2013

([Link]
Proyecto de formacin en habla hispana para los candidatos a la certificacin LPI en
cualquiera de sus niveles.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

300

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

301

UNIDAD

13
ADMINISTRACIN DE TAREAS
DEL SISTEMA
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al trmino de la unidad, el alumno realiza la configuracin para automatizar
tareas administrativas del sistema y el mantenimiento de los registros del
sistema.
TEMARIO
13.1 Tema 15 : Automatizar tareas administrativas planificando
tareas del sistema
13.1.1 : Administrar tareas con la utilidad cron y at, configurar el
acceso del usuario a los servicios cron y at, crear tareas
cron del sistema.
13.2 Tema 16 : Registro de actividad del sistema
13.2.1 : Introduccin, sistema de registros syslog, configuracin
de syslogd, opciones de registro, registro manual de
datos, rotar archivos de registros y revisar contenidos de
registros.

ACTIVIDADES PROPUESTAS

Realizar la configuracin para automatizar las tareas administrativas del


sistema.
Realizar la configuracin y mantenimiento de los registros del sistema.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

302

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

303

13.1 AUTOMATIZAR
TAREAS
ADMINISTRATIVAS
PLANIFICANDO TAREAS DEL SISTEMA
13.1.1 Administrar tareas con la utilidad cron y at, configurar el acceso del
usuario alos servicios cron y at, crear tareas cron del sistema.
CRON
Cron es una utilidad que sirve para ejecutar tareas programadas segn una
combinacin de la hora, da del mes, mes, da de la semana y semana.
Cron asume que el sistema est encendido de forma continua. Si el sistema no est
activo cuando est programada una tarea, Cron no se ejecuta.
Para usar el servicio cron, debe de tener el paquete RPM vixie-cron instalado y el
servicio crond debe estar en funcionamiento. Para determinar si el paquete est
instalado, use el comando rpm -q vixie-cron. Para determinar si el servicio est
funcionando, utilice el comando /sbin/service crond status.
Cron administra los procesos en segundo plano que ejecuta trabajos a intervalos
regulares. Cron se utiliza para automatizar tareas que hay que realizar periodicamente.
Los procesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en
el archivo crontab del usuario que ejecutara los procesos.
Para editar este fichero podemos utilizar nuestro editor favorito. Para ello tenemos que
tener la variable de entorno EDITOR definida y usar crontab -e para editar nuestro
crontab. Un ejemplo usando el editor emacs:
[ralf@servidor1]# export EDITOR=/usr/bin/emacs
[ralf@servidor1]# crontab -e

En el fichero crontab se define una linea por tarea/trabajo a ejecutar y el formato de la


misma es el siguiente:
------------- minutos (0 - 59)
| ----------- horas (0 - 23)
| | --------- dia del mes (1 - 31)
| | | ------- mes (1 - 12)
| | | | ----- dia de la semana (0 - 6) (domingo=0, lunes=1, ... sabado=6)
| | | | |
* * * * * comando a ejecutar
*
/
,

significa todos
permite definir
permite definir
permite definir

los valores validos


una repeticion
un rango
varios valores

Las lineas que comienzan con '#' se consideran comentarios. Podemos utilizar la linea
MAILTO="usuario@[Link]" al comienzo para que cron nos mande un mensaje
cuando se ejecute un trabajo. Un ejemplo nos ayudara a entender todo esto

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

304

[Link] el contenido de nuestro crontab despues de haberlo actualizado con


crontab -e:
[ralf@servidor1]# crontab -l
MAILTO="usuario@[Link]"
# Generar estadisticas web todos los dias a las 12:01 y als 23:01
1 12,23 * * * /usr/local/bin/webalizer -c /etc/[Link]
# Limpiar copias de seguridad de la base de datos (guardar ultima
# semana). Ejecutar trabajo de lunes a viernes a la 01:01
01 01 * * 1-5 for files in `/usr/bin/find /backups/pgsql/ -mmin
+10000`; do rm -f $files; done
# Ejecutar 'mi_script.sh' un minuto pasado la hora en punto, cada
dos horas.
01 */2 * * * /usr/local/bin/mi_script.sh

Configuracin de una tarea Cron


El fichero de configuracin principal de cron, /etc/crontab, contiene las lneas siguientes:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root
02 4 * * * root
22 4 * * 0 root
42 4 1 * * root

run-parts
run-parts
run-parts
run-parts

/etc/[Link]
/etc/[Link]
/etc/[Link]
/etc/[Link]

Las primeras cuatro lneas son variables que se usan para configurar el entorno en el
que se ejecutan las tareas cron. El valor de la variable SHELL indica al sistema el
entorno de shell que deber utilizarse (en este ejemplo, el shell de bash) y la variable
PATH define la ruta usada para ejecutar los comandos. El resultado de las tareas cron
se enva por correo electrnico al nombre de usuario definido con la variable MAILTO.
Si la variable MAILTO se define como una cadena vaca (MAILTO=""), no se enviar
correo electrnico. La variable HOME puede utilizarse para establecer el directorio
principal que deber usarse al ejecutar los comandos o scripts.
Cada lnea del archivo /etc/crontab representa una tarea y tiene el formato siguiente:
minute

hour

day

month

dayofweek

command

minute nmero entero entre 0 y 59


hour nmero entero entre 0 y 23
day nmero entero entre 1 y 31 (debe ser un da vlido si se especifica un mes)
month nmero entero entre 1 y 12 (o nombre corto del mes, por ejemplo, ene,
feb, etc.)

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

305

dayofweek nmero entero entre 0 y 7, donde 0 o 7 corresponde a Domingo (o el


nombre corto del da de la semana, por ejemplo, dom, lun, etc.)
command el comando a ejecutar (el comando puede ser uno tal como ls /proc >>
/tmp/proc o el comando para ejecutar un script personalizado.)

En cualquiera de los valores antes indicados, se puede utilizar un asterisco (*) para
especificar todos los valores vlidos. Por ejemplo, un asterisco para el valor de mes
significa que el comando se ejecutar cada mes dentro de las limitaciones del resto de
los valores.
Un guin (-) entre los nmeros enteros indica un intervalo de nmeros enteros. Por
ejemplo, 1-4 significa los nmeros enteros 1, 2, 3 y 4.
Una lista de valores separados por comas (,) especfica una lista. Por ejemplo, 3, 4, 6,
8 indica esos cuatro nmeros enteros.
La barra oblcua (/) puede utilizarse para especificar valores de salto. El valor de un
nmero entero se puede saltar dentro de un rango si se indica a continuacin del rango
con /<nmero entero>. Por ejemplo, 0-59/2 puede usarse para definir cada otro minuto
en el campo minuto. Los valores de salto tambin pueden utilizarse con un asterisco.
Por ejemplo, el valor */3 puede usarse en el campo de mes para ejecutar la tarea cada
tercer mes.
Las lneas que empiezan por almohadilla o smbolo numeral (#) son comentarios y no
se procesan.
Como podr observar en el archivo /etc/crontab, usa el script run-parts para ejecutar los
scripts en los directorios /etc/[Link], /etc/[Link], /etc/[Link], y
/etc/[Link] cada hora, diariamente, semanalmente o mensualmente,
respectivamente. Los archivos en estos directorios deben ser scripts de shell.
Si las tareas cron deben ejecutarse segn una programacin distinta a la hora, da,
semana o mes, esto puede agregarse en el directorio /etc/cron.d. Todos los ficheros de
este directorio utilizan la misma sintaxis que /etc/crontab.
# record the memory usage of the system every monday
# at 3:30AM in the file /tmp/meminfo
30 3 * * mon cat /proc/meminfo >> /tmp/meminfo
# run custom script the first day of every month at 4:10AM
10 4 1 * * /root/scripts/[Link]

Los usuarios no root pueden configurar las tareas cron tasks con la utilidad crontab.
Todos los crontabs definidos por el usuario se almacenan en el directorio /var/spool/cron
y se ejecutan utilizando los nombres de los usuarios que los han creado. Para crear un
crontab como un usuario, inicie la sesin como ese usuario y escriba el comando crontab
-e para modificar el crontab del usuario con el editor especificado por la variable de
entorno VISUAL o EDITOR. El fichero usa el mismo formato que /etc/crontab. Cuando
se guardan los cambios en crontab, el crontab se almacena segn el nombre de usuario,
y se escribe en el fichero /var/spool/cron/username.
El demonio cron controla el fichero etc/crontab, el directorio etc/cron.d/ y el directorio
/var/spool/cron cada minuto para cada cambio. Si se encuentra algn cambio, estos se
descargan en la memoria. De este modo, el demonio no necesita ser reiniciado si se
cambia un fichero crontab.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

306

Control de acceso a Cron


Los ficheros /etc/[Link] y /etc/[Link] se usan para restringir el acceso a cron.
El formato de los dos ficheros de acceso es un nombre de usuario en cada lnea. No
est permitido espacio en blanco en ninguno de los ficheros. El demonio cron (crond)
no deber ser reiniciado si los ficheros de control de acceso se modifican. Los ficheros
de control de acceso se leen cada vez que el usuario intenta aadir o borrar una tarea
cron.
El usuario root puede utilizar siempre cron, sin prestar atencin a los nombres de
usuarios listados en los ficheros de control de acceso.
Si existe el fichero [Link], tan slo se permitir a los usuarios presentes en la lista
utilizar cron y el fichero [Link] se ignorar.
Si [Link] no existe, a todos los usuarios listados en [Link] no se les permite usar
cron.
Iniciar y finalizar el servicio
Para iniciar el servicio cron, use el comando /sbin/service crond start. Para parar el
servicio, use el comando /sbin/service crond stop. Se le recomienda que inicie el servicio
en el tiempo de arranque.
AT
Mientras que cron se usa para programar tareas, el comando at se usa para programar
una nica tarea en un tiempo especfico. El comando batch se usa para programar que
se ejecute una nica tarea cuando la carga promedio de los sistemas esten por debajo
de 0.8.
Para poder usar at or batch debe tener el paquete RPM at instalado y el servicio atd en
funcionamiento. Para determinar si el paquete est instalado, utilice el comando rpm -q
at. Para determinar si el servicio se est ejecutando, utilice el comando /sbin/service
atd status.
Configuracin de tareas
Para programar una tarea no repetitiva en un tiempo especfico, escriba el comando at
time, en el que time es el tiempo para ejecutar el comando.
El argumento time puede ser uno de los siguientes:

formato HH:MM Por ejemplo,04:00 especifica 4:00AM. Si se inserta el tiempo, se


ejecuta en el tiempo especfico el da despus.
midnight Especifica 12:00AM.
noon Especifica 12:00PM.
teatime Especifica 4:00PM.
formato del nombre-mes, da y ao Por ejemplo, Enero 15 del ao 2002. El ao
es opcional.
formato MMDDYY, MM/DD/YY, o [Link] Por ejemplo, 011502 para el da 15
de Enero del ao 2002.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

307

now + time el tiempo est en minutos, horas, das o semanas. Por ejemplo, now
+ 5 das, especifica que el comando debera ser ejecutado a la misma hora en 5
das.

La hora debe ser especificada en primer lugar, seguido por la fecha opcional. Para ms
informacin sobre el formato del tiempo, lea el fichero del texto /usr/share/doc/at<version>/timespec.
Tras haber escrito el comando at con el argumento del tiempo, el prompt at> ser
visualizado. Escriba el comando a ejecutar, pulse [Intro] y escriba Ctrl-D. Se puede
especificar ms de un comando escribiendo cada comando seguido de la tecla [Intro].
Despus de haber escrito todos los comandos, pulse [Intro] para obtener una lnea en
blanco y escriba Ctrl-D. Alternativamente, se puede introducir un script de shell en el
intrprete de comandos y escribir Ctrl-D en una lnea en blanco para salir. Si se introduce
un script, la configuracin de la shell usada ser la configuracin de la shell en la SHELL
del usuario, la shell de registro del usuario o /bin/sh (el primero que se encuentre).
Si la configuracin de comandos o el script intentan visualizar informacin, la salida de
datos ser enviada va correo electrnico al usuario.
Visualizacin de las tareas pendientes
Para visualizar las tareas pendientes at, use el comando atq. Muestra una lista de las
tareas pendientes, con cada trabajo en una lnea. Cada lnea sigue el formato de nmero
de tarea, la fecha, la hora, el tipo de tarea y nombre de usuario. Los usuarios tan slo
pueden ver sus propias tareas. Si el usuario root ejecuta el comando atq, se visualizarn
todas las tareas de todos los usuarios.
Control de acceso a At
Los ficheros /etc/[Link] y /etc/[Link] pueden ser usados para restringir el acceso al
comando at. El formato de ambos ficheros de control de acceso es un nombre de usuario
en cada lnea. El espacio en blanco no est permitido en ningn fichero. El (atd) demonio
at no deber ser reiniciado si los ficheros de control de acceso son modificados. Los
ficheros de control de acceso se leen cada vez que un usuario intenta ejecutar el
comando at.
El usuario root siempre puede el comando at, sin tener en cuenta los ficheros de control
de acceso.
Si existe el fichero [Link] tan slo se permitir a los usuarios listados usar at y el fichero
[Link] ser ignorado.
Si [Link] no existe, a los usuarios listados en [Link] no se les permitir usar at.
Iniciar y finalizar el servicio
Para iniciar el servicio at, use el comando /sbin/service atd start. Para detener el
servicio, use el comando /sbin/service atd stop. Se le recomienda que inicie el servicio
durante el momento de arranque.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

308

13.2 REGISTRO DE ACTIVIDAD DEL SISTEMA


13.2.1

Introduccin, sistema de registros syslog, configuracin de


syslogd, opciones de registro, registro manual de datos, rotar
archivos de registro y revisar contenidos de registros

Introduccin
Linux mantiene archivos de registros (logfiles) a los que se reportan sucesos relevante
sobre el funcionamiento del sistema, ya sea como del propio kernel o de servicios de
red que se encuentran ejecutados de forma permanente en segundo plano (demonios).
Estos archivos de registros son especialmente tiles para detectar fallas en el sistema,
o incluso prever estas mediante la monitorizacin de archivos claves o concretos de un
servicio. Una de las obligadas tareas que tiene un administrador de sistemas es
precisamente revisar estos archivos de registro peridicamente para poder anticiparse
a problemas venideros o por ejemplo conocer las causas de porque un servicio no se
ejecuta de forma correcta.
Una particularidad comn de todos los sistemas de registro y los archivos en los que se
acumula la informacin es que crecen, de hecho pueden crecer tanto que dejen el
sistema operativo no operativo, dependiendo de donde se estn guardando estos
archivos.
Por ejemplo si tenemos una particin /(raz) en la que se encuentra el directorio /var y
bajo este lo normal es encontrar los archivos de registro (/var/log/*) puede hacer que el
espacio asignado para la particin raz se llene impidiendo incluso el acceso de nuevos
usuarios al sistema o trabajando de una forma extraa. Por ello el administrador del
sistema est obligado a definir una poltica de seguridad ante tal problema. La poltica
que se implemente estar definida de acuerdo al esfuerzo de administracin que
conlleve o a la importancia que la organizacin le preste a tal problema, entre otras.
Algunas de las polticas suelen ser:

No almacenar archivos de registro. Evidentemente esta opcin es muy poco


recomendable, aunque evidentemente se establecer o no, en funcin de la
criticidad del sistema.

Resetear los archivos peridicamente. Puede ser una medida a corto plazo contra
el llenado de espacio de un disco o particin, pero a largo plazo puede ser
desastrosa, ya que no contaremos con los archivos de registro que quizs
necesitemos en funcin del tiempo que haya pasado.

Rotar los archivos en funcin del tiempo transcurrido. Esta suele ser una de las
medidas mas adoptadas por administradores de sistemas. Es una poltica
configurable desde los propios archivos de configuracin del sistema de registro que
estemos usando. Una vez rotado el archivo, el antiguo es comprimido (ahorrando
espacio en disco) y quizs llegue el momento en el que sea automticamente
eliminado dependiendo del tiempo de rotacin y cantidad de archivos rotados
almacenados en el disco que hayamos definidos. Algunos sistemas de registro como
Journal comprimen directamente los archivos de registros.

Almacenar los archivos de registro. Si disponemos de una unidad externa de


almacenamiento o particin destinada a copias de seguridad, podemos guardar

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

309

nuestros archivos de registro en dicha unidad y acceder a ellos cuando fuese


necesario.
Nota: Podemos jugar con las opciones de rotar y almacenar para encontrar una solucin
definitiva.
Existen diferentes sistemas de registro para Linux. Vamos a estudiar el demonio
syslogd, syslog-ng (syslog de nueva generacin), rsyslog y Journal
Syslog
Es un sistema que procura centralizar el manejo de los registros de eventos que generan
los diversos programas que corren bajo un sistema Linux. Por un lado facilita a los
desarrolladores de aplicaciones la generacin y el manejo de mensajes a registrar, y por
otro lado facilita a los administradores de sistema el manejo de forma centralizada de
los mensajes provenientes de diferentes aplicaciones. Syslog clasifica los mensajes por
origen e importancia, y los enva a diferentes destinos como pueden ser archivos, la
terminal o eventualmente a un comando que lo reenve a direcciones de correo
electrnico o paginador.
Syslog permite manejar mensajes originados en diferentes sistemas de la red.
Los componentes ms importantes de syslog son:

syslogd: el servicio que recibe los mensajes y los almacena de acuerdo a la


configuracin del archivo /etc/[Link]
openlog(), syslog() y closelog(): rutinas de la biblioteca C estndar para permitir
la comunicacin entre syslog y el programa.
logger: comando de usuario para agregar un mensaje a un archivo de registro

Instalacin y configuracin de syslogd


El demonio syslogd es uno de los primeros que se lanza cuando el sistema se inicia,
para comenzar a recibir mensaje desde los diferentes servicios de red y registrarlos en
sus respectivos archivos de registro de acuerdo con lo especificado en su archivo de
configuracin.
En ocasiones se suelen confundir o comparar los demonios syslogd y klogd, este ltimo
registra los eventos del kernel. Ambos demonios son instalados mediante el mismo
paquete sysklogd desde los repositorios oficiales.
Una vez tengamos instalado el sistema de registro tendremos que configurarlo, esto
como mencionamos anteriormente lo haremos desde el archivo de configuracin
/etc/[Link]. Este archivo tiene un formato sencillo pero ofrece un gran potencial.
Las lneas adoptan la siguiente forma:
[Link] accin

En algunos documentos, libros, wikis, etc., podremos leer [Link] en vez de su


traduccin [Link], al final ambos identifican a un selector. Es decir un selector
estar formado por un recurso que no es ms que el cdigo del tipo de programa que
gener el mensaje y la prioridad, que ser igualmente un cdigo que identifique la
importancia que tendr ese mensaje. El campo accin decide el que se har con todos
los mensajes que se identifiquen con un determinado selector ([Link]).

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

310

Vamos a ver los posibles valores de cada campo y seguidamente expondremos un


ejemplo para ver esto de una forma mas clara.

recurso: Suelen ser valores prefijados por el sistema e identifican a uno o varios
servicios como auth (mensajes relacionado con la seguridad), mark (reservado para
uso interno), mail, cron, daemon, lpr, ftp, news, syslog, uucp y desde local0 hasta
local7 (usados con cierta libertad por el usuario para diferentes aplicaciones). No
todos los recursos se encuentran aqu enumerado. Si quisiramos especificar mas
de un recurso para una prioridad y accin concreta en una sola lnea del archivo se
utila el caracter , (coma) y si queremos definir todos los recursos para una prioridad
y accin * (astersco)

prioridad: Con este campo seleccionaremos que mensajes queremos incluir en uno
u otro archivo de registro para uno o varios recursos. Los cdigos de prioridad,
listados de menor a mayor prioridad son: debug, info, notice, warning (warn), err
(error), crit, alert y emerg o panic (este ltimo en desuso, al igual que warn y error).
La prioridad debug registra la mayor parte de la informacin (pensado para depurar
programas) y en el extremo opuesto emerg, que registrar los mensajes para
problemas muy serios. Un aspecto importante a tener en cuenta es saber que
mensajes sern guardados en los archivos de registro. Todos los mensajes emitidos
por los recursos se acompaan de un cdigo de prioridad, y sern registrados por
defecto siempre y cuando el cdigo sea igual o superior (esto es modificable) al
indicado en el archivo de configuracin para ese determinado recurso. A
continuacin veremos esto con un ejemplo.

Accin: Existen varias opciones para este campo, la mas utilizada es la de guardar
los registros en un archivo, el cual deber de estar creado de antemano y bastar
con indicar el path completo. Podemos enviar los registros al demonio syslogd de
otra mquina escribiendo @<nombre mquina o IP> o reenviar a la terminal de un
usuario siempre y cuando este est logueado indicando como accin un archivo de
dispositivo de consola (/dev/console). En esta ltima opcin podremos separar
diferentes usuarios con el caracter , o marcar a todos con un asterisco *. Algunos
sistemas permiten enviar el mensaje a la entrada estndar de un comando mediante
un pipe |.

Los espacios entre los selectores ([Link]) y la accin suelen ser tabulaciones.
Vamos a clarificar con algunos ejemplos las situaciones descritas en los puntos
anteriores.

Registrar todos los mensajes (*) del recurso mail al archivo /var/log/mail:
mail.*

/var/log/mail

Enviar solo los mensajes con prioridad notice para los recursos news y mail a la
consola principal del sistema:
news,mail.=notice

/dev/console

Nota: Podemos separar varios recursos son ,. Si en el archivo de configuracin existe


tambin la entrada del ejemplo anterior, los mensajes de mail para prioridad notice sern

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

311

enviados a la consola y registrados en /var/log/mail. Podramos haber cambiado


/dev/console por *(asterisco) para enviar los mensajes a todas las consolas de modo
texto abiertas en el sistema.
Registrar todos los mensajes con prioridad crit o superior (es decir; crit, alert y emerg)
del recurso daemon en /var/log/error y los mensajes con prioridad warn o menor (es
decir; warn, notice, info y debug) para el recurso lpr en /var/log/lpr-info. Si queremos
especificar los mensajes con prioridad igual o menor a una determinada prioridad lo
haremos con el caracter de admiracin !:
[Link]
lpr.!warn

/var/log/error
/var/log/lpr-info

Ahora vamos a ver como manejar diferentes mensajes segn su prioridad para un
recurso con acciones diferentes. En este ejemplo vamos a enviar con la primera lnea
todos los mensajes generados por el kernel al archivo /var/log/kernel, con la segunda
lnea indicaremos que adems de registrarse en el archivo, aquellos que tengan una
prioridad crit o superior se enviarn a syslogd de otro sistema (el otro sistema tiene que
estar configurado para tal fin) y adems esos mismos mensajes tambin sern impresos
por terminal gracias a la tercera lnea. Por ltimo haremos que todos los mensajes
comprendidos entre la prioridad info y err, adems de ser enviados al archivo
/var/log/kernel gracias a la primera lnea, sern escritos en el archivo /var/log/kernelinfo:
kern.*
/var/log/kernel
[Link]
@[Link]
[Link]
/dev/console
[Link];kern.!err
/var/log/kernel-info

Nota: Vemos como hemos seleccionado dos selectores separados por el caracter ;
para ser comprendidos por una misma accin
Aadir registros manualmente
Cuando mencionamos anteriormente los componentes ms importantes de syslog
vimos que logger es la herramienta que nos permite crear registros de forma manual.
$ logger ejemplo del funcionamiento de logger

El resultado sera seguramente una entrada en el archivo /var/log/message con el


siguiente contenido:
Feb 11 [Link] LiMinCinn nebul4ck: ejemplo del funcionamiento de logger

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

312

Rotar archivos de registro


La rotacin del registro se controla a travs del archivo /etc/[Link] en el que se
suele incluir la referencia a los archivos bajo /etc/logrotate.d/. Las entradas de estos
archivos le indican al sistema si debe rotar los registros a intervalos fijos o cuando estos
almacenen un tamao concreto. Cuando un registro rota, se renombra y dependiendo
de la configuracin se comprimir o no, se crear uno nuevo e incluso puede que se
borre el archivo de registro comprimido mas antiguo de los existentes.
Para rotar archivos de registros necesitaremos tener instalado el paquete logrotate,
tener una buena configuracin y ser lanzado peridicamente, algo de lo que se
encargar cron o en su defecto (ya que esta tarea es ejecutada por las noches y la
mayora de los pc de usuario duermen en estas horas) anacron, pero de esto
hablaremos en las prximas secciones.
Cuando se invoca logrotate este consulta su archivo de configuracin (o archivos en
caso de que este referencie a otros como /etc/logrotate.d/*) y actuar en funcin de los
ajustes que en l o ellos encuentre. Un archivo de configuracin para logrotate podra
tener el siguiente aspecto:
# Rotar los archivos de registro de forma semanal
weekly
# Usar el grupo syslog por defecto
su root syslog
# Conservar los registros antiguos durante 4 semanas
rotate 4
# Crear nuevos archivos de registro tras la rotacin
create
# Comprimir los archivos de registros antiguos
compress
# Incluir configuraciones para archivos de registros de servicios
especficos
include /etc/logrotate.d
# Algunas otras opciones
notifempty
nomail
noolddir
# Rotar archivos de registro para wtmp el cual no est controlado
por un archivo de
# configuracin individual
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}

Si se especifica la inclusin de archivos de configuracin bajo /etc/logrotate.d significar


que habr servicios que configuren sus propios archivos de registro de los que adems
sern los propietarios. Algunos de los servicios que tienen tal comportamiento podran
ser: apt, aptitude, yum, dpkg, samba, ufw y upstart. A continuacin pondremos uno de
estos archivos a modo de ejemplo.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

313

Figura 207: Visualizacin de archivo dpkg.


Fuente: Cibertec

Algunas de las caractersticas mas importante de los archivos de configuracin


individuales para logrotate estn contemplados en la imagen anterior, aun as vamos a
nombrar algunos mas.

Nomenclatura de los archivos rotados: Por defecto a los archivos rotados se le


asigna un digito como extensin al nombre del archivo por ejemplo: [Link].3
(indica que este archivo a rotado un total de tres veces). Podemos cambiar este
comportamiento con la opcin dateext
Opciones de compresin: Definida en nuestro ejemplo con la palabra compress.
Por defecto se comprimen con gzip, si queremos usar por ejemplo bzip podemos
definirlo as: compresscmd bzip2 e indicar opciones del comando, como la tasa de
compresin con compressoptions
Crear un nuevo archivo de registro tras la rotacin: Podemos hacer que se cree
un nuevo archivo con la opcin copytruncate que lo que realmente hace es copiar el
archivo antiguo y vaciar su contenido, o por ejemplo pasar un usuario propietario y
unos permisos (esto no siempre funciona): create 644 samba samba
Opciones temporales: Con daily, weekly y monthly provocaremos que los registros
roten diariamente, semanalmente o mensualmente respectivamente.
Opciones de tamao: Si no queremos rotar en funcin del tiempo podremos hacerlo
especificando un tamao mximo de archivo de registro, por defecto el valor es en
bytes aunque podemos cambiar esto con los sufijos k o M. size 100k para que el
archivo rote cuando haya llegado al tamao de 100Kilobytes
Opciones de rotacin: Con rotate nmero indicaremos cuantos archivos de
registros antiguos queremos conservar. Si indicamos rotate 3, tendremos [Link],
[Link] y [Link]. Cuando el que actualmente est registrando los mensajes
llegue a su tamao de cota o al tiempo lmite de rotacin pasar a llamarse
[Link] y [Link] ser eliminado. Los otros dos archivos pasarn del 1 al 2 y
el otro del 2 al 3.
Opciones de correo: Utilizando mail dircorreo podremos enviar el archivo que rota
por correo electrnico. Con nomail no enviaremos ningn correo.
Scripts: Las palabras claves prerotate y postrotate indican que se ejecute una
accin (comando) antes o despus de haber rotado un archivo de registro. En

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

314

nuestra imagen tenemos el ejemplo. Para finalizar la ejecucin de los comandos lo


haremos con endscript.
Revisar el contenido de los archivos de registro
Para revisar un archivo de registro primero deberemos de encontrar el archivo y luego
buscar la informacin deseada dentro de este. Lo normal es que los archivos de registro
se guarden bajo el directorio /var/log, que a su vez como hemos visto en el ejemplo de
samba puede haber un directorio para un servicio concreto y dentro de este
encontremos el archivo de registro. Utilizaremos normalmente las herramientas cat, tail
y head, o los paginadores less y more.
La mayora de mensajes enviados por el sistema suelen guardarse en el archivo
/var/log/messages, archivo que podremos desplegar con el comando dmesg.
Otros archivos de registros importantes son [Link], utmp, wtmp y lastlog. Linux
mantiene un registro en los archivos utmp y lastlog sobre informacin de los usuarios
como por ejemplo si un usuario est logueado en el sistema, en que terminal y desde
cuando. Estos archivos son actualizados en cada login y logout guardando adems esta
informacin en el archivo wtmp que mantendr entonces un histrico sobre los inicios
de sesin de los usuarios. Al ser una archivo que va creciendo deberemos de tenerlo
contemplado en la configuracin de logrotate.
Estos archivos estn en formato binario pero podrn ser desplegados con los comandos
who, w y lastlog. El comando who desplegar el contenido del archivo utmp por lo que
veremos los registros de los usuarios actualmente dentro del sistema, en que terminales
se encuentran (pts/<nmero>, si iniciaron una terminal virtual desde el entorno grfico
o tty<nmero> si se lanz la consola al inicio de sesin. Podremos ver tambin la
terminal actual con el comando tty) y la hora de inicio de sus sesiones. El comando w
se comporta de la misma manera pero nos ofrece algo ms de informacin como por
ejemplo el display utilizado. Si queremos desplegar el contenido del archivo de registro
lastlog bastar con invocar a lastlog, el cual depslegar una lista de todos los usuarios
de /etc/passwd mostrando su ltimo inicio de sesin (para los usuarios nunca logueados
aparecer: Never logged in). Para desplegar el contenido del archivo wtmp (histrico de
login y logout de usuarios) pasaremos como parmetro el nombre del archivo wtmp al
comando who:
$ who /var/log/wtmp

O bien utilizando directamente el comando last o lastb para ver el histrico de logueos
e incluso logueos fallidos, respectivamente.
Nota: Los comandos w, who, last y lastb nos muestran como mnimo el usuario, la
terminal, el display y la hora de inicio. El comando w adems muestra la carga del
sistema y el nmero de usuarios conectados. who y last muestra adems la fecha.
La ubicacin de estos archivos vara de un sistema a otro. El archivo utmp habitualmente
est en el directorio /etc o /var/run, el archivo wtmp suele estar en /var/log o /var/adm al
igual que el archivo lastlog.
Una vez identificado el archivo de registro necesitado podremos desplegar su contenido
con uno de los paginadores conocidos (more o less), buscando contenido especfico
con grep, o tail y head que podrn sernos igualmente tiles y si queremos dejar

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

315

monitorizando un archivo de registro especfico ya sabemos que la opcin -f de tail nos


permite tal accin.
Existen herramientas avanzadas de anlisis del registro como Logcheck que forma
parte del paquete Sentry Tools o Whatlogh

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

316

Resumen
En esta unidad, se vi la administracin de tareas con la utilidad cron y at, configuracin
de acceso de los usuarios a los servicios cron y at, se aprendi a crear tareas con cron y
at. Asimismo se vi el sistema de registro syslog, configuracin de syslogd, opciones de
registro, registro manual de datos, rotar archivos de registros y revisar contenidos de
registros.

Bibliografa
BSICA
Angie Nash y Jason Nash

2001

LPIC 1 Certification Bible

2004

Edicin especial Linux


(005.43L BAND)

CIBERTEC
2004 Linux administrador e Internet: Linux administrador y security
(005.43L CIBE)
COMPLEMENTARIA
2013

([Link]
Proyecto de documentacin de Linux en espaol.

2013

([Link]
Proporciona guas rpidas para instalar, configurar servicios de red basados en
Linux Centos.

2013

([Link]
Proyecto de formacin en habla hispana para los candidatos a la certificacin LPI en
cualquiera de sus niveles.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

317

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

318

UNIDAD

14
FUNDAMENTOS DE REDES
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al trmino de la unidad, el alumno configura la interface de red y utiliza
herramientas para comprobar el estado de la red.
TEMARIO
14.1 Tema 17 : Fundamentos de los protocolos de Internet
14.1.1 : Introduccin suite de protocolos TCP/IP, direcciones de
red, direccin de hardware, administrar direcciones IP,
clases de red IPv4, puertos de red.
14.2 Tema 18 : Configuracin de la red
14.2.1 : Instalar y configurar hardware de red, configurando la red
con DHCP, IP esttico, configurando enrutamiento,
resolucin de nombres host.
14.2.2 : Diagnosticar la red, verificar conectividad de red, traza de
rutas, comprobar el estado de la red.

ACTIVIDADES PROPUESTAS

Identificar la suite de protocolos TCP/IP.


Identificar la configuracin de la red comprobando su estado y
conectividad.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

CARRERA DE REDES Y COMUNICACIONES

319

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

320

14.1 FUNDAMENTOS DE LOS PROTOCOLOS DE INTERNET


14.1.1 Introduccin suite de protocolos TCP/IP, direcciones de red,
direccin de hardware, administrar direcciones IP, clases de red
IPv4, puertos de red.
Introduccin
Los protocolos TCP (Transmission Control Protocol) e IP (Internet Protocol) tuvieron su
origen en los trabajos de la Agencia de Investigacin de Proyectos Avanzados de
Defensa (DARPA, por sus siglas en ingls) del Departamento de Defensa (DoD) de los
Estados Unidos. Los objetivos de estas investigaciones se centraron en dos reas:

Construir una red descentralizada que ofreciera mltiples alternativas al envo de


mensajes entre dos puntos geogrficos.
Lograr la divisin del mensaje completo en fragmentos pequeos de tamao definido
que seguiran distintos caminos, pretendiendo que la misma red estuviera en
posibilidad de responder a sus propios fallos.

A finales de la dcada de los sesenta, DARPA patrocin el proyecto conocido como


ARPANET, cuyo propsito fue crear una red encargada de proveer conectividad de gran
ancho de banda entre los mayores sitios computacionales de los mbitos
gubernamental, educacional y de investigacin.
ARPANET ofreca a sus usuarios la posibilidad de transferir correo electrnico y datos
de un sitio a otro. DARPA comenz a desarrollar un esquema jerrquico comn a las
tecnologas de red para la transmisin de informacin, obteniendo como resultado la
suite de protocolos TCP/IP que alcanz enorme popularidad al ser implementado en
Unix BSD.
A inicios de la dcada de los ochenta, las computadoras conectadas a la ARPANET
utilizaban los protocolos TCP/IP, a la par sitios que no se conectaban a ella comenzaron
a hacerlo.
La red ARPANET dej de ser la base de protocolos en 1990. A pesar de esta situacin,
las inclusiones de nuevos nodos permitieron el crecimiento y la evolucin del proyecto
original al escenario que hoy conocemos como Internet.
Modelo TCP/IP
El modelo estndar para disear una arquitectura de red es el modelo OSI (Open
Systems Interconnection), prototipo que consiste de siete capas:
1.
2.
3.
4.
5.
6.
7.

Capa fsica
Enlace de datos
Red
Transporte
Sesin
Presentacin
Aplicacin

Por su lado, el modelo TCP/IP es un prototipo hbrido derivado del OSI. El TCP/IP
combina las tres capas superiores (Aplicacin, Presentacin y Sesin) del OSI en una
capa (Aplicacin), as mismo mantiene la capa cuatro (Transporte), combina las capas

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

321

tres y dos (Red y Enlace de Datos) en una sola a la que llama Internet y mantiene la
capa Fsica.
La suite de protocolos TCP/IP se compone de 4 capas que tienen correspondencia con
las capas del modelo OSI segn se aprecia en la figura 151.

Figura 208: Modelo OSI y Protocolo TCP/IP.


Fuente: Cibertec

Actualmente, la suite incluye decenas de protocolos, como se muestra en la figura 152.


Estn organizados en capas y utilizan el modelo de protocolo TCP/IP. Los protocolos
TCP/IP estn incluidos en la capa de Internet hasta la capa de aplicacin cuando se
hace referencia al modelo TCP/IP. Los protocolos de capa inferior de la capa de enlace
de datos o de la capa de acceso a la red son responsables de enviar el paquete IP a
travs del medio fsico. Estos protocolos de capa inferior son desarrollados por
organismos de estandarizacin, como el IEEE.
La suite de protocolos TCP/IP se implementa como un stack de TCP/IP tanto en los
hosts emisores como en los hosts receptores para proporcionar una entrega de extremo
a extremo de las aplicaciones a travs de la red. Los protocolos 802.3 o Ethernet se
utilizan para transmitir el paquete IP a travs de un medio fsico que utiliza la LAN.

Figura 209: Suite de protocolos TCP/IP y proceso de comunicacin.


Fuente: [Link]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

322

Protocolo de Internet (IP)


El Protocolo de Internet es un protocolo de capa de red (Capa 3) diseado en 1981 para
usarse en sistemas interconectados de redes de comunicacin computacional de
conmutacin de paquetes. El Protocolo de Internet y el Protocolo de Control de
Transmisin (TCP, Transmission Control Protocol) son la base de los protocolos de
Internet. El IP tiene dos funciones principales:
- Entrega de datagramas a travs de la interred en la modalidad de mejor esfuerzo
- Fragmentacin y reensamblado de datagramas
Se considera al IP un protocolo de mejor esfuerzo, ya que no garantiza que un paquete
transmitido realmente llegue al destino ni que los datagramas transmitidos sean
recibidos en el orden en que fueron enviados.
La funcin principal de IP es llevar paquetes de datos de un nodo fuente a un nodo
destino. Este proceso se logra identificando cada paquete enviado con una direccin
numrica llamada direccin IP.
El protocolo IP no tiene mecanismos de confiabilidad (RFC 791) a diferencia de los
dems protocolos. En vez de tener dichos medios, este protocolo no hace uso de ellos
para que sean implementados por protocolos de capa superior. El nico mecanismo de
deteccin de errores es la suma de verificacin para el encabezado IP. Si el
procedimiento de la suma de verificacin falla, el datagrama ser descartado y con ello
no ser entregado a un protocolo de nivel superior.
Direccionamiento IP
El esquema de direccionamiento IP es integral al proceso de enrutamiento de
datagramas IP a travs de la interred. Cada direccin IP tiene componentes especficos
y un definido formato bsico.
Existen dos estndares de direccionamiento IP: la versin 4 (IPv4) y la versin 6 (IPv6).
Actualmente la mayora del trfico IP es realizado con direccionamiento IPv4, y aunque
se pretende que IPv6 reemplace a IPv4 en un futuro, ambos protocolos coexistirn
durante algn tiempo.
Formato de Direccin IP versin 4
En una red TCP/IP a cada computadora se le asigna una direccin lgica de 32-bits que
se divide en dos partes: el nmero de red y el nmero de computadora. Los 32 bits son
divididos en 4 grupos de 8 bits, separados por puntos, y son representados en formato
decimal.
Cada bit en el octeto tiene un peso binario. El valor mnimo para un octeto es 0 y el valor
mximo es 255. La siguiente figura muestra el formato bsico de una direccin IP con
sus 32 bits agrupados en 4 octetos.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

323

Figura 210: Formato de direccin IPv4.


Fuente: Cibertec

Las direcciones de red


El mecanismo bsico para que dos ordenadores se comuniquen a travs de una red lo
proporcionan las direcciones de red, que sirven para referenciar los ordenadores.
Pueden adaptar formas diferentes dependiendo del tipo de hardware de red, la pila de
protocolos, etc. Las redes grandes y dirigidas plantean retos adicionales a las
direcciones de red que resuelve TCP/IP. Para dirigir un programa especfico a un
ordenador remoto, TCP/IP utiliza un nmero de puerto que identifica con un programa
en ejecucin especfico.
La llegada de IPv6
IPv6 es una extensin de TCP/IP. IP ha estado en la versin 4 durante muchos aos,
hoy en da hay una importante actualizacin que recibe el nombre de IPv6 (IP versin6).
Incorpora varias funcionalidades y mejoras a TCP/IP, incluyendo soporte estndar a las
conexiones ms seguras y la posibilidad de tener muchas ms direcciones. TCP/IP
admite un mximo terico de unos 4 billones de direcciones, direcciones que no han
sido distribuidas de la manera ms eficaz posible. En consecuencia, segn Internet se
ido expandiendo, el nmero de direcciones disponibles se ha reducido rpidamente.
IPv6 eleva el nmero de direcciones 2. Hoy en da tiene una presencia real en la red
en muchas partes del mundo. El kernel Linuxincluye soporte para IPv6 y la mayora de
distribuciones procuran configurar automticamente redes IPv6 ademas de las IPv4.
Configurar un sistema para IPv6 es algo diferente a configurarlo para IPv4.
Utilizar direcciones de red
Cuando un frame sale de un ordenador se dirige a otra tarjeta ethernet empleando
funcionalidades de ethernet de bajo nivel, independientemente de la pila de protocolo.
Internet se compone de muchas redes diferentes que utilizan muchos componentes de
hardware diferentes. Por ejemplo, podemos tener una conexin telefnica por marcado
y conectarnos a un servidor que utilice ethernet y a otro que emplee Token Ring. Cada
uno de estos dispositivos utiliza un tipo diferente de direcciones de red. TCP/IP necesita
algo para integrar estos tipos diferentes de hardware de red, para lo que existen 3 tipos
de direcciones importantes que debemos conocer: las direcciones del hardware de red,
las direcciones IP numricas y los nombres de host de tipo texto.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

324

Direcciones de hardware
Una de las caractersticas del hardware de red dedicado es que lleva programadas
direcciones de red nicas conocidas como direcciones MAC en el caso de ethernet.
Estas direcciones tienen una longitud de 6 bytes y se suelen expresar como nmeros
en hexadecimal (base 16) separados por dos puntos ( : ). Podemos descubrir estas
direcciones de hardware en una tarjeta ethernet mediante el comando ifconfig donde
veremos una lnea como la siguiente:
eth0 Link encap:Ethernet HWaddr [Link]

Esta lnea indica que se trata de una tarjeta ethernet y que su direccin de hardware es
[Link]. Algunas utilidades y hardware de red utilizan estas direcciones de
hardware, como por ejemplo los switch, que las utilizan para dirigir paquetes de datos
detectando que una direccin en particular est conectada a un cable concreto y enva
los datos slo a dicha direccin. DHCP es un medio para automatizar la configuracin
de ordenadores especficos, una de sus opciones es emplear las direcciones del
hardware para asignar la misma IP a un ordenador concreto. Hay herramientas de
diagnstico que permiten examinar los paquetes que proceden de o estn dirigidos a
direcciones de hardware especficas. Normalmente no tendremos que preocuparnos de
las direcciones del hardware, en la mayora de utilidades o programas no se accede a
ellas, pero son importantes por lo que hacen.
Linux identifica los dispositivos del hardware de red con cdigos especficos segn el
tipo. El hardware de ethernet es ethn, donde n es un nmero que va de cero en adelante.
Los dispositivos inalmbricos tienen nombres con la forma wlann. A diferencia de la
mayora de los dispositivos de hardware, los dispositivos de red no tienen entradas en
/dev, sino que las utilidades de red de bajo nivel toman los nombres de los dispositivos
y trabajan con ellos directamente.
Administrar direcciones IP
IPv4 admite unos 4 billones de direcciones pero no todas pueden ser utilizadas, algunas
estn ya asociadas a definiciones de red o bien estn reservadas, las direcciones de 4
bytes de IPv4 y las direcciones de 6 bytes de ethernet no estn relacionadas
matemticamente, en realidad, la pila TCP/IP realiza conversiones entre ambas
utilizando ARP para IPv4 o NDP para IPv6 . Estos protocolos permiten que un ordenador
enve una consulta a travs de un mensaje que se enva a todos los ordenadores de la
red (radiodifusin). Cuando obtenemos una respuesta, incluye la direccin de hardware,
por lo que la pila TCP/IP puede dirigir el trfico para una IP dada a la direccin del
hardware del ordenador de destino. Si el ordenador no se encuentra en la red local, el
proceso es mucho ms complejo, ya que implica el uso de un router. Los ordenadores
locales envan a los routers los paquetes destinados a las direcciones distantes, los
cuales envan a su vez los paquetes a otros routers o a sus sistemas de destino.
Las direcciones IPv4 se suele expresar como 4 nmeros en base decimal (0 255)
separados por puntos. Si la pila de nuestro sistema ya est funcionando podemos ver
nuestra direccin IP con el comando ifconfig. La salida incluye una lnea como la
siguiente donde se identifica la direccin IP:
inet addr:[Link] Bcast:[Link] Mask:[Link]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

325

Las direcciones IP se dividen en dos componentes: una direccin de red y una direccin
de ordenador. La direccin de red identifica un bloque de direcciones IP utilizadas por
una red fsica; la direccin de ordenador identifica a un pc dentro de dicha red. Esta
separacin facilita la tarea de los routers, que no tienen as que guardar los destinos de
los 4 billones de direcciones IP, los routers estn preparados para dirigir el trfico en
funcin de las direcciones de red de los [Link], un ordenador solo
puede comunicarse directamente con los ordenadores de su segmento de red local,
para comunicarse con los que se encuentran fuera de ese conjunto, se debe utilizar un
router.
Las direcciones IPv6 (128 bits) constan de ocho grupos de nmeros hexadecimales de
cuatro dgitos separados por dos puntos ( : ). Si uno o varios grupos de cuatro dgitos
son 0000, este o estos se pueden omitir, indicndolo con ::. Slo podemos comprimir
de esta manera un grupo de ceros, ya que de lo contrario no habra manera de saber
cuantos conjuntos de ceros hay que sustituir en cada grupo.
La mscara de red es un nmero que identifica la parte de direccin IP que es una
direccin de red y la que es una direccin de ordenador; se expresan en base10 y suelen
consistir en valores 255 o 0, correspondiendo 255 a un byte de red y cero a un byte de
ordenador. Si un byte es en parte direccin de red y en parte direccin de ordenador,
tendremos algn otro valor. Tambin podemos expresar la ms de red con un nico
nmero que representa el nmero de bits de red en la direccin, suele indicarse con una
barra para separarlo de la direccin IP, por ejemplo, [Link]/24 que equivale a
[Link] con mscara de red [Link].La notacin que muestra los cuatro
bytes de la mscara de red se conoce como notacin dotted quad. Las mscaras de red
IPv6 funcionan exactamente igual, con la diferencia de que los nmeros son ms largos
y que en IPv6 se tiende a utilizar notacin hexadecimal.
Hoy en da, la mscara de red se suele describir en la forma CIDR (enmascaramiento
inter-dominios sin clases), separado por cualquier bit para cualquier direccin, por
ejemplo, 192.168 puede tener una mscara de red [Link], [Link],
[Link] o muchos otros valores. Tradicionalmente, las redes IPv4 se han
dividido en varias clases. Las clases A, B y C son para uso general de la red. Las
direcciones de clase D estn reservadas para multidifusin. Las direcciones de clase E
se reservan para un uso futuro. La mayora de estos rangos tienen casos especiales,
como por ejemplo las direcciones 127.x.y.z, que estn reservadas para los dispositivos
de circuito cerrado haciendo referencia al ordenador en el que se introduce la direccin.
Las direcciones con todos sus bits de mquina con valor 1 hacen referencia al propio
bloque de red y se utilizan para multidifusin. La direccin multidifusin exhaustiva es
[Link], que enva informacin a todos los ordenadores de un segmento de
red (los router suelen bloquear los paquetes dirigidos a esta direccin).

Figura 211: Clases de red IPv4.


Fuente: Cibertec

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

326

Dentro de cada clase de uso general existe un rango de direcciones reservado para el
uso privado. La mayora de las IP se asignan a ordenadores individuales por uno
autoridad apropiada y as evitar que dos sistemas utilicen la misma direccin en Internet.
Por el contrario, cualquiera puede utilizar las direcciones privadas reservadas. Debemos
tener en consideracin que los routers se suelen deshacer de los paquetes enviados a
estas direcciones aislndolas de Internet en bloque. La idea es que las pequeas redes
privadas puedan utilizar estas direcciones con seguridad. Hoy en da se utilizan tras
routers NAT, permitiendo a un nmero arbitrario de ordenadores ocultarse tras un nico
sistema. El router NAT sustituye su propia direccin IP en los paquetes salientes y dirige
la respuesta al sistema correcto, algo til para conectar a Internet ms ordenadores que
direcciones IP de las que disponemos.
IPv6 posee un equivalente a las direcciones privadas, las locales del sitio se pueden
dirigir dentro de una red pero no hacia fuera. Comienzan con los nmeros
hexadecimales fec, fed, fee o fef. Las direcciones de enlace local estn restringidas a
un nico segmento de red y comienzan por los nmeros hexadecimales fe8, fe9, fea o
feb.
Las clases IPv4 se crearon para simplificar el enrutamiento pero, segn Internet fue
creciendo, se volvieron restrictivas. Hoy en da sirven principalmente para definir
mscaras por defecto; la mayora de herramientas de configuracin definen estas
mscaras de red de forma automtica. La direccin IP y la mscara de red son
extremadamente importantes para la configuracin de la red. Si nuestra red no utiliza
DHCP o algo similar, tendremos que configurar manualmente las direcciones. Un error
en dicha configuracin puede provocar un fallo completo de la red o la incapacidad de
comunicarse con algunos ordenadores.
Las pilas que no son TCP/IP tienen sus propios mtodos de direccionamiento. NetBEUI
utiliza los nombres de mquina, no posee un mtodo de direccionamiento numrico
independiente. AppleTalk utiliza dos nmeros de 16 bits. Estos esquemas de
direccionamiento son independientes de las direcciones IP.
Puertos de red
Adems de la direccin del ordenador a contactar, hace falta otro tipo adicional de
direccionamiento: el emisor debe tener una direccin para un programa especfico en el
sistema remoto, por ejemplo, supongamos que tenemos un navegador web, puede que
el ordenador del servidor web est ejecutando otros servidores, como por ejemplo SMTP
o FTP. Agregaremos otro nmero a las direcciones IP para dirigir el trfico al servidor
web. Este nmero es el puerto de red, los programas que acceden a una red TCP/IP
suelen hacerlo a travs de uno o ms puertos. Los nmeros de puerto son
caractersticas de UDP y TCP, hay protocolos como ICMP que no usan nmero de
puerto.
Los servidores se asocian automticamente a puertos especficos definidos por
convencin y asociados a programas especficos del servidor. Un cliente puede dirigir
su peticin a un puerto especfico y esperar a contactar con el servidor apropiado, el
nmero de puerto del cliente no es fijo, sino que lo asigna el SO. Ya que es el cliente
quien inicia la transferencia, incluye su propio nmero de puerto en la peticin de
conexin, por lo que los clientes no necesitan nmeros de puerto fijos. Esta asignacin
dinmica del puerto del cliente permite a un ordenador ejecutar varias instancias de un
mismo cliente de modo que no compitan por un nico puerto.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

327

Nmeros de puerto, sus usos y los servidores tpicos en Linux

Nmero
de
puerto

TCP o
UDP

Uso

Servidores Linux de
ejemplo

20

TCP

Datos FTP

ProFTPd, VSFTPd

21

TCP

FTP

ProFTPd, VSFTPd

22

TCP

SSH

OpenSSH, Dropbear

23

TCP

Telnet

[Link]

25

TCP

SMTP

sendmail, postfix, exim, qmail

53

TCP y UDP

DNS

BIND, djbdns

67

UDP

DHCP

ISC, DHCP (DHCPd)

80

TCP

HTTP

Apache, roxen, thttpd

110

TCP

POP3

Dovecot, Qpopper, popa3d

111

TCP y UDP

Mapeador de puertos

NFS, NIS y otros servicios


basados en RPC

113

TCP

auth/ident

identd

119

TCP

NTTP

InterNetNews (INN), Diablo,


LeafNode

139

TCP

NetBIOS session

SAMBA

143

TCP

IMAP

Dovecot, Cyrus IMAP, UWIMAP

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

328

161

UDP

SNMP

Net-SNMP

177

UDP

XDMCP

XDM, KDM, GDM

389

TCP

LDAP

OpenLDAP

443

TCP

HTTP sobre SSL

Apache, Roxen

445

TCP

Microsoft Directory Services

SAMBA

SMTP sobre SSL o URL


rendezvous directory (URD)
Este puerto

465

TCP

Esta restringido oficialmente


para URD.

sendmail, postfix, exim, qmail


o routers de red

Aunque se suele utilizar para


el envi
Seguro de correos de forma
extraoficial.

631

TCP

Protocolo de impresin de
Internet

CUPS

993

TCP

IMAP sobre SSL

Dovecot, Cyrus IMAP, UWIMAP

995

TCP

POP-3 sobre SSL

Dovecot, Qpopper, popa3d

5900+

TCP

Remote framebuffer (RFB)

VNC: OpenVNC, TightVNC

6000
6007

TCP

El sistema XWindow (X)

[Link]-X11, XFree86

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

329

Una diferencia clave de los puertos TCP/IP es la existente entre puertos con y sin
privilegios. Los puertos con privilegios son los inferiores a 1024, puertos que tienen
restringido el acceso, slo root puede acceder a ellos. La intencin es que un cliente se
conecte a un puerto con privilegios con la seguridad de que el servidor que se ejecuta
en ese puerto est configurado por el administrador del sistema. Hoy en da, la confianza
no se puede basar nicamente en el puerto, por lo que esta distincin no resulta muy
til. Los usuarios pueden acceder a los puertos superiores al 1024.

14.2 CONFIGURACIN DE LA RED


14.2.1 Instalar y configurar hardware de red, configurando la red con DHCP,
IP esttico, configurando enrutamiento, resolucin de nombres de
host.
La mayora de distribuciones ofrecen medios para configurar la red durante la instalacin
del sistema. Lo ms normal es que la red ya est en funcionamiento en nuestro sistema,
de no ser as, podemos hacer una configuracin mediante DHCP o direcciones IP
estticas. Los mecanismos de configuracin de red de Linux se basan en scripts de
inicio y sus ficheros de configuracin, tambin es posible utilizar herramientas GUI para
configurar la red.
Configuracin del hardware de red
Poner en funcionamiento el hardware de red, en la mayora de los casos, es una tarea
bastante automatizada. La mayora de las distribuciones vienen con scripts de inicio del
sistema que detectan automticamente la tarjeta de red y cargan el mdulo del driver
correspondiente. Si recompilamos el kernel, tendremos que asegurarnos de compilar el
driver correcto en el fichero principal del kernel para que se cargue al inicio del sistema.
Si el hardware no se detecta correctamente tendremos que cargar el driver del hardware
de red utilizando el comando modprobe.
Configuracin con DHCP
DHCP es la manera ms fcil de configurar un ordenador en una red TCP/IP, pues
permite a un ordenador gestionar los parmetros de muchos otros ordenadores. Cuando
un ordenador que ejecuta un cliente DHCP arranca, enva una multidifusin en busca
de un servidor DHCP. El servidor responde a la direccin del hardware del cliente con
la informacin de configuracin que el cliente necesita para unirse a la red, sobre todo,
la direccin IP, la mscara de red, las direcciones de la puerta de acceso y el servidor
DNS. El servidor DHCP tambin puede proporcionar un nombre de host. El cliente se
configurar automticamente con los parmetros recibidos. La IP asignada no es
permanente, sino temporal (DHCP lease). Si la IP no se renueva, el servidor podra
asignrsela a otro ordenador, por lo que el cliente consulta al servidor de vez en cuando
para efectuar la renovacin.
Los tres clientes DHCP ms habituales en Linux son: pump, dhclient y dhcpcd (que no
hay que confundir con el servidor dhcpd). Las distribuciones pueden incluir uno o incluso
los tres, pero todas tienen un cliente DHCP por defecto que se instala cuando se le
indica al sistema que se quiere utilizar DHCP durante la instalacin. Si la distribucin
viene con varios clientes, podremos intercambiarlos sin ningn problema. Lo ideal es
que el cliente DHCP se ejecute en el inicio del sistema, lo que se suele controlar desde
su propio fichero de inicio SysV o como parte del fichero de inicio principal de

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

330

configuracin de la red. Frecuentemente, el sistema posee una lnea en un fichero de


configuracin para determinar si debe ejecutar un cliente DHCP, en Red Hat y Fedora
esta opcin se define en el fichero /etc/sysconfig/network-scripts/ifcfg-eth0 (el nombre
del fichero puede diferir segn el nmero de interfaz ethernet). La lnea en cuestin
presenta el siguiente aspecto:
BOOTPROTO= dhcp

Si BOOTPROTO esta configurado con algn otro valor y lo modificamos, como en el


ejemplo anterior, el sistema utilizar DHCP, aunque suele ser ms fcil utilizar una
herramienta GUI para definir esta opcin. Ubuntu utiliza el fichero /etc/network/interfaces
para el mismo fin, aunque los detalles difieren. La lnea en cuestin para este archivo
es como la siguiente:
iface eth0 inet dhcp

Una vez configurado el cliente DHCP para ejecutarse durante el arranque del sistema,
la tarea de configuracin habr finalizado, si todo funciona como esperamos. En muy
raras ocasiones tendremos que modificar los parmetros de DHCP para resolver alguna
incompatibilidad entre cliente y servidor o para que el cliente DHCP haga algo inusual.
Para ello, probablemente, tendremos que modificar el script de inicio SysV o el fichero
al que haga referencia para cambiar su funcionamiento.
Si necesitamos ejecutar un cliente DHCP a mano lo haremos escribiendo su nombre
como root, seguido opcionalmente de un identificador de red, como por ejemplo, dhclient
eth0, para hacer que el cliente DHCP intente configurar eth0 con la ayuda del servidor
DHCP que encuentre en la red.
Configuracin con una direccin IP esttica
SI la red no tiene un servidor DHCP, tendremos que configurar manualmente el
ordenador. Estas opciones podemos configurarlas mediante comandos interactivos. Si
queremos configurarlas a largo plazo, ajustaremos ficheros de configuracin como
/etc/sysconfig/network-scripts/ifcfg-ethx (donde X es el nmero de dispositivo) o
/etc/network/interfaces. El siguiente listado muestra un fichero tpico ifcfg-eth0
configurado con una IP esttica.
DEVICE= eth0
BOOTPROTO= static
IPADDR=[Link]
NETMASK=[Link]
NETWORK=[Link]
BROADCAST=[Link]
GATEWAY=[Link]
ONBOOT=yes

La configuracin de IP estticas requiere varios elementos especficos necesarios o que


resultan de utilidad:

Direccin IP: podemos definir la IP manualmente con el comando ifconfig o a travs


del elemento IPADDR del fichero de configuracin.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

331

Mscara de red: podemos definirla manualmente con el comando ifconfig o a travs


del elemento NETMASK del fichero de configuracin.
Direccin de la puerta de acceso: se puede definir manualmente con el comando
route. Para definirla permanentemente ajustaremos el fichero de configuracin, que
puede ser el mismo que contiene las dems opciones u otro fichero. En ambos
casos, es probable que la opcin se llame GATEWAY. La puerta de acceso no es
necesaria en sistemas que slo trabajan en una red local que no contiene routers.
Parmetros de las DNS: si queremos que Linux realice conversiones entre
direcciones IP y nombres de host, tendremos que especificar al menos un servidor
DNS en el fichero /etc/[Link]. La IP del servidor DNS se define precedida de la
palabra clave nameserver. Podemos incluir hasta tres lneas nameserver en este
fichero. Una vez realizada esta configuracin, ser permanente. Tambin podemos
definir el nombre de dominio local utilizando la opcin domain.

El script de configuracin de red puede contener opciones adicionales. El ejemplo


anterior tiene una opcin que especifica el nombre de la interfaz (DEVICE=eth0), otra
que le dice al ordenador que asigne una IP esttica (BOOTPROTO=static) y una tercera
que muestra por pantalla la interfaz cuando arranca el ordenador (ONBOOT=yes).
NETWORK y BROADCAST se obtienen de los elementos IPADDR y NETMASK.
Los detalles de la configuracin varan de una distribucin a otra, por ejemplo en Ubuntu
editaremos /etc/network/interfaces y en Fedora /etc/syconfig/network-scripts/ifcfg-ethx.
La distribucin y formato de la informacin difieren en ambos ficheros, puede que
necesitemos consultar la documentacin de la distribucin para conocer los detalles.
Otra alternativa son las herramientas GUI, cuyo uso es muy intuitivo. No debemos
introducir valores aleatorios o inventados similares a los utilizados por otros sistemas de
nuestra red, ya que es improbable que funcionen y pueden provocar daos enormes.
El programa ifconfig es de una importancia crtica para definir la IP y la mscara de red,
tambin puede mostrar los parmetros actuales. Su uso bsico para mostrar una interfaz
de red presenta el siguiente aspecto:
ifconfig interfaz up dir netmask mascara

Por ejemplo, si queremos configurar eth0 con la direccin IP [Link] y la mscara


de red [Link] utilizaremos el siguiente comando:
ifconfig eth0 up [Link] netmask [Link]

De este modo definiremos la IP especificada para que el ordenador responda a ella y la


utilice como origen para los datos que enva. Esto no configura la ruta para el trfico
exterior a la red actual, para ello tendremos que utilizar el comando route:
route add default gw [Link]

Tanto ifconfig como route pueden mostrar informacin de la configuracin actual de la


red. Para ifconfig introduciremos el comando seguido del nombre de la interfaz:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

332

Eth0 Link encap:Ethernet direccinHW [Link]


Direc. inet:[Link] Difus.:[Link] Msc:[Link]
Direccin inet6: fe80::222:faff:fef9:fb5a/64 Alcance:Enlace
ACTIVO DIFUSIN FUNCIONANDO MULTICAST MTU:1500 Mtrica:1
Paquetes RX:6559207 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:4529577 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 [Link]
Bytes RX:7857152048 (7.8 GB) TX bytes:2055391477 (2.0 GB)

ifconfig debera mostrar una direccin de hardware (HWaddr), una direccin IP (inet
addr) y estadsticas de paquetes rechazados o desbordamientos por los paquetes
recibidos (RX) y transmitidos (TX), lo ideal es que estas colisiones sean pocas, aunque
son inevitables si utilizamos un HUB en lugar de un SWITCH. Podemos utilizar route
para efectuar un diagnstico escribiendo lo siguiente:
route
Kernel IP routing table
Destination Gateway Genmask Flags
[Link]
*
[Link]
[Link]
*
[Link]
default [Link] [Link]

Metric
U
0
U
0
UG
0

Ref
0
0
0

Use
0
0
0

Iface
eth0
lo
eth0

Esto muestra que los datos destinados a [Link] pasan directamente por eth0.
[Link] es un interfaz especial que crea un circuito cerrado con el ordenador de origen.
Se utiliza para ciertos fines internos de la red. La ltima lnea muestra la ruta por defecto,
que describe lo que hacer con todo lo que no coincida con las dems entradas de la
tabla de enrutamiento. En este caso, [Link] es la puerta de acceso por defecto
de la ruta. Si no aparece o esta mal configurada, el trfico destinado a redes externas
no pasar del segmento de red local.
Es ms fcil utilizar una herramienta GUI para definir direcciones IP para los nuevos
administradores, ya que la ubicacin exacta de los ficheros de configuracin vara de
una distribucin a otra y los ejemplos listados anteriormente pueden no ser vlidos para
nuestro sistema actual.
Configuracin del enrutamiento
Los routers pasan trfico de una red a otras. Linux se configura para contactar
directamente a los sistemas de la red local, aunque tambin se le suministra la direccin
del router, que el sistema utilizar para enviar todo el trfico que no est destinada a la
red local. Cada router tiene al menos dos interfaces de red y mantiene una tabla de
reglas que indican dnde se debe enviar la informacin en funcin de la IP de destino.
Nuestro propio ordenador tiene una tabla de este tipo, pero es muy simple comparada
con la de los routers de Internet.
Linux puede funcionar como un router conectando dos redes o ms entre s y dirigiendo
el trfico entre ellas segn su tabla de enrutamiento. Parte de estas tareas se controlan
con el comando route, que se puede utilizar para algo ms que especificar un nico
sistema de puerta de acceso. En una versin simplificada su sintaxis sera la siguiente:
route {add | del} [-net | -host] destino [netmask nm] [gw gw][reject] [[dev] interfaz]

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

333

Junto a add o del, se especifica un destino y otros parmetros opcionales. -net y -host
fuerzan a route a interpretar el destino como una red o como una direccin de ordenador.
netmask permite definir una mascara de red y gw permite especificar el router por el que
deberan pasar los paquetes hacia el destino especificado (hay versiones de route que
utilizan gateway en lugar de gw). reject rechaza todo el trfico destinado a la red
especificada (no es un cortafuegos). Por ltimo, la opcin dev fuerza a route a utilizar
un dispositivo de red concreto, aunque normalmente route pueda aadir el dispositivo
por si solo. El siguiente ejemplo muestra cmopodemos configurar una ruta con el
comando route:
route add -net [Link] netmask [Link] gw [Link]
Las tablas de enrutamiento incorrectas pueden causar que alguno o todos los
ordenadores no respondan. Podemos examinar las rutas de enrutamiento, escribiendo
solo route y, una vez localizadas las rutas incorrectas, las borraremos y las sustituiremos
por otras nuevas si fuese necesario. Una cosa ms que debemos saber para permitir
que Linux haga un enrutamiento, es que Linux no reenva los paquetes recibidos de un
sistema que estn dirigidos a otro. Sin embargo, para hacer de router, Linux tendr que
aceptar estos paquetes y enviarlos a la red de destino. Para activar esta funcionalidad,
modificaremos un fichero clave en /proc:
echo 1 > /proc/sys/net/ipv4/ip_forward
Este comando activa el reenvi IP ; para activarlo permanentemente tendremos que
modificar un fichero de configuracin que en algunas distribuciones es /etc/[Link] :
net.ipv4.ip_forward = 1
Otras distribuciones utilizan otros ficheros de configuracin y opcione, como
/etc/sysconfig/sysctl y su lnea IP_FORWARD. En caso de no disponer de este tipo de
ficheros, modificaremos un script de inicio para aadir el comando que aplique el
cambio.
Resolucin de nombres de host
DNS es una base de datos distribuida en ordenadores que realizan conversiones entre
direcciones IP y nombres de host. Cada dominio debe mantener, al menos, dos
servidores DNS; ambos deben proporcionar los nombres de cada ordenador del dominio
o redireccionar una peticin DNS a otro servidor DNS que pueda gestionar mejor la
peticin.
En la prctica, este proceso est oculto, ya que las empresas mantienen servidores DNS
que hacen todo el trabajo sucio. Bastar con que nuestro ordenador apunte a los
servidores DNS de nuestro ISP. Esto se puede controlar con DHCP o introduciendo la
informacin manualmente en los ficheros de configuracin. A veces necesitaremos
comprobar manualmente las DNS debido a que nuestra configuracin DNS esta
distribuyendo la direccin errnea o para verificar si el servidor est operativo. Los
programas que nos ayudan a realizar estas comprobaciones son los siguientes:

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

334

nslookup: realiza bsquedas DNS (por defecto, en determinados ordenadores en


particular) y devuelve los resultados. Tiene un modo interactivo con el que podemos
realizar una serie de consultas. El programa est oficialmente obsoleto, lo que
significa que ya no recibe mantenimiento y ser eliminado de su paquete padre
(bind-utils o bind-tools). Lo mejor es utilizar host o dig.
host: es el sustituto para las funciones ms sencillas de nslookup, carece de un
modo interactivo y difiere en muchos detalles de funcionamiento. En el caso ms
simple, escribiremos host nombre_objetivo donde nombre_objetivo es el nombre de
host o la direccin IP que queremos consultar. Admite varias opciones para modificar
su comportamiento bsico.
dig: realiza bsquedas DNS ms complejas que host. Podemos utilizarlo para
localizar la direccin IP de un nico nombre de host o el nombre de host de una
nica direccin IP, es ms flexible que host.
whois: busca la informacin de un dominio en conjunto y nos proporciona
informacin sobre quin es el propietario del dominio, con quin contactar en caso
de problemas, etc. Se suele utilizar junto con la opcin -H, que omite las clusulas
legales que muchos registradores de dominios incorporan a la informacin de whois.

Si slo necesitamos resolver un puado de nombres de host y no queremos recurrir a


las DNS, utilizaremos el fichero /etc/hosts para definir las asociaciones de direcciones
IP con nombres de host (una por lnea). Cada asociacin incluye por lo menos un
nombre, aunque puede ser ms de uno:
[Link] localhost
[Link] [Link] apollo
En este ejemplo, el nombre localhost est asociado a la direccin [Link]; los
nombres [Link] y apollo estn asociados a [Link]. El primer vnculo
debera aparecer en cualquier fichero /etc/hosts; el segundo es un nombre de host
completo que incluye la parte del domino. Los siguientes nombres de esta lnea son
alias (normalmente el nombre del host sin la especificacin del dominio). Una vez
configurado este fichero, podemos hacer referencia a los ordenadores que parecen en
l por sus nombres, estn o no en los servidores DNS que utiliza el ordenador.
La principal desventaja de /etc/hosts es que es un fichero local y la definicin de las
asociaciones slo afecta a las bsquedas de nombre realizadas por el ordenador. Si
queremos hacerlo en toda la red, tendremos que modificar los ficheros de todos los
ordenadores de esta. Linux suele realizar bsquedas en /etc/hosts antes que en las
DNS; para modificar este comportamiento configuraremos el fichero /etc/[Link],
en su lnea hosts. Esta lnea indica el orden de las opciones files y DNS, que
corresponden a /etc/hosts y DNS respectivamente:
hosts:

files dns

Invertiremos el orden de las opciones files y dns para obligar al sistema a consultar las
DNS antes que /etc/hosts. El fichero /etc/[Link] admite opciones como, por
ejemplo, realizar una resolucin de nombres utilizando llamadas NetBIOS de Windows,
o un servidor LDAP aadiendo las opciones pertinentes a la lnea hosts junto con el
software de apoyo necesario. Las lneas passwd, shadow y group controlan cmo se
autentifican los usuarios y gestionan los grupos Linux. No deberamos intentar cambiar
estas configuraciones a menos que entendamos los sistemas implicados.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

335

El fichero /etc/networks funciona de un modo similar a /etc/hosts, pero se aplica a las


direcciones de red e invierte el orden de los nombres y las direcciones IP en cada lnea:
loopback [Link]
mynet [Link]

Este ejemplo define dos vinculaciones: el nombre loopback con la red [Link]/8 y
mynet para la red [Link]/24. No tendremos que editar este fichero salvo en
contadas ocasiones.

14.2.2 Diagnosticar la red, verificar conectividad de red, traza de rutas,


comprobar el estado de la red.
Diagnosticar conexiones de red
La configuracin de las redes es compleja, ya que las cosas no siempre funcionan como
se planearon. Existen unos cuantos comandos que ayudan a diagnosticar problemas:
ping, traceroute, tracepath, netstat y tcpdump. Cada comando proporciona una
informacin concreta que nos puede servir para seguir la pista del origen de un
problema.
Verificar la conectividad bsica
El comando ping hace la comprobacin ms bsica de la red enviando un paquete ICMP
al sistema citado (a travs de una IP o un nombre de host) y espera una respuesta. ping
enviar paquetes una vez por segundo hasta que lo interrumpamos pulsando control+c.
Tambin podemos limitar el nmero de comprobaciones con la opcin -c num. Podemos
aislar el lugar donde se produce un problema en la red haciendo ping a sistemas locales
y remotos. Por ejemplo, si podemos hacer ping a sistemas locales pero no a sistemas
remotos, el problema probablemente est en la configuracin del router; sin embargo,
si podemos hacer ping por direccin IP pero no por nombre de host, entonces el
problema residir en la configuracin de las DNS.
Hacer una traza de una ruta
traceroute enva una serie de tres paquetes de prueba a cada ordenador desde nuestro
sistema al sistema objetivo, su salida es similar a la siguiente:
traceroute -n [Link]
traceroute to [Link] ([Link]), 30 hops max, 52 byte packets
1 [Link] 1.021 ms 36.519 ms 0.971 ms
2 [Link]
17.250 ms 9.959 ms 9.637 ms
3 [Link]
8.799 ms 19.501 ms 10.884 ms
4 [Link]
21.059 ms 9.231 ms 103.068 ms
5 [Link]
8.554 ms 12.982 ms 10.029 ms
6 [Link]
10.273 ms 9.987 ms 11.215 ms
7 [Link]
16.360 ms
*
8.102 ms

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

336

-n hace que se muestren las direcciones IP de los ordenadores objetivo en lugar de sus
nombres de host, lo que podra acelerar el proceso, sobre todo si tenemos problemas
de DNS. Suele ser recomendable conocer los nombres de host, ya que ayudan a
determinar con precisin quien es el responsable de un problema. El ejemplo anterior
muestra una gran variabilidad en los tiempos de respuesta, el dato de [Link] es
totalmente local: este router respondi en 1.021, 3.519 y 0.971 ms a las 3 pruebas; es
probable que, por la segunda prueba y su tiempo de respuesta, se puede deducir que
el sistema estaba ocupado en alguna otra tarea. El resto de pruebas se encuentra en el
rango de los 8-20 ms. En el ultimo sistema slo se presentan dos tiempos y en la prueba
intermedia se marca como un asterisco (*) debido a que el paquete nunca regres.
traceroute permite localizar los problemas de conectividad de la red si tenemos una
gran variabilidad en los tiempos. La ausencia de alguno tiempo indica que el router esta
sobrecargado o que tiene una conexin poco fiable con el sistema anterior de la lista.
Si observamos un salto muy grande en los tiempos, suele indicar que hay una enorme
distancia fsica entre dos de los routers, algo habitual en las conexiones
intercontinentales. Estos saltos no son necesariamente un problema a no ser que los
dos sistemas estn lo suficientemente cerca como para que este salto enorme carezca
de sentido.
La salida de traceroute nos permite determinar si existe un problema en la conectividad
de la red de la que somos responsables. Por ejemplo, la variabilidad del primer dato en
el ejemplo anterior puede indicar un problema en la red local, aunque lo ms probable
es que e paquete se perdiera antes de llegar a su destino final, por lo que no se trata de
un problema en la red. Si la conexin problemtica esta dentro de nuestra rea de
responsabilidad, tendremos que comprobar el estado del sistema problemtico, los
sistemas vecinos y el segmento de red. Hay routers que bloquean todos los datos de
traceroute, independientemente de que estn destinados a ellos o sean paquetes de
paso. Si la salida de traceroute contiene una o dos lneas de asteriscos (*) pero todo lo
dems parece estar bien, es probable que nos hayamos topado con uno de estos
sistemas.
tracepath es una alternativa a traceroute. Es similar en su funcionamiento bsico, pero
genera una lnea de salida por cada paquete de prueba, lo que produce una salida ms
larga que traceroute. Adems, tracepath dispone de menos opciones que traceroute.
Comprobar el estado de la red
netstat es la navaja suiza de las herramientas de red. Puede devolver informacin que
no se obtiene fcilmente de otras maneras, por ejemplo:

Informacin sobre la interfaz: los parmetros interface o -i dan informacin sobre


los interfaces de red similar a la que devuelve ifconfig. Hay versiones de netstat que
utilizan el mismo formato de salida que ifconfig, pero, normalmente, la muestran de
manera diferente.
Informacin del enrutamiento: route o -r permiten obtener un listado de la tabla
de enrutamiento similar al que muestra el comando route.
Informacin de enmascaramiento: con los parmetros masquerade o -M
obtendremos informacin sobre las conexiones en las que intervengan las
funcionalidades NAT de Linux (enmascaramiento de IP). NAT permite a un router
Linux ocultar una red tras una nica direccin IP, lo que resulta bueno para
expandir las direcciones IPv4.
Uso del programa: program o -p intentan proporcionar informacin sobre los
programas que utilizan conexiones de red. No siempre tiene xito, pero, en caso de
que s, podremos ver qu programas estn realizando conexiones al exterior.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

337

Puertos abiertos: cuando se utiliza sin parmetro alguno, netstat devuelve


informacin sobre los puertos abiertos y los sistemas a los que se conectan.
Todas las conexiones: -all o -a hacen que netstat muestre informacin sobre los
puertos que abren los programas de servidor para escuchar las conexiones de red,
adems de las conexiones ya abiertas.

netstat es una herramienta muy potente; ni las opciones ni la salida son exactamente
las mismas en todas las distribuciones.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

SISTEMAS OPERATIVOS ABIERTOS

338

Resumen
En esta unidad, se revis la suite de protocolos de TCP/IP, direcciones de red, direcciones
de hardware, administracin de direcciones IP, clases de red IPv4 y puertos de red.
Asimismo se vi la configuracin del hardware de red, configurando la red con DHCP, IP
esttico, configurando enrutamiento y resolucin de nombres host. Se estudi el
diagnstico de la red, verificar conectividad de red, traza de rutas y comprobacin de
estado de la red.

Bibliografa
BSICA
Angie Nash y Jason Nash

2001

LPIC 1 Certification Bible

2004

Edicin especial Linux


(005.43L BAND)

CIBERTEC
2004 Linux administrador e Internet: Linux administrador y security
(005.43L CIBE)
COMPLEMENTARIA
2013

([Link]
Proyecto de documentacin de Linux en espaol.

2013

([Link]
Proporciona guas rpidas para instalar, configurar servicios de red basados en Linux.

2013

([Link]
Proyecto de formacin en habla hispana para los candidatos a la certificacin LPI en
cualquiera de sus niveles.

CARRERA DE REDES Y COMUNICACIONES

IEST PRIVADO CIBERTEC

También podría gustarte