Anda di halaman 1dari 177

CLA

Carrera Linux Argentina


www.carreralinux.com.ar

Gua bsica para


preparar los
examenes
LPIC-101
LPIC-102

Temario
Mtodos de Instalacin....................................................................................................................................12
Metodos de instalacion alternativos..........................................................................................................12
Instalacion desde CD o DVD......................................................................................................................12
Carpeta paquetes........................................................................................................................................12
Carpeta imagenes..................................................................................................................................12
Carpeta dosutils......................................................................................................................................13
Instalacin desde un servidor HTTP........................................................................................................13
Configuracion de la instalacion HTTP.................................................................................................13
Instalacion desde un disco duro...........................................................................................................14
Configuracion de la instalacion desde disco duro........................................................................14
Disco de Rescate Linux.........................................................................................................................15
Comenzado con el Disco de Rescate Linux..................................................................................15
Arquitectura del Sistema ...........................................................................................................................16
Asignacion de recursos.........................................................................................................................16
Solicitudes de interrupcion (IRQ)....................................................................................................16
Direcciones de Entrada/Salida........................................................................................................16
Accesos Directos a Memoria (DMA)..............................................................................................16
Listado de asignacion de recursos...........................................................................................................17
lspci......................................................................................................................................................17
dmesg..................................................................................................................................................17
Soporte USB............................................................................................................................................17
Dispositivos SCSI...................................................................................................................................18
El canal SCSI.....................................................................................................................................18
El numero ID del dispositivo............................................................................................................18
Numero de unidad logica.................................................................................................................18
Deteccion de dispositivos SCSI......................................................................................................18
Tarjetas de Red......................................................................................................................................19
Configuracion de impresoras................................................................................................................19
Tarjetas de Audio...................................................................................................................................19
OSS (Open Sound System)............................................................................................................19
ALSA (Advanced Linux Sound Architecture)................................................................................20
Identificando las tarjetas de audio..................................................................................................20
Administracion de tarjetas de audio...............................................................................................20
Conociendo el Arranque de Linux.............................................................................................................20
Sobre los Discos Duros.........................................................................................................................20
Tipos de Discos Duros...........................................................................................................................21
Discos Duros IDE-ATA=...................................................................................................................21
Discos Duros SATA..........................................................................................................................21
Discos Duros SCSI............................................................................................................................22

-3-

Configuracion de discos........................................................................................................................23
Configuracion de Particiones................................................................................................................24
Aplicaciones graficas para particionar discos duros........................................................................24
Gparted...............................................................................................................................................24
Parted Magic......................................................................................................................................25
Formatear y particionar discos duros desde BASH..........................................................................25
Dando formato de bajo nivel con dd...............................................................................................25
Particionando un disco duro con fdisk...........................................................................................25
Dando formato a un disco duro con mkfs......................................................................................27
Niveles de Ejecucion en Linux...................................................................................................................27
El Proceso de arranque.........................................................................................................................27
El Proceso INIT.......................................................................................................................................27
SystemV..............................................................................................................................................27
BSD.....................................................................................................................................................28
El archivo init.d........................................................................................................................................28
El archivo rcN.d.......................................................................................................................................29
El archivo inittab......................................................................................................................................29
El archivo rc.sysinit.................................................................................................................................30
El archivo rc.local....................................................................................................................................30
Niveles de Ejecucion..............................................................................................................................30
Nivel 0 Parada Del Sistema...........................................................................................................30
Nivel 1 o S -Monousuario o Single User........................................................................................30
Nivel 2 -Multiusuario sin Red...........................................................................................................31
Nivel 3 -Multiusuario con Red..........................................................................................................31
Nivel 4. -Sin Uso................................................................................................................................31
Nivel 5. -Multiusuario Grafico..........................................................................................................31
Nivel 6. -Reinicio del Sistema..........................................................................................................31
Comando chkconfig...............................................................................................................................31
Levantando, deteniendo y reiniciando servicios................................................................................31
Manejo de Paquetes...................................................................................................................................32
Introduccion a la gestion e instalacion de software...........................................................................32
Herramienta RPM...................................................................................................................................33
Herramienta YUM...................................................................................................................................33
Configuracin de YUM ....................................................................................................................34
Extensiones de YUM........................................................................................................................36
Utilidades YUM..................................................................................................................................36
Herramienta DPKG................................................................................................................................37
Herramienta APTITUDE........................................................................................................................38
Herramienta APT....................................................................................................................................38
Manejo de comandos..................................................................................................................................39

-4-

Sobre SHELL..........................................................................................................................................39
El Ambiente Linux...................................................................................................................................39
Algunas variantes del SHELL...............................................................................................................39
Bourne Shell (sh)...............................................................................................................................39
Korn Shell (ksh).................................................................................................................................40
Boune Again Shell (bash).................................................................................................................40
CShell (csh)........................................................................................................................................40
Introduccion a BASH..............................................................................................................................40
Conociendo el SHELL de nuestro equipo.....................................................................................40
Usando el comando cd.....................................................................................................................40
Rutas (Paths).....................................................................................................................................40
Rutas Absolutas.................................................................................................................................40
Rutas Relativas..................................................................................................................................41
Usando el . . (punto a punto)............................................................................................................41
Entendiendo el . (punto)...................................................................................................................41
Usando los comandos de Linux...........................................................................................................41
El comando ls.....................................................................................................................................41
Comodines.........................................................................................................................................42
El comando mkdir..............................................................................................................................43
comando touch..................................................................................................................................44
comando echo...................................................................................................................................44
comando cat y cp .............................................................................................................................44
comando mv.......................................................................................................................................44
Procesando cadenas de texto usando filtros.....................................................................................44
Listando el contenido de un archivo....................................................................................................44
Ordenando lineas de un archivo con Sort..........................................................................................45
Segmentando un texto con Cut.......................................................................................................46
Pegando texto con Paste.................................................................................................................47
Formateando parrafos......................................................................................................................48
Borrando o sustituyendo caracteres...............................................................................................48
Ver el inicio de un archivo................................................................................................................49
Ver el final de un archivo..................................................................................................................50
Uniendo multiples archivos..............................................................................................................50
Segmentando un archivo.................................................................................................................51
Eliminando lineas repetidas en un archivo ...................................................................................52
Convirtiendo archivos para imprimir...............................................................................................52
Mostrando estadisticas de un archivo...........................................................................................53
Aadiendo numeros de linea a un archivo....................................................................................53
Administracion de Archivos........................................................................................................................54
Listando el contenido de un directorio.................................................................................................54

-5-

Determinando el tipo de archivo...........................................................................................................55


Copiando Archivos.................................................................................................................................56
Copiando y convirtiendo archivos con diferente formato.................................................................57
Moviendo Archivos.................................................................................................................................57
Eliminando Archivos...............................................................................................................................58
Creando, monitorizando y matando procesos........................................................................................58
Sobre procesos.......................................................................................................................................58
Estados de un proceso.....................................................................................................................59
Diagrama de formacion de un proceso..........................................................................................59
Modelo de dos estados....................................................................................................................59
Modelo de cinco estados.................................................................................................................59
Sobre demonios......................................................................................................................................60
Caracteristicas...................................................................................................................................61
Comando ps (process state)......................................................................................................................61
Comando pstree y top............................................................................................................................62
Finalizando un proceso..........................................................................................................................63
Procesos en segundo y primer plano..................................................................................................64
Creando particiones y sistemas de archivos...........................................................................................64
Sobre fdisk...............................................................................................................................................64
Utilizando fdisk........................................................................................................................................64
Utilizando mkfs........................................................................................................................................68
Manteniendo la integridad de los sistemas de archivos...................................................................69
Monitorizando el espacio y los inodos libres del disco.....................................................................69
Monitorizando el espacio y los inodos libres del disco.....................................................................70
Comprobando la integridad del sistema de archivos........................................................................70
Montando y desmontando sistemas de archivos...................................................................................71
Controlando el montaje y desmontaje del sistema de archivos......................................................71
Administrando la tabla del sistema de archivos................................................................................71
Montando el sistema de archivos .......................................................................................................72
Desmontando el sistema de archivos..................................................................................................73
Administrando cuotas de disco.................................................................................................................74
Establecer y consultar cuotas de disco...............................................................................................74
Cuotas de Limitacion...................................................................................................................................74
Comandos de cuotas.............................................................................................................................75
quota....................................................................................................................................................75
quotaon...............................................................................................................................................76
quotaoff...............................................................................................................................................77
quotacheck.........................................................................................................................................77
edquota...............................................................................................................................................78
repquota..............................................................................................................................................79

-6-

Habilitando las cuotas............................................................................................................................79


Permisos de archivos y directorios...........................................................................................................81
Administracion de Permisos.................................................................................................................81
Permisos de archivos y directorios......................................................................................................81
Comando chmod....................................................................................................................................82
Permisos especiales..............................................................................................................................83
SUID....................................................................................................................................................83
SGID....................................................................................................................................................83
Stiky Bit...............................................................................................................................................83
Administrando el propietario de los archivos...........................................................................................84
Comando chown.....................................................................................................................................84
Comando chgrp......................................................................................................................................84
Crear y cambiar enlaces de archivos.......................................................................................................85
Creando links a archivos.......................................................................................................................85
Los Hard Links .......................................................................................................................................85
Los Symlinks ..........................................................................................................................................85
Shell, Scripting y Manejo de datos.................................................................................................................86
Personalizando y conociendo el shell.......................................................................................................86
Archivos de configuracion de BASH...................................................................................................86
Fichero /etc/profile.............................................................................................................................86
Fichero /etc/bashrc............................................................................................................................87
Ficheros /.bash_profile , /.bash_logout y /.bashrc........................................................................87
/.bash_profile......................................................................................................................................87
/.bashrc...............................................................................................................................................87
/.bash_logout......................................................................................................................................87
/inputrc................................................................................................................................................87
/.bash_profile , /.bashrc y /etc/profile, /etc/bashrc.............................................................................88
Variables de entorno..............................................................................................................................88
Como establecer la variable PATH................................................................................................89
Variables locales y globales de Shell.............................................................................................89
Funciones de Shell Bash..................................................................................................................90
Personalizar o escribir scripts simples...........................................................................................91
Comparaciones de cadenas alfanumericas.......................................................................................91
Comparacion de valores numericos....................................................................................................92
Comparaciones de atributos de fichero..............................................................................................92
Sentencia if..............................................................................................................................................92
Sentencia for...........................................................................................................................................93
Sentencia while y until............................................................................................................................93
Sentencia case........................................................................................................................................94
Sentencia select......................................................................................................................................94

-7-

Manejo de datos en MySQL.................................................................................................................95


Conectarse y desconectarse del servidor.....................................................................................95
Prompt Significado ...........................................................................................................................97
Crear y utilizar una base de datos........................................................................................................99
Crear y utilizar una base de datos................................................................................................100
Crear una tabla................................................................................................................................100
Cargar datos a una tabla................................................................................................................102
Extraer informacion de una tabla..................................................................................................103
Existen al menos dos formas de solucionarlo:............................................................................104
Seleccionar registros especificos......................................................................................................104
Seleccionar columnas concretas..................................................................................................105
Ordenar registros............................................................................................................................106
Calculos sobre fechas....................................................................................................................108
Trabajar con valores NULL...........................................................................................................111
Coincidencias de patrones............................................................................................................111
Algunas caractersticas de las expresiones regulares extendidas:.........................................113
Contar registros...............................................................................................................................114
Utilizar mas de una tabla................................................................................................................116
Instalar y configurar X Window System.................................................................................................118
Sobre X Window System....................................................................................................................118
Instalando X Window System.............................................................................................................119
Configurando el entorno X Window System....................................................................................119
Especificaciones del mouse..........................................................................................................120
Especificaciones del teclado.........................................................................................................120
Fichero xorg.conf..................................................................................................................................120
Seccion Files................................................................................................................................120
Seccion Modules..........................................................................................................................121
Seccion InputDevice....................................................................................................................121
Configuracion tipica de un teclado...............................................................................................122
Seccion Device.............................................................................................................................123
Seccion Monitor...........................................................................................................................123
Seccion Screen............................................................................................................................124
Seccion ServerLayaout...............................................................................................................125
Tareas Administrativas.............................................................................................................................125
Fichero /etc/passwd........................................................................................................................126
Fichero /etc/shadow........................................................................................................................126
Administracin de cuentas de usuario..............................................................................................127
useradd.............................................................................................................................................127
usermod............................................................................................................................................128
userdel..............................................................................................................................................128

-8-

passwd..............................................................................................................................................129
chage................................................................................................................................................129
newusers..........................................................................................................................................130
Fichero /etc/login.defs ...................................................................................................................130
Administracin de grupos...................................................................................................................131
groupadd..........................................................................................................................................131
groupmod.........................................................................................................................................131
groupdel............................................................................................................................................132
gpasswd...........................................................................................................................................132
grpck.................................................................................................................................................132
Fichero /etc/group...........................................................................................................................132
Fichero /etc/gshadow.....................................................................................................................133
pwconv y pwunconv.......................................................................................................................133
grpconv y grpunconv......................................................................................................................134
Sobre CRON.........................................................................................................................................134
Las variables:...................................................................................................................................135
Listando el crontab..........................................................................................................................135
Programando tareas.......................................................................................................................135
Directorios predefinidos: hourly, daily, weekly y monthly..........................................................136
Crontab del sistema........................................................................................................................136
Log de cron......................................................................................................................................137
Administrando la hora del equipo.................................................................................................137
Programas para controlar el reloj del sistema......................................................................................138
Ajustes de tiempo y de las zonas horarias.......................................................................................138
El procedimiento es relativamente simple:.......................................................................................138
Comando hwclock................................................................................................................................138
Servicios Esenciales del Sistema................................................................................................................140
Mail Transfer Agent Basico......................................................................................................................140
Protocolo SMTP...................................................................................................................................140
Protocolo POP3....................................................................................................................................141
Protocolo IMAP.....................................................................................................................................141
Sobre Sendmail....................................................................................................................................142
Sendmail en la actualidad..............................................................................................................142
Sobre Postfix.........................................................................................................................................143
Sobre Exim............................................................................................................................................143
Sobre Qmail..........................................................................................................................................143
Como imprimir en Linux............................................................................................................................143
En que consiste el sistema de impresion CUPS.............................................................................144
Instalar una impresora local con CUPS............................................................................................145
Fundamentos de Red.....................................................................................................................................147

-9-

Fundamentos de TCP/IP..........................................................................................................................147
Sobre TCP/IP........................................................................................................................................147
Desarrollo de TCP/IP......................................................................................................................147
Niveles en la pila TCP/IP...............................................................................................................148
Nivel Fisico..................................................................................................................................149
Nivel de Enlace de Datos..........................................................................................................149
Nivel de internet.........................................................................................................................149
Nivel de Transporte...................................................................................................................149
Nivel de Aplicacion....................................................................................................................150
Protocolo TCP.................................................................................................................................151
Establecimiento de la conexion ...................................................................................................151
Transferencia de datos..................................................................................................................151
Tamao de ventana TCP...............................................................................................................152
Escalado de ventana......................................................................................................................153
Fin de la conexion...........................................................................................................................153
Puertos TCP.....................................................................................................................................153
Protocolo UDP.................................................................................................................................153
Puertos TCP.....................................................................................................................................154
Diferencias entre TCP y UDP........................................................................................................154
Tabla de Puertos TCP y UDP.......................................................................................................155
Direcciones IP.......................................................................................................................................157
Direcciones IPv4...................................................................................................................................157
Mascara de una direccion IP.........................................................................................................159
Creacion de Subredes....................................................................................................................159
IP dinamica......................................................................................................................................159
Asignacion de direcciones IP........................................................................................................160
Direcciones IPv6.............................................................................................................................161
Fichero /etc/services............................................................................................................................161
FTP..............................................................................................................................................................161
Telnet.....................................................................................................................................................162
Ping.........................................................................................................................................................162
Dig...........................................................................................................................................................162
Traceroute.............................................................................................................................................162
Funcionamiento...............................................................................................................................163
Configuracion de los parametros de Red.........................................................................................163
Configuracion de interfaces de Red.............................................................................................163
Configuracion del archivo /etc/hosts............................................................................................164
Configuracion del archivo /etc/resolv.conf..................................................................................164
Configuracion del archivo /etc/sysconfig/network......................................................................164
/etc/sysconfig/network-scripts/.....................................................................................................164

- 10 -

El Protocolo SSH..................................................................................................................................165
Acerca de OpenSSH...........................................................................................................................166
Instalando OpenSSH...........................................................................................................................166
Archivos de configuracin de OpenSSH.....................................................................................167
/etc/ssh/............................................................................................................................................167
Archivos de configuracin del lado del cliente...........................................................................167
Configuracin de fichero sshd_config.........................................................................................168
Blindando el fichero sshd_config..................................................................................................168
Cambiando el puerto por defecto.................................................................................................168
Desactivando el Protocolo 1..........................................................................................................168
Deshabilitando el acceso a root....................................................................................................169
Definiendo un nmero mximo de intentos de conexin..........................................................169
Activando el modo estricto............................................................................................................170
Impidiendo la conexin al servidor grfico..................................................................................170
Limitando el tiempo para autenticarse con SSH........................................................................170
Iniciar, detener o reiniciar el servidor openSSH.........................................................................170
Aprendiendo a utilizar openSSH........................................................................................................171
Copiar u obtener archivos o carpetas desde un equipo remoto..............................................172
Copiando ficheros a travs de SFTP (Security File Transfer Protocol).................................173
Subir o enviar archivos o carpetas a un equipo remoto............................................................174

- 11 -

Mtodos de Instalacin
Metodos de instalacion alternativos
El proceso de instalacin de Sistemas Operativos Linux es una tarea similar para casi todas las
distribuciones Linux existentes. Una de las formas mas usadas e implementadas es la basada en los
discos de instalacin de Linux los cuales puedes descargar directamente en formato .ISO desde la
pagina oficial de la distribucin Linux que tu elijas. As mismo, existen mtodos de instalacin
alternativos que pueden ser aplicados cuando por ejemplo no disponemos de un lector DVD en el
equipo, algunos de estos mtodos alternativos de instalacion son los siguientes:
Mediante un servidor HTTP
Mediante un Disco Duro

Instalacion desde CD o DVD


Varias distribuciones linux asignan diferentes nombres para la estructura de sus carpetas de sus
discos de instalacion, la estructura generica de estos directorios es la siguiente:

Carpeta paquetes
Esta carpeta contiene los paquetes precompilados de Linux. La siguiente tabla muestra los nombres
asociados a la carpeta paquetes de cada una de las distribuciones linux mas relevantes.
Sistema Operativo Carpeta que almacena los paquetes precompilados
Red Hat

Server

CentOS

CentOS

Fedora

Fedora

Debian

dists

Ubuntu

dists

Carpeta imagenes
Esta carpeta alberga los archivos necesarios para llevar a cabo el proceso de instalacion de Linux
como son:
1.Archivos de boteo para el arranque de Linux 2.Modulos del Nucleo de Linux 3.Archivos para el
rescate de sistemas Linux Algunos de estos archivos pueden ser copiados a una memoria USB o
CD para ser usados como discos de arranque. Para sistemas operativos Linux de la familia Red Hat
la carpeta imagenes esta relacionada con las carpetas
images
isolinux
Para sistemas operativos Linux de la Familia Debian la carpeta imagenes esta relacionada con las
carpetas
casper
isolinux

- 12 -

Carpeta dosutils
Este directorio contiene herramientas que pueden ser usadas para preparar la instalacion de Linux.
Estas herramientas son programas diseadas en MS-DOS muy partiularmente el comando rawrite.
Rawrite es un programa que graba una imagen de un archivo en un disquette,cd o USB. Puede ser
usado para grabar la imagen de un sistema operativo que sea utilizable como disco de arranque. La
versin original fue escrita por Mark E. Becker a peticin de Linus Torvalds Existen versiones para
otros sistemas operativos. En Linux y otros Unix se puede usar la orden dd que ya viene incluida con
el sistema operativo.

Instalacin desde un servidor HTTP


Configuracion de la instalacion HTTP
1.El primer paso sera instalar el servidor HTTP. Para sistemas operativos Linux de la familia Red
Hat la instalacion de hace de la siguiente manera
[BASH]#yuminstallyhttpd

Para sistemas operativos Linux de la familia Debian la instalacion de hace de la siguiente manera
[BASH]#aptgetinstallyapache2

2.El siguiente paso sera introducir el medio de instalacion DVD a la unidad lectora de discos, crear
una carpeta dentro de la carpeta publica del servidor HTTP y luego montarlo sobre dicha carpeta.
Para sistemas operativos Linux de la familia Red Hat la ubicacion de la carpeta publica es la
siguiente:
/var/www/html/

Dentro de esta ruta se tiene que crear la carpeta y nombrarla con el nombre que usted elija. Para
sistemas operativos Linux de la familia Debian la instalacion de hace de la siguiente manera
/var/www/

Dentro de esta ruta se tiene que crear la carpeta y nombrarla con el nombre que usted elija.
El comando para montar el medio de instalacion DVD es el siguiente:
[BASH]#mounttiso9660oloop/dev/dvd/var/www/html/carpeta

Esto ultimo para sistemas operativos Linux de la familia Red Hat y para sistemas operativos Linux
de la familia Debian
[BASH]#mounttiso9660oloop/dev/dvd/var/www/carpeta

3.Una vez montado el DVD en la carpeta publica del servidor HTTP deberas copiar el archivo
boot.iso

al escritorio de trabajo o en algun otro lugar Este archivo lo podras encontrar dentro de la carpeta
images

La ruta completa donde puedes escontrar este archivo es la siguiente:


/var/www/html/carpeta/images/boot.iso

Esto ultimo para sistemas operativos Linux de la familia Red Hat y para sistemas operativos Linux
de la familia Debian
/var/www/carpeta/images/boot.iso

4.Graba el archivo
- 13 -

boot.iso

en formato .iso en un CD con ayuda da algun programa de grabacion de datos como K3B o Brasero.
5.Inserta el CD de arranque que acabas de crear en el lector del servidor y teclea enter.
6.Selecciona el idioma y tipo de teclado correspondiente:
7.En la seccion Metodo de Instalacion elige HTTP
8.En configuracion TCP/IP deshabilita la opcion IPv6 y solo deja habilitada la opcion Ipv4
9.En configuracion HTTP deberas teclear la direccion IP en la cual tienes montado el medio de
instalacion DVD asi como tambien el nombre del directorio publico que creaste en el servidor HTTP
y teclear el boton Acpetar
NOTA:Este metodo de instalacion solo es aplicable a distribuciones Linux de la familia
Red Hat

Instalacion desde un disco duro


Configuracion de la instalacion desde disco duro
1.El procedimiento es relativamente parecido al anterior para ello debera contar con lo siguiente:
medio de Instalacin DVD
La imagen .ISO de la distribucin
1.Si usted cuenta con el medio de instalacin DVD deber convertir este en una imagen .ISO, si ya
cuenta con la imagen .ISO omita este punto y salte al siguiente paso, si no es asi siga leyendo.
Inserte el medio de instalacin DVD en el lector del equipo y teclee el siguiente comando para crear
la imagen .ISO
[BASH]#ddif=/dev/dvdof=/Ruta/En/Donde/Creara/La/Imagen/imagen.iso

2.Monta la imagen .ISO de la siguiente manera


[BASH]#mounttiso9660oloopimagen.iso/punto/De/Montaje

3.Copia los archivos


*initrd.img
*vmlinuz

En alguna carpeta del sistema Estos archivos los podras encontrar en la carpeta
isolinux

de la imagen .ISO que acabas de montar


5.Edita el archivo
/boot/grub/menu.lst

Y agrega el siguiente contenido al final del archivo


title
root

En esta linea usted puede agregar un comentario sobre el Sistema Operativo a Instalar
En esta linea se indica el disco duro y la particion del disco duro en donde se encuentra
localizada la imagen .ISO del sistema operativo

kernel En esta linea se indica la ruta en donde copio el archivo vmlinuz


initrd

En esta linea se indica la ruta en donde copio el archivo initrd.img

No olvides guardar los cambios hechos al archivo


6.Desmonta la imagen .ISO de la siguiente forma:

- 14 -

[BASH]#umount/punto/De/Montaje/imagen.iso

7.Lo siguiente sera reiniciar el equipo y justo cuando arranque el GRUB elegir la linea de instalacion
del sistema Operativo Esta accion cargara el instalador del Sistema Operativo como si estuviera
leeyendolo desde el medio de instalacion DVD

Disco de Rescate Linux


Si tu sistema operativo Linux se corrompe es posible recuperarlo usando un CD de rescate, este CD
de rescate es una version reducida de Linux que implementa un sistema de archivos en la memoria
RAM del equipo el cual tiene como funcion acceder al sistema de archivos del disco duro como
usuario root

Comenzado con el Disco de Rescate Linux


1.Introduce el medio de instalacin DVD en el lector de discos del equipo
2.Teclea en la pantalla la palabra
#linuxrescue

3.Selecciona el idioma y tipo de teclado correspondiente:


4.En configuracion de red, selecciona la opcion No
5.La siguiente ventana emergente intentara montar el sistema de archivos de nuestro equipo en la
ruta virtual /mnt/sysimage. Seleccione la opcion Continuar
6.Al terminar el proceso de arranque este nos mostrara una interfaz parecida al BASH
7.Teclee el comando
[BASH]#fdisk/dev/hda

Esta accion nos arrojara el siguiente mensaje Presione la tecla p , esto nos mostrara una lista con
las distintas particiones alojadas en el disco duro, algo muy parecido al siguiente ejemplo
8.De acuerdo a la informacion obtenida en el anterior punto, monte la particion que contenga el
sistema de archivos de linux. Ejemplo:
[BASH]#mounttext3/dev/hda1/tmp

9.Aplique el comando
chroot

Sobre la particion que acaba de montar Ejemplo:


[BASH]#chroot/tmp

Esto es porque existen dos sistemas de archivos , uno relacionado al virtualizando en la memoria
RAM y el segundo relacionado al sistema de archivos del disco duro. Al aplicar chroot sobre la
particion montada tomaremos el control sobre el sistema de archivos del disco duro y con ello
podremos ajecutar comandos administrativos sobre el equipo. 10.Por ultimo, si olvido la contrasea
de root o si esta fue cambiada por alguien mas , podra recuperarla tecleando en consola lo
siguiente:
[BASH]#passwd
Cambiandolacontraseadelusuarioroot.
NuevaUNIXcontrasea:

- 15 -

Arquitectura del Sistema


Asignacion de recursos
Para permitir que los perifericos 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 comunicacion 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 interrupcion (IRQ)


Antes de explicar que es una solicitud de interrupcin, entendamos primero cual es la funcion 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 subitamente 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.

Direcciones de Entrada/Salida
Las direcciones de entrada/ salida representan direcciones especificas en la memoria del sistema,
dichas direcciones son asignadas por el CPU a cada uno de los dipositivos del hardware del sistema
para que puedan escribir y leer datos sobre la misma.

Accesos Directos a Memoria (DMA)


El acceso directo a memoria (DMA) permite a cierto tipo de componentes del equipo acceder a la
memoria del sistema para leer o escribir independientemente del procesador. 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.

- 16 -

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

Listado de asignacion de recursos


El nucleo de linux agrupa la informacion relacionada a la asignacion de recursos en la carpeta
/proc

Los archivos relevantes de esta carpeta son los siguientes:


*/proc/dma>ArchivoquecontieneelhistorioDMAdelequipo
*/proc/interrupts>ArchivoquecontieneelhistoricoIRQdelequipo
*/proc/ioports>ArchivoquecontieneelhistoricoEntrada/Salidadelequipo
*/proc/pci

La asignacion de recursos tambien pueden ser consultada usando comandos como


*lspci
*dmesg

lspci
Lspci es un comando que nos imprime informacion detallada sobre los buses y dispositivos PCI
conectados al equipo. Asi mismo nos da informacion 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
[BASH]# lspci -v

dmesg
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 consultado en el
archivo
/var/log/messages

Soporte USB
El bus universal en serie (Universal Serial Bus) es un protocolo de comunicacion diseado para
conectar dispositivos a un equipo de computo. Estos dispositivos estan divididos en cuatro clases
1.Dispositivos de comunicacion (Tarjetas WiFi) 2.Dispositivos de audio (Bocinas, Microfonos)
3.Dispositivos de almacenamiento de datos (Memorias, Discos Duros, Lectores DVD) 4.Dispositivos
de interfaz humana (Mouse, Teclado)
El soporte para dispositivos USB estuvo disponible hasta la version 2.2.7 del kernel de linux y con
ello la liberacion de 3 modulos o controladores para la misma.
- 17 -

Controlador Desarrollador Modulo para el Kernel


OHCI

Compaq

usb-ohci.o

UHCI

Intel

usb-uhci.o

EHCI

ehci-hdc.o

Asi mismo existe un comando en linux que nos imprime informacion detallada sobre los buses,
dispositivos USB conectados al equipo, IRQ y direcciones de Entrada/Salida asociados a los
dispositivos USB encontrados, el nombre de este comando es el siguiente.
[BASH]#lsusbv

El parametro -v es el encargado de listar la infomacion referente a los IRQ, DMA y las direcciones de
entrada/salida de los dispositivos USB.
Una forma para cononcer si en nuestro sistema operativo tiene soporte para estos controladores es
revisando directamente el archivo de modulos del kernel de linux. La ruta de este archivo es la
siguiente:
/proc/modules

Dispositivos SCSI
Existen dos tipos de interfaces scsi, estas son
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
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 numeros llamados SCSI ID,
estos son:
1.El canal SCSI 2.El numero ID del dispositivo 3.Numero de unidad logica

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 numeros de identificacion van de 0 a 7 para las interfaces de
8 Bits y de 0 a 15 para las interfaces de 16 Bits

Numero de unidad logica


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

Deteccion de dispositivos SCSI


Todos los dispositivos SCSI son listados en el archivo
/proc/scsi/scsi

El cual contiene las caractersitcas de los dispositivos scsi que el equipo a detectado. Ejemplo:
Attacheddevices:

- 18 -

Host:scsi0Channel:00Id:00Lun:00
Vendor:ATAModel:ST3200820ASRev:3.AA
Type:DirectAccessANSISCSIrevision:05

Tarjetas de Red
Las tarjetas de red son el punto neuralgico de la comunicacion del equipo con el exterior y viceversa.
Para ello el kernel debera tener soporte para este tipo de dispositivos. Una forma de obtener
informacion referente a las tarjetas de red del sistema es haciendo uso de los siguientes comandos:
[BASH]#dmesg
[BASH]#lspci

Ejemplo:
[BASH]#dmesg
eth0:ADMtekCometrev17atMMIO0xdffffc00,00:02:2a:cb:10:2b,IRQ19.
[BASH]#lspci
01:0a.0Ethernetcontroller:ADMtekNC100NetworkEverywhereFastEthernet10/100(rev
11)

En el ejemplo podemos observar que la tarjeta de red cuenta con un chipset ADMtek , direccion de
entrada/salida 0xdffffc00 y solicitud de interrupcion (IRQ)19. Esta informacion puede ser usada si el
modulo asociado a la tarjeta de red comienza a entrar en conflictos con el kernel. Tambien es util si
se requiere insertar un modulo con una diferente direccion entrada/salida a travez del comando
modprobe.

Configuracion de impresoras
Aunque el tema de impresion es tratado mas a profundidad en el curso LPI 102 aqui daremos una
breve introduccion. Desde la perspectiva del hardware, las impresoras son detectadas
automaticamente por el equipo cuando este es encendido , asi mismo las impresoras detectadas
por el sistema son listadas en el archivo
/var/log/dmesg

La forma de gestionar impresoras en linux se puede hacer de dos metodos. El primero es mediante
una herramienta actualmente en desuso llamada printtool la cual proporciona un entorno grfico
para montar y gestionar impresoras, sin embargo este paquete ha desaparecido para la mayoria de
las distribuciones linux existentes. El segundo metodo es actualmente el mas implementado para la
mayoria de las distribuciones linux y este lleva por nombre CUPS. CUPS(Common Unix Printing
System) es un sistema de impresin modular para sistemas operativos de tipo Unix que permite que
un equipo acte como servidor de impresin.
Usualmente CUPS guarda todos sus archivos de configuracion en el archivo
/etc/cups

Y generalmente hace uso del puerto 631 para llevar a cabo la administracion de estos recursos

Tarjetas de Audio
Existen dos proyectos para el soporte de audio en linux , estos son:

OSS.OpenSoundSystem
ALSA.AdvancedLinuxSoundArchitecture

OSS (Open Sound System)


En efecto, OSS es un proyecto comercial que proporciona controladores de audio a otras
- 19 -

plataformas. El controlador libre paso a formar parte del proyecto Linux a partir de la version 2.0 del
kernel de linux

ALSA (Advanced Linux Sound Architecture)


Advanced Linux Sound Architecture es un componente del ncleo de Linux destinado a sustituir al
Open Sound Sistema Algunas de las metas de este proyecto desde su concepcin fueron la
configuracin automtica de tarjetas de sonido y el manejo de mltiples dispositivos de sonido en un
slo sistema, metas que han sido alcanzadas en su mayor parte.

Identificando las tarjetas de audio


Una forma usual de identificar las tarjetas de audio es haciendo uso del comando dmesg el cual nos
informa si el kernel de linux detecto alguna tarjeta de audio. Ejemplo:
[BASH]#dmesg|grepALSA
ALSAsound/pci/hda/hda_codec.c:3303:autoconfig:line_outs=4(0x14/0x15/0x16/0x17/0x0)
ALSAsound/pci/hda/hda_codec.c:3307:speaker_outs=0(0x0/0x0/0x0/0x0/0x0)
ALSAsound/pci/hda/hda_codec.c:3311:hp_outs=0(0x0/0x0/0x0/0x0/0x0)
ALSAsound/pci/hda/hda_codec.c:3312:mono:mono_out=0x0
ALSA sound/pci/hda/hda_codec.c:3320: inputs: mic=0x18, fmic=0x0, line=0x1a,
fline=0x0,cd=0x1c,aux=0x0

Administracion de tarjetas de audio


Una forma de administrar graficamente las tarjetas de audio en Linux es mediante la herramienta
alsamixer. alsamixer es un programa de mezclado de audio para la arquitectura de sonido de
Linux ALSA. Se utiliza para configurar el sonido y ajustar los volmenes. Tiene una interface para
usuarios basada en ncurses (modo texto) y no necesita del sistema X Window System. Soporta gran
variedad de placas de sonidos con dispositivos mltiples.
-h, -help

Ayuda: muestra las opciones disponibles.

-c <nmero de placa o Selecciona la placa de sonido a utilizar, si en el sistema existen ms de


identificacin>
-D

<identificacin

dispositivo>

una placa. Las placas se numeran desde 0 (por defecto).


de

Selecciona el mezclador para el control.

-g

Cambia el uso de colores.

-s

Minimiza la ventana del mezclador

-V <modo de vista>

Selecciona el modo de vista inicial, reproduccin, captura o todos.

Conociendo el Arranque de Linux


Sobre los Discos Duros
Un disco duro es un dispositivo de almacenamiento masivo de datos que a su vez tambin puede
tener instalado algn Sistema Operativo, as mismo 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

- 20 -

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 mas comunes se
encuentran las siguientes:
IDE-ATA (Integrated Drive Electronics)
SATA (Serial Advanced Technology Attachment)
SCSI generalmente usado en servidores

Tipos de Discos Duros


Como anteriormente mencionamos existen 3 tipos de discos duros:

Discos Duros IDE-ATA=


Los discos duros con esta denominacin hacen uso de una interfaz llamada IDE(Integrated Device
Electronics) ATA(Advanced Technology Attachment) que es la encargada de comunicar al Disco
Duro con la tarjeta madre. El estndar IDE-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-ATA.
Habitualmente, un disco duro IDE-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.
Este diseo IDE-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. En la siguiente
figura podemos observar un diagrama que muestra la forma en cual debe ser conectado un disco
duro IDE-ATA.

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 IDE-ATA, ademas 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

- 21 -

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.
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:
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.

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 una computadora mediante una tarjeta denominada
adaptador SCSI o controlador SCSI generalmente mediante un conector PCI. El nmero de
perifricos que se pueden conectar depende del ancho del bus SCSI. Con un bus de 8 bits, se
pueden conectar 8 unidades fsicas y con uno de 16 bits, 16 unidades.
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, una computadora
puede contener diversas tarjetas SCSI y, por lo tanto, a cada una le corresponde un nmero
diferente.

- 22 -

SCSI asimtrico y diferencial Existen dos tipos de bus SCSI:


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). El siguiente cuadro resume las caractersticas
de los diversos estndares SCSI

Configuracion de discos
En Linux, los discos fisicos son listados y representados dentro de la carpeta
/dev

Recordemos: Para ser identificados, el kernel les agrega un identificador el cual comienza con hd
para el caso de discos IDE o sd para el caso de discos PATA o SCSI. Adicionalmente a cada uno de
estos identificadores se les agrega una letra del alfabeto para identificar los discos maestros de los
esclavos.
- 23 -

Identificador del Disco Duro

Dispositivo Logico

hda

Maestro Primario

hdb

Esclavo Secundario

hdc

Maestro Secundario

hdd

Esclavo Secundario

sda

Primer Disco Sata o SCSI

sdb

Segundo Disco Sata o SCSI

Configuracion de Particiones
Asi como los discos duros son listados y representados, tambien las particiones correspondientes a
cada disco duro son representadas y listadas. Para ser identificados, el kernel le agrega un numero
al final de cada identificador para diferenciar de una particion primaria, logica o extendida.
NOTA:Los discos duros ATA y SATA permiten 4 particiones primarias, de las cuales 1
puede ser extendida.Las particiones extendidas pueden ser divididas en particiones
logicas y estas pueden tener un maximo de 64 particiones para discos ATA/SATA y 16
particiones para discos SCSI

Aplicaciones graficas para particionar discos duros


Existen aplicaciones libres como alternativas a las aplicaciones propietarias como es el caso del
Partitioning Magic, a continuacin se exponen 2 de las mejores:

Gparted
GParted es el editor de particiones de GNOME. Esta aplicacin es usada para crear, eliminar,
redimensionar, inspeccionar y copiar particiones, como tambin sistemas de archivos. Esto es til
para crear espacio para nuevos sistemas operativos, reorganizar el uso del disco y crear imgenes
de un disco en una particin. La aplicacin utiliza la librera libparted para detectar y manipular
dispositivos y tablas de particin, mientras varias herramientas de sistema de archivos dan
mantenimiento a sistemas de archivos no incluidos en libparted. Est escrito en C++ y utiliza gtkmm
como herramienta grfica. Este acercamento es para mantener la interfaz grfica de usuario lo ms
simple posible, conforme con las Human Interface Guidelines.
Gparted LiveCD Se encuentra disponible en LiveCD, basado en Slackware y construido sobre la
ltima rama estable ncleo de Linux (2.6). LiveCD es actualizado con cada lanzamiento de GParted.
El LiveCD de Ubuntu incluye esta aplicacin entre sus utilidades. Tambin se encuentra disponible
en versin LiveUSB. Cuando se carga LiveCD, se inicia una mini-distribucin que contiene las
siguientes aplicaciones:
Escritorio Xfce
Thunar como gestor de archivos
Una aplicacin para capturas de pantallas (por medio de Thunar se pueden guardan en un
pendrive)
Documentento de ayuda
GParted

- 24 -

Xfree86
Capacidades y limitaciones GParted no puede incrementar el tamao de las particiones sin existir
un espacio vaco despus de dicha particin, es decir, si existen dos particiones juntas no se podr
aumentar el tamao de una en detrimento de la otra; pero esto es ms bien una limitacin tcnica.
En esta tabla se muestran las capacidades de GParted, de acuerdo con cada sistema de archivos.
Si tu deseas probar esta aplicacin, la puedes descargar directamente de la pagina oficial del
proyecto
http://gparted.sourceforge.net

Parted Magic
Parte Magic es un LiveCD que incluye una distribucin Linux a medida para poder operar
directamente con ella sin necesidad de ser instalada en el disco duro. No estamos hablando solo de
un particionador de discos mas. En este LiveCD podemos encontrar varias herramientas entre ellas
un editor de particiones llamado VisParted basado en el genuino Gparted con la que podremos
crear, redimensionar y borrar nuestras particiones del disco duro. Parted Magic soporta los
siguientes sistemas de archivos: ext2, ext3, ext4, fat16, fat32, hfs, hfs+, jfs, linux-swap, ntfs, reiserfs,
reiser4 y xfs. Si tu deseas probar esta aplicacin, la puedes descargar directamente de la pagina
oficial del proyecto
http://partedmagic.com/

Formatear y particionar discos duros desde BASH


Formatear y particionar dispositivos de almacenamiento de datos como discos duros y memorias
USB es una tarea sencilla. Para ello usaremos tres herramientas, estas son:
dd
fdisk
mkfs

Dando formato de bajo nivel con dd


Esta herramienta sirve para dar formato de bajo nivel a un disco duro. La forma de implementar esta
herramienta es la siguiente:
[BASH] # dd if=/dev/zero

dd

of=/dev/sda

El comando dd (duplicate disk) es un comando bastante til para transferir datos desde
un dispositivo o archivo hacia otro dispositivo o archivo

if=/dev/ze if significa input file, es decir, lo que quieres copiar En el ejemplo de arriba llenaremos de
ro

ceros el disco duro

of=/dev/s of significa output file, o sea, el dispositivo o archivo destino donde se van a copiar los
da

datos.En el ejemplo de arriba nos referimos al disco duro

El proceso puede variar dependiendo del tamao de almacenamiento del disco duro o del tipo de
interfaz (IDE o SATA), por lo que tendra que ser paciente.

Particionando un disco duro con fdisk


Fdisk nos servira para agregar, eliminar, redimensionar o dar formato a un disco duro. La forma de
aplicar esta herramienta es la siguiente:
[BASH]#fdiskl/dev/sd[a,b,c]

- 25 -

sda,b,c Hace referencia al numero de disco duro al que se le aplicara esta herramienta
-l

Este parametro listara la tabla de particiones que contiene el Disco duro

La forma correcta de aplicar fdisk es de la siguiente manera:


[BASH]#fdisk/dev/sd[a,b,c]

La diferencia con el anterior comando radica en la forma en como fue implementado, pues en el
primer comando indicamos explicitamente que deseamos conocer las particiones anidadas en el
disco duro y con este ultimo estamos lanzando la aplicacion como tal. Una vez aplicado el comando
mostrara un mensaje como este:
Orden (m para obtener ayuda):

Prueba tecleando la letra 'm', esto desplegara un menu con las utilidades de esta aplicacion.:
OrdenAccin
aConmutaelindicadordeiniciable
bModificalaetiquetadediscobsd
cConmutaelindicadordecompatibilidadconDOS
dSuprimeunaparticin
lListalostiposdeparticionesconocidos
mImprimeestemen
nAadeunanuevaparticin
oCreaunanuevatabladeparticionesDOSvaca
pImprimelatabladeparticiones
qSalesinguardarloscambios
sCreaunanuevaetiquetadediscoSun
tCambiaelidentificadordesistemadeunaparticin
uCambialasunidadesdevisualizacin/entrada
vVerificalatabladeparticiones
wEscribelatablaeneldiscoysale
xFuncionesadicionales(sloparausuariosavanzados)

La forma de agregar una particion al disco duro sera tecleando la letra 'n' lo cual nos desplegara la
siguiente informacion:
Accindelaorden
eParticinextendida
pParticinprimaria(14)
p

solo habra que especificar si la particion a aadir sera primaria (p) o extendida (e).
NOTA:Los discos duros ATA y SATA permiten 4 particiones primarias, de las cuales 1
puede ser extendida. Las particiones extendidas pueden ser divididas en particiones
logicas y estas pueden tener un maximo de 64 particiones para discos ATA/SATA y 16
particiones para discos SCSI*
El siguiente paso sera especificar el tamao y numero de la particion a la cual haremos el cambio.
En el siguiente ejemplo crearemos una particion que ocupara todo el tamao del disco duro.
Nmerodeparticin(14):1
Primercilindro(11019,valorpredeterminado1):1
Lastcilindro,+cilindrosor+size{K,M,G}(11019,valorpredeterminado1019):1019

Si se quisiera asignar un tamao diferente para la particion tambien se podra hacer, Para ello
podemos hacer uso de las unidades KiloBytes,Megabytes o GigaBytes pero de manera abreviada
(K,M,G) Al terminar de aplicar lo cambios solo debera ejecutar la orden 'w' lo cual escribira los
cambios al disco duro.
Sehamodificadolatabladeparticiones!

- 26 -

Llamandoaioctl()paravolveraleerlatabladeparticiones.
Seestnsincronizandolosdiscos.

Dando formato a un disco duro con mkfs


Por ultimo solo restaria asignarle un formato a las particiones que creamos. Para ello haremos uso
de la herramienta mkfs, la cual debe ser aplicada segun la siguiente sintaxis
[BASH]#mkfs.[ext2|ext3|ext4|vfat|ntfs]/dev/sd[a,b,c][1,2,3]

Niveles de Ejecucion en Linux


El Proceso de arranque
El proceso de arranque de un sistema operativo Linux se inicializa de la siguiente manera: Cuando
usted enciende su servidor o su computadora personal, esta hace que el BIOS de su equipo inicie
las operaciones relacionadas con el arranque. El BIOS (Basic Input Output System) es un pequeo
programa escrito en lenguaje ensamblador cuya funcin es cargar el sistema operativo en la
memoria RAM (Random Access Memory), una vez que el BIOS carga el sistema operativo en RAM
este inicia un proceso llamado POST (Power On Self Test) el cual es un proceso de diagnostico y
verificacin de los componentes de entrada y salida de un servidor o computadora y se encarga de
configurar y diagnosticar el estado del hardware, una vez verificado el hardware se inicia la fase de
arranque del sistema (bootstrapping) el cual cede el control al GRUB (Grand Unified Bootloader), el
GRUB es un gestor de arranque que hace uso de un men grfico que permite elegir el Sistema
Operativo que se desea arrancar; As mismo, el GRUB realiza las siguientes tareas:
1.Cargar el kernel en memoria. 2.Cargar el sistema de archivos virtual initrd el cual es usado
tipicamente para hacer los arreglos necesarios antes de que el sistema de archivos raz pueda ser
montado 3.Pasarle los argumentos runlevel e init al kernel 4.Comenzar la ejecucin del kernel
Al terminar de ejecutar todas las tareas anteriores el GRUB le cede el control total del arranque al
kernel y este a su vez se encarga de realizar la llamada a la funcin starup la cual tiene como funcin
detectar el tipo de CPU con el que el equipo cuenta as como de lo principal del sistema operativo,
como el manejo de memoria, planificador de tareas, entradas y salidas, comunicacin interprocesos,
y dems sistemas de control, a partir de este momento se ejecuta el proceso INIT.

El Proceso INIT
INIT es el primer proceso en ejecutarse despues de la carga del kernel de linux e implementa dos
modelos bajo los cuales puede trabajar, estos son
1.SystemV 2.BSD
Estos modelos son arrancados por un programa (script) de arranque que establece como deben
inicializarse los diferentes servicios, programas o registros que sean necesarios para que el sistema
funcione como el administrador lo requiere. Explicaremos brevemente como es que trabajan estos
modelos

SystemV
Es un modelo usado para controlar el inicio y apagado del sistema y fue originalmente desarrollado
por la compaa estadounidense de telecomunicaciones AT&T. SystemV fue una de las versiones
del sistema operativo Unix que se encargaba de controlar el arranque de los programas en el
instante de inicio del equipo. Este modelo es considerado por muchos como facil, potente y flexible
- 27 -

en comparacion con el sistema de inicio BSD


Existen cuatro versiones release de SystemV (SVR) , las cuales son:
1.SVR1.-Primera version de SystemV lanzada en 1984, incluia el editor de textos Vi 2.SVR2.-Incluye
mejoras con respecto al nucleo el cual esta implementado como memoria virtual paginada, el
sistema operativo Apple esta basado en este modelo. 3.SVR3.-Incluye mejoras en el sistema de
archivos asi como una nueva API de red, el sistema operativo AIX de IBM hace uso de este modelo
4.SVR4.- Fue la versin ms popular de SVR asi como la fuente de varias caractersticas comunes
del sistema operativo Unix, como el script /etc/init.d
Niveles de Ejecucion
Los niveles de ejecucion en SystemV describen ciertos estados del equipo los cuales se
caracterizan por ejecutar ciertos procesos. En general existen 8 niveles de ejecucion los cuales van
del 0 al 6 y S o s, que son alias del mismo nivel de ejecucion, de estos ochos niveles, tres son
considerados reservados, estos son:
0.- Halt 1.-Single user mode 6.-Reboot
Aparte de los niveles de ejecucion 0,1 y 6 todos los sistemas operativos Linux tratan a los niveles de
ejecucion un poco diferente. El denominador comun de todas las distribuciones linux es el archivo
/etc/inittab

el cual define lo que hace cada nivel de ejecucion. A continuacion un ejemplo de cuantos niveles de
ejecucion tienen cada una de las distribuciones mas importantes de linux, asi como del sistema
operativo solaris y AIX.
En la mayoria de los sistemas operativos linux los usuarios pueden saber bajo que nivel de ejecucion
estan trabajando tecleando en una consola y como root lo siguiente:
[root@localhost]$runlevel
N5

Existen tambien los archivos llamados rcN.d en donde la letra N representa cada uno de los niveles
de ejecucion en los que trabaja init.d, la funcion de estos archivos se explicara mas a detalle en el
siguiente tema.

BSD
El modelo BSD init se ejecuta mediante el script de inicializacion situado en la ruta
/etc/rc

Algunos de los sistemas operativos que se basan en este modelo son los basados en BSD como:
FreeBSD
NetBSD
OpenBSD
DragonFlyBSD
DesktopBSD
PCBSD

El archivo init.d
En este archivo se encuentran todos los scripts encargados de levantar cada uno de los servicios
del servidor. La ubicacin de este archivo esta localizada en: Algunos de los servicios que podemos

- 28 -

encontrar en el archivo init.d son los referentes a:


Servidor Web Apache ---->httpd
Servidor Samba ----->smb
Servidor de Correo --->sendmail
Servidor DHCP ---->dhcpd
Servidor DNS ---->named
Manejador de Base de Datos MySQL ---->mysqld
[root@localhost~]#cd/etc/rc.d/init.d/
[root@localhostinit.d]#lsl
total428
rwxrxrx1rootroot2974jun2310:18dhcpd
.
.
.
rwxrxrx1rootroot3099feb252008httpd
rwxrxrx1rootroot4239mar32008mysqld
.
.
.
rwxrxr1rootroot6154ago605:05named
rwxrxrx1rootroot1745sep1810:26smb
rwxrxrx1rootroot4112mar292008sendmail

El archivo rcN.d
rcN.d es un conjunto de directorios que representan cada uno de los niveles de ejecucion del
sistema operativo. Estos directorios a su vez contienen un conjunto de enlaces simbolicos a los
scripts del directorio /etc/rc.d/init.d La funcion que desempean estos directorios es organizar la
manera en como los servicios de un servidor son levantados, como por ejemplo, imaginemos que
tenemos instalado un servidor Web apache, y que lo tenemos configurado para que trabaje en los
niveles de ejecucion 3 y 5 , por ende deberiamos poder observar dichos enlaces simbolicos en las
rutas:

/etc/rc.d/rc3.d
/etc/rc.d/rc5.d

Otra de las caracteristicas de estos enlaces simbolicos es la sintaxis de sus propiedades. Esta
sintaxis esta conformada por 3 parametros
1.El estado del servicio, los cuales son representados con dos variables:
La letra K.-Esta letra representa que el servicio esta dado de baja
La letra S.-Esta letra representa que el servicio esta dado de alta
1.El orden en el que es arrancado el servicio.- Este parametro indica el orden en el que los servicios
deben ser dados de alta o de baja 2.El nombre del servicio Un ejemplo de esto lo podemos observar
de la siguiente tabla, la cual la tomamos de la ruta /etc/rc.d/rc5.d, lo cual indica que los scripts dentro
de esta carpeta se ejecutan en el nivel de ejecucion 5 Los detalles del renglon subrayado se
explican a continuacion:

El archivo inittab
La ubicacin de este archivo la podemos localizar en:
El archivo inittab describe que procesos se inician en la carga asi como los scripts de inicializacion

- 29 -

del sistema, tambien distingue los multiples niveles de ejecucion bajo la cual trabaja el sistema
operativo, recordemos que los niveles de ejecucion validos son 8, de los cuales tres son reservados
y otro mas es alias de algun nivel en particular. De acuerdo a lo mostrado en la siguiente imagen
describiremos la funcion que desempea cada linea. Para ello usamos como ejemplo el archivo
inittab del sistema operativo Centos version 5.2
1.- Este recuadro nos indica los diferentes niveles de ejecucion bajo los cuales trabaja CentOS 5.2
2.-Este es el nivel de ejecucion en el cual arranca por defecto el equipo 3.-Aqui se especifica que
script de configuracion se debe cargar para el proceso de arranque del sistema 4.-Aqui se
especifican los scripts de arranque que el sistema utilizara para cada nivel de ejecucion o tambien
llamados runlevels 5.-Esta seccion controla el reseteo del sistema. Se puede comentar esta linea
para que no pueda ser reseteado el sistema 6.-Estas dos lineas estan relacionadas con las acciones
que deben de seguirse en caso de una falla de voltaje y la segunda indica que debe hacerse cuando
el voltaje ha sido restablecido. 7.-Lineas encargadas de controlar los procesos getty 8.-Esta linea
arranca el entorno grafico del sistema, las cuales pueden ser GNOME o KDE

El archivo rc.sysinit
Este archivo esta localizado en la siguiente ruta La funcion que desempea este archivo es ejecutar
una serie de scripts que inicializan tareas como:
Configuracion de reloj del sistema
Configuracion de los parametros del Kernel
Levantamiento de dispositivos RAID y LVM
Activacion y Actualizacion de cuotas en disco
Activacion de la particion SWAP

El archivo rc.local
Este archivo esta localizado en la siguiente ruta Este archivo es el utimo en ser ejecutado por el
proceso init. La funcion que tiene este script es agregar comandos que nos haga facil de realizar
tareas necesarias como arrancar servicios especiales o inicializar dispositivos sin tener que escribir
scripts complejos de inicializacion en el directorio /etc/rc.d/init.d ni creando enlaces simbolicos.

Niveles de Ejecucion
Los niveles de ejecucion o tambien llamados runlevels hacen referencia a los sistemas operativos
Linux que implementan el estilo de sistema de arranque de iniciacion tipo UNIX System V del cual ya
hemos hablando extensamente. A lo largo de este tema mencionamos 8 niveles de ejecucion bajo
los cuales trabajan algunos sistemas operativos linux, en especial los de la Familia Red Hat. A
continuacion mencionaremos las caracteristicas de cada uno de ellos.

Nivel 0 Parada Del Sistema


El nivel 0 es usado para especificarle al sistema que debe apagarse, la forma en que este lo hace es
a travez del comando halt. Al ejecutarse este comando se apagan todos los servicios que se
encuentren activos

Nivel 1 o S -Monousuario o Single User


El nivel 1 o tambien llamado nivel Single (S) solo puede ser iniciado por el administrador del sistema
(root), por lo que ningun usuario podra hacer eso de este nivel de ejecucion En este nivel no se
- 30 -

activan los servicios de Red, y tampoco se inician los procesos (daemons) de inicio por lo que
permite reparar problemas o hacer pruebas al sistema.

Nivel 2 -Multiusuario sin Red


Este nivel esta caracterizado por la capacidad de permitir que varios usuarios puedan entrar al
sistema pero sin contar con soporte en red, esto quiere decir que no se puede contar con servidores
como NFS o web.

Nivel 3 -Multiusuario con Red


Este sistema esta caracterizado por la capacidad de permitir a varios usuarios entrar al sistema, a
diferencia del nivel de ejecucion 2, este si cuenta con soporte de red.

Nivel 4. -Sin Uso


Para la mayoria de las distribuciones linux este nivel de ejecucion no tiene asignada ninguna
funcion, pero puede ser personalizado por el administrador para que cumpla con alguna funcion en
especial

Nivel 5. -Multiusuario Grafico


Este nivel de ejecucion es identico al nivel 3, la unica diferencia es el alta de entornos graficos como
GNOME o KDE para la administracion del sistema

Nivel 6. -Reinicio del Sistema

Comando chkconfig
Este comando es una herramienta util para levantar o desactivar servicios los cuales son aplicados
durante el arranque del equipo asi como tambien conocer el estado de los servicios que se estan
ejecutando.
Para conocer el estado de los procesos que estan corriendo en su sistema puede ejecutar el
siguiente comando
[root@localhost~]#chkconfiglist

Para conocer el status de algun proceso en particular solo teclee esto


[root@localhost~]#chkconfiglisthttpd
httpd0:desactivado1:desactivado2:desactivado3:desactivado
4:desactivado5:desactivado6:desactivado

Lo cual nos mostrara bajo que niveles de ejecucion esta corriendo el proceso o servicio.
Para levantar algun proceso o servicio durante el arranque del sistema solo teclee esto
[root@localhost~]#chkconfiglevel35httpdon

De esta manera estamos especificando el sistema que siempre que este inicie levante el servidor
web apache en los niveles de ejecucion 3 y 5
Para detener algun proceso o servicio durante el arranque del sistema solo teclee esto
[root@localhost~]#chkconfiglevel35httpdoff

De esta manera estamos especificando el sistema que siempre que este inicie tenga detenido el
servidor web apache en los niveles de ejecucion 3 y 5

Levantando, deteniendo y reiniciando servicios


Otra forma de levantar, detener o reiniciar servicios en caliente es mediante el uso del siguiente
comando el cual hace uso del archivo init.d del cual hemos hablado anteriormente. La estructura de
la sintaxis para poder ocupar el comando es la siguiente:

- 31 -

[root@localhost~]#/etc/init.d/nombreDelServicio{start|stop|status|restart|reload}

A manera de ejemplificar el uso del anterior comando haremos lo siguiente.


Supongamos que tenemos ya instalado y configurado un servidor web apache y lo unico que falta es
levantar el servicio, para ello solo bastara teclear lo siguiente:
[root@localhost~]#/etc/init.d/httpdstart

Para detener este mismo servicio solo debemos cambiar la palabra start por stop
[root@localhost~]#/etc/init.d/httpdstop

De igual manera si se quiere reiniciar el servicio solo debemos cambiar la palabra stop por restart
[root@localhost~]#/etc/init.d/httpdrestart

Otra manera de arrancar, detener o reiniciar servicios sin necesidad de teclear toda la ruta anterior
es mediante el uso de un alias el cual tiene la siguiente sintaxis
[root@localhost~]#servicehttpd{start|stop|status|restart|reload}

De igual forma solo debemos teclear start, stop o restar segn sea el caso Ejemplo:
[root@localhost~]#servicehttpdstart

Manejo de Paquetes
Introduccion a la gestion e instalacion de software
Instalar, actualizar o eliminar software en sistemas operativos linux diferira de la forma en como
usted lo hacia en sistemas operativos Windows o Mac, esto es debido a que la mayoria de las
aplicaciones desarrolladas para Linux no cuentan con un asistente de instalacion, en cambio, usted
tendra que aprender a aplicar una serie de comandos en su equipo para poder llevar a cabo tareas
de administracion y de gestion de paquetes. La forma en que usted llevara a cabo esta
administracion y gestion de paquetes sera mediante el uso de las siguientes herramientas
Yellow dog Updater Modified (YUM) es una herramienta de software libre de gestin de
yum

paquetes para sistemas Linux basados en RPM, fue desarrollada principalmente para
actualizar y controlar los sistemas Red Hat, Fedora, CentOS, y otras distribuciones de
GNU/Linux basadas en RPM, incluyendo el mismo Yellow Dog.
Red Hat Package Manager (RPM), es una herramienta de administracin de paquetes. Es
capaz de instalar, actualizar, desinstalar, verificar y solicitar programas. Originalmente

rpm

desarrollado por Red Hat para Red Hat Linux, en la actualidad muchas distribuciones
GNU/Linux lo usan, dentro de las cuales las ms destacadas son Fedora Linux, Mandriva
Linux, SuSE Linux. Tambin se ha portado a otros sistemas operativos.
Advanced Packaging Tool (APT) , es un sistema de gestin de paquetes creado por el

apt

proyecto Debian. APT simplifica en gran medida la instalacin y eliminacin de programas


en los sistemas GNU/Linux.
aptitude es una interfaz para APT. Muestra una lista de paquetes de software y permite al

aptitude

usuario elegir de modo interactivo cules desea instalar o eliminar. Dispone de un


poderoso sistema de bsqueda que utiliza patrones de bsqueda flexibles, que facilitan al
usuario entender las complejas relaciones de dependencia que puedan existir entre los

- 32 -

paquetes. En un principio, se dise para distribuciones GNU/Linux Debian, pero hoy da


se utiliza tambin en distribuciones basadas en paquetes RPM, como Mandriva.
dpkg

El programa dpkg es la base del sistema de gestin de paquetes de Debian GNU/Linux.


Se utiliza para instalar, quitar, y proporcionar informacin sobre los paquetes .deb.

Herramienta RPM
RPM (Red Hat Package Manager) es una herramienta de administracion y gestion de paquetes
orientada para sistemas operativos Linux, la cual es capaz de instalar, actualizar, desinstalar y
verificar paquetes. Los paquetes RPM fueron originalmente desarrollados por la empresa Red Hat
con la intencion de implementarlo en el sistema operativo Red Hat Linux. Actualmente los paquetes
RPM son utilizados por distribuciones linux como Fedora, Centos, Suse y White Box.
Comando

Comentario

rpm -ivh paquete1.rpm

Te permite instalar paquetes .rpm

rpm -Uvh paquete1.rpm

Te permite actualizar paquetes .rpm

rpm -e nombreDelPaquete

Te permite eliminar un paquete

No hay que aadir la extensin, sino slamente el nombre del paquete, sin la estensin RPM.
Generalmente, se comienza por listar el paquete para conocer el nombre del mismo antes de
desinstalarlo asi como tambien para asegurarse de que el paquete est instalado en nuestro
sistema. rpm -q nombreDelPaquete Nos permite conocer si un paquete se encuentra instalado o no
en el equipo rpm -qa | grep nombreDelPaquete Realiza una busqueda mas profunda sobre los
paquetes que tenemos instalados o no en el equipo.

Herramienta YUM
Comando
yum install paquete1
paquete2 ...paqueteN
yum update paquete1
paquete2 ...paqueteN
yum remove paquete1
paquete2 .. paqueteN
yum update
yum update --exclude=ekiga

Comentario
Instala paquetes con sus dependencias
Te permite actualizar paquetes junto con sus dependencias
Te permite eliminar paquetes junto con sus dependencias
Actualiza e instala todos los paquetes del sistema operativo
Actualiza e instala los paquetes del sistema operativo, solo excluye
el definido en la opcion --exclude
Nos ofrece un listado de resultados de los paquetes producto de la

yum search paquete1

bsqueda por coincidencia de cadena de caracteres en la


descripcin, resumen y nombre del paquete

yum info paquete1

Nos ofrece informacion detallada sobre algun paquete

- 33 -

yum repolist enabled

Nos permite conocer los repositorios que se encuentran habilitados

yum localinstall paquete1.rpm Te permite instalar paquetes RPM


yum localupdate paquete1.rpm Te permite actualizar un paquete RPM
yum list installed

Lista todos los paquetes instalados en el sistema

yum list available

Lista los paquetes que pueden ser instalados

yum list updates

Lista los paquetes que pueden ser actualizados

yum grouplist

Lista por grupos los paquetes instalados

yum groupinfo
"nombreDelGrupo"
yum groupinstall
"nombreDelGrupo"
yum groupupdate
"nombreDelGrupo"
yum groupremove "KDE (K
Desktop Environment)"

Obtiene informacin de los grupos y de sus paquetes constitutivos


Instala un grupo de aplicaciones
Actualiza un grupo de aplicaciones
Elimina un grupo de aplicaciones.

Configuracin de YUM
La configuracin general de YUM se encuentra en
/etc/yum.conf

los repositorios YUM configurados en sistemas operativos de la familia Red Hat se encuentran
declarados en
/etc/yum.repos.d/

Para usos ms avanzados agregaremos nuevas secciones y en caso de no encontrar lo que busca
consulte man yum.conf.
[main]
cachedir=/var/cache/yum
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
metadata_expire=1800
installonly_limit=2
tsflasg=repackage
#PUTYOURREPOSHEREORINseparatefilesnamedfile.repo
#in/etc/yum.repos.d

La primera cosa que podemos notar de los archivos de configuracin es su estructura de bloques de
secciones con seccin. Veremos que esta estructura se repite al momento de configurar los
repositorios. En este caso yum.conf en la seccin main define el comportamiento general de yum y
establece las directivas base, por ejemplo, de dnde se encuentran el cache. Comentamos a abajo
- 34 -

un poco cada una de las directivas.


cachedir
Directorio donde yum debe almacenar su cache y archivos db. El valor por omisin es
/var/cache/yum.
keepcache
Ya sea 1 o 0. Determina si yum debe o no mantener el cache de los encabezados y paquetes
despus de una instalacin exitosa. Valor por omisin es 1 (mantener los archivos)
debuglevel
Nivel de mensajes de depuracin en la salida. El rango prctico es de 0-10. El valor por omisin es
2.
logfile
Ruta completa al nombre de archivo donde yum debe escribir sus actividades.
exactarch
Ya sea 1 o 0. Puesto a 1 provoca que yum update solo actualice los paquete de arquitectura que
haya instalado, es decir, con esta opcin habilitada yum no instalar un paquete i686 para actualziar
un paquete i386. Por omisin el valor es 1.
obsoletes
Esta opcin slo tiene efecto durante una actualizacin. Habilita la lgica de procesamiento de
obsolescencias yum. Es til cuando se realiza actualizaciones de nivel de distribucin (upgrade).
Vea tambin la documentacin del comando yum upgrade para ms detalles. Opcin en la lnea de
comando: --obsoletes
gpgcheck
Ya sea 1 o 0. Esto le indica a yum si debe o no realizar una verficacin de firma GPG en los
paquetes. Cuando est habilitado en la seccin main, establece el comportamiento por omisin para
todos los repositorios. Esta opcin tambin determina si una instalacin de un archivo local RPM
ser verificado por su firma GPG o no. El valor por omisin es 0.
plugins
Ya sea 0 o 1. Conmutador global para habilitar o deshabilitar las extensiones (plugins) de yum.
Por omisin su valor es 0 (extensiones deshabilitadas). Vea la seccin PLUGINS del manual
yum(8) para ms informacin acerca de la instalacin de extensiones yum.
metadata_expire
Duracin en segundos despus del cual los metadatos caducarn. As entonces si los metadatos
actuales descargados son menos segundos de antiguo, entonces yum no actualizar dichos
metadatos a partir del repositorio. Si encuentra que yum no est descargando la informacin para
actualizaciones tan frecuente como usted quisiera, disminuya el valor de este parmetro. Tambin
puede cambiar del formato por omisin en segundos a das, horas o minutos agregando d, h o m
respectivamente al valor especificado. El valor por omisin es 1.5 hours, para complementar yumupdatesd ejecutndose una vez por hora. Tambin es posible usar la palabra "never" implicando que
los metadatos nunca expirarn.
installonly_limit

- 35 -

Cantidad de paquetes listados en installonlypkgs que se deben mantener instalados al mismo


tiempo. Poner este valor a 0 deshabilita la funcionalidad. Por omisin el valor es 3.
tsflasg
Lista separado por comas o espacios de banderas de transaccin que sern pasadas a rpm. Estas
incluyen noscripts, notriggers, nodocs, test, y repackage. Puede poner todas o cualquiera de
ellas. Sin embargo, si no sabe qu hacen stas banderas en el contexto de una transaccin rpm,
mejor no toque. Por omisin la lista est vaca. Estas son slo algunas directivas, para ms, man
yum.conf. Dentro de yum.conf puede incluir la configuracin de los repositorios pero esa forma de
configuracine est en desuso y se prefiere utilizar archivos individuales en /etc/yum.repos.d/ que
comentaremos ms adelante.

Extensiones de YUM
downloadonly
Este paquete nos permite descargar los paquetes RPM de alguna aplicacin sin que estos sean
instalados. La forma de instalar esta herramienta sera tecleando lo siguiente ..
[BASH]#yuminstallyumdownloadonly

Implementando downloadonly======
La manera de usar este comando es de la siguiente forma..
[BASH]#yuminstalldownloadonlypaquete1

fastestmirror
Esta extensin est diseada para ordenar la lista de espejos por velocidad de respuestas de cada
uno antes de comenzar una descarga. La forma de instalar esta herramienta sera tecleando lo
siguiente ..
[BASH]#yuminstallyumfastestmirror

Implementando downloadonly======
La manera de usar este comando es de la siguiente forma..
[BASH]#yuminstallpaquete1

Utilidades YUM
yumdownloader
Esta herramienta complementa al plugin downloadonly ya que dicho plugin slo funciona si el
software deseado no est instalado. Veamos como falla y cmo podemos resolver este problema
con yumdownloader.
[BASH]#yumdownloadonlyinstallopensshserver
Loading"downloadonly"plugin
SettingupInstallProcess
Settinguprepositories
Readingrepositorymetadatainfromlocalfiles
Parsingpackageinstallarguments
Nothingtodo

Pues claro, no hay nada que instalar, ya est instalado. Intentemos ahora con yumdownloader.
[BASH]#yumdownloaderopensshserver
opensshserver4.3p219.f100%|=========================|252kB00:01

Listo, ya tenemos el rpm que queramos.


package-cleanup Esta herramienta ayuda a detectar problemas en la base de datos rpm y a
- 36 -

resolverlos.
Comando

Comentario

package-cleanup

Lista paquetes hurfanos o aquellos paquetes que no son provistos por

--orphans

ninguno de los repositorios configurados

package-cleanup
--dupes
package-cleanup
--problems

Lista los paquetes con duplicados en la base de datos RPM


Lista los problemas de dependencias en la base de datos RPM

yum-complete-transaction yum-complete-transaction es un program que busca transacciones


yum incompletas o abortadas en el sistema e intenta completarlas. Busca en los archivos
transaction-all* y transaction-done* que normalmente se encuentran en /var/lib/yum si una
transaccin ha sido abortada en el medio de su ejecucin. Si se encuentra ms de una transaccin
no terminada se intentar completar la ms reciente primero. Puede ejecutar este programa ms de
una vez para limpiar todas las transacciones sin terminar. Ejemplo..
[BASH]# yum-complete-transaction

Herramienta DPKG
Comando
dpkg -i
paquete1.deb
dpkg -i *.deb
dpkg -r
paquete1.deb
dpkg --purge
paquete1.deb
dpkg -l
paquete1.deb
dpkg --info
paquete1.deb
dpkg --status
paquete1.deb
dpkg --search
paquete1.deb
dpkg help

Comentario
Te permite instalar paquetes deb.
Te permite instalar varios paquetes deb.
Borra paquete instalado en el sistemas.
Borra paquete instalado sin dejar rastro.
Hace bsquedas en SO de los paquetes ya instalados.
Muestra la informacin del paquete.
Muestra el estado del paquete.
Muestra la informacin de donde se instalo el paquete.
Obtienes la ayuda del comando dpkg.

dpkg --configure Ayuda arreglar a terminar de configurar paquetes rotos o que no se terminaron
-a

de instalar, se ocupa solo en emergencias cuando las herramientas avanzadas

- 37 -

no pueden solucionar el problema.

Herramienta APTITUDE
Comando

Comentario

aptitude install
paquete1
aptitude remove
paquete1
aptitude purge
paquete1
aptitude hold
paquete1
aptitude unhold
paquete1

Instala paquete y con las dependencias que tenga.


Borra paquete y sus dependencias pero no las configuraciones.
Borra paquete, sus dependencias y archivos de configuracin.
Bloquea paquete, para que no sean actualizados o eliminados.
Desbloquea paquete.

aptitude update

Actualiza lista de paquetes nuevos.

aptitude upgrade

Actualiza los paquetes que tengamos instalados en nuestro sistema.

aptitude dist-upgrade Actualiza SO a la nueva versin de la misma.


aptitude search
paquete1
aptitude show
paquete1
aptitude clean
aptitude autoclean

Busca paquetes por nombre o expresin.


Muestra informacin detallada de un paquete.
Elimina los archivo de paquetes descargados.
Elimina los archivos de paquetes descargados, como tambin limpia las
llaves de los repositorios.

Herramienta APT
Comando

Comentario

apt-get update

Actualiza la lista de paquetes.

apt-get upgrade

Actualiza los paquetes de la SO.

apt-get install paquete1

Instala paquetes y con sus dependencias.

apt-get install --reinstall


paquete1
apt-get -f install
apt-get remove paquete1

Reinstala paquetes daados.


Instala/borra paquetes y dependencias que esten o sin cumplir
paquetes.
Borra paquete y sus dependencias.

- 38 -

apt-get remove purge


paquete1

Borra paquete, sus dependencias y archivos de configuracin.

apt-get dist-upgrade

Actualiza distribucin a la mas reciente.

apt-get clean

Elimina paquetes descargados.

apt-get autoclean

Elimina paquetes descargados, tambin borra cabeceras de


repositorios.

apt-get check

Verifica que hay dependencias o paquetes .

apt-cache search paquete1

Busca paquete o una cadena de texto.

apt-cache showpkg

Muestra informacin sobre el paquete.

apt-cache dumpavail

Muestra informacin sobre los paquetes que estan disponibles.

apt-cache pkgnames

Muestra una lista rpida de todos los paquetes del sistema.

apt-get autoremove

Borra paquetes ya obsoletos o no necesarios.

Manejo de comandos
Sobre SHELL
El shell es una interprete de comandos diseado especificamente para sistemas operativos Unix y
derivados como Linux y BSD, su principal funcion es la de servir como puente entre los usuarios y el
hardare fisico de un equipo; Por puente me refiero a que el shell se encargara de interpretar y
traducir los comandos en un lenguaje que pueda ser entendido por el hardware del equipo. El
trmino shell tambin hace referencia a un programa particular, tal como el Bourne shell o BASH. El
BASH fue el shell usado en las primeras versiones de los sistemas operativos Unix , posteriormente
paso a convertirse en estandar para todos los sistemas operativos Linux

El Ambiente Linux
Para que entiendas lo que es y como funciona el Shell, primero te mostrar como funciona el
ambiente en capas. Para ello analizaremos la siguiente imagen.
En este grfico se ve que la capa del hardware es la mas profunda y se encuentra conformada por
los componentes fsicos de tu equipo. Envolviendo a sta, viene la capa del kernel que es el corazn
de Linux, su ncleo, y es quien hace que el hardware funcione, efectuando su manejo y control. Los
programas y comandos que envuelven el kernel, lo utilizan para realizar las tareas especificas para
las cuales fueron desarrolladas. Encerrando todo eso viene el Shell que tiene este nombre porque en
ingles, Shell significa concha, envoltura, o sea que, queda entre los usuarios y el sistema operativo,
de forma que todo lo que interacciona con el sistema operativo, tiene que pasar por su filtro.

Algunas variantes del SHELL


Bourne Shell (sh)
Desarrollado por Stephen Bourne de la Bell Labs (de AT&T donde tambin fue desarrollado el Unix),
este fue durante muchos aos el Shell patrn del sistema operativo Unix. Es tambin llamado de
Standard Shell por haber sido durante varios aos, el nico y hasta hoy es el mas utilizado ya que

- 39 -

fue transportado para todos los ambientes Unix y distribuciones Linux.

Korn Shell (ksh)


Desarrollado por David Korn, tambin de la Bell Labs, es un superconjunto del sh, o sea, posee
todas las facilidades del sh y a ellas se agregaron muchas otras. La compatibilidade total con el sh
esta atrayendo a muchos usuarios y programadores de Shell para este ambiente.

Boune Again Shell (bash)


Este es el Shell mas moderno y cuyo nmero de adeptos crece mas en todo el mundo, sea por ser el
Shell default de Linux, su sistema operativo natural, o sea por su gran diversidad de comandos, que
incorpora inclusive diversas instrucciones caractersticas del C Shell.

CShell (csh)
Desarrollado por Bill Joy de la Berkley University es el Shell mas utilizado en ambientes *BSD e
Xenix. La estrutura de sus comandos es bastante similar al del lenguage C. Su gran pecado fue
ignorar la compatibilidad con el sh, partiendo por un camino propio. Adems de estos Shells existen
otros, pero contigo voy a hablar solamente sobre los tres primeros, tratandolos genricamente por
Shell y sealando las peculiaridades de cada uno que eventualmente tengan.

Introduccion a BASH
Conociendo el SHELL de nuestro equipo
Una forma de conocer sobre cual SHELL estamos trabajando es tecleando el siguiente comando en
una terminal
#echo$SHELL
/bin/bash

Si obtuviste el mismo resultado que en la linea de ariba entonces estas utilizando el Shell Bash, en
caso contrario de no haber obtenido lo mismo, significa entonces que tu estas usando algun otro
Shell.

Usando el comando cd
current working directory o cd es el comando utilizado para indicar al Shell el directorio en el cual
queremos trabajar. Hagamos una prueba de este comando navegando en nuestro propio sistema de
archivos. En la terminal teclee lo siguiente:
[BASH]#cd/

Este comando le indica al BASH que queremos trabajar en el directorio /, tambien conocido como
raiz

Rutas (Paths)
Para conocer el directorio actual de trabajo en el que se encuentra el BASH escriba:
[BASH]#pwd
/

En el ejemplo anterior , el argumento / es conocido como la ruta o camino hacia donde queremos
dirigirnos. En particular, el argumento / es un ruta absoluta

Rutas Absolutas
Algunos ejemplos de rutas absolutas son las siguientes:
/boot
/etc
/root

- 40 -

/usr/local/bin

Note que todas estas rutas absolutas tienen un comun denominador, nos referimos a la barra /
Analicemos a detalle la ultima linea del ejemplo: Si usted teclea cd /usr/local/bin En ella
indicamos al Shell a traves del comando cd (current working directory) que primero entre al
directorio / , desde ahi luego entrara al directorio usr posteriormente al directorio local y recien desde
ahi entrara a bin. Las rutas absolutas siempre comenzaran a evaluarse a partir de /.

Rutas Relativas
Las rutas relativas son todas aquellas que no comienzan a evaluarse desde / Por ejemplo, si
estamos trabajando en la ruta /usr
[BASH]#cd/usr

Entonces, ahora usted podra usar una ruta relativa para cambiar el directorio actual de trabajo a
/usr/local/bin de la siguiente forma:
[BASH]#cdlocal/bin
[BASH]#pwd
/usr/local/bin

Usando el . . (punto a punto)


El uso del . . sirve unicamente para regresar un nivel desde el directorio de trabajo en el cual
estamos trabajando. Ejemplo:
[BASH]#cd/usr/local/bin
[BASH]#pwd
/usr/local/bin
[BASH]#cd../../
[BASH]#pwd
/usr

En la primera seccion del ejemplo indicamos a traves del comando cd (current working directory)
que primero entre al directorio / , desde ahi luego entrara al directorio usr posteriormente al directorio
local y recien desde ahi entrara a bin. En la segunda seccion del ejemplo indicamos mediante el uso
del (../) punto punto que regrese un nivel, pero inmediatamente indicamos nuevamente que
retroceda otro nivel mas (../) Por cada retorno de nivel debera hacerse uso del (..) punto punto

Entendiendo el . (punto)
El uso del punto (. ) sirve para ejecutar algn programa situado en el directorio actual. Ejemplo :
[BASH]# ./ejecutable

En este ejemplo, se ejecutara el archivo llamado ejecutable que reside en el directorio actual de
trabajo.

Usando los comandos de Linux


El comando ls
Vamos a darle una pequea mirada al comando ls, el cual, ya conozca tal vez, pero por si no lo sabe
, este sirve para listar el contenido del directorio actual de trabajo. Hagamos un ejercicio, con ayuda
del comando cd muevase al directorio de trabajo /var
[BASH]#cd/var

Ahora con ayuda del comando ls liste el contenido de dicho directorio


[BASH]#ls
X11R6cachecrashgamesliblocklogmailoptrunspooltmp

Si al comando ls le agregamos el parametro -a nos listara todos los archivos del directorio
- 41 -

incluyendo los archivos ocultos.Los archivos ocultos son indentidicados por llevar un punto (.) al
princio del nombre del archivo. Ejemplo:
[BASH]#lsa
.emacs.gvfs.pulse.wapi

Para realizar un listado completo sobre la informacion de algun directorio basta con agregar al
comando ls el parametro -l Nuevamente con ayuda del comando cd muevase al directorio de
trabajo /var, pero esta vez use el comando ls junto el parametro -l y compare sus resultados con el
primer ejemplo
[BASH]#cd/var
[BASH]#lsl
total52
drwxrxrx11rootroot4096jun904:59adm
drwxrxrx19rootroot4096jun911:28cache
drwxrwxrwt2rootroot4096dic32008crash
drwxrxrx2rootroot4096dic92008games
drwxrxrx41rootroot4096jun911:28lib
drwxrwxrt6rootuucp4096jun1711:40lock
drwxrxrx13rootroot4096jun1615:38log
lrwxrwxrwx1rootroot10jun904:46mail>spool/mail
drwxrxrx2rootroot4096dic32008opt
drwxrxrx25rootroot4096jun1711:40run
drwxrxrx12rootroot4096jun904:49spool
drwxrwxrwt8rootroot4096jun1710:44tmp
drwxrxrx3rootroot4096dic92008X11R6
drwxrxrx3rootroot4096dic92008yp

La opcion -l le resultara de gran utilidad cuando quiera ver informacion sobre permisos, tiempos de
modificacion, tamao o propiedad de los contenidos listados.
De forma mas detallada, la primer columna muestra la informacion sobre los permisos para cada
elemento listado. La columna siguiente lista el numero de links para cada objeto del sistema de
archivos. La tercer y cuarta columna listan el propietario del elemento, y el grupo al cual pertenece,
respectivamente. La quinta muestra el tamao de los objetos, mientras que la sexta lista cuando fue
realizada la ultima modificacion del objeto . La ultima columna es el nombre del objeto. Si el archivo
es un enlace simbolico, entonces usted ver una flecha --> y la ruta hacia la cual el link simbolico
apunta. En el capitulo 7 veremos mas a fondo este comando

Comodines
Los comodines son caracteres que se utilizan en lugar de otros caracteres que el sistema rellena.
Los dos comodines ms frecuentes son:
El asterisco *
La interrogacin ?
Aunque en ocasiones se confundan, su significado es diferente y producirn resultados totalmente
distintos. El asterisco significa ninguno, alguno o todos los caracteres: Ejemplo:
[BASH]#lse*
ededusat.txtxito.pdfeduardo.gifeducacion

Este comando mostrar todas las entradas de archivos o directorios dentro del directorio actual que
comiencen con la letra e, y que tengan cualquier nmero de caracteres. Hay que prestar atencin a
que el comando encuentra la e sola y la e seguida de cualquier nmero de caracteres a
continuacin. En contraste, la interrogacin (?) es un contenedor para un y slo un carcter.

- 42 -

Utilizando las mismas posibilidades que antes, el comando:


[BASH]#lse?
ed

Encontrar entradas de archivos y directorios dentro del directorio actual que comiencen por la letra
s y que nicamente tengan una letra ms. Si quisisemos encontrar las entradas que comiencen
por e y cuyo nombre tenga 5 caracteres en total, utilizaramos:
[BASH]#lse????

En resumen, el asterisco significa todos o ninguno, y el interrogante siempre significa uno. Estos dos
comodines no son excluyentes, de modo que se pueden combinar segn las necesidades. Por
ejemplo, para encontrar slo los archivos que tengan una extensin de tres letras dentro del
directorio actual, utilizaremos:
[BASH]#ls*.???

Para complicar un poco ms las cosas tambin podemos utilizar los corchetes ( ) para especificar
posibles valores. Todos los valores posibles deben estar dentro de los corchetes, y el shell los
tratar individualmente: En el siguiente ejemplo encontrar todas las entradas que comiencen por
d o por e y que contengan un nmero ilimitado de caracteres.
[BASH]#ls[de]*

Para encontrar las entradas de longitud de 3 caracteres que comiencen por d o por e,
utilizaremos:
[BASH]#ls[de]???

El nmero de caracteres que podemos incluir dentro de los corchetes es tericamente ilimitado. Sin
embargo, si lo que queremos es encontrar todas las entradas que comiencen por una letra
minscula pero no por un nmero u otro carcter, podemos utilizar abcdefghijklmnopqrstuvwxyz.
Debido a que esto es un rango, una forma mucho ms simple de obtener el mismo resultado es
poniendo:
[BASH]#ls[az]???

Los rangos no tienen que ser series completas de nmeros o caracteres, podemos expresar
subconjuntos de ellos. Por ejemplo, si queremos buscar entradas que comiencen por alguna letra
entre la d y la t, podemos utilizar indistintamente defghijklmnopqrst o d-t. Si la entrada puede
comenzar por esas letras tanto en maysculas como en minsculas, podemos usar
DEFGHIJKLMNOPQRSTdefghijklmnopqrst o D-Td-t .

El comando mkdir
Vamos a darle una pequea mirada ahora al comando mkdir. La funcion de este comando es la de
crear nuevos directorios. Ejemplo:
[BASH]#mkdir
agenda.emacs.gvfs.pulse.wapi

Por defecto, el comando mkdir no crea directorios padre; la ruta completa hasta el anteultimo
elemento debe existir previamente. De esta manera, si quiere crear los directorios
principal/secundario/ultimo tendra que crearlos uno a uno.
[BASH]#mkdirprincipal/secundario/ultimo
mkdir:nosepuedecreareldirectorio"principal/secundario/ultimo":Nosuchfileor

- 43 -

directory
[BASH]#mkdirprincipal
[BASH]#mkdirprincipal/secundario
[BASH]#mkdirprincipal/secundario/ultimo

Sin embargo, mkdir tiene la opcion -p la cual puede crear una rama de directorios en un solo paso
[BASH]#mkdirpprincipal/secundario/ultimo

Para obtener mas informacion sobre el comando mkdir escriba


[BASH]#manmkdir

comando touch
Touch es un comando que sirve para crear archivos sin contenido
[BASH]#toucharchivo1

comando echo
Ahora que el archivo existe, le agregaremos algunos datos. Esto podemos hacerlo mediante el
comando echo , que toma sus argumentos y los imprime en la salida est ndar (standard output).
Probemos como funciona el comando echo
[BASH]#echo"HELLOLINUX"

Ejecutemos ahora el mismo comando pero ahora redireccionando su salida al archivo vacio que
creamos en el punto anterior.
[BASH]#echo"HELLOLINUX">archivo1

El signo mayor (>) le dice al BASH que escriba la salida de echo a un archivo llamado archivo1.

comando cat y cp
Para ver los contenidos de un archivo en una terminal, use el comando cat:
[BASH]#catarchivo1HELLOLINUX

Bien,ahora podemos hacer uso del comando cp para crear una copia del archivo nombrado
archivo1
[BASH]#cparchivo1copiadearchivo1

comando mv
Usemos ahora el comando mv para renombrar archivo1 a nuevoarchivo1.
[BASH]#mvarchivo1nuevoarchivo1

Veamos otra manera de usar el comando mv, ya que este comando, ademas de permitirnos
renombrar archivos, nos permite mover uno o mas archivos hacia otra ubicacion. Por ejemplo, para
mover archivo1 a /var/ escribira
[BASH]#mvarchivo1/var/

Procesando cadenas de texto usando filtros


En este capitulo cubriremos los temas referentes a las herramientas comunmente implementadas en
los procesadores de textos disponibles para Linux stas incluyen diversas utilidades de filtrado, que
se usan para buscar y cambiar archivos, as como las herramientas de entrada y salida. Es
necesario comprender el uso de estas herramientas, debido a que son especialmente tiles en las
labores administrativas diarias.

Listando el contenido de un archivo


En en capitulo 6.5.6 hablamos un poco sobre el comando cat, el cual como mencionamos es un
- 44 -

comando muy usado para listar los contenidos de archivos de configuracion. La sintaxis para usar
este comando es la siguiente:
[BASH]#catnombreDelArchivo

Ordenando lineas de un archivo con Sort


Sort nos permite ordenar los registros o lneas de uno o ms archivos. Se usa para ordenar, mezclar,
y comparar lneas de archivos. Este comando sigue la siguiente sintaxis:
[BASH]#sortopcionesnombreDelArchivo

Opciones

Descripcion

-b

Ignora espacios en blanco

-c

Revisa si el archivo esta ordenado

-d

Considera solo los caracteres alfanumericos y ordena por directorio de telefono

-f

Este parmetro nos sirve para indicar que las maysculas y las minsculas se van a
tratar de forma diferente y que por tanto se va a seguir un ordenamiento alfabtico

-m

Une los archivos ya ordenados sin reordenarlos

-M

Compara archivos ordenado

-n

Este parmetro nos sirve para ordenar los campos numricos por su valor numrico

-o FILE

Escribe en un archivo especfico de salida en lugar de la salida estndar

-r

Nos permite realizar una ordenacin inversa, es decir, de mayor a menor.

-u

Nos permite suprimir todas las lneas repetidas despus de realizar la ordenacin.

-k numero

De este modo especificaremos por qu columna o campo vamos a realizar la


ordenacin en las versiones ms recientes de Linux.
Normalmente, se usa como delimitador de campos el espacio en blanco. Podemos

- - field

utilizar el parmetro --field-separator para indicar que vamos a usar otro delimitador

-separator

de campo cualquiera. Ej: --field-separator=, La opcin abreviada de --field-separator


es -t.

- -help

Muestra la ayuda y salida

- -version

Muestra versin y salida

Ejemplo: Cremos un archivo de texto llamado lista con el siguiente contenido:


[BASH]#vilista

3
centos
7
RedHat
debian
13
NovellInc
edubuntu
27

- 45 -

Canonical
fedora
32

Al terminal, ejecute la siguiente orden:


[BASH]#sortlista

Observe el resultado, por defecto, se ordena la lista por orden numrico seguido de orden alfabtico,
con maysculas antes que las minsculas.
13
27
3
32
7
Canonical
centos
debian
edubuntu
fedora
NovellInc
RedHat

Genere los siguientes archivos


Al terminal, ejecute la siguiente orden:
[BASH]#sortarchivo1archivo2

centos
debian
fedora
ubuntu

En este otro ejemplo, dos archivos se fusionan y se ordenan. Tambin es posible ordenar listas de
nombres por campos. Los campos se pueden separar por espacios o tabuladores y son numerados
empezando por cero. Cuando se ordenan campos, el smbolo + precede al numero de campo con
cada archivo separado por espacios. Genere el archivo llamado lista con el siguiente contenido
[BASH]#vilista

ilianacastillo
zairamunive
alethyazamano
pilardiaz
mayrarodriguez
marianarivera

Ordenaremos esta lista por el apellido de estas personas de la siguiente manera:


[BASH]#sort+1+0lista

ilianacastillo
pilardiaz
zairamunive
marianarivera
mayrarodriguez
alethyazamano

El uso de estos campos permite mucha flexibilidad en ordenar listas en archivos. Es importante
recordar que la utilidad sort no cambia el archivo original. La salida se enva a la salida estndar
donde se puede visualizar o redireccionar hacia otro comando o archivo.

Segmentando un texto con Cut


La utilidad cut se usa para escribir partes seleccionadas de un archivo en la salida estndar o
- 46 -

BASH. La utilidad cut tambin se puede usar para seleccionar columnas o campos desde archivos
especficos. Es posible tambien seleccionar un trozo de una lnea especfica, varios trozos, o un
rango especifico. La siguiente tabla muestra la gama de opciones que pueden ser integradas al
comando cut:
Opciones

Descripcion

-b

Escribe en la salida el rango de bytes especificos

-c

Escribe en la salida solo los caracteres especificados

-f

Escribe en la salida solo los campos especificados, delimitados por tabuladores

- - help

Muestra la ayuda

- - version Muestra informacion sobre la version


A continuacin un ejemplo del uso de estos rangos para escribir en la salida solo los primeros 5
caracteres de cada lnea del archivo que dimos de alta al final de la seccion 6.6.2 llamado listas.
[BASH]#cutc15listas
ilian
zaira
aleth
pilar
mayra
maria

Pegando texto con Paste


La utilidad paste permite juntar texto desde mltiples archivos. Las lneas correspondientes del
archivo especfico se escriben en la salida estndar con cada lnea separada por un carcter
tabulador . La siguiente tabla muestra la gama de opciones que pueden ser integradas al comando
cut:
Opciones

Descripcion

-s

Pega lneas desde un archivo a la vez

-d delimit-list

Usa los caracteres especificados en delimit-list consecutivamente en vez del carcter


tab cuando separa archivos mezclados.

Genere el archivo llamado apodos con el siguiente contenido


[BASH]#viapodos

hackhat
gaymarc
bigbuitre
javarambo
rufodog

Ahora veremos un ejemplo del comando paste aplicandolo al archivo que acabamos de generar en
conjunto con el archivo de la seccion 6.6.2 llamado listas.
[BASH]#pastelistasapodos

Nos dara como resultado los nombres de la lista seguidos de los apodos.
[BASH]#pastelistaapodos

ilianacastillohackhat

- 47 -

zairamunivegaymarc
alethyazamanobigbuitre
pilardiazjavarambo
mayrarodriguezrufodog
marianarivera

Formateando parrafos
El comando fmt formatea cada prrafo en un archivo y la enva a la salida estandar. Este comando
es utilizado para especificar la anchura de las lneas, tambien puede juntar o separa lneas en un
esfuerzo para que estas tengan la misma longitud. Otra de las funciones de fmt es la de intentar
separar las lneas al final de cada sentencia. Cuando esto no es posible, intenta romper la lnea
despus de la primera palabra o antes de la ltima palabra de la sentencia. La anchura por defecto
que utiliza fmt para una lnea es de 75 caracteres. El ancho por defecto puede ser modificado
usando la opcin adecuada en el comando fmt. La siguiente tabla muestra la gama de opciones que
pueden ser integradas al comando fmt.
Opciones
-c

Descripcion
Mantiene igual los espacios de principio de prrafo y alinea el prrafo con
margen izquierda en la segunda lnea
Trabaja como -c excepto que los espacios de comienzo de la segunda lnea

-t

sean igual que la primera, considerando la segunda lnea como un prrafo de


una lnea

-s
-u
-NUMERO o
-wNumero
-p PREFIX

Especifica que las lneas van a ser divididas y no juntadas


Especifica que espacio uniforme se va a utilizar; esto reduce la separacin entre
todas las palabras a un espacio y a dos espacios entre las sentencias
Establece la largura de la lnea al NUMERO indicado
Especifica que las lneas que empiecen por PREFIX sern modificadas

Genere el archivo llamado apodos con el siguiente contenido


[BASH]#vifedora

FedoraesunsistemaoperativobasadoenLinuxqueincluyeloltimoensoftwarelibre
ydecdigoabierto.
Fedoraessiempregratisparaquecualquieralouse,modifiqueodistribuya.
Loconstruyegentealrededordelmundoquetrabajanjuntoscomounacomunidad:
ElProyectoFedoraesabiertoytodossonbienvenidos.

Y aplique el comando fmt de la siguiente forma:


[BASH]#fmt40fedora

Podra verificar que el texto se formateo correctamente.

Borrando o sustituyendo caracteres.


Hay veces en las que se quiere buscar en un documento caracteres especficos y luego borrarlos o
reemplazarlos por otros. Un ejemplo sera un documento que utiliza maysculas y minsculas, pero
se prefiere que todo el documento est en minsculas, para ello, el comando tr se encarga de llevar
a cabo esta area Este comando sigue la siguiente sintaxis:

- 48 -

[BASH]#tropciones

La siguiente tabla muestra la gama de opciones que pueden ser integradas al comando tr.
Opciones
-d
-s

Descripcion
Borra un carcter especificado.
Remplaza una secuencia de caracteres por un
carcter.

- - help

Muestra la ayuda

- - version

Muestra la version

Genere un archivo llamado semana con el siguiente contenido


[BASH]#visemana

Lunes
Martes
Miercoles
Jueves
Viernes
Sabado
Domingo

Y aplique el comando fmt de la siguiente forma:


[BASH]#trdaeiou

Dicha accion borrara todas las vocales del archivo semana


[BASH]#catsemana|trd

Lns
Mrts
Mrcls
Jvs
Vrns
Sbd
Dmng

Ver el inicio de un archivo


El comando head nos permite ver el comienzo de un archivo. Por defecto nos muestra las 10
primeras lneas. La siguiente tabla muestra la gama de opciones que pueden ser integradas al
comando head.
Opciones
-c NUMERO

Descripcion
Especifica el nmero de bytes a ser mostrados.

-n NUMERO Muestra el NUMERO de lneas especificado.


-q

No muestra las cabeceras.

-v

Muestra las cabeceras.

- - help

Muestra la ayuda

- - version

Muestra la versin.

Este comando sigue la siguiente sintaxis:


[BASH]# head opciones nombreDelArchivo

- 49 -

Ver el final de un archivo


Tail nos permite ver el final de un archivo. Como head, el comando tail muestra las ltimas 10 lineas
de un archivo por defecto . La siguiente tabla muestra la gama de opciones que pueden ser
integradas al comando tail.
Opciones
-NUMERO

Descripcion
Especifica el nmero de lneas a ser mostrado.
Especifica el nmero de lneas desde el comienzo a partir de donde empieza a

+NUMERO

mostrar.
Indica a las instruccin que se mantenga intentando abrir un archivo cuando este

- - retry

est inaccesible.

-c NUMERO

Especifica el nmero de bytes a ser mostrados.


Muestra las lneas y va mostrando lneas segn se escriben en el archivo.

-f

Este comando puede venir bien para archivos que crecen como por ejemplo los
archivos LOG.

-n NUMERO

Muestra el NUMERO de lneas especificado.

-q

No muestra las cabeceras.

-v

Muestra las cabeceras.

- -help

Muestra la ayuda

- - version

Muestra la versin.

Este comando sigue la siguiente sintaxis:


[BASH]#tailopcionesnombreDelArchivo

Uniendo multiples archivos


El comando join en realidad busca en dos archivos entradas comunes. Las entradas encontradas en
los dos archivos son mostradas en la salida estandar donde pueden ser redireccionadas a un
archivo. Puedes combinar archivos usando campos. El comando join usa campos de unin para
combinar lneas de mltiples archivos. Antes de usar el comando join, el archivo debe de comenzar
con los campos de unin. Esto se consigue muchas veces con el comando sort basado en los
campos que van a ser juntados. As, si tu ests utilizando dos archivos que contienen el nombre y el
primer apellido y quieres juntar los archivos utilizando el apellido, entonces los dos archivos deben
ser ordenados previamente utilizando el campo apellido. La siguiente tabla muestra la gama de
opciones que pueden ser integradas al comando join.
Opciones

Descripcion

-I

Especifica que caso es ignorado cuando se combinan los archivos.

-1 FIELD

Especifica el campo en el archivo 1

-2 FIELD

Especifica el campo del archivo 2

-t char

Especifica el carcter separador del archivo de entrada y de salida.


- 50 -

-v FILE#
- - help

Se imprime una lnea por cada lnea no pareada encontrada en el archivo


FILE#
Muestra la ayuda

- - version Muestra la versin.


Este comando sigue la siguiente sintaxis:
[BASH]#joinopcionesnombreDelArchivo

Segmentando un archivo
La utilidad SPLIT se usa para dividir un archivo grande en varios segmentos mas pequeos. Esta
utilidad crea archivos de una cierta longitud, cuyo valor por defecto es de 1000 lneas, y los nombra
de forma secuencial. Los nombres de los archivos estn formados por un prefijo, de valor x por
defecto, seguido por una combinacin de letras que sigue el patrn de aa, ab, ac, etc. Si se
deben crear ms de 676 archivos, la sintaxis ser zaa, zab, etc. Cuando no se especifica ningn
archivo de entrada para la utilidad SPLIT, la entrada de datos estndar se utilizar por defecto. La
sintaxis correcta para el comando split es la siguiente:
[BASH]#splitopcionesnombreDelArchivoarchivoSalida

La siguiente tabla muestra la gama de opciones que pueden ser integradas al comando split.
Opciones
-l LiNEAS

Descripcion
Especifica que caso es ignorado cuando se combinan los archivos.

-b BYTES Especifica el campo en el archivo 1


-c BYTES Especifica el campo del archivo 2
- - verbose Especifica el carcter separador del archivo de entrada y de salida.
- - help

Muestra la ayuda

- - version

Muestra la versin.

Genere un archivo llamado arreglo con el siguiente contenido


[BASH]#viarreglo

primero
segundo
tercero
cuarto
quinto
sexto
septimo
octavo
novedo
decimo

Y aplique el comando split de la siguiente forma:


[BASH]#splitl2arregloarreglosegmentado

El archivo arreglo se divide en varios archivos nombrados arreglosegmentado, cada uno de los
cuales contiene cinco lneas.

- 51 -

Eliminando lineas repetidas en un archivo


El comando uniq es una herramienta que nos ayuda a eliminar los datos repetidos en un archivo
Este comando sigue la siguiente sintaxis:
[BASH]#uniqopcionesnombreDelArchivo

La siguiente tabla muestra la gama de opciones que pueden ser integradas al comando uniq.
Opciones

Descripcion

-c

Enumera el nmero de ocurrencias (lneas que se repiten)

-d

Solo conserva las lneas que se repiten

-u

Solo conserva las lneas que son nicas

Convirtiendo archivos para imprimir


La utilidad pr formatea y prepara archivos para imprimir, escribindolos en la salida estndar,
paginndolos y opcionalmente escribindolos en un formato de multicolumna. Adicionalmente,
tambin puede unir archivos, imprimindolos en paralelo, uno por columna . La sintaxis correcta
para el comando pr es la siguiente
[BASH]#propcionesnombreDelArchivo

Por defecto, en cada pgina se escribe un encabezado de cinco lneas: dos lneas en blanco, una
lnea con la fecha, el nombre del archivo y el contador de pgina, y dos lneas ms en blanco.
Igualmente, tambin se escribe un pie de pgina de cinco lneas. Hay numerosas opciones para
especificar el formato producido con la utilidad PR, algunas de las cuales se muestran en la
siguiente tabla :
Opciones
-COLUMNAS

Descripcion
Produce tantas columnas como el nmero COLUMNAS y equilibra el nmero de
lneas en cada columna dentro de cada pgina.

-a

Imprime las columnas en horizontal en lugar de en vertical.

-d

Inserta un doble espacio en la salida

-f
-h TEXTO

Utiliza saltos de pgina en lugar de caracteres de nueva lnea para separar


pginas.
Utiliza el texto especificado en TEXTO en lugar del nombre del archivo dentro
del encabezado

-l LINEAS

Establece el nmero de lneas por pgina

-m

Imprime todos los archivos en paralelo, uno por columna.

-N NUMERO

Empieza contando por NMERO en la primera lnea de la primera pgina


impresa.
Establece el ancho de pgina a un nmero de caracteres igual a CARACTERES

-w CARACTERES (el valor por defecto es 72). Solamente se utiliza para formatos de salida
multicolumna

- 52 -

-W

Establece el ancho de pgina a un nmero de caracteres igual a CARACTERES

CARACTERES

siempre. El valor por defecto es 72.

Mostrando estadisticas de un archivo


La utilidad WC cuenta el nmero de bytes, palabras separadas por espacios en blanco y saltos de
lnea para cada uno de los archivos indicados. Se muestra una lnea de resultados para cada uno de
los archivos, y si el archivo fue indicado como un argumento, muestra su nombre a continuacin. Si
se indica ms de un archivo, la utilidad muestra una lnea final indicando los resultados acumulativos
con el texto total. El orden en el que se muestran los resultados es el siguiente: en primer lugar los
saltos de lnea, luego las palabras y finalmente los bytes. Por defecto, cada resultado se muestra
justificado a la derecha en un campo de siete bytes con un espacio en blanco entre cada uno de los
resultados, de manera que los nmeros y los nombres de los archivos se alinean correctamente en
columnas, algunas de las cuales se muestran en la siguiente tabla :
Opciones

Descripcion

-c

Muestra nicamente el nmero de bytes

-w

Muestra nicamente el nmero de palabras

-l

Muestra nicamente el nmero de lneas

-L

Muestra la longitud de la lnea ms larga

- - help

Muestra informacin de ayuda y termina

- - version Muestra informacin sobre la versin y termina


La sintaxis correcta para el comando wc es la siguiente
[BASH]#wcopcionesnombreDelArchivo

Aadiendo numeros de linea a un archivo.


La utilidad nl es til para mostrar los nmeros de lnea de un archivo. Se organiza el archivo de
entrada en pginas lgicas y por defecto, el nmero de lnea se inicializa a 1 al principio de cada una
de ellas. Se tratan todos los archivos de entrada como un nico documento y no se inicializan los
nmeros de lnea ni las pginas lgicas entre archivos. Una pgina lgica consiste en tres secciones
separadas por una lnea en blanco: encabezado, cuerpo y pie de pgina. Cualquier de ellas puede
estar vaca y puede estar numerada de una forma distinta a las otras dos. El texto que preceda el
primer separador de seccin en el archivo de entrada se considerar parte del cuerpo, de manera
que la utilidad nl tratar un archivo sin delimitadores de seccin como una nica seccin de cuerpo ,
algunas de las cuales se muestran en la siguiente tabla :
Opciones

Descripcion

-a

Numera todas las lneas

-t

Numera nicamente las lneas no vacas

-n

No numera las lneas. Es el valor por defecto de los encabezados y los pies de
pgina.

- 53 -

-i NUMERO

Incrementa el nmero de lnea en una cantidad igual a NMERO. El valorpor defecto


es uno.

-p

No inicializa los nmeros de lnea al principio de cada pgina lgica.

-s CADENA

Aade la cadena de caracteres CADENA despus de cada nmero de lnea.

-v NUMERO Establece el NMERO inicial de cada pgina lgica.


-w NUMERO

Especifica el NMERO de espacios que se reservan para los nmeros de lnea. El


valor por defecto es seis

La sintaxis correcta para el comando nl es la siguiente


[BASH]#nlopcionesnombreDelArchivo

Administracion de Archivos
Listando el contenido de un directorio
Anteriormente estuvimos trabajando un poco con el comando ls (list), el cual como explicamos en el
capitulo anterior, es un comando para listar el contenido de un directorio A continuacion
indagaremos un poco mas en el uso de este comando. El comando ls puede aceptar opciones como
argumento. Hay un gran nmero de opciones para ste comando que permiten un gran control sobre
el resultado. En la tabla siguiente se muestran las opciones ms usadas:
Opciones

Descripcion

-a

Lista todos los contenidos del directorio.

-A

Trabaja como el -a excepto que no lista . y el ..

-B

No se lista los archivos que finalizan con |

-d

Muestra el nombre del directorio en el listado

-L

Muestra la informacin para los archivos enlaces o referenciales

-R

Muestra los directorios recursivamente.

Una variedad de opciones pueden ser usadas para especificar la informacin mostrada en un
listado de archivos, algunas de estas opciones se muestran en la siguiente tabla :
Opciones

Descripcion

-G

Especifica que grupo de informacion no se muestra

-I

Muestra el numero inode

-l

Muestra el tipo de archivo, permisos, contador de enlaces permanentes, propietario,


grupo propietario y fecha de la ltima modificacin

-o

Muestra la misma informacin que -l menos la informacin de grupo que es excluida

-s

Muestra el tamao del archivo en bloques de 1024 Kb

El comando ls utiliza a veces opciones para ordenar la salida, las cuales se muestran en la siguiente
tabla.
- 54 -

Opciones

Descripcion
Muestra el resultado acorde con la fecha de modificacin o la fecha de modificacin de

-c

inode

-f

Muestra el resultado con el orden en que han sido salvados en el directorio

-r

Muestra el listado en orden inverso

-S

Muestra el listado de acuerdo al tamao, del ms grande al ms pequeo


Muestra el listado de acuerdo a la fecha de modificacin, mostrando primero el ms

-t

reciente.

-u

Muestra el listado de acuerdo al ltimo acceso, empezando por el ms reciente.

La salida producida por el comando ls puede ser tambin controlada con otra serie de opciones.
Estas opciones se muestran en la siguiente tabla
Opciones

Descripcion

-l

La salida se muestra una fila por linea

-C

La salida se muestra en columnas

-F

Muestra el nombre del archivo con una letra para especificar el tipo de archivo

-k

Muestra el tamao del archivo en Kb

-m

Muestra los nombres de archivos separados por comas

-n

Muestra el usuario y el nmero de grupo

-p

Muestra los nombres de archivos con un carcter para especificar el tipo

-x

Muestra el nombre de archivo en columnas ordenadas horizontalmente


Asume que cada parada de tabulacin est a cols columnas de ancho; el valor

-T COLTS predeterminado es 8. ls emplea tabuladores donde es posible en la salida, por


eficiencia. Si cols es cero, no usa tabuladores para nada.
Asume que la pantalla tiene cols columnas de ancho. El valor predeterminado se toma

-W
COLTS

del controlador de terminal si es posible; si no, se emplea la variable de ambiente


COLUMNS si est definida; de otro modo el valor predeterminado es 80

Todas stas opciones se pueden combinar para crear una salida muy especifica

Determinando el tipo de archivo


El comando ls provee de mucha informacin cuando se examinan archivos, pero no muestra
informacin sobre el tipo de contenido de los mismos. El comando file puede ser usado para
aprender ms sobre el tipo contenido de los archivos en un sistema Linux. La salida del comando file
incluye una de las siguientes palabras:
text
executable
data o directory
- 55 -

Este comando acepta argumentos para especificar que archivos examina Este comando acepta
argumentos para especificar que archivos examina. Se pueden usar una serie de opciones con este
comando, como se muestran en la siguiente tabla.
Opciones

Descripcion

-b

Especifica que el nombre de archivo no se muestre en la salida

-f

Especifica que el archivo <nombrearchivo> contiene los nombres de los

[nombreDelArchivo] archivos a examinar.


Muestra el resultado despus del chequeo. Esto puede ser til cuando
-n

trabajamos con una serie de archivos que van a ser enviados a otro
comando.

-v

Muestra la versin

-z

Intenta examinar el contenido de los archivos comprimidos.

La sintaxis para aplicar de manera correcta el comando es la siguiente:


[BASH]# file [opciones] nombreDelArchivo

Copiando Archivos
Cuando se trabaja con archivos en cualquier sistema, generalmente se necesita copiar archivos.
Linux incluye dos comandos para copiar archivos. El comando cp se usa para copiar archivos y
directorios y es el comando estndar para copiar archivos de una localizacin del sistema a otra.
Cuando se quiere copiar archivos de un formato de archivo a otro, se har uso el comando dd. El
comando cp se utiliza para la copia estndar de archivos en sistemas Linux. Este comando se usa
para crear una copia nueva e independiente del archivo o directorio original. Se pueden usar
muchas opciones con el comando cp para modificar las copias creadas. Las opciones se resumen
en la siguiente tabla
Opciones
-a

Descripcion
Especifica que los enlaces y atributos del archivo original deben ser transferidos a la
nueva copia.

-d

Especifica que los enlaces se deben mantener cuando se copia.

-f

Sobreescribe cualquier archivo de destino existente.

-i

Pregunta antes de sobreescribir cualquier archivo de destino existente.

-l
-p
-r
-R

Especifica que se creen enlaces fuertes (ver ms adelante en este captulo) en lugar de
copias del archivo.
Mantiene el propietario, grupo, permisos y timestamp del archivo original.
Copia directorios y sus contenidos de forma recursiva mientras copia cada archivo como
archivo estndar. Esta opcin no podr ser usada con algunos archivos especiales.
Copia directorios y sus contenidos de forma recursiva, manteniendo los directorios.

- 56 -

-s

Crea enlaces simblicos (ver ms adelante) de los archivos que no sean directorios.

-v

Muestra todos los nombres de los archivos segn se van copiando.

Estas opciones se pueden combinar cuando se copian archivos. Junto con las opciones, tambin se
usan argumentos con el comando cp . La sintaxis para aplicar de manera correcta el comando es la
siguiente:
[BASH]# cp [opciones] origenDelArchivo

destinoDelArchivo

Copiando y convirtiendo archivos con diferente formato


El comando dd (abreviatura de Direct Dump) se usa para copiar y convertir archivos de un formato a
otro simultneamente. El comando dd, por defecto, escribe datos desde la entrada estndar hacia la
salida estndar. Las opciones se utilizan para cambiar estos valores por defecto. Las opciones para
el comando dd se muestran en la siguiente tabla :
Opciones
if=FILE
of=FILE

Descripcion
Especifica la localizacin del archivo de origen para ser utilizado en lugar de la entrada
estndar. ste es el archivo de origen.
Especifica la localizacin del archivo de destino para ser utilizado en lugar de la salida
estndar. ste es el archivo de destino.

ibs=FILE

Especifica el nmero de bytes ledos de cada vez.

obs=FILe

Especifica el nmero de bytes escritos de cada vez.

bs=FILE

Especifica el nmero de bytes a escribir y leer de cada vez.

cbs=FILE

Especifica el nmero de bytes a convertir de cada vez.

skips=FILE Especifica los bloques a saltar en el archivo de origen antes de empezar a copiar.
seek=FILE Especifica los bloques a saltar en el archivo de destino antes de empezar a escribir.
count=FILE

Especifica los bloques a copiar del archivo de origen en lugar de copiar el archivo
completo.

Este comando tiene diferentes opciones y diferente sintaxis que el comando cp .La sintaxis utilizada
para el comando dd es la siguiente:
[BASH]#cp[opciones]origenDelArchivodestinoDelArchivo

El comando dd se puede utilizar para variedad de tareas especiales. Por ejemplo:


[BASH]#ddif=/dev/dispositivoof=respaldombr.bkpbs=512count=1

Esto significa que se copiara bit a bit los primeros 512 bytes del dispositivo ubicado en
/dev/dispositivo a un archivo de nombre respaldombr.bkp.

Moviendo Archivos
Se puede mover un archivo manualmente copindolo a la nueva localizacin y borrando luego el
archivo original. Sin embargo, Linux incluye un comando para mover archivos que automatiza esta
tarea. El comando mv (abreviatura de move) permite mover y renombrar archivos en sistemas Linux.
Este comando funciona como el comando cp, utilizando la misma sintaxis. Las opciones para el

- 57 -

comando mv son algo diferentes y se resumen en la tabla siguiente:


Opciones

Descripcion

-f

Borra los archivos existentes sin pedir confirmacin.

-i

Pide confirmacin al usuario antes de sobreescribir archivos.


Especifica que los archivos no sern movidos al destino si tienen fecha de modificacin

-u

igual o ms reciente.

Muestra por pantalla los archivos movidos.

La sintaxis para aplicar de manera correcta el comando es la siguiente:


[BASH]# mv [opciones] origenDelArchivo

destinoDelArchivo

Eliminando Archivos
Otra tarea frecuentemente necesaria cuando trabajamos con archivos y directorios es la eliminacin
de los mismos. El comando rm se utiliza para borrar archivos y directorios en sistemas Linux . Se
pueden utilizar muchas opciones con el comando rm. Las utilizadas ms frecuentemente son las que
se muestran en la tabla siguiente
Opciones
-d
-f

Descripcion
Utilizada por el superusuario. Elimina directorios sin tener en cuenta si estn vacos.
Ejecuta el comando sin pedir confirmacin, incluso si los archivos especificados no
existen.

-i

Pide confirmacin al usuario para eliminar los archivos.

-r

Elimina el contenido del directorio de forma recursiva.

-v

Elimina archivos y muestra por pantalla los nombres de los archivos eliminados.

La sintaxis para aplicar de manera correcta el comando es la siguiente:


[BASH]# rm [opciones] nombreDelArchivo

Creando, monitorizando y matando procesos


Sobre procesos
Un proceso es un concepto manejado por el sistema operativo que consiste en el conjunto formado
por:
Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.
Su estado de ejecucin en un momento dado, esto es, los valores de los registros de la CPU
para dicho programa.
Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.
Otra informacin que permite al sistema operativo su planificacin.
Esta definicin vara ligeramente en el caso de sistemas operativos multihilo, donde un proceso
consta de uno o ms hilos, la memoria de trabajo (compartida por todos los hilos) y la informacin de
planificacin. Cada hilo consta de instrucciones y estado de ejecucin. Los procesos son creados y
destruidos por el sistema operativo, as como tambin este se debe hacer cargo de la comunicacin
entre procesos, pero lo hace a peticin de otros procesos. El mecanismo por el cual un proceso crea
- 58 -

otro proceso se denomina bifurcacin o fork. Los nuevos procesos pueden ser independientes y no
compartir el espacio de memoria con el proceso que los ha creado o ser creados en el mismo
espacio de memoria. En los sistemas operativos multihilo es posible crear tanto hilos como
procesos. La diferencia estriba en que un proceso solamente puede crear hilos para s mismo y en
que dichos hilos comparten toda la memoria reservada para el proceso.

Estados de un proceso
El principal trabajo del procesador es ejecutar las instrucciones de mquina que se encuentran en
memoria principal. Estas instrucciones se encuentran en forma de programas. Para que un
programa pueda ser ejecutado, el sistema operativo crea un nuevo proceso, y el procesador ejecuta
una tras otra las instrucciones del mismo. En un entorno de multiprogramacin, el procesador
intercalar la ejecucin de instrucciones de varios programas que se encuentran en memoria. El
sistema operativo es el responsable de determinar las pautas de intercalado y asignacin de
recursos a cada proceso.

Diagrama de formacion de un proceso


Se trata de la utilizacin de dos archivos, un objeto ejecutable y una biblioteca del sistema, que
despus se colocan en la imagen del proceso dentro de la memoria RAM y posteriormente tambin
se dan de alta dentro de la tabla de procesos, Bloque de control del proceso.

Modelo de dos estados


El modelo de estados ms simple es el de dos estados. En este modelo, un proceso puede estar
ejecutndose o no. Cuando se crea un nuevo proceso, se pone en estado de No ejecucin. En algn
momento el proceso que se est ejecutando pasar al estado No ejecucin y otro proceso se elegir
de la lista de procesos listos para ejecutar para ponerlo en estado Ejecucin. De esta explicacin se
desprende que es necesario que el sistema operativo pueda seguirle la pista a los procesos,
conociendo su estado y el lugar que ocupa en memoria. Adems los procesos que no se estn
ejecutando deben guardarse en algn tipo de cola mientras esperan su turno para ejecutar.

Modelo de cinco estados


El modelo anterior de 2 estados funcionara bien con una cola FIFO y planificacin por turno rotatorio
para los procesos que no estn en ejecucin, si los procesos estuvieran siempre listos para ejecutar.
En la realidad, los procesos utilizan datos para operar con ellos, y puede suceder que no se
encuentren listos, o que se deba esperar algn suceso antes de continuar, como una operacin de
Entrada/Salida. Es por esto que se necesita un estado donde los procesos permanezcan esperando
la realizacin de la operacin de Entrada Salida por parte del Sistema Operativo hasta que puedan
proseguir. Se divide entonces al estado No ejecucin en dos estados: Listo y Espera. Se agregan
adems un estado Nuevo y otro Terminado.
Los cinco estados de este diagrama son los siguientes segn Osliyo:
Ejecucin: el proceso est actualmente en ejecucin.
Listo: el proceso est listo para ser ejecutado, slo est esperando que el planificador de
corto plazo as lo disponga.
Espera: el proceso no puede ejecutar hasta que no se produzca cierto suceso, como la
finalizacin de una operacin de Entrada/Salida solicitada por una llamada al sistema
operativo.
- 59 -

Nuevo: El proceso recin fue creado y todava no fue admitido por el sistema operativo. En
general los procesos que se encuentran en este estado todava no fueron cargados en la
memoria principal.
Terminado: El proceso fue expulsado del grupo de procesos ejecutables, ya sea porque
termin o por algn fallo, como un error de proteccin, aritmtico, etc.
Los nuevos estados Nuevo y Terminado son tiles para la gestin de procesos. En este modelo los
estados Espera y Listo tienen ambos colas de espera. Cuando un nuevo proceso es admitido por el
sistema operativo, se sita en la cola de listos. A falta de un esquema de prioridades sta puede ser
una cola FIFO. Cuando se da un suceso se pasan a la cola de listos los procesos que esperaban por
ese suceso. Si existe un esquema con diferentes niveles de prioridad de procesos es conveniente
mantener varias colas de procesos listos, una para cada nivel de prioridad, lo que ayuda a
determinar cul es el proceso que ms conviene ejecutar a continuacin. Asimismo, existen varias
colas en estado de espera, como mnimo una por cada perifrico. Una de las razones para
implementar el estado Espera era poder hacer que los procesos se puedan mantener esperando
algn suceso, por ejemplo una Entrada/Salida. Sin embargo, al ser mucho ms lentas estas
operaciones, puede suceder que en nuestro modelo de cinco estados todos los procesos en
memoria estn esperando en el estado Espera y que no haya ms memoria disponible para nuevos
procesos. Podra conseguirse ms memoria, aunque es probable que esto slo permita procesos
ms grandes y no necesariamente nuevos procesos. Adems hay un costo asociado a la memoria y
de cualquier forma es probable que se llegara al mismo estado con el tiempo. Otra solucin es el
intercambio. El intercambio se lleva a cabo moviendo una parte de un proceso o un proceso
completo desde la memoria principal al disco, quedando en el estado Suspendido. Despus del
intercambio, se puede aceptar un nuevo proceso o traer a memoria un proceso suspendido
anteriormente. El problema que se presenta ahora es que puede ser que si se decide traer a
memoria un proceso que est en el estado Suspendido, el mismo todava se encuentre en espera.
Slo convendra traerlo cuando ya est listo para ejecutar, esto implica que ya aconteci el suceso
que estaba esperando. Para tener esta diferenciacin entre procesos suspendidos, ya sean listos
como en espera, se utilizan cuatro estados: Listo, Espera, Espera y suspendido y Listo y
suspendido.

Sobre demonios
Un demonio, daemon o dmon (de sus siglas en ingls Disk And Execution MONitor), es un tipo
especial de proceso informtico que se ejecuta en segundo plano en vez de ser controlado
directamente por el usuario (es un proceso no interactivo). Este tipo de programas se ejecutan de
forma continua (infinita), vale decir, que aunque se intente cerrar o matar el proceso, este continuar
en ejecucin o se reiniciar automticamente. Todo esto sin intervencin de terceros y sin
dependencia de consola alguna. El origen de la palabra daemon (demonio), se encuentra en la
antigua Grecia, y la figura del daimon, un espritu interior, equivalente a un "ngel protector" que
guiaba y protega a los hombres. Los programas demonios reciben este nombre en los sistemas
UNIX. En otros sistemas existen procesos similares como los TSRs de MS-DOS o los servicios de
Windows.
- 60 -

Caracteristicas
Los demonios suelen tener las siguientes caractersticas:
No disponen de una interfaz directa con el usuario, ya sea grfica o textual.
No hacen uso de la entradas y salidas estndar para comunicar errores o registrar su
funcionamiento, sino que usan archivos del sistema en zonas especiales (/var/log/ en los
UNIX ms modernos) o utilizan otros demonios especializados en dicho registro como el
syslogd.
Por ejemplo, una mquina que alberga un servidor web utilizar un demonio httpd (HTTP Daemon)
para ofrecer el servicio y que los visitantes a dicha web puedan acceder. Otro ejemplo son los
demonios "cronolgicos" como cron, que realizan tareas programadas como mantenimiento del
sistema en segundo plano.

Comando ps (process state)


El comando ps es el que permite informar sobre el estado de los procesos. ps esta basado en el
sistema de archivos /proc, es decir, lee directamente la informacin de los archivos que se
encuentran en este directorio. Tiene una gran cantidad de opciones, incluso estas opciones varan
dependiendo del estilo en que se use el comando. Estas variaciones sobre el uso de ps son las
siguientes:
Estilo UNIX, donde las opciones van precedidas por un guin Estilo BSD, donde las opciones no llevan guin
Estilo GNU, donde se utilizan nombres de opciones largas y van precedidas por doble guin
-Sea cual sea el estilo utilizado, dependiendo de las opciones indicadas, varias columnas se
mostrarn en el listado de procesos que resulte, estas columnas pueden ser entre muchas otras, las
siguientes:
Opciones

Descripcion

p o PID

Process ID, nmero nico o de identificacin del proceso.

P o PPID

Parent Process ID, padre del proceso

U o UID

User ID, usuario propietario del proceso

t o TT o TTY Terminal asociada al proceso, si no hay terminal aparece entonces un '?'


T o TIME

Tiempo de uso de cpu acumulado por el proceso

c o CMD

El nombre del programa o camndo que inici el proceso

RSS

Resident Sise, tamao de la parte residente en memoria en kilobytes

SZ o SIZE

Tamao virtual de la imagen del proceso

NI
C o PCPU

Nice, valor nice (prioridad) del proceso, un nmero positivo significa menos tiempo de
procesador y negativo ms tiempo (-19 a 19)
Porcentaje de cpu utilizado por el proceso

- 61 -

STIME

Starting Time, hora de inicio del proceso


Status
*

del

proceso,

runnable,

en

estos

pueden

ejecucin,

ser

corriendo

los
o

siguientes:
ejecutndose

*S sleeping, proceso en ejecucin pero sin actividad por el momento, o esperando por
algn
*T
S o STAT

sTopped,

evento
proceso

para

detenido

totalmente,

pero

continuar
puede

ser

reiniciado

* Z zombie, difunto, proceso que por alguna razn no termin de manera correcta, no
debe

haber

procesos

zombies

* D uninterruptible sleep, son procesos generalmente asociados a acciones de IO del


sistema
* X dead, muerto, proceso terminado pero que sigue apareciendo, igual que los Z no
deberan verse nunca
Las opciones para el comando dd se muestran en la siguiente tabla :
Opciones
-a
-x
-u
-m

Descripcion
El comando ps tambin muestra los procesos iniciados por los otros usuarios.
Tambin muestra los procesos sin terminal de control alguna o con una terminal de
control diferente a la que se est utilizando.
Muestra, para cada proceso, el nombre del usuario que lo inici y la hora a la cual fue
iniciado.
Opcin del comando ps para mostrar informacin de memoria (combinese con p para
obtener el nmero de pginas)

-j

Formato de trabajo (jobs) pgid sid

-r

Slo procesos que se estan ejecutando

La sintaxis para aplicar de manera correcta el comando es la siguiente:


[BASH]#ps[opciones]nombreDelArchivo

Podemos obtener mas informacion sobre este comando tecleando en una terminal lo siguiente:
[BASH]#manps

O tambien
[BASH]#pshelp

Comando pstree y top


Existen dos comandos relacionados con el comando ps que ofrecen una vista de los procesos
ligeramente diferente a como lo hace ps. El primero de ellos es pstree, que ofrece una visualizacin
grfica de las relaciones que existen entre los procesos: La sintaxis para aplicar de manera correcta
el comando es la siguiente:
[BASH]#pstree

Como se ve a continuacion
[BASH]#pstree

- 62 -

initacpid
auditdaudispd{audispd}
{auditd}
avahidaemon
beagled12*[{beagled}]
beagledhelper7*[{beagledhelper}]
bluetoothd
bonoboactivati{bonoboactivati}
consolekitdae63*[{consolekitdae}]
cron
cupsd
2*[dbusdaemon]
2*[dbuslaunch]
dhcpcd
evince{evince}
2*[evolutiondata2*[{evolutiondata}]]
firefoxfirefox5*[{firefox}]
gconfd2

El segundo comando relacionado con ps es top. ste comando, no slo muestra los procesos
actuales, sino que automticamente se va actualizando para mostrar los cambios acontecidos.
Adicionalmente, en la parte superior se muestra informacin sobre el nmero de das que ha estado
la maquina en marcha, el nmero de usuarios, la memoria, estadsticas de la memoria de
intercambio, etc. Mientras el comando top est en marcha, se pueden usar las siguientes teclas para
interactuar con l:
Opciones

Descripcion

Ayuda

Salir

Cambia el tiempo entre actualizaciones (por defecto, 5 segundos)

espacio

Actualizar ahora en lugar de esperar al siguiente intervalo de actualizacin

Muestra un nico usuario

Finalizando un proceso
Bajo circunstancias normales, un proceso hijo acta bajo el padre que lo ha creado. Cuando el
proceso hijo ya no es necesario, desaparece. Algunas veces, sin embargo, los procesos se
convierten en procesos 'fugitivos', y aunque no sea necesario que se sigan ejecutando, continan su
ejecucin consumiendo recursos innecesarios.
Un proceso padre no puede (y no debe) finalizar su ejecucin mientras tenga procesos hijos
asociados a l que estn en funcionamiento. Teniendo sto en cuenta, cuando un proceso hijo no
puede finalizar correctamente su ejecucin, origina que el proceso padre se quede en un estado
inconsistente, y que no pueda, a su vez, terminar su ejecucin, quedando el proceso padre (y el o
los hijos 'colgados') en un estado conocido como 'zombie', haciendo uso de recursos innecesarios
del sistema.
Un ejemplo para entender todo esto: el shell de un usuario ejecuta un proceso (A), que no puede
hacer todo por si mismo, as que ejecuta otro proceso (B), que a su vez ejecuta otro proceso (C).
Pueden suceder entonces varias cosas: Bajo condiciones normales, cuando el proceso C termina su
ejecucin, se lo notifica al proceso B, y desaparece (C). El proceso B trata la informacin, notifica los
- 63 -

datos al proceso A, y muere (B). El proceso A, hace lo propio con los datos recibidos, y retorna la
informacin al shell del usuario, y entonces muere (A) En condiciones anormales, supongamos que
el proceso C, despus de pasar la informacin al proceso padre (el proceso B), no muere. Continua
ejecutndose, lo que impide que el proceso B finalice, dado que tiene un proceso hijo (C) en marcha.
El proceso B trata la informacin y la reporta hacia el proceso padre (A), que a su vez, devuelve la
informacin hacia el shell que lo origin. Tanto el proceso A como el proceso B, no pueden finalizar
su ejecucin dado que tienen procesos hijos en marcha. As pues, un error en el proceso C, que
hace que se quede en ejecucin cuando no debera, origina que haya tres procesos en marcha en el
sistema, consumiendo recursos de forma innecesaria. Otro tipo de problema, podra darse de la
siguiente manera: el proceso C, como antes, entra en un estado inestable, y no finaliza su ejecucin.
Aun as, el proceso B, acaba su ejecucin y desaparece. El proceso A, tambin finaliza dado que su
hijo, el proceso B, ha finalizado. As pues, se queda nicamente el proceso C en marcha (en estado
inestable), pero ahora, no tiene procesos padre a los que reportar. Para resolver los problemas que
pueden ocasionar estos procesos extraos, se puede usar el comando kill. La sintaxis del comando
kill es la siguiente:
[BASH]#kill[opciones]PID

Procesos en segundo y primer plano


Cuando se ejecuta un proceso, por defecto se ejecuta en primer plano. Cuando un proceso se
ejecuta en primer plano, se convierte en el nico trabajo en el que puede trabajar el usuario, la
interaccin se basa entonces, en que se acabe ste trabajo. Por ejemplo, cuando un usuario ejecuta
el comando ls -l, se mostrar por pantalla el resultado, y hasta que no acabe el comando, no se
podr ejecutar ningn otro comando. Para ejecutar un proceso en segundo plano, simplemente se
ha de aadir al final del comando el signo ampersand (&), esta opcin permitir ejecutar ms de un
comando a la vez: La sintaxis del comando kill es la siguiente:
[BASH]# proceso&

Creando particiones y sistemas de archivos


Sobre fdisk
Fdisk es una aplicacion disponible para varios sistemas operativos, el cual permite dividir en forma
lgica un disco duro, siendo denominado este nuevo espacio como particin. La descripcin de las
particiones se guarda en la tabla de particiones que se localiza en el sector 0 de cada disco. La
versin Fdisk de Linux permite crear particiones en 94 sistemas de archivos distintos, incluyendo
FAT32, Ext3, Solaris y QNX. Esta versin de Fdisk cuenta con un men de texto de ayuda en lnea
para realizar las operaciones.

Utilizando fdisk
La forma de comenzar a utilizar fdisk sera de la siguiente manera.
[BASH]#fdisk/dev/sd[a|b|c|d][1,2,3,4]

Donde
sd[a|b|c|d][1|2|3|4]

Hace referencia a una unidad de disco duro,particion o unidad USB Al lanzar la aplicacin , esta nos

- 64 -

arrojara informacion referente a numero de cabezas, sectores , cilindros, particiones o tamao del
dispositivo. Ejemplo:
[BASH]#fdisk/dev/sda
Command(mforhelp):
Disk/dev/sda:146.8GB,146815737856bytes
255heads,63sectors/track,17849cylinders
Units=cylindersof16065*512=8225280bytes

Una vez que la aplicacin esta iniciada, se nos presenta el siguiente mensaje:
Command(mforhelp):

Si usted presiona la tecla 'm' se imprimira el menu con las herramientas propias del comando fdisk.
Estas herramientas son:
Opciones

Descripcion

Conmuta el indicador de iniciable

Modifica la etiqueta de disco bsd

Conmuta el indicador de compatibilidad con DOS

Suprime una particin

Conmuta el indicador de iniciable

Modifica la etiqueta de disco bsd

Conmuta el indicador de compatibilidad con DOS

Suprime una particin

Lista los tipos de particiones conocidos

Imprime este men

Aade una nueva particin

Crea una nueva tabla de particiones DOS vaca

Imprime la tabla de particiones

Sale sin guardar los cambios

Crea una nueva etiqueta de disco Sun

Cambia el identificador de sistema de una particin

Cambia las unidades de visualizacin/entrada

Verifica la tabla de particiones

Escribe la tabla en el disco y sale

Funciones adicionales (slo para usuarios avanzados)

Como podemos notar, con la opcin "m" podemos imprimir nuevamente este menu. Otro ejemplo,
con "p" obtendremos la tabla de particiones actual del disco duro en cuestin: Ejemplo:

- 65 -

Command(mforhelp):p
Disk/dev/sda:146.8GB,146815737856bytes
255heads,63sectors/track,17849cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBootStartEndBlocksIdSystem
/dev/sda1*12520078183Linux
/dev/sda22625752048287583Linux
/dev/sda3257627061052257+82Linuxswap/Solaris
/dev/sda427074000103940558eLinuxLVM

Si lo que queremos es borrar una particin (digamos la 3):


Command(mforhelp):d
Partitionnumber(14):3
Command(mforhelp)

Veamos como qued nuestra tabla de particiones:


Command(mforhelp):p
Disk/dev/sda:146.8GB,146815737856bytes
255heads,63sectors/track,17849cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBootStartEndBlocksIdSystem
/dev/sda1*12520078183Linux
/dev/sda22625752048287583Linux
/dev/sda427074000103940558eLinuxLVM

En el ejemplo hemos borrado la particin correspondiente a la memoria extendida (swap). Vamos a


volver a crearla, para ello usamos "n":
Command(mforhelp):n
Commandaction
eextended
pprimarypartition(14)
p
Selectedpartition3
Firstcylinder(257617849,default2576):
Usingdefaultvalue2576
Lastcylinderor+sizeor+sizeMor+sizeK(25762706,default2706):
Usingdefaultvalue2706

Pongamos atencin en las preguntas que se nos hicieron:


Tipo de particin: Aqu se nos pide elegir entre particin primaria y particin extendida. En un
disco IDE o SATA podemos crear nicamente hasta 3 particiones primaria en el disco duro.
Si requerimos de ms particiones podemos crear una extendida y ah seguir particionando
(hasta un total de 60 particiones lgicas). Si requerimos ms, no queda otra que utilizar un
segundo disco duro. En el caso de un disco SCSI, ste admite hasta 15 particiones
primarias.
Seleccin de la particin. Aqu escribimos en nmero de la particin que estamos creando.
"3" en nuestro ejemplo.
Primer cilindro. Es el cilindro en el que comienza la particin. Normalmente elegimos el que el
sistema nos marca por default.
ltimo cilindro o tamao de la particin. En el caso del ejemplo tom de nuevo la opcin por
default pues de este modo aprovecho todo el espacio libre.Generalmente resulta ms

- 66 -

cmodo proporcionar el tamao en megas (o en K's). Una opcin sera entonces dar:
+2048M
Podemos, nuevamente con "p", checar el estado de nuestra tabla de particiones actual:
Command(mforhelp):p
Disk/dev/sda:146.8GB,146815737856bytes
255heads,63sectors/track,17849cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBootStartEndBlocksIdSystem
/dev/sda1*12520078183Linux
/dev/sda22625752048287583Linux
/dev/sda3257627061052257+83Linux
/dev/sda427074000103940558eLinuxLVM

Analicemos en este punto las siete columnas que la impresin de la tabla de particiones nos da. En
la primera columna se encuentra el dispositivo resultado de la particin de disco sda. As, podemos
observar que en este momento contamos con 4 particiones: sda1, sda2, sda3 ysda4. La segunda
columna nos informa que es la primera particin del disco la que contiene la parte booteable. La
tercera y cuarta columna nos dan informacin acerca del cilindro en el cual comienza y termina la
particin respectivamente. La quinta nos dice cuantos blocks ocupa sta. Por ltimo, con la sexta y
sptima columna sabemos el tipo de particin (Identificador y sistema respectivamente).
De nuestro ejemplo, sabemos que contamos con 3 particiones "Linux" (Id 83) y una "Linux LVM" (ide
8e). Si pensamos utilizar la particin recin creada como memoria extendida, es el momento de
asignar el tipo de particin. sto lo hacemos con:
Command(mforhelp):t
Partitionnumber(14):3
Hexcode(typeLtolistcodes):82
Changedsystemtypeofpartition3to82(Linuxswap/Solaris)

Es decir, asignamos el sistema "Linux swap / Solaris" (con id=82). Checamos:


Command(mforhelp):p
Disk/dev/sda:146.8GB,146815737856bytes
255heads,63sectors/track,17849cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBootStartEndBlocksIdSystem
/dev/sda1*12520078183Linux
/dev/sda22625752048287583Linux
/dev/sda3257627061052257+82Linuxswap/Solaris
/dev/sda427074000103940558eLinuxLVM

Con fdisk podemos asignar muchos otros tipos de sistema. Con "l" podemos obtener la lista
completa de opciones:
Command(mforhelp):l
0Empty1eHiddenW95FAT180OldMinixbeSolarisboot
1FAT1224NECDOS81Minix/oldLinbfSolaris
2XENIXroot39Plan982Linuxswap/Soc1DRDOS/sec(FAT
3XENIXusr3cPartitionMagic83Linuxc4DRDOS/sec(FAT
4FAT16<32M40Venix8028684OS/2hiddenC:c6DRDOS/sec(FAT
5Extended41PPCPRePBoot85Linuxextendedc7Syrinx
6FAT1642SFS86NTFSvolumesetdaNonFSdata
7HPFS/NTFS4dQNX4.x87NTFSvolumesetdbCP/M/CTOS/.
8AIX4eQNX4.x2ndpart88LinuxplaintextdeDellUtility

- 67 -

9AIXbootable4fQNX4.x3rdpart8eLinuxLVMdfBootIt
aOS/2BootManag50OnTrackDM93Amoebae1DOSaccess
bW95FAT3251OnTrackDM6Aux94AmoebaBBTe3DOSR/O
cW95FAT32(LBA)52CP/M9fBSD/OSe4SpeedStor
eW95FAT16(LBA)53OnTrackDM6Auxa0IBMThinkpadhiebBeOSfs
fW95Ext'd(LBA)54OnTrackDM6a5FreeBSDeeEFIGPT
10OPUS55EZDrivea6OpenBSDefEFI(FAT12/16/
11HiddenFAT1256GoldenBowa7NeXTSTEPf0Linux/PARISCb
12Compaqdiagnost5cPriamEdiska8DarwinUFSf1SpeedStor
14HiddenFAT16<361SpeedStora9NetBSDf4SpeedStor
16HiddenFAT1663GNUHURDorSysabDarwinbootf2DOSsecondary
17HiddenHPFS/NTF64NovellNetwareb7BSDIfsfdLinuxraidauto
18ASTSmartSleep65NovellNetwareb8BSDIswapfeLANstep
1bHiddenW95FAT370DiskSecureMultbbBootWizardhidffBBT
1cHiddenW95FAT375PC/IX

inalmente, guardamos los cambios:


Command(mforhelp):w

y salimos

Utilizando mkfs
Una vez se ha creado la particin, el sistema de archivos debe ser aadido para que Linux pueda
hacer uso de este espacio. La utilidad mkfs se usa para crear sistemas de archivos en particiones
vacas. La utilidad mkfs se utiliza con muchas opciones distintas, las cuales se pueden ver en la
siguiente tabla
Opciones
-t fstype
fs -options

Descripcion
Especifica el tipo de sistema de archivos a crear. Por defecto se usa ext2
Opciones especficas de sistema de archivos para ser pasados al sistema real de
archivos que vamos a crear.
Comprueba el dispositivo en busca de bloques defectuosos antes de crear el sistema de

-c

archivos.

-l archivo

Lee los bloques defectuosos del archivo.


Produce una salida con ms informacin, incluyendo todas las rdenes especficas del

-v

sistema de archivos concreto que se ejecutan. sto es realmente slo til para
comprobaciones.

Las opciones usadas por mkfs estn seguidas por un argumento especificando la particin que
debe ser formateada. Despus de la ejecucin del comando, el cdigo de salida de 0 (cero) indicar
que se ha llevado a cabo con xito mientras que el cdigo de salida 1 (uno) indicar fallo. La sintaxis
correcta para este comando es la siguiente
[BASH]# mkfs [opciones] unidadAFormatear

/dev/sd[abcd][1234]

Algunas otras utilidades del comando mkfs son las siguientes:


Opciones
mkfs.ext2 o mke2f

Descripcion
Crea un sistema de archivos ext2

mkfs.msdos o mkdosfs Crea un sistema de archivos MS-DOS


mkswap

Crea un sistema de archivos de Linux swap


- 68 -

mkraid

Inicializa y actualiza cadenas de dispositivos RAID

mkfs.minix

Crea un sistema de archivos Minix

mkfs.bfs

Crea un sistema de archivos SCO BFS

Manteniendo la integridad de los sistemas de archivos


El monitoreo periodico del sistema de archivos de sistema operativo resulta tema de suma
importancia para los administradores de red, ya que durante el transcurso del tiempo estos sistemas
de archivos pueden terminar presentando problemas como los siguientes:
El sistema de archivos se llena hasta el lmite de su capacidad, causando que los
aplicaciones o quizs, el sistema entero dejen de funcionar.
El sistema de archivos se corrompe, seguramente por un corte de alimentacin o por una
cada del sistema.
El sistema de archivos 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.

Monitorizando el espacio y los inodos libres del disco


Un sistema de lectura escritura no sirve de mucho si crece hasta el punto en que no pueda admitir
nuevos archivos. Esto podra ocurrir si nuestro sistea de archivos se llena o si se queda sin inodos
libres. Los inodos son las estructuras de datos dentro del sistema de archivos que describen los
archivos (valga la redundancia) en el disco. Cada sistema de archivos 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 archivos que un sistema de archivos puede acomodar. Como los
sistemas de archivos se crean con un nmero de inodos enorme, probablemente nunca crears
tantos archivos como para agotar este nmero. No obstante, es posible quedarse sin inodos libres
en particiones que contengan muchos archivos 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
archivos montados en directorios. Normalmente, en directorios indicamos archivos de dispositivos
de particiones como / dev/hda1, pero si indicamos otro tipo de nombre de archivo o directorio
obtendremos informacin sobre la particin donde est ubicado dicho archivo o directorio. Si
omitimos directorios, se mostrar la informacin relativa a los sistemas de archivos montados en los
dispositivos incluidos en / etc/fstab. La forma correcta de utilizar el comando df sera de la siguiente
manera.
[BASH]# df

[opciones]

/dev/sd[a|b|c|d][1,2,3,4]

En la tabla siguiente se muestran las opciones ms usadas:


Opciones
-h

Descripcion
Muestra los resultados en un formato legible para las personas, incluyendo sufijos como

- 69 -

M(megabytes) y G (gigabytes).
Muestra informacin sobre los inodos libres en lugar de la informacin por defecto sobre

-i

el espacio libre en disco.

Monitorizando el espacio y los inodos libres del 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.
[BASH]# du

[opciones] [directorio]

En la tabla siguiente se muestran las opciones ms usadas:


Opciones

Descripcion

-a

Muestra todos los archivos, no solo los directorios.

-c

Genera un gran total de todos los elementos listados

-h
-s
-S

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.

Comprobando la integridad del sistema de archivos


El comando fsck (file system consistency check) es una utilidad de los sistemas Unix y similares,
como Linux y AIX que se utiliza ante alguna inconsistencia del sistema de archivos para corregir los
posibles errores en el sistema. fsck se ejecuta automticamente al inicio del sistema ante alguna
anomala, pero tambin puede ser utilizada manualmente por el administrador del sistema para
forzar un chequeo.
Durante la comprobacin del sistema de 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 verificar un sistema de archivos es muy aconsejable hacerlo mientras ste est desmontado.
La sintaxis bsica de esta utilidad es la siguiente:
[BASH]#fsck[opciones]/dev/hdXXX(osdXXX)

En la tabla siguiente se muestran las opciones ms usadas:


Opciones

Descripcion
Ejecuta comprobaciones en todos los sistemas de archivos incluidos en /etc/fstab.

-A

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.


- 70 -

Especifica el tipo de sistema de archivos a comprobar; por defecto se asume ext2. El


-t tipo

valor de tipo determina que verificador especfico para el sistema de archivos es


utilizado.

-b
superbloque

Utiliza una copia del superbloque alternativa. En el modo interactivo, 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 archivos parece limpio.

-p

Repara automticamente el sistema de archivos sin hacer preguntas.

-y
-v

Responde automticamente "yes" a todas las preguntas interactivas permitiendo la


utilizacin no interactiva de e2fsck.
Muestra el estado del proceso

Montando y desmontando sistemas de archivos


Controlando el montaje y desmontaje del sistema de archivos
Como ya se vi anteriormente, la estructura de los sistemas de archivos estn generalmente
divididos en particiones, unidas todas ellas en el punto de montaje raiz (/) o seapradas . Los
sistemas de archivos 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.

Administrando la tabla del sistema de archivos


Para que las diferentes particiones estn disponibles desde un primer momento es necesario
montarlas durante el arranque del sistema, los dispositivos removibles tambin se usan
frecuentemente y es aconsejable tenerlos preparados para usar los comandos de montaje. Toda
este informacin se guarda en el archivo /etc/fstab . Los sistemas de archivos definidos en este
archivo son revisados y montados durante el arranque del sistema. Sus entradas se consultan como
fuente de informacin por defecto cuando los usuarios quieren montar dispositivos removibles. En el
siguiente ejemplo de /etc/fstab se puede ver que se trata de un archivo de texto con 6 campos en
cada linea:
DeviceMountpointF.typeM.OptionsDFPN
/dev/sda1/ext2defaults11
/dev/sda5/bootext2defaults12
/dev/sda9/homeext2defaults12
/dev/sda10/tmpext2defaults12
/dev/sda11swapswapdefaults00
/dev/fd0/mnt/floppyext2noauto,users00
/dev/hdc/mnt/cdromiso966noauto,ro,users00

Device

Este campo especifica la particin del sistema de archivos, por ejemplo /dev/hda1.

- 71 -

Este campo no puede contenter el dispositivo entero (/dev/sda)


Aqu se introduce el directorio donde se quiere que el dispositivo sea montado. Por
Mount point

ejemplo si la particin /dev/hda1 tiene el sistema de archivos root, donde est el


sistema se montar en /

Filesystem type
Mount options

En este campo se indica que tipo de particin se trata, ext2, ext3, ext4, reiserfs,
swap, iso9660
Se explican ms adelante, se separan por comas.
El programa dump consulta la entrada del /etc/fstab para ver cada cuanto tiempo

Dump frecuency debe hacer el backup. Normalmente tiene el valor 1 para filesystems basados en
ext2y ext3 y 0 para los dems.
Este campo es usado por la utilidad fsck cuando la opcin -A se especifica,
Pass number
para el fsck

normalmente
0

en

tiempo
No

de

arranque.

chequear

Tiene
el

valores:
sistema

1 - Debe ponerse para el filesystem root (/) y ordena al fsck a chequearlo primero
2 - Hace el chequeo de la unidad, despus del chequeo de los marcados con un 1

En el ejemplo se tiene un disco duro SATA La primera particin /dev/sda1 tiene el directorio root (/),
la quinta contiene las imgenes del kernel para el arranque, la 9 para el directorio de los usuarios, la
particin 10 es la temporal, la particion 11 para el sistema de swap. Luego se tiene la /dev/fd0 para
diskettes y la /dev/hdc para el lector de CD Se pueden aadir/modificar estas entradas en cada caso
y segn las necesidades de cada uno.

Montando el sistema de archivos


Los sistemas de archivos son montados con el comando mount. Durante el arranque, los sistemas
de archivos que no contienen un 0 en el pass number son chequeados y luego montados. Despus
del arranque se pueden aadir ms sistemas de archivos 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 consultan al archivo /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
archivo /etc/fstab y monta el sistema de archivos 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 archivos.
La sintaxis bsica de esta utilidad es la siguiente:
[BASH]#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 archivos:
Opciones
-a
-h

Descripcion
Monta todos los fileystems especificados en el /etc/fstab menos los que tengan la opcin
noauto
Ayuda del comando mount

- 72 -

-o

Especifica las opciones del mount en la linea de comandos

-r

Monta filesystems en modo de solo lectura

-t fstype

Especifica un tipo de fileystem

-v

Salida interactiva

-w

Monta fileystems de lectura/escritura

Opciones del mount


Estas opciones se especifican en el archivo /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:
Opciones

Descripcion

async

Toda la E/S al sistema de archivos debera hacerse asncronamente.

auto

Puede montarse con la opcin -a

defaults

Establece las opciones: rw, suid, dev, exec, auto, nouser y async. Es la opcion por
defecto en sistemas ext2

dev

nterpretar dispositivos especiales de caracteres o bloques en el sistema de archivos

exec

Permitir la ejecucin de binarios

noauto

Slo puede montarse explcitamente (esto es, la opcin -a no har que el sistema de
archivos se monte)
No permitir la ejecucin de ningn binario en el sistema de archivos montado. Esta

noexec

opcin puede ser til para un servidor que tiene sistemas de archivos que contienen
binarios para otras arquitecturas distintas de la suya.

nosuid
nouser

No permitir el efecto de los bits SUID ni SGID


Prohibir a un usuario ordinario (esto es, distinto de root) montar el sistema de archivos.
Esto es lo predeterminado

ro

Montar el sistema de archivos en modo de slo lectura.

rw

Montar el sistema de archivos de lectura y escritura

suid

Permitir el efecto de los bits SUID y SGID

sync

Toda la E/S al sistema de archivos debera hacerse sncronamente.

user

Permitir a un usuario ordinario montar el sistema de archivos

users

Permite a cualquier usuario el montaje/desmontaje de el sistema de archivos

Desmontando el sistema de archivos


Los sistemas de archivos pueden ser desmontados usando el comando umount. Cuando un sistema
de archivos es desmontado, los contenidos del rbol principal se actualizan, no pudiendose usar el
umount si el sistema de archivos que se quiere desmontar est en uso. Si el sistema de archivos
est en uso el comando umount dar un error. Esto puede ocurrir por ejemplo cuando tenemos
- 73 -

abierto un archivo 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:
[BASH]#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 archivos.
Opciones

Descripcion
Desmonta todos los filesystems descritos en /etc/mtab. Este archivo est mantenido por

-a

los comando mount y umount en tiempo real, se usa normalmente cuando se


apaga/reinicia el PC.

-t fstype

Desmonta slo los filesystems del tipo especificado

Administrando cuotas de disco


Establecer y consultar cuotas de disco
La administracin del espacio en disco duro del equipo puede ser una tarea problemtica. El
espacio disponible es un recurso limitado que muy a menudo se consume a un ritmo alarmante
provocando que un sistema de archivos bien proporcionado se vuelva insuficiente al cabo del
tiempo. En los sistemas multiusuario no importa lo grande que sea el sistema de archivos los
usuarios siempre terminarn llenndolo. Y a nadie le interesa que un sistema de archivos se llene
demasiado pronto. Una forma de prevenir que sto ocurra es el establecimiento de cuotas de disco,
de esta forma podrn establecerse lmites a la cantidad de espacio en disco consumido por usuarios
independientes o por grupos de stos. Tpicamente un tamao de cuota es mucho menor que el
espacio libre del sistema de fichers donde se configura, de esta forma se puede evitar que un
usuario o un grupo consuma demasiado espacio. Pueden configurarse cuotas para cada sistemas
de archivos incluido en /etc/fstab, aunque normalmente solo se aplican en aquellos sistemas de
archivos donde los usuarios finales guardan sus archivos por ejemplo el /home/nombreDelUsuario
No es necesario establecer una cuota en /usr, por ejemplo, ya que los usuarios finales no pueden
guardar archivos all. Pueden configurarse cuotas para los usuarios individuales incluidos en
/etc/passwd y para los grupos en /etc/group.

Cuotas de Limitacion
Pueden establecerse hasta cinco tipos de cuotas de limitacin por cada sistema de archivos. Estas
limitaciones se especifican en bloques de disco, normalmente de 1024 bytes cada uno y estas son:
Opciones
Lmite hard
por usuario
Lmite

soft

por usuario

Descripcion
El lmite hard es la mxima cantidad de espacio en disco que un usuario puede
disponer en el sistema. Una vez que el usuario alcanza este lmite ya no se le permitir
realizar nuevas escrituras en el disco.
Cada usuario puede almacenar datos libremente en el sstema de archivos hasta que
alcance el lmite soft. ste lmite acta como una especie de zona de aviso, advirtiendo
al usuario que debe ir limpiando sus directorios pero, a diferencia del lmite hard se le
- 74 -

permite seguir trabajando. Cuando el espacio consumido por un usuario supera el


lmite soft pero no el lmite hard se envan mensajes de aviso al terminal del usuario
advirtindole que est excediendo su cuota pero las operaciones de escritura
terminarn correctamente.
Lmite hard
por grupo
Lmite

Se trata del lmite final asignado a un grupo por el sistema de cuotas. Una vez que se
alcanza este lmite, ninguno de los miembros de dicho grupo podrn realizar escrituras
en el disco, incluso aunque no hayan excedido sus lmites individuales.

soft Este lmite se comporta de la misma forma que el de usuario pero se controla en base

por grupo

al espacio consumido por el grupo en lugar de por el usuario individual.


Una vez que se alcanza el lmite soft comienza el periodo de gracia para el usuario o el

Periodo de
gracia

grupo. Cuando expira ste periodo de gracia, el lmite soft se convierte en lmite hard
hasta que se hayan eliminado los archivos suficientes para que se resuelva el exceso
de cuota. El periodo de gracia puede ajustarse para cualquier nmero de meses,
semanas, das, horas, minutos o segundos. Un valor tpico es el de siete das.

Todos estos lmites pueden establecerse utilizando el comando edquota, que se detallar a
continuacin. Cuando una escritura en disco excede un lmite hard o un lmite soft con el periodo de
gracia expirado, solo se completar una parte de la operacin de escritura dejando un archivo
truncado y, probablemente, inservible. Puede que el usuario no haya podido ver los mensajes de fin
de cuota porque la aplicacin haya ocultado la shell y los mensajes de dicha aplicacin lo lleven a
confusin al indicarle que el disco est lleno o protegido de escritura.

Comandos de cuotas
Linux proporciona una serie de comandos para gestin y consulta de las cuotas en los sistemas de
archivos Parte de la configuracin requerida para establecer las cuotas inicialmente ha de hacerse a
mano y sin ninguno de los comandos especficos de cuotas. Este proceso se explicar en la seccion
Habilitando Cuotas.

quota
Muestra las limitaciones de cuota en usuario o en grupo. La opcin -u est activada por defecto.
Solo root puede utilizar la opcin -u y usuario para ver las limitaciones de otros usuarios. El resto de
los usuarios usuarios podrn usar la opcin -g y grupo para ver solamente las limitaciones de los
grupos de los que sean miembros, siempre y cuando tengan permiso de lectura en los archivos
quota.group. La sintaxis bsica de esta utilidad es la siguiente:
[BASH]#quota[u][opciones]usuario
[BASH]#quotag[opciones]grupo

Se pueden utilizar muchas opciones con el comando quota. Las utilizadas ms frecuentemente son
las que se muestran en la tabla siguiente:
Opciones

Descripcion

-q

Establece el modo silencioso que solo muestra las situaciones de exceso de cuota.

-v

Establece el modo explcito que muestra las cuotas incluso cuando no se ha consumido

- 75 -

ningn espacio en disco o no se hayan definido.


Ejemplo 1: Siendo roo t, examina todas las cuotas del usuario mayra:
[BASH]#quotauvmayra
Diskquotasforusermayra(uid512):
Filesystemblksquotalimitgracefilesquotalimitgrace
/dev/sda9945610000102003200
/dev/hda123001700

Este ejemplo muestra que el usuario mayra est cerca de consumir su lmite soft de 10000 bloques,
con un lmite hard de 10200 bloques en /dev/sda9, y que no tiene cuota establecida en /dev/hda1. La
lnea correspondiente /dev/hda1 se muestra debido a la utilizacin de la opcin -v. No se muestran
los valores correspondientes al periodo de gracia porque aun no se ha excedido el lmite soft.
Ejemplo 2: Siendo el usuario mayra, examina las cuotas para el grupo contaduria, del que dicho
usuario es miembro:
[BASH]#quotagvcontaduria
Diskquotasforusermayra(uid513):
Filesystemblksquotalimitgracefilesquotalimitgrace
/dev/sda91000*99010006days3439804000
/dev/hda1000000

En este caso, el grupo contaduria ha excedido el escaso lmite soft de 990 bloques y ha alcanzado
su lmite hard de 1000 bloques. El periodo de gracia original en este ejemplo se estableci en siete
das de los cuales quedan seis das restantes, lo que quiere decir que ha pasado un da desde que
se excedi el lmite soft.

quotaon
Activa las cuotas configuradas previamente en uno o ms sistemas de archivos. La sintaxis bsica
de esta utilidad es la siguiente:
[BASH]#quotaon[opciones]puntoDeMontaje(Ejemplo:/home/var)
[BASH]#quotaon[opciones]a

Se pueden utilizar muchas opciones con el comando quotaon. Las utilizadas ms frecuentemente
son las que se muestran en la tabla siguiente:
Opciones

Descripcion
Activa las cuotas en todos los sistemas de archivos incluidos en /etc/fstab y que estn

-a

marcados como de lectura-escritura y con cuotas. Normalmente se utiliza en el proceso


de arranque para activar las cuotas.

-g
-u
-v

Activa las cuotas de grupo. Esta opcin no es necesaria si se utiliza -a ya que sta otra
activa tanto las cuotas de usuario como las de grupo.
Activa las cuotas de usuario; esta es la opcin por defecto.
Establece el modo explcito de tal forma que se muestra un mensaje por cada sistema
de archivos en el que se han activado las cuotas.

Ejemplo 1: Activar todas las cuotas definidas en el archivo /etc/fstab


[BASH]#quotaonav

Ejemplo 2: Activar las cuotas de usuario slo en el sistema de archivos /home


[BASH]#quotaonav/home

- 76 -

quotaoff
Desactiva las cuotas de disco en uno o ms sistemas de archivos La sintaxis bsica de esta utilidad
es la siguiente:
[BASH]#quotaoff[opciones]puntoDeMontaje(Ejemplo:/home/var)
[BASH]#quotaoff[opciones]a

Se pueden utilizar muchas opciones con el comando quotaoff. Las utilizadas ms frecuentemente
son las que se muestran en la tabla siguiente:
Opciones
-a
-g
-u
-v

Descripcion
Desactiva las cuotas en todos los sistemas de archivos en /etc/fstab.
Desactiva las cuotas de grupo. Esta opcin no es necesaria si se utiliza la -a ya que sta
ltima incluye tanto las cuotas de usuario como las de grupo.
Desactiva las cuotas de usuario; esta es la opcin por defecto.
Establece el modo explcito que mostrar un mensaje para cada sistema de archivos en
el que se desactiven las cuotas.

Ejemplo 1: Desactivar todas las cuotas mostrando todos los mensajes


[BASH]#quotaoffav

quotacheck
Revisa los sistemas de archivos y compila las bases de datos de cuotas. Esta comando no est
incluido especficamente en los objetivos del examen LPI 101, pero es un componente importante en
el sistema de cuotas de Linux. El comando quotacheck -a debera ser ejecutado de forma regular
por medio de cron. La sintaxis bsica de esta utilidad es la siguiente:
[BASH]#quotacheck[opciones]puntoDeMontaje(Ejemplo:/home/var)
[BASH]#quotacheck[opciones]a

Se pueden utilizar muchas opciones con el comando quotacheck. Las utilizadas ms


frecuentemente son las que se muestran en la tabla siguiente:
Opciones

Descripcion
Comprueba todas las cuotas de los sistemas de archivos incluidos en /etc/fstab. Se

-a

comprobarn tanto las cuotas de usuario como las de grupo segn se indique en las
opciones usrquota y grpquota.

-g grupo

Compila solamente la informacin de grupo.


Compila solamente la informacin de usuario; sta es la opcin por defecto. No

-u usuario obstante, si se especificase la opcin -g, entonces habra que incluir esta si se desea
que se procesen tambin las cuotas de usuario.
Establece el modo explcito que mostrar toda la informacin de lo que el programa est
-v

haciendo. Esta opcin indica que el programa est activo mediante un smbolo giratorio
en el terminal. sto queda muy bonito pero podra ser un problema si estamos
conectados mediante un mdem lento.

Ejemplo 1: Inicializa todos los archivos de cuotas

- 77 -

[BASH]#quotaoffa
[BASH]#quotacheckaguv
[BASH]#quotaona

Para actualizar los archivos de bases de datos de cuotas debemos desactivar primero las mismas.
Ejemplo 2: Con las cuotas activas, actualizar las cuotas de usuario en memoria para el sistema de
archivos /home
[BASH]#quotacheckv/home

edquota
Modifica las cuotas de usuario o grupo. Este es un comando interactivo que utiliza un editor de texto
para configurar los parmetros de cuotas para usuarios o grupos. Por defecto se utiliza el editor vi.
Cuando se enva el comando, se ejecuta un editor con un archivo temporal que contiene las
opciones de cuotas. Al guardar el archivo temporal, el editor finaliza y los cambios se guardan en las
bases de datos de cuotas. En la primera forma del comando, se modifica una lista de usuarios o
grupos separados por espacios en blanco especificados en el apartado nombres. Si se incluye la
opcin -p y proto-usuario, las cuotas de ese usuario o grupo se utilizarn para los nombres y no se
lanzar ningn editor. En la segunda forma del comando, con la opcin -t, se editarn
interactivamente los lmites soft para cada sistema de archivos La sintaxis bsica de esta utilidad es
la siguiente:
[BASH]#edquota[pprotousuario][opciones]nombres
[BASH]#edquota[opciones]t

Se pueden utilizar muchas opciones con el comando edquota. Las utilizadas ms frecuentemente
son las que se muestran en la tabla siguiente:
Opciones

Modifica las cuotas de grupo. Si se especifica -g, se asumir que todos los nombres

-g
-p
usuario
-t
-u

Descripcion
son grupos y no usuarios, incluso si se especificase tambin -u.

proto-

Duplica las cuotas del usuario prototipo para cada grupo o usuario especificado.
Este es el mecanismo mas habitualmente utilizado para inicializar al mismo tiempo
las cuotas de varios usuarios o grupos.
Modifica los lmites soft. Este comando interpreta unidades de sec (segundos),
min(minutos), hour (horas), day (das), week (semanas), y month (meses).
Modifica las cuotas de usuario. Es la opcin por defecto, pero se ignorar si se
especificase la opcin -g

Ejemplo 1: Modifica las cuotas de usuario para mayra


[BASH]#edquotaumayra
Quotasforusermayra:
/dev/sda9:blocksinuse:87,limits(soft=99900,hard=100000)
inodesinuse:84,limits(soft=0,hard=0)
/dev/hda1:blocksinuse:0,limits(soft=0,hard=0)
inodesinuse:0,limits(soft=0,hard=0)
"/tmp/EdP.auHTZJ0"5lines,241characters

En este ejemplo, a mayra se le ha definido en /dev/sda9 un lmite soft de 99.900 bloques, un lmite
hard de 100.000 bloques, y ningn lmite de archivos. No tiene ninguna limitacin en /dev/hda1.

- 78 -

Ejemplo 2: Modificar los lmites soft para usuarios en todos los sistemas de archivos
[BASH]#edquotatu
Timeunitsmaybe:days,hours,minutes,orseconds
Graceperiodbeforeenforcingsoftlimitsforusers:
/dev/sda9:blockgraceperiod:7days,
filegraceperiod:3days
/dev/hda1:blockgraceperiod:7days,
filegraceperiod:3days
"/tmp/EdP.aiTShJB"5lines,249characters

En este caso se han establecido unos periodos de gracia de siete das para bloques (espacio en
disco) y de tres das para archivos (inodos).

repquota
Se utiliza para obtener un informe de la situacin de las cuotas. En la primera forma del comando,
repquota mostrar un informe por usuario o por grupo de las cuotas de los sistemas de archivos
indicados. En la segunda forma, la opcin -a har que se muestre un sumario de todos los sistemas
de archivos con cuotas. Este comando solo podr ejecutarlo el usuario root, a menos que los
archivos de bases de datos de las cuotas tengan permisos de lectura universales. Para cada usuario
se imprime el nmero de archivos y el espacio en disco utilizados en ese momento junto con las
cuotas creadas con edquota. La sintaxis bsica de esta utilidad es la siguiente:
[BASH]#quotaoff[opciones]puntoDeMontaje(Ejemplo:/home/var)
[BASH]#quotaoffa[opciones]

Se pueden utilizar muchas opciones con el comando repquota. Las utilizadas ms frecuentemente
son las que se muestran en la tabla siguiente:
Opciones

Descripcion
Hace informes de todas las cuotas de todos los sistemas de archivo de lectura-escritura

-a

incluidos en /etc/fstab. Se mostrarn tanto las cuotas de usuario como las de grupo
segn se indique en las opciones usrquota y grpquota.

-g

Muestra las cuotas de grupos.

-u

Muestra las cuotas de usuarios; es la opcin por defecto.

-v

Activa el modo explcito, el cual aade una cabecera descriptiva a la salida del comando.

Ejemplo 1: Informe de las cuotas de usuario para el sistema de archivos /home


[BASH]#repoquotav/home

Habilitando las cuotas


Para poder utilizar las cuotas, en primer lugar hay que habilitarlas (El kernel debe estar compilado
con soporte para cuotas. En el caso improbable de que no fuese as, habra que recompilarlo con
esta opcin.). No es un proceso dificultoso pero, desgraciadamente, tampoco es simple. Para
aclarar un poco este proceso, en esta seccin se incluir un breve tutorial explicando como habilitar
las cuotas de usuario y de grupo en el filesystem /dev/sda9 montado bajo /home. Hay que tener en
cuenta que pueden habilitarse cuotas solo de usuario, de grupo o ambas segn sea necesario.
1. Definir las opciones en /etc/fstab. En la lnea que contiene el sistema de archivos /home, aadir
las opciones usrquota y grpquota a la opcin default, como en este ejemplo
/dev/sda9/homeext3defaults,usrquota,grpquota12

- 79 -

Estas opciones indican a las utilidades de configuracin de cuotas que particiones deben ser
tratadas por dichas utilidades cuando stas busquen en /etc/fstab.
2.Crear los archivos quota.user y quota.group en la raz del sistema de archivos /home y dar
permisos slo para root:
[BASH]#touch/home/quota.user/home/quota.group
[BASH]#chmod600/home/quota.user/home/quota.group

Estos dos archivos son las bases de datos de las cuotas de usuarios y grupos. Cada sistema de
archivos con cuotas utilizar sus propias bases de datos. Al habilitar las cuotas, estos archivos
contendrn datos binarios (no son archivos de texto). Si se quisiera que los usuarios puedan
examinar las cuotas de los grupos a los que pertenecen, el archivo quota.group necesitar un
permiso de 644 en lugar de 600.
3.Ejecutar quotacheck para inicializar las bases de datos:
[BASH]#quotacheckavug

4.Ahora, verificar que los archivos de bases de datos se han inicializado realmente, para ello nos
aseguramos que su tamao no sea cero (en este ejemplo cada uno ocupa 16.192):
[BASH]#lsal/home/quota.*
rw1rootroot16192Dec2719:53/home/quota.group
rw1rootroot16192Dec2719:53/home/quota.user

5.Ejecutar quotaon para activar el sistema de cuotas:


[BASH]#quotaona

6.Verificar que el script de inicializacin del sistema ( /etc/rc.d/rc.sysinit o similar) activar las cuotas
cada vez que el sistema cargue. Puede ser algo similar al ejemplo siguiente aunque puede variar de
sistema a sistema:
if[x/sbin/quotacheck]
then
echo"Checkingquotas."
/sbin/quotacheckavug
echo"Done."
fi
if[x/sbin/quotaon]
then
echo"Turningonquotas."
/sbin/quotaonavug
fi

7.Aadir un script al directorio crontab del sistema (por ejemplo /etc/crontab.weekly) para que se
ejecute quotacheck rutinariamente. El script del ejemplo puede ser vlido:
#!/bin/bash
/sbin/quotacheckavug

Alternativamente, podra ponerse /sbin/quotacheck en el archivo crontab de root (utilizando el


comando crontab -e) para su ejecucin semanal, como en este ejemplo:
#ejecutarquotachecksemanalmente
03**0/sbin/quotacheckavug

En este momento, el sistema de archivos /home est listo para aceptar cuotas de usuario o de
grupo, controlarlas y emitir informes sobre ellas.

- 80 -

Permisos de archivos y directorios


Administracion de Permisos
Los comandos que usaremos para asignar permisos tanto a carpetas como a archivos seran los
sigueintes: La forma es como deben ser usados estos comando sera de la siguiente manera:

Permisos de archivos y directorios


Los componentes informativos de un archivo estan compuestos por 1 campo y 3 secciones, este
campo y secciones son las siguientes:
Estas 3 secciones estan compuestas por los siguientes elementos
Opciones

Descripcion
Permite la lectura de un archivo. ste es el nico permiso necesario para copiar un

archivo.
Cuando se aplica a un directorio, se pueden leer ver sus archivos.
Permite escribir en un archivo. Con l se pueden cambiar, modificar o sobreescribir los

contenidos del archivo. Cuando se aplica en un directorio, este permite borrar y mover
archivos incluso si no se tiene el permiso de escritura especfico sobre el archivo
individual
Permiso de ejecucin: permite ejecutar el archivo si contiene los scripts necesarios o

puede ser ejecutado por el sistema. Aplicado a un directorio, este permite el acceso al
mismo. Cuando se aplica a un conjunto con permisos de lectura dentro de un escritorio,
este permite buscar dentro de dicho directorio.

- (guion)

Indica la ausencia de permiso. Por ejemplo, r-x indica que ese usuario puede leer y
ejecutar, pero no escribir

El elemento llamado campo es un identificador que indica si un elemento es un directorio, un


documento o un enlace simbolico
Por tanto, los 10 campos de permisos se resumen en:
1.Tipo de elementro (archivo, directorio, otro) 2.El propietario puede leer 1.El propietario
puede escribir 2.El propietario puede ejecutar 3.El grupo puede leer 4.El grupo puede
escribir 5.El grupo puede ejecutar 6.Usuario (no pertenece al grupo y al propietario) puede
leer 7.Usuario puede escribir 8.Usuario puede ejecutar
Estos permisos tienen valores numricos como se muestran en la siguiente tabla
Permiso Valor Numerico
r

- (guion) 0
Los valores numricos hacen posible aadir permisos a la vez y expresarlo de un modo sencillo. Por

- 81 -

ejemplo, si un archivo permite al usuario rwx, el valor numrico sera 4(r)+2(w)+1(x)=7. El formato
del conjunto de los permisos de un archivo se muestra en la siguiente figura.
La tabla siguiente muestra la conversin numrica de un conjunto de distintos permisos posibles:
Permiso Valor Numerico
1

--------x

-------w-

-------wx

------r--

------r-x

------rw-

10

-----x---

11

-----x--x

22

-----w--w-

33

----wx-wx

55

---r-xr-x

77

---rwxrwx

100

--x------

101

--x-----x

111

--x--x--x

222

-w--w--w-

311

-wx--x--x

322

-wx-w--w-

400

r--------

444

r--r--r--

511

r-x---x--x

544

r-xr--r--

644

rw-r--r--

666

rw-rw-rw

755

rwxr-xr-x

777

rwxrwxrwx

Comando chmod
Chmod ( change mode ) permite cambiar los permisos de acceso de un archivo o directorio.
- 82 -

La sintaxis bsica de esta utilidad es la siguiente:


[BASH]#chmod[modificadores][opciones][archivo/directorio]

Donde los modificadores son los antes vistos en la tabla anterior.


Se pueden utilizar muchas opciones con el comando chmod. Las utilizadas ms frecuentemente son
las que se muestran en la tabla siguiente:
Opciones

Descripcion
Lista los archivos y directorios a los que se les va aplicando el comando a medida que el

-v

mismo se ejecuta

-R

Aplica el comando chmod recursivamente a todos los archivos y subdirectorios.

Permisos especiales
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:
Asignar ID de usuario (set user ID) (SUID)
Asignar ID de grupo (set group ID) (SGID)
Sticky bit

SUID
La asignacin de ID de usuario se aplica cuando se desea que un determinado usuario ejecute un
programa que de otro modo no podra. Por ejemplo, slo el usuario root sera capaz de ejecutar la
funcin funcion xyz (comenzar backups, restaurar el sistema, entrar en otros recursos, etc) a causa
de las ramificaciones de seguridad, pero se necesita que los usuarios ejecuten un shell script para
realizar esta accin, porque no se dispone del tiempo necesario para hacerlo personalmente. Se
puede crear este shell script como root y asignar el permiso SUID de modo que el usuario que
ejecute el script sea root slo dentro de ese script. Antes y despus del manuscrito, es nicamente
un usuario, pero durante la ejecucion del script es como si fuera root. El permiso numerico de SUID,
4000, es sumado al valor de otros permisos. Una vez aplicado este, cambia la x en el campo del
ejecutable para el propietario de los permisos a una s:

SGID
Similar en la naturaleza a SUID, el permiso de la identificacin de grupo del sistema se aplica
cuando es necesario que la persona que ejecuta el archivo sea un miembro del grupo que posee el
archivo (y no el propietario). Esto cambia el x en el permiso del grupo a un s, y el valor numrico es
2000:

Stiky Bit
Este permiso no trabaja como los otros permisos especiales. Con un valor numrico de 1000, sus
operaciones difieren cuando estn aplicadas a un directorio o a un archivo. Cuando est aplicado a
un directorio, evita que los usuarios supriman archivos de las carpetas que les conceden el permiso
de escritura, a menos que sean el propietario del archivo. Por defecto, cualquier usuario que tenga
permiso de escritura en un directorio puede suprimir archivos dentro de ese directorio, incluso si no
tiene el permiso de escritura de ese archivo.

- 83 -

Cuando se aplica sobre un archivo, el archivo se convierte en sticky (bloqueado). La primera vez
que se accede o se ejecuta el archivo y se carga en memoria, permanece cargado en memoria fsica
(RAM) o espacio swap de modo que pueda funcionar ms rpidamente que si se lee desde el disco.
Si el archivo no es ejecutable, el ltimo bit de permiso ( para otra categoria) se convierte en T. Si el
archivo es un archivo ejecutable, o el permiso se aplica a un directorio, el bit pasado se convierte en
una t. Cuando se aplica el permiso chmod y las letras, aparece t de todos modos (sea archivo o
directorio).

Administrando el propietario de los archivos


Comando chown
El comando chown cambia el propietario de cada archivo, usuario o grupo, si slo se da un nombre
de usuario (o UID numrico), entonces ese usuario se convierte en el propietario de cada archivo
dado, y el grupo al que pertenece el archivo no cambia. Si al nombre de usuario sigue un signo de
dos puntos y un nombre de grupo o GID numrico, sin espacios entre ellos, entonces tambin se
cambia el grupo al que pertenece cada archivo, se usa con la siguiente sintaxis: La sintaxis bsica
de esta utilidad es la siguiente:
[BASH]#chown[opciones]usuario:grupoarchivo

Se pueden utilizar muchas opciones con el comando quotaon. Las utilizadas ms frecuentemente
son las que se muestran en la tabla siguiente:
Opciones
-c

Descripcion
Muestra un mensaje donde menciona solamente aquellos archivos cuyo propietario
cambia realmente.

-f

No muestra mensajes de error sobre archivos cambiarse.

-R

Cambia recursivamente el propietario de directorios y sus contenidos.

-v

Describe la accin efectuada (o no) para cada archivo de forma interactiva.

Comando chgrp
El comando chgrp se usa para cambiar el grupo propietario de un archivo o directorio. El comando
busca en el archivo /etc/group para confirmar la existencia del grupo especificado antes de cambiar
los permisos. La sintaxis bsica de esta utilidad es la siguiente:
[BASH]#chgrp[opciones]grupoarchivo

Se pueden utilizar muchas opciones con el comando quotaon. Las utilizadas ms frecuentemente
son las que se muestran en la tabla siguiente:
Opciones
-c
-h
-f

Descripcion
Muestra un mensaje donde menciona solamente aquellos archivos cuyo propietario
cambia realmente.
Acta sobre enlaces simblicos propiamente en vez de sobre lo que apunten. Disponible
solamente si el sistema proporciona la primitiva lchown
No muestra mensajes de error sobre archivos cuyo grupo no pueda cambiarse.
- 84 -

-R
-v

Cambia recursivamente el grupo al que pertenecen directorios y sus contenidos. (Y


contina incluso si se encuentran errores.)
Describe la accin efectuada (o no) para cada archivo de forma interactiva.

El usuario root puede efectuar los cambios al grupo que desee; para que un usuario pueda hacerlo,
debe ser el propietario del archivo y pertenecer al grupo donde est efectuando el cambio.

Crear y cambiar enlaces de archivos


Creando links a archivos
A veces es til o necesario tener un mismo archivo en varias localizaciones del sistema de archivos,
por ejemplo, para acceder con diferentes permisos sobre un archivo dependiendo de su
localizacin. En Linux existe una solucin para eso: los enlaces o links.
Estos son de dos tipos:
1. Los Duros o Hard Links, y 2. Los Suaves, Symbolic Links o Symlinks.

Los Hard Links


Estos enlaces comparten el inodo del archivo original. De hecho, un hard link es indistinguible del
original y por eso los cambios en el link afectan al archivo 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 archivos. Su sintaxis es como sigue:
[BASH]#ln/ruta/completa/archivonombre_enlace

Los Symlinks
Estos enlaces si que pueden extenderse a otros sistemas de archivos. Tambin pueden hacer
referencia a directorios, de hecho, pueden referenciar hasta archivos inexistentes. La lectura y
escritura, as como la copia del enlace, afectan al archivo objetivo, mientras que el borrado afecta al
propio enlace. Borrar el archivo objetivo tampoco elimina el enlace automticamente. Su sintaxis es
como sigue:
[BASH]#lns/ruta/completa/archivonombre_enlace

- 85 -

Shell, Scripting y Manejo de datos


Personalizando y conociendo el shell
El shell es un interprete de comandos para la interaccion entre el usuario y el hardware del equipo. Existen
diferentes variantes del SHELL, de las cuales las mas conocidas son el bash, el csh o zsh. El mas utilizado
debido a sus grandes cualidades es el bash. El kernel o nucleo del sistema es el responsable de la
comuncacion entre los programas, las instrucciones de bajo nivel y el hardware del sistema. Este captulo
explica cmo personalizar su sistema modificando sus archivos de inicializacin y estableciendo las variables
de entorno ms comunes

Archivos de configuracion de BASH


Los archivos de inicializacin encargados de la configuracin del sistema dependen del shell que el
administrador del sistema haya especificado como shell predeterminado cuando instal el sistema. El Shell
Bourne es el shell predeterminado para la mayoria de los sistemas operativos GNU/LINUX, pero tambin
puede usar el C shell o el Korn Shell . Cada uno de estos shell dispone de su propio archivo o archivos de
inicializacin. Si no ests seguro de que shell es el shell predeterminado de su equipo ejecute el siguiente
comando:
[BASH]#echo$SHELL
/bin/bash

Observe la salida del comando. Si es


/bin/bash
/bin/csh
/bin/ksh

SushelldeentradaseraelShellBourne
SushelldeentradaseraelshellC
SushelldeentradaseraelshellKorn

Sin tener en cuenta el shell que est usando, cuando entra por primera vez en el sistema, ste procesa
generalmente el archivo perfil: /etc/profile. Usualmente, el administrador del sistema es el dueo de este
archivo, y los usuarios lo pueden leer pero no escribir en l. Despus de que el sistema ejecute el perfil del
sistema, este procesa el perfil del usuario contenido en el fichero /.bash_profile. El perfil del usuario es uno o
varios archivos de inicializacin que definen el entorno de trabajo. Por ejemplo, si javier se encuentra en el
entorno fedora su sistema comprobar dicho archivo o grupo de archivos cada vez que empiece una nueva
Herramienta del shell o una ventana de la Herramienta de comandos. Segn que shell predeterminado est
establecido, su perfil de usuario ser uno de los siguientes:
.bash_profile(paralosshellBourneyKorn)
.loginy.cshrc(paraelshellC)

Su fichero o ficheros de perfil de usuario estn situados en su directorio de usuario y le permiten configurar su
entorno de trabajo segn sus preferencias.

Fichero /etc/profile
Este fichero contiene la configuracion del sistema y se ejecuta durante el inicio de cada sesion, contiene la
definicion de las variables globales para todos los usuarios.

- 86 -

Fichero /etc/bashrc
Fichero con las funciones y los alias comunes que sera invocado a travez del fichero /bashrc de cada usuario.

Ficheros /.bash_profile , /.bash_logout y /.bashrc


Existen tres ficheros en el directorio de cada usuario los cuales tienen un significado especial para el shell
Bash. Estos ficheros permiten al usuario configurar el entorno de su cuenta automaticamente cuando entra en
el sistema, cuando arranca un subshell o ejecutar comandos cuando sale del sistema. Los nombres de estos
ficheros son /.bash_profile, /.bashrc y /.bash_logout. Si ninguno de estos ficheros existe en el directorio del
usuario, /etc/profile es utilizado por el sistema como fichero de configuracion de bash.

/.bash_profile
Este fichero es el mas importante de los tres. Es leido y los comandos incluidos en el, ejecutados, cada vez
que el usuario entra en el sistema. Cualquier cambio hecho en este fichero no tendra efecto hasta que
salgamos y entremos en el sistema de nuevo. Bash permite dos sinonimos para este fichero, .bash_login
(derivado del C shell) y .profile (derivado del Bourne y Korn shell). Si .bash_profile no existe, el sistema
buscara primero .bash_login y luego .profile. Solamente uno de estos ficheros es leido, en el caso que existan
simultaneamente.

/.bashrc
Es leido cuando el usuario arranca un subshell, escribiendo por ejemplo bash en la linea de comandos. Esto
nos permite ejecutar diferentes comandos para la entrada al sistema o para la ejecucion de un subshell.

/.bash_logout
Es el fichero leido por Bash, cuando salimos del sistema. Podemos definir, por ejemplo que se borren los
ficheros temporales creados en nuestra ultima sesion o registrar el tiempo que hemos estado utilizando el
sistema. Si .bash_logout no existe, ningun comando sera ejcutado a nuestra salida.

/inputrc
Define las opciones de entrada del teclado. Para eliminar el sonido de error se agrega la siguiente linea al final
del fichero
set bell-style none
Su fichero de configuracion global es el fichero
/etc/inputrc

- 87 -

Diferencias entre

/.bash_profile , /.bashrc y /etc/profile, /etc/bashrc


Solo existe una sola copia de los archivos /etc/profile y /etc/bashrc.
Cada usuario tiene su propia copia de los archivos .bashrc y .bash_profile. (Estos archivos se encuentran en el
directorio personal de cada usuario.
Los archivos /etc/profile y /etc/bashrc afectan a todos los usuarios. Por tanto son gestionados por root
Como cada usuario tiene su propia copia de los archivos .bashrc y .bash_profile, su copia le pertenece y se la
puede autogestionar

Variables de entorno
El sistema establece el entorno de sistema mediante un conjunto de especificaciones definidas en los archivos
de inicializacin. Si desea modificar temporalmente su entorno para la sesin actual de trabajo puede escribir
comandos directamente en su BASH. Sin embargo, si desea modificar su entorno de trabajo de un modo ms
permanente, puede almacenar variables de entorno permanentes en los archivos .bash_profile, .bash_login,
o .cshrc.
Para mostrar las variables de entorno establecidas actualmente asignadas en su sistema teclee lo siguiente :
[BASH]#env
HISTORY=100 HOME=/home/hack HZ=100 LOGNAME=hack MAIL=/var/spool/mail/hack
MANSECTS=\1:1m:1c:1f:1s:1b:2:\3:3c:3i:3n:3m:3k:3g:3e:3x11:3xt:3

w:3b:9:4:5:7:8
PATH=/usr/binSHELL=/bin/bashTERM=xtermTZ=EST5EDT

A continuacion tenemos la lista de variables reservadas por el interprete de comandos mas comunes. Todas
ellas tienen un significado especial para el mismo, algunas de ellas solo se pueden leer, a otras se le asignan
ciertos valores automaticamente y algunas pierden su significado si le cambiamos los valores que tienen por
defecto. Muchas de dichas variables pueden estar ya incluidas en su perfil de usuario. Como ya se mencion
anteriormente en su archivo de perfil de usuario (.bash_profile para los shell Bourne y Korn, y .cshrc para el
shell C).
CDPATH Especificalosdirectoriosquesehandebuscarcuandoseescribeunniconombre
dedirectoriosinunnombrederutadeaccesocompleto.
HOME Definelarutadeaccesoabsolutadesudirectorioraz.Elsistemautilizaesta
informacinparadeterminarqueeldirectoriocambiecuandoescribaelcomandocdsin
argumentos.
IFS
Una lista de caracteres para separar campos; usado cuando el interprete de
comandosseparapalabrascomopartedeunaexpansion.
MAIL Si este parametro tiene un fichero definido y la variable MAILPATH no esta
definida,bashinformaalusuariodelallegadadecorreoalficheroespecificado.
MAILPATH
Unalistadeficherosseparadaporcomas,enloscualeselinterpretede
comandoscompruebaperiodicamentedelallegadadecorreo.
PATH Una lista de directorios, separados por comas, en los cuales el interprete de
comandosbuscaporcomandos
PS1
Promptprincipal.Elvalorpordefectoes'\s\v\$'
PS2
Elpromptsecundario.Elvalorpordefectoes'>'
BASH Larutadeaccesocompletausadaparaejecutarlainstanciaactualdebash

- 88 -

BASH_ENV
Si esta variable esta definida cuando bash es llamado para ejecutar un
script, su valor es expandido y usado como el nombre del fichero leido antes de
ejecutarelscript.
BASH_VERSION Elnumerodeversiondebashusada
EUID Elidentificadornumericodeusuariodelusuarioactual
GROUPS Unamatrizquecontienelalistadelosgruposaqueperteneceelusuarioactual
HISTFILESIZE El numero maximo de lineas contenidas en la historia de comandos, por
defecto500
HOSTNAME
Elnombredemaquinaactual
HOSTTYPE
CadenadescribiendolamaquinaqueestaejecutandoBash
MACHTYPE
CadenadescribiendoeltipodesistemaqueestaejecutandoBash
OLDPWD Directoriopreviodefinidoporelcomando'cd'
OSTYPE CadenadescribiendoelsistemaoperativoqueestaejecutandoBash
PPID Elnumerodeprocesodelprocesopadredelinterpretedecomandos
PS3
Elvalordeestavariableseusacomo'prompt'
PWD
Directorioactualdefinidoporelcomando'cd'
SECONDS
NumerodesegundosdesdequeBashfuearrancado
SHELLOPTS
ListaconopcionesdeBashactivadas
UID
Elvalornumericorealdelusuarioactual

Como establecer la variable PATH


La variable de entorno PATH se usa para ubicar comandos dentro de la jerarqua de directorios de
GNU/LINUX. Al fijar PATH se crea un conjunto de directorios fijos que el sistema buscar siempre que un
usuario. escriba el nombre de un comando.
Por ejemplo, si no tiene establecida ninguna variable PATH y quiere copiar un archivo, tendr que introducir el
nombre de ruta de acceso completo para el comando, /usr/bin/cp. Sin embargo, si ha establecido la variable
PATH para incluir el directorio /usr/bin, podr simplemente escribir cp y el sistema ejecutar siempre el
comando. Esto es debido a que su sistema busca el comando cp en todos los directorios nombrados en la
variable PATH y lo ejecuta cuando lo encuentra. Para los shell Bourne y Korn, la variable PATH se especifica
en el archivo .bash_profile de su directorio personal utilizando la siguiente sintaxis:
PATH=/usr/bin:/home/bin

Variables locales y globales de Shell


Estas variables pueden ser variables locales y son definidas solo en el BASH local. Tu puedes pasar estas
variables de locales a globales exportandolas a tu entorno de desarrollo
Ejemplo:
[BASH]#saludo='LinuxParaTodos'
[BASH]#echo$saludoLinuxParaTodos
[BASH]#bash
[BASH]#echo$saludo
[BASH]#exitexit

Como podemos observar asignamos a la variable saludo la cadena Linux Para Todos y luego mostramos
su contenido. Seguido a ello invocamos una segunda terminal y nuevamente imprimimos el contenido de la

- 89 -

variable saludo, la cual no es mostrada debido a que es una variable local y no global. Para solucionar este
problema se debe exportar la variable local lo cual hara que la variable se convierta en variable global.
Ejemplo:
[BASH]#saludo='LinuxParaTodos'
[BASH]#exportsaludo
[BASH]#bash
[BASH]#echo$saludoLinuxParaTodos
[BASH]#exitexit

El comando export convierte la variable local a global, para excluir la variable recien exportada use
el comando unset
Ejemplo:
[BASH]#unsetsaludo
AliasparaelShellBash

El comando alias permite al usuario crear atajos a los comandos mas implementados.
Ejemplo:
[BASH]#ls
amsn_receivedDocumentsObjetivos.pngRPMComo.pdfbinkernelfedora.pdf

El comando anterior tiene la funcion de listar el contenido de un directorio, suponga que usted quisiera
implementar este comando para ademas de listar el contenido le arroje datos mas relevantes como por
ejemplo, permisos de ejecucion, numero de enlaces, fecha de creacion y tamao, para ello se implementan los
alias de comandos.
Ejemplo:
[BASH]#aliasls='lsl'
[BASH]#lsdrwx2hackusers4096jun2909:46amsn_receiveddrwxrxrx2hack
users4096jun905:01bindrwxrxrx2hackusers4096jun905:01Documentsrwxrxr
x 1 hack users 64472 jun 1 17:23 Objetivos.png rwxrxrx 1 hack users 78002 jun 5
15:25RPMComo.pdfrwrr1hackusers1439863jun1610:38kernelfedora.pdf

Para eliminar los alias asignados use el comando unalias


[BASH]#unaliasls

Funciones de Shell Bash


Las funciones son muy perecidas a los alias pero estas admiten una gama mas amplia de instrucciones para
su ejecucin. Las funciones se construyen mediante la siguiente sintaxis
FunctionnombreDeLafuncion(){listaDeComandos;}

- 90 -

Donde
function
Ordenqueinvocaalcomandofunction,esopcional
nombreDeLaFuncion() Elnombredelafuncion
listaDeComandos
Elcuerpodelafuncion

Ejemplo:Construyendo una funcion


[BASH]#functionlistado(){pwd;ls;}

La funcion anteriormente definida se usa de la siguiente manera:


[BASH]#function
/home/valdo/lpic/generallinux2/notesCVS_whizzy_gl2.notes.fmt_whizzy_gl2.notes.pag
Ejemplosvalidosenladeclaraciondefunciones
[BASH]#functionlook(){pwd;ls;}
[BASH]#functionlook{pwd;ls;}
[BASH]#$look(){pwd;ls;}
[BASH]#look()
>{>pwd;>ls;>}
Ejemplosinvalidosenladeclaraciondefunciones
[BASH]#functionlook()pwd;ls;
[BASH]#look(){pwd;ls}
[BASH]#functionlook(){pwd;ls;}

Personalizar o escribir scripts simples


En este capitulo estudiaremos la forma de crear sencillos scripts mediante la implementacion de sentencias de
control. Estas construcciones nos ayudan a controlar la ejecucion de un script y a obtener diversos resultados
dependiendo de las condiciones que se cumplan o no cuando ejecutamos el script.
En Bash existen estas construcciones para controlar el flujo de ejecucion de un script:
if/else:Ejecutaunaseriedecomandosdependiendosiunaciertacondicionsecumpleo
no.
for:Ejecutaunaseriedecomandosunnumerodeterminadodeveces.
while:Ejecutaunaseriadecomandosmientrasqueunadeterminadacondicionseacumpla.
until:Ejecutaunaseriedecomandoshastaqueunadeterminadacondicionsecumpla.
case:Ejecutaunaovariaslistasdecomandosdependiendodelvalordeunavariable.
select:Permiteseleccionaralusuariounaopciondeunalistadeopcionesenunmenu.

La mayoria de condiciones utilizadas con estas construcciones son comparaciones de cadenas alfanumericas
o numericas, valores de terminacion de comandos y comprobaciones de atributos de ficheros. Antes de seguir
viendo como estas construcciones se pueden utilizar, vamos a ver como las condiciones se pueden definir.

Comparaciones de cadenas alfanumericas


Operador

Significado

cadena1=cadena2
cadena1!=cadena2
cadena1<cadena2
cadena1>cadena2

cadena1esigualacadena2
cadena1noesigualacadena2
cadena1esmenorquecadena2
cadena1esmayorquecadena2

- 91 -

ncadena1
zcadena1

cadena1noesigualalvalornulo(longitudmayorque0)
cadena1tieneunvalornulo(longitud0)

Comparacion de valores numericos


Operador

Significado

xlty
xley
xeqy
xgey
xgty
xney

xmenorquey
xmenoroigualquey
xigualquey
xmayoroigualquey
xmayorquey
xnoigualquey

Comparaciones de atributos de fichero


Operador
Significado
dfichero
Ficheroexisteyesundirectorio
efichero
Ficheroexiste
ffichero
Ficheroexisteyesunficheroregular
rfichero
Tienespermisodelecturaenfichero
sfichero
Ficheroexisteynoestavacio
wfichero
Tienespermisodeescrituraenfichero
xfichero
Tienespermisodeejecucionenfichero
Ofichero
Ereseldueodelfichero
Gfichero
Elgrupodelficheroesigualaltuyo
fichero1ntfichero2
fichero1esmasrecientequefichero2
fichero1otfichero2
fichero1esmasantiguoquefichero2

Sentencia if
La sentencia if es un condicional simple, tal vez la hayas visto antes en algunos otros lenguajes de
programacion.
Su sintaxis es la siguiente:
ifcmd
thencmd1cmd2cmdn
elifcmd3thencmd4elsecmd5cmd6cmdmfi

La sentencia if trabaja de la siguiente forma: En caso que el comando cmd haya sido ejecutado con xito, los
comandos del bloque del then (cmd1, cmd2 y cmdn) sern ejecutados, en caso contrario, los comandos
ejecutados sern los del bloque opcional elif el cual verifica los comandos del bloque del then (cmd3) los
cuales seran ejecutados, en caso contrario sera pasado al siguiente bloque, el else (cmd3, cmd4 y cmdm),
terminando con un fi.
Ejemplo
#!/bin/bash

- 92 -

echo ' Adivina el valor numerico de la variable' read A if [ $A = 1 ] then echo "Acertaste" exit 0 elif [ $A = 2 ] then
echo "Muy cerca" else echo "Lejosss...." fi exit 0

Sentencia for
El bucle for en Bash es un poco distinto a los bucles for tradicionales de otros lenguajes como C o Java, sino
que se parece ms al bucle for each de otros lenguajes, ya que aqu no se repite un nmero fijo de veces, sino
que se procesan las palabras de una frase una a una. Su sintaxis es la siguiente:
forvar[inlista]
doSentenciasqueusan$vardone

Si se omite in lista, se recorre el contenido de $@, pero aunque vayamos a recorrer esta variable, en este
tutorial la indicaremos explcitamente por claridad. Por ejemplo si queremos recorrer una lista de planetas
podemos hacer:
forplanetainMercuryVenusTerraMarteJupiterSaturno
doecho$planeta#Imprimecadaplanetaenunalneadone

La lista del bucle for puede contener comodines. Por ejemplo, el siguiente bucle muestra informacin detallada
de todos los ficheros en el directorio actual:
forficheroin*
dolsl"$fichero"done

Sentencia while y until


La sintaxis del comando while es la siguiente:
whilecomando
dodone

La sintaxis del comando until es la siguiente:


untilcomando
dodone

En este caso el comando tambin puede ser una condicin encerrada entre [ ]. La nica diferencia entre while
y until es que while se ejecuta mientras que el cdigo de terminacin del comando sea exitoso, es decir 0,
mientras que until se ejecuta hasta que el cdigo de terminacin sea exitoso, segn esto until se puede
interpretar como ejecutar varias veces un comando hasta que tenga exito.
Ejemplo
#!/bin/bash
ScriptquemuestralosdirectoriosdePATH
path=$PATHwhile[$path];doecho${path%%:}if[${path#:}=$path];thenpath=
elsepath=${path#:}fidone

- 93 -

Sentencia case
Mientras que esta sentencia en lenguajes como C o Java se usa para comprobar el valor de una variable
simple, como un entero o un carcter, en Bash esta sentencia permite realizar una comparacin de patrones
con la cadena a examinar.
Su sintaxis es la siguiente:
casecadenain
patron1)Sentencias;;patron2)Sentencias;;esac

Cada patrn puede estar formado por varios patrones separados por el carcter |. Si cadena cumple alguno de
los patrones, se ejecutan sus correspondientes sentencias (las cuales se separan por ;) hasta ;;.
Ejemplo:
/bin/bash
Scriptqueconvierteficherosdeimagenalformato.jpg
forficheroin"$@"dofichero_ppm=${fichero%.}.ppmcase$ficheroin
.jpg)exit0;;
.tga)tgatoppm$fichero>$fichero_ppm;;
.xpm)xpmtoppm$fichero>$fichero_ppm;;
.pcx)pcxtoppm$fichero>$fichero_ppm;;
.tif)tifftopnm$fichero>$fichero_ppm;;
.gif)figtoppm$fichero>$fichero_ppm;;
.pnm|.ppm);;
)echo"Formato.${fichero##.}nosoportado"
exit 1;; esac fichero_salida=${fichero_ppm%.ppm}.jpg pnmtojpeg $fichero_ppm >
$fichero_salidaif![$fichero=$fichero_ppm];thenrm$fichero_ppmfidone

Sentencia select
La sentencia select nos permite generar fcilmente un men simple. Su sintaxis es la siguiente:
selectvariable[inlista]
doSentenciasqueusan$variabledone

Vemos que tiene la misma sintaxis que el bucle for, excepto por la palabra select en vez de for. La sentencia
genera un men con los elementos de lista, donde asigna un nmero a cada elemento, y pide al usuario que
introduzca un nmero. El valor elegido se almacena en variable, y el nmero elegido en la variable REPLY.
Una vez elegida una opcin por parte del usuario, se ejecuta el cuerpo de la sentencia y el proceso se repite
en un bucle infinito. Aunque el bucle de select es infinito (lo cual nos permite volver a pedir una opcin cuantas
veces haga falta), el bucle se puede abandonar usando la sentencia break. La sentencia break, al igual que en
C y Java, se usa para abandonar un bucle, y se puede usar en el caso, tanto de select, como de los bucles for,
while y until. Pero a diferencia de C y Java no sirve para abandonar la sentencia case, sino que sta se
abandona usando los dos puntos comas ;;. El prompt que usa la funcin es el definido en la variable de
entorno PS3, y es habitual cambiar este prompt antes de ejecutar select para que muestre al usuario un
mensaje ms descriptivo. Por defecto el valor de PS3 es #?, lo cual no es un prompt que suela gustar
- 94 -

especialmente a los usuarios.

Manejo de datos en MySQL


Conectarse y desconectarse del servidor
Para conectarse al servidor, generalmente se le porporcionar a mysql un nombre de usuario y una
contrasea. Si el servidor se est ejecutando en un ordenador distinto a donde est estableciendo la conexin,
tambin se deber especificar el nombre de host. Consulte con su administrador para saber los parmetros de
conexin (nombre de usuario, contrasea y host) que debe emplear. Una vez que conozca los parmetros
apropiados, debera poder conectarse de este modo:
[BASH]#mysqlhhostuuserp
Enterpassword:

host y user representan el nombre del ordenador donde se est ejecutando el servidor de bases de datos
MySQL y el nombre de usuario de la cuenta que se usar para conectarse. Reemplcelos por los valores
apropiados para elcaso. Los asteriscos (********) representan la contrasea, debe ingresarse cuando mysql
muestra Enter password:.
Si todo funciona bien, se ver una informacin de ingreso seguida por el prompt mysql>:
[BASH]#mysqlhhostuuserp
Enterpassword:WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQL
connectionidis25338toserverversion:5.0.9betastandardType'help;'or'\h'for
help.Type'\c'toclearthebuffer.mysql>

El prompt anuncia que mysql est listo para procesar comandos. Algunas instalaciones de MySQL permiten
conectarse como usuario annimo (sin nombre) si el servidor se est ejecutando en el ordenador local. Si esto
sucede en su caso, deberia poder conectarse al servidor ejecutando mysql sin ningn parmetro:
[BASH]#mysql

Despus de haberse conectado, puede desconectarse en cualquier momento escribiendo QUIT (o \q) en el
prompt mysql>:
mysql>QUIT
Bye

En Unix, tambin puede desconectarse presionando Control-D. La mayora de los ejemplos en las secciones
siguientes asumen que ya se ha conectado al servidor. Por eso muestran el prompt mysql>.

Conectarse y desconectarse del servidor


Cercirese de haberse conectado al servidor, tal como se describe en la seccin anterior. Esto en s mismo no
selecciona ninguna base de datos para trabajar. En este punto es ms importante aprender un poco ms
acerca de cmo realizar consultas que ir directamente a crear tablas, cargar datos, y recuperarlos. Esta
seccin describe los principios bsicos del ingreso de comandos, empleando varias consultas que puede
- 95 -

realizar para familiarizarse con la forma en que funciona mysql. Aqu tiene un comando simple que ordena al
servidor que muestre su nmero de versin y la fecha actual. Ingrselo a continuacin del prompt mysql> y
presione Enter:
mysql>SELECTVERSION(),CURRENT_DATE;
+++
VERSION()
CURRENT_DATE
+++
5.0.7betaMax
20050711
+++1rowinset(0.01sec)mysql>

Esta consulta le muestra varias cosas acerca de mysql:


Un comando normalmente consiste en una sentencia SQL seguida de punto y coma. (Hay excepciones donde
el punto y coma puede omitirse. QUIT, mencionado anteriormente, es una de ellas. Luego conocer otras.)
Cuando ingresa un comando, mysql lo enva al servidor para ser ejecutado e imprime los resultados. A
continuacin muestra de nuevo el prompt mysql> para informarle que est listo para otro comando.
mysql imprime los resultados de la consulta en forma tabulada (filas y columnas). La primera fila contiene
etiquetas para las columnas. Las filas siguientes son los resultados de la consulta. Generalmente, el nombre
de cada columna es el nombre del campo que trae desde la base de datos. Si est trayendo el valor de una
expresin, en lugar del contenido de un campo o columna de una tabla (como en el ejemplo anterior), mysql
etiqueta la columna usando el texto de la expresin.
mysql informa cuntas filas fueron devueltas y cunto tiempo le tom ejecutarse a la consulta, lo cual da una
idea aproximada del rendimiento del servidor. Estos valores son imprecisos porque representan tiempo de
reloj corriente (no tiempo de CPU), y adems porque estn afectados por factores como la carga del servidor o
la latencia de red. (Para simplificar los ejemplos de este capitulo, a partir de ahora no se mostrar la lnea
rows in set.)
Las palabras clave pueden ingresarse en cualquier combinacin de minsculas y maysculas. Las siguientes
consultas son equivalentes:
mysql>SELECTVERSION(),CURRENT_DATE;
mysql>selectversion(),current_date;mysql>SeLeCtvErSiOn(),current_DATE;

Aqui tiene otra consulta que demuestra que mysql puede usarse como calculadora:
mysql>SELECTSIN(PI()/4),(4+1)*5;
+++
SIN(PI()/4) (4+1)5
+++
0.70710678118655
25
+++1rowinset(0.02sec)

Las consultas mostradas hasta ahora han sido relativamente cortas, sentencias de una sola lnea. Se puede
inclusive ingresar mltiples sentencias en una misma lnea. Solamente deben separarse con punto y coma:
mysql>SELECTVERSION();SELECTNOW();
++
VERSION()

- 96 -

++
5.0.7betaMax
++
1rowinset(0.00sec)++
NOW()
++
2005071117:59:36
++1rowinset(0.00sec)

No es necesario que un comando sea ingresado en una sola lnea, de ese modo, comandos extensos que
requieren varias lineas no son un problema. mysql determina cuando una sentencia ha llegado a l final
observando si termina en un punto y coma, no si se lleg al final de la lnea fsica. (En otras palabras, mysql
acepta un formato libre para las entradas: recolecta lineas pero no las ejecuta hasta que encuentra el punto y
coma.)
Aqui tiene una sentencia de mltiples lneas:
mysql>SELECT
>USER()
>,

CURRENT_DATE;
+++
USER() CURRENT_DATE
+++
jon@localhost
20050711
+++
1rowinset(0.00sec)

Observe en este ejemplo que el prompt cambia de mysql> a -> despus que se ha ingresado la primera lnea
de una consulta de mltiples lneas. Esta es la forma en que mysql advierte que no se ha completado la
sentencia y an espera por el resto. El prompt es un aliado, puesto que suministra informacin valiosa. Si se
emplea, siempre se sabr lo que mysql est esperando.
Si durante el ingreso de un comando decide que no quiere ejecutarlo, canclelo tipeando \c:
mysql>SELECT
>USER()
>\c
mysql>

Una vez ms observe el prompt. Cambia a mysql> despus de que ingresa \c, informndole que mysql est
listo para un nuevo comando. La siguiente tabla muestra cada uno de los indicadores que podr ver y sintetiza
lo que dicen acerca del estado en que se encuentra mysql:

Prompt

Significado

mysql> Listoparaunnuevocomando.
>
Esperandolasiguientelneaenuncomandodemltipleslneas

- 97 -

'>
Esperandolasiguientelnea,seencuentraabiertaunacadenaquecomienzacon
apostrofo(''').
">
Esperandolasiguientelnea,seencuentraabiertaunacadenaquecomienzacon
comillasdobles('"').
`>
Esperandolasiguientelnea,seencuentraabiertaunacadenaquecomienzacon
tilde('`').
/>
Esperandolasiguientelnea,seencuentraabiertouncomentarioquecomienzacon
/.

El prompt /> fue introducido en la serie 5.0 a partir de MySQL 5.0.6. Es frecuente que se origine una sentencia
de mltiples lineas cuando accidentalmente le da entrada a un comando de una sola lnea pero olvida
terminarlo con punto y coma. En ese caso, mysql aguarda por ms caracteres:
mysql>SELECTUSER()
>

Si esto le ocurre (considera que ha ingresado una sentencia completa pero solamente obtiene un prompt ->),
la mayora de las veces es porque mysql est esperando por el punto y coma. Si no advierte lo que el indicador
trata de decirle, podra demorar un buen tiempo en hacer lo que necesita. Ingrese un punto y coma para
completar la sentencia, y mysql la ejecutar:
mysql>SELECTUSER()
>;
++
USER()
++
joesmith@localhost
++

Los prompts '> y "> aparecen durante el ingreso de cadenas. Puede escribir cadenas delimitadas por ''' o '"'
(por ejemplo, 'hola' o "adios"), y mysql le permite ingresar cadenas divididas en mltiples lneas. Cuando ve un
prompt '> o "> significa que ha comenzado a ingresar una cadena comenzando con ''' o '"' pero no ha
ingresado el correspondiente caracter de terminacin. A menudo esto significa que inadvertidamente omiti
este carcter. Por ejemplo:
mysql>SELECT*FROMmy_tableWHEREname='SmithANDage<30;
'>

Si ingresa esta sentencia SELECT, presiona ENTER y espera por el resultado, nada ocurrir. En lugar de
asombrarse por el tiempo que consume la consulta, note lo que el prompt '> le est diciendo. Indica que mysql
espera por el final de una cadena inconclusa. (Ve el error en la sentencia? La cadena 'Smith no tiene el
apstrofo de cierre.) Qu hacer llegado a este punto? Lo ms simple es cancelar el comando. No obstante,
no puede simplemente tipear \c en este caso, porque mysql interpretar que es parte de la cadena que est
ingresando!. En lugar de eso, tipee el caracter de cierre que falta y entonces ingrese \c.>:
mysql>SELECT*FROMmy_tableWHEREname='SmithANDage<30;
'>'\cmysql>

El prompt cambia de nuevo a mysql>, informando que mysql est listo para un nuevo comando. El prompt `>
es similar a '> y "> , pero informa que est pendiente de completar un identificador delimitado por tildes. Es
importante conocer el significado de estos indicadores, ya que si por error se ingresa una cadena incompleta,
todo lo que se ingrese posteriormente ser aparentemente ignorado por mysql incluyendo el comando

- 98 -

QUIT. Esto puede ser sumamente desconcertante, en particular si no se conoce lo que debe hacer para
terminar la lnea y cancelar el comando.

Crear y utilizar una base de datos


Una vez que se sabe la forma de ingresar comandos, es el momento de acceder a una base de datos.
Suponga que en su hogar posee varias mascotas y desea registrar distintos tipos de informacin sobre ellas.
Puede hacerlo si crea tablas para almacenar sus datos e introduce en ellas la informacin deseada. Entonces,
podr responder una variedad de preguntas acerca de sus mascotas recuperando datos desde las tablas.
Esta seccin le muestra como:
Crearunabasededatos
Crearunatabla
Introducirdatosenlatabla
Recuperardatosdesdelatabladevariasmaneras
Emplearmltiplestablas

La base de datos menagerie (en ingls significa "coleccin de animales") se ha hecho deliberadamente
simple, pero no es difcil imaginar situaciones del mundo real donde podra usarse un tipo similar de base de
datos. Por ejemplo, para un granjero que desee hacer el seguimiento de su hacienda, o para los registros de
los pacientes de un veterinario. En el sitio web de MySQL pueden descargarse archivos de texto con datos de
ejemplo y algunas de las sentencias empleadas en las siguientes secciones.
Mediante la sentencia SHOW se encuentran las bases de datos que existen actualmente en el servidor:
mysql>SHOWDATABASES;
++
Database
++
mysql
test
tmp
++

Probablemente la lista obtenida sea distinta en su ordenador, pero es casi seguro que tendr las bases de
datos mysql y test. La base de datos mysql es necesaria porque es la que describe los privilegios de acceso
de los usuarios. La base de datos test se provee para que los usuarios hagan pruebas. Tenga en cuenta que si
no tiene el privilegio SHOW DATABASES, no podr ver todas las bases de datos que hay en el servidor.
Si la base de datos test existe, intente acceder a ella:
mysql>USEtest
Databasechanged

Advierta que, al igual que QUIT, USE no necesita que ponga un punto y coma al final (aunque puede hacerlo
si lo desea). La sentencia USE tiene otra particularidad: debe escribirse en una sola linea.
Puede colocar los ejemplos siguientes en la base de datos test, si tiene acceso a ella, pero si trabaja en un
- 99 -

ambiente compartido, lo que deposite all puede ser fcilmente borrado por alguien ms que tenga el acceso.
Por este motivo, debera pedirle a su administrador permiso para usar una base de datos propia. Suponga que
quiere llamarla menagerie. El administrador necesitar ejecutar un comando como este:
mysql>GRANTALLONmenagerie.*TO'su_nombre_mysql'@'su_host_cliente';

Donde su_nombre_mysql es el nombre de usuario que se le asign, y su_host_cliente es el host u ordenador


desde donde se conectar.

Crear y utilizar una base de datos


Si el administrador crea su base de datos en el mismo momento que le otorga privilegios, puede comenzar a
utilizarla, de lo contrario necesitar crearla:
mysql>CREATEDATABASEmenagerie;

En ambientes Unix, los nombres de las bases de datos son case sensitive (al contrario que las palabras clave),
de modo que siempre debe referirse a su base de datos como menagerie, y no Menagerie, MENAGERIE, o
una variante similar. Esto tambin se aplica a los nombres de tablas.Esta restriccin no existe en Windows,
aunque puede utilizar el mismo esquema de maysculas cuando se refiera a bases de datos y tablas en una
consulta dada. Al crear una base de datos, sta no se selecciona para su uso, debe hacerlo explicitamente.
Para convertir a menagerie en la base de datos actual, use este comando:
mysql>USEmenagerie
Databasechanged

Las bases de datos slo necesitan ser creadas una sola vez, pero deben ser seleccionadas cada vez que se
inicia una sesin de mysql. Puede hacerse a travs del comando USE como se muestra en el ejemplo, o
puede indicar la base de datos en la linea de comandos al ejecutar mysql. Simplemente debe indicar el
nombre de la base de datos a continuacin de los parmetros que necesite ingresar. Por ejemplo:
shell>mysqlhhostuuserpmenagerie
Enterpassword:

Advierta en el comando anterior que menagerie no es la contrasea. Si se quisiera suministrar la contrasea


en la linea de comandos, despus de la opcin -p, debe hacerse sin dejar espacios en blanco (por ejemplo,
-pmypassword, no -p mypassword). De todos modos, colocar la contrasea en la linea de comandos no es
recomendable porque lo expone a la vista de otros usuarios.

Crear una tabla


La creacin de la base de datos ha sido una tarea sencilla, pero hasta ahora permanece vaca, como le
muestra SHOW TABLES:
mysql>SHOWTABLES;
Emptyset(0.00sec)

La parte difcil es decidir cmo debera ser la estructura de su base de datos: qu tablas necesitar, y qu
columnas habr en cada tabla. Querr una tabla para contener un registro por cada mascota. Esta tabla puede

- 100 -

llamarse pet, y debera contener, como mnimo, el nombre de cada animal. Dado que el nombre no es muy
relevante por s mismo, tendra que tener ms informacin. Por ejemplo, si ms de una persona en su familia
tendr mascotas, querr listar tambin el dueo de cada animal. Y algunos otros datos descriptivos bsicos,
como especie y sexo. Qu hacer con la edad? Podra ser de inters, pero no es un buen dato para almacenar
en una base de datos. La edad cambia a medida que pasa el tiempo, lo cual significa que debera actualizar la
base de datos a menudo. En lugar de esto, es mejor almacenar un valor fijo, como la fecha de nacimiento. De
este modo, cada vez que requiera saber la edad, podr calcularla como la diferencia entre la fecha de
nacimiento y la fecha actual. MySQL provee funciones para realizar clculos con fechas, por lo que no es
dificultoso. Almacenar la fecha de nacimiento en lugar de la edad tiene otras ventajas:
Puede usar la base de datos para tareas como generar recordatorios para los prximos cumpleaos de
mascotas. (Si piensa que este tipo de consultas no es importante, considere que es lo mismo que hara en un
contexto de base de datos de negocios para identificar aquellos clientes a los que habr que enviar una tarjeta
por su cumpleaos, para conseguir ese toque personal con la asistencia del ordenador).
Puede calcular edades en relacin a otras fechas adems de la actual. Por ejemplo, almacenar la fecha de
muerte de una mascota le posibilita calcular la edad que tena a ese momento.
Probablemente pensar en otros tipos de informacin que resultaran tiles dentro de la tabla pet pero los
identificados hasta ahora son suficientes: name (nombre), owner (propietario), species (especie), sex (sexo),
birth (nacimiento) y death (muerte).
Debe usar la sentencia CREATE TABLE para especificar la estructura de una tabla:
mysql>CREATETABLEpet(nameVARCHAR(20),ownerVARCHAR(20),
>speciesVARCHAR(20),sexCHAR(1),birthDATE,deathDATE);

El tipo de dato VARCHAR es una buena eleccin para las columnas name, owner, y species porque los datos
que all se almacenan no son de longitud uniforme. En realidad no es necesario que todas estas columnas
tengan la misma longitud ni que sta sea 20. En MySQL 5.0.3 y versiones posteriores, normalmente se puede
adoptar cualquier longitud entre 1 y 65535, segn lo que se crea ms razonable. (Nota: Anteriormente a
MySQL 5.0.3, el lmite de longitud era 255.) Si en el futuro debiera aumentar la longitud de estos campos,
MySQL tiene la sentencia ALTER TABLE. Hay varios tipos de datos que podran usarse para representar el
sexo en los registros de animales, tal como 'm' y 'f', o 'male' (masculino) y 'female' (femenino). Lo ms simple
es usar los caracteres 'm' y 'f'. Es obvio el uso del tipo de dato DATE para las columnas birth y death.
Luego de crear una tabla, SHOW TABLES debera producir una salida:
mysql>SHOWTABLES;
++
Tablesinmenagerie
++
pet
++

Para verificar que la tabla ha sido creada en la forma esperada, utilice la sentencia DESCRIBE:
mysql>DESCRIBEpet;

- 101 -

+++++++
Field Type Null Key
Default
Extra
+++++++
name varchar(20) YES
NULL
owner varchar(20) YES
NULL
species
varchar(20) YES
NULL
sex
char(1)
YES
NULL
birth date YES
NULL
death date YES
NULL
+++++++

DESCRIBE puede ser utilizada en cualquier momento, por ejemplo, si olvida los nombres o el tipo de dato de
las columnas de la tabla.

Cargar datos a una tabla


Luego de crear la tabla, necesitar completarla con datos. Para esto, le sern de utilidad las sentencias LOAD
DATA e INSERT. Suponga que los registros de mascotas fueran como los mostrados a continuacin.
(Observe que MySQL espera que las fechas tengan el formato 'AAAA-MM-DD', esto puede ser diferente a lo
que acostumbra utilizar).
name owner
Fluffy Harold
Claws Gwen
Buffy Harold
Fang Benny
Bowser Diane
Chirpy Gwen
Whistler
Slim Benny

species
cat
f
cat
m
dog
f
dog
m
dog
m
bird
f
Gwen
bird
snake m

sex
birth death
19930204
19940317
19890513
19900827
19790831
19950729
19980911
19971209
19960429

Dado que est comenzando con una tabla vaca, una forma fcil de completarla es creando un fichero de texto
que contenga una lnea por cada animal, y luego insertando el contenido del fichero en la tabla mediante una
sola sentencia. Para esto, debera crear un fichero de texto llamado pet.txt, conteniendo un registro por linea,
con cada valor separado por un carcter de tabulacin, y dispuestos en el orden en el cual se especificaron las
columnas en la sentencia CREATE TABLE. Para valores ausentes (como sexo desconocido o fechas de
muerte de animales con vida), puede usar valores NULL. Para representar estos valores en el archivo de texto,
utilice \N (barra diagonal y N mayscula). Por ejemplo, el registro de Whistler se vera del modo siguiente (el
espacio en blanco entre cada valor es un solo carcter de tabulacin):
name owner species
Whistler
Gwen
bird

sex
\N

birth death
19971209
\N

Para cargar el fichero pet.txt dentro de la tabla pet, utilice este comando:
mysql>LOADDATALOCALINFILE'/path/pet.txt'INTOTABLEpet;

Si trabaja en Windows, con un editor que emplea \r\n (retorno de carro + nueva linea) como caracteres de fin
de lnea, debera usar:
mysql>LOADDATALOCALINFILE'/path/pet.txt'INTOTABLEpet
>LINESTERMINATEDBY'\r\n';

- 102 -

(En un ordenador Apple bajo OS X, probablemente quiera utilizar LINES TERMINATED BY '\r'.)
Opcionalmente puede especificar en la sentencia LOAD DATA los caracteres que actuarn como separador
de campo y fin de lnea, pero los valores por defecto son tabulacin y nueva lnea. Estos son suficientes para
que la sentencia lea correctamente el fichero pet.txt Cuando lo que desea es agregar nuevos registros de a
uno por vez, la sentencia INSERT resulta de utilidad. De esta sencilla manera, se suministran valores para
cada columna, dispuestos en el orden en el cual se especificaron las columnas en la sentencia CREATE
TABLE statement. Suponga que Diane obtiene un nuevo hamster llamado "Puffball". Se podra agregar un
nuevo registro, usando la sentencia INSERT de este modo:
mysql>INSERTINTOpet
>VALUES('Puffball','Diane','hamster','f','19990330',NULL);

Observe que las cadenas alfanumricas y las fechas son representados como cadenas delimitadas por
apstrofos. Tambin, con INSERT, se pueden insertar valores NULL directamente, para indicar un valor
ausente. No se debe utilizar \N como se hace con LOAD DATA. A partir de este ejemplo queda demostrado
que lleva mucho ms trabajo realizar una carga inicial de registros empleando varias sentencias INSERT que
si se hace mediante la sentencia LOAD DATA.

Extraer informacion de una tabla


La sentencia SELECT es utilizada para traer informacin desde una tabla. La sintaxis general de esta
sentencia es:
mysql>INSERTINTOpet
>VALUES('Puffball','Diane','hamster','f','19990330',NULL);

seleccionar_esto es lo que se quiere ver. Puede ser una lista de columnas, o para indicar todas las
columnas. desde_tabla indica la tabla donde estn los datos a recuperar. La clusula WHERE clause is
optional. es opcional. Si est presente, condiciones representa las condiciones que cada registro debe cumplir
para retornar como resultado.
Seleccionar todos los datos
La forma ms simple de SELECT recupera todo lo que hay en la tabla:
mysql>SELECT*FROMpet;
+++++++
name owner species
sex
birth death
+++++++
Fluffy Harold
cat
f
19930204 NULL
Claws Gwen cat
m
19940317 NULL
Buffy Harold
dog
f
19890513 NULL
Fang Benny dog
m
19900827 NULL
Bowser Diane dog
m
19790831 19950729
Chirpy Gwen bird f
19980911 NULL
Whistler
Gwen bird NULL 19971209 NULL
Slim Benny snake m
19960429 NULL
Puffball
Diane hamster
f
19990330 NULL
+++++++

Esta forma de SELECT es til si se quiere revisar la tabla completa, por ejemplo, despues de haberla cargado

- 103 -

con un conjunto de datos inicial. Por ejemplo, puede ocurrir que la fecha de nacimiento de Bowser no parezca
correcta. Consultando los papeles de pedigri, se descubre que el ao correcto de nacimiento es 1989, no
1979.

Existen al menos dos formas de solucionarlo:


Editando el fichero pet.txt para corregir el error, vaciando la tabla y volviendola a llenar con los datos. Para esto
se usan las sentencias DELETE y LOAD DATA:
mysql>DELETEFROMpet;
mysql>LOADDATALOCALINFILE'pet.txt'INTOTABLEpet;

No obstante, si opta por esto, deber volver a cargar el registro de Puffball.


Corrigiendo nicamente el registro errneo. Para esto se usa la sentencia UPDATE:
mysql>UPDATEpetSETbirth='19890831'WHEREname='Bowser';

UPDATE modifica solo el registro en cuestin y no requiere que se vuelva a llenar la tabla.

Seleccionar registros especificos


Como se ha visto en la seccin anterior, es fcil recuperar una tabla en su totalidad. Slo debe omitir la
clusula WHERE en la sentencia SELECT. Pero, generalmente, no se desea ver la tabla completa,
especialmente cuando alcanza un gran tamao. En cambio, usualmente, se tiene inters en obtener una
respuesta para una consulta en particular, en cuyo caso se especifican algunas restricciones para la
informacin que se traer. A continuacin se vern algunas consultas que responden preguntas acerca de las
mascotas. Se pueden seleccionar slo algunos registros de la tabla. Por ejemplo, si quisiera verificar los
cambios realizados sobre la fecha de nacimiento de Bowser, seleccione el registro de Bowser de esta manera:
mysql>SELECT*FROMpetWHEREname='Bowser';
+++++++
name owner species
sex
birth death
+++++++
Bowser Diane dog
m
19890831 19950729
+++++++

salida confirma que el ao fue correctamente registrado como 1989, ya no es 1979. Normalmente, las
comparaciones de cadenas no son case sensitive, por eso puede escribir el nombre como 'bowser',
'BOWSER', etc. El resultado de la consulta ser el mismo. Se pueden indicar condiciones a cumplir por
cualquier columna, no solamente por name. Por ejemplo, si quisiera saber qu animales han nacido luego de
1998, necesita evaluar la columna birth:
mysql>SELECT*FROMpetWHEREbirth>'199811';
+++++++
name owner species
sex
birth death
+++++++
Chirpy Gwen bird f

19980911

NULL

- 104 -

Puffball
Diane hamster
f
19990330 NULL
+++++++

Se pueden combinar condiciones, por ejemplo para localizar perros hembra:


mysql>SELECT*FROMpetWHEREspecies='dog'ANDsex='f';
+++++++
name owner species
sex
birth death
+++++++
Buffy Harold
dog
f
19890513 NULL
+++++++

La consulta anterior emplea el operador lgico AND. Tambin existe el operador OR:
mysql>SELECT*FROMpetWHEREspecies='snake'ORspecies='bird';
+++++++
name owner species
sex
birth death
+++++++
Chirpy Gwen bird f
19980911 NULL
Whistler
Gwen bird NULL 19971209 NULL
Slim Benny snake m
19960429 NULL
+++++++

AND and OR pueden ser combinadas, si bien AND tiene mayor precedencia que OR. Si utiliza ambos
operadores, es buena idea emplear parntesis para indicar explicitamente la forma en que las condiciones
deben agruparse:
mysql>SELECT*FROMpetWHERE(species='cat'ANDsex='m')
>OR(species='dog'ANDsex='f');+++++
++
name owner species
sex
birth death
+++++++
Claws Gwen cat
Buffy Harold

m
dog

19940317 NULL
f
19890513 NULL

Seleccionar columnas concretas


Si no se quieren ver filas completas, solo hace falta indicar las columnas en las que se est interesado,
separadas por comas. Por ejemplo, si desea saber cundo naci cada animal, seleccione las columnas name
y birth:
mysql>SELECTname,birthFROMpet;
+++
name birth
+++
Fluffy 19930204
Claws 19940317
Buffy 19890513
Fang 19900827
Bowser 19890831
Chirpy 19980911

- 105 -

Whistler
19971209
Slim 19960429
Puffball
19990330
+++

Para saber quien posee mascotas, utilice esta consulta:


mysql>SELECTownerFROMpet;
++
owner
++
Harold
Gwen
Harold
Benny
Diane
Gwen
Gwen
Benny
Diane
++

Observe que esta sentencia retorna el campo owner de cada registro, y algunos de ellos aparecen ms de una
vez. Para reducir la salida, recupere solamente una vez cada registro repetido, agregando la palabra clave
DISTINCT:
mysql>SELECTDISTINCTownerFROMpet;
++
owner
++
Benny
Diane
Gwen
Harold
++

Puede emplearse una clsula WHERE para combinar la seleccin de ciertas filas y de ciertas columnas. Por
ejemplo, para obtener nicamente la fecha de nacimiento de perros y gatos, ejecute esta consulta:
mysql>SELECTname,species,birthFROMpet
>WHEREspecies='dog'ORspecies='cat';
++++
name species
birth
++++
Fluffy cat
19930204
Claws cat
19940317
Buffy dog
19890513
Fang dog
19900827
Bowser dog
19890831
++++

- 106 -

Ordenar registros
Quiz advirti, en los ejemplos anteriores, que las filas resultantes se mostraron sin ningn orden en particular.
A menudo es ms fcil examinar la salida de una consulta cuando las filas se ordenan de algn modo
significativo. Para ordenar un resultado, se usa la clsula ORDER BY.
Aqui tiene las fechas de cumpleaos de los animales, ordenadas por fecha:
mysql>SELECTname,birthFROMpetORDERBYbirth;
+++
name birth
+++
Buffy 19890513
Bowser 19890831
Fang 19900827
Fluffy 19930204
Claws 19940317
Slim 19960429
Whistler
19971209
Chirpy 19980911
Puffball
19990330
+++

Por lo general, cuando se trata de columnas de tipo carcter, la ordenacin, al igual que otras operaciones
de comparacin no es case-sensitive. Significa que el orden permanece indefinido para las columnas que
son idnticas excepto por sus maysculas y minsculas. Puede no obstante forzar a que una columna se
ordene en forma sensible a maysculas empleando el modificador BINARY: ORDER BY BINARY columna. El
sentido de ordenacin, por defecto, es ascendente, con los valores ms pequeos primero. Para ordenar en
sentido inverso (descendente), agregue la palabra clave DESC luego del nombre de la columna por la que
ordena:
mysql>SELECTname,birthFROMpetORDERBYbirthDESC;
+++
name birth
+++
Puffball
19990330
Chirpy 19980911
Whistler
19971209
Slim 19960429
Claws 19940317
Fluffy 19930204
Fang 19900827
Bowser 19890831
Buffy 19890513
+++

Puede ordenar basndose en varias columnas, y cada columna en un sentido diferente. Por ejemplo, para
ordenar por tipo de animal en sentido ascendente y, dentro de cada tipo, ordenar por nacimiento en sentido
descendente (los animales ms jvenes primero) utilice la siguiente consulta:
mysql>SELECTname,species,birthFROMpet
>ORDERBYspecies,birthDESC;++++

- 107 -

name species
birth
++++
Chirpy bird 19980911
Whistler
bird 19971209
Claws cat
19940317
Fluffy cat
19930204
Fang dog
19900827
Bowser dog
19890831
Buffy dog
19890513
Puffball
hamster
19990330
Slim snake 19960429
++++

Advierta que la palabra clave DESC se aplica sobre la columna inmediatamente anterior (birth); no afecta el
sentido de ordenacin de la columna species.

Calculos sobre fechas


MySQL provee varias funciones que se aplican a clculos entre fechas, por ejemplo, para calcular edades u
obtener partes de una fecha. Para determinar cuntos aos de edad tiene cada mascota, hay que calcular la
diferencia entre el ao de la fecha actual y el de la fecha de nacimiento, y luego restar 1 al resultado si el dia y
mes actuales son anteriores al da y mes indicados por la fecha de nacimiento. La siguiente consulta devuelve,
para cada mascota, el nombre, la fecha de nacimiento, la fecha actual, y la edad en aos.
mysql>SELECTname,birth,CURDATE(),
>(YEAR(CURDATE())YEAR(birth))
>(RIGHT(CURDATE(),5)<RIGHT(birth,5))
>ASage
>FROMpet;
+++++
name birth CURDATE()
age
+++++
Fluffy 19930204 20030819
Claws 19940317 20030819
Buffy 19890513 20030819
Fang 19900827 20030819
Bowser 19890831 20030819
Chirpy 19980911 20030819
134Curso(tutorial)deMySQL

10
9
14
12
13
4

Whistler
19971209 20030819 5
Slim 19960429 20030819 7
Puffball
19990330 20030819 4
+++++

En el ejemplo anterior, YEAR() trae la parte correspondiente al ao de una fecha, y RIGHT() trae los 5
primeros caracteres contando desde la derecha, que representan la parte MM-DD de la fecha. La porcin de
la expresin que compara los valores MM-DD devuelve 1 o 0, lo cual se corresponde con la diferencia de 1
ao a restar de la edad si el dia de la fecha devuelto por CURDATE() ocurre antes que la fecha de nacimiento
birth. La expresin completa es un tanto confusa para usar como encabezado, por lo que se emplea un alias
(age) para que el encabezado sea ms comprensible. La consulta funciona bien, pero los resultados podran
revisarse ms fcilmente si las filas se presentaran en algn orden. Esto puede hacerse agregando la clusula

- 108 -

ORDER BY name para ordenar por nombre la salida:


mysql>SELECTname,birth,CURDATE(),
>(YEAR(CURDATE())YEAR(birth))>(RIGHT(CURDATE(),5)<RIGHT(birth,5))>ASage>
FROMpetORDERBYname;+++++
name birth CURDATE()
age
+++++
Bowser 19890831 20030819 13
Buffy 19890513 20030819 14
Chirpy 19980911 20030819 4
Claws 19940317 20030819 9
Fang 19900827 20030819 12
Fluffy 19930204 20030819 10
Puffball
19990330 20030819 4
Slim 19960429 20030819 7
Whistler
19971209 20030819 5
+++++

Para ordenar la salida por edad (age) en lugar de por nombre (name), solo hay que utilizar una clusula
ORDER BY diferente:
mysql>SELECTname,birth,CURDATE(),
>(YEAR(CURDATE())YEAR(birth))
>(RIGHT(CURDATE(),5)<RIGHT(birth,5))
>ASage
>FROMpetORDERBYage;
+++++
name birth CURDATE()
age
+++++
Chirpy 19980911 20030819 4
Puffball
19990330 20030819 4
Whistler
19971209 20030819 5
Slim 19960429 20030819 7
Claws 19940317 20030819 9
Fluffy 19930204 20030819 10
Fang 19900827 20030819 12
Bowser 19890831 20030819 13
Buffy 19890513 20030819 14
+++++

Una consulta similar se utiliza para determinar la edad a la fecha de muerte de los animales. Se determinan los
animales que han muerto verificando si el valor de la columna death es NULL. Entonces, para todos los
valores no NULL calcula la diferencia entre las fechas de muerte (death) y nacimiento (birth):
mysql>SELECTname,birth,death,
>(YEAR(death)YEAR(birth))(RIGHT(death,5)<RIGHT(birth,5))
>ASage
>FROMpetWHEREdeathISNOTNULLORDERBYage;
+++++
name birth death age
+++++
Bowser 19890831 19950729 5
+++++

La consulta utiliza la expresin death IS NOT NULL en lugar de death <> NULL porque NULL es un valor
- 109 -

especial, que no puede ser comparado mediante los operadores lgicos habituales . Qu tal si se quisiera
saber qu animales cumplen aos el prximo mes? Para esta clase de clculos, el ao y el da son
irrelevantes; simplemente se desea extraer de la columna birth la parte correspondiente al mes. MySQL
cuenta con varias funciones para extraer partes de fechas, como YEAR(), MONTH(), y DAYOFMONTH().
MONTH() es la funcin apropiada para este caso. Para verla en funcionamiento, ejecute una consulta que
muestra tanto el valor de birth como el de MONTH(birth):
mysql>SELECTname,birth,MONTH(birth)FROMpet;
++++
name birth MONTH(birth)
++++
Fluffy 19930204 2
Claws 19940317 3
Buffy 19890513 5
Fang 19900827 8
Bowser 19890831 8
Chirpy 19980911 9
Whistler
19971209 12
Slim 19960429 4
Puffball
19990330 3
++++

Encontrar los animales que cumplen aos el mes siguiente es tambin sencillo. Suponga que el mes actual es
abril. De modo que su nmero es 4, y se buscan los animales nacidos en Mayo (mes 5), de esta forma:
mysql>SELECTname,birthFROMpetWHEREMONTH(birth)=5;
+++
name birth
+++
Buffy 19890513
+++

Esto se complica ligeramente cuando el mes actual es Diciembre. No se puede simplemente sumarle 1 al
nmero del mes (12) y buscar animales nacidos en el mes 13, porque no existe tal mes. En lugar de eso, se
debe buscar por animales nacidos en Enero (mes 1). Se puede incluso escribir la consulta de forma que
funcione sin importar cual es el mes actual. As, no se necesitar indicar un mes en particular en la consulta.
DATE_ADD() sirve para sumar un intervalo de tiempo a una fecha dada. Si se adiciona un mes al valor de
CURDATE(), y se extrae el mes mediante MONTH(), el resultado ser el mes en el que se buscarn
cumpleaos:
mysql> SELECT name, birth FROM pet
-> WHERE MONTH(birth) = MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH));
Una manera alternativa de alcanzar el mismo resultado es sumar 1 al mes actual para obtener el mes
siguiente (despus de emplear la funcin mdulo (MOD) para dejar el nmero de mes en 0 si resultara ser 12:
mysql> SELECT name, birth FROM pet
-> WHERE MONTH(birth) = MOD(MONTH(CURDATE()), 12) + 1;
Advierta que MONTH devuelve un nmero entre 1 and 12. Y MOD(algun_valor,12) devuelve un nmero entre
0 y 11. La suma debe ser realizada luego de MOD(), en otro caso se estara pasando de Noviembre (11) to
- 110 -

Enero (1).

Trabajar con valores NULL


El valor NULL puede resultar un poco desconcertante hasta que se comienza a utilizar. Conceptualmente,
NULL significa valor inexistente o desconocido, y es tratado de forma diferente a otros valores. Para verificar
que un valor es NULL, no se pueden emplear operadores de comparacin aritmtica como =, <, o <>. Para
comprobar esto, intente la siguiente consulta:
mysql>SELECT1=NULL,1<>NULL,1<NULL,1>NULL;
+++++
1=NULL
1<>NULL
1<NULL
1>NULL
+++++
NULL NULL NULL NULL
+++++

Claramente, no se obtienen valores significativos a partir de estas comparaciones. Use en su lugar los
operadores IS NULL y IS NOT NULL:
mysql>SELECT1ISNULL,1ISNOTNULL;
+++
1ISNULL
1ISNOTNULL
+++
0
1
+++

Observe que en MySQL, 0 o NULL se intepretan como falso, y cualquier otro valor, como verdadero. El valor
por defecto para una operacin booleana es 1. Este tratamiento especial de NULL es debido a que, en la
seccin anterior, fue necesario determinar qu animales ya no estaban vivos utilizando death IS NOT NULL en
lugar de death <> NULL. Dos valores NULL son considerados iguales por la clusula GROUP BY. Cuando se
realiza un ORDER BY, los valores NULL se presentan en primer lugar si se emplea ORDER BY ... ASC, y al
final si se ordena con ORDER BY ... DESC. Un error muy comn cuando se trabaja con valores NULL es
asumir que es imposible insertar un valor cero o una cadena vaca en una columna definida como NOT NULL,
pero no es as. Los mencionados son efectivamente valores, mientras que NULL significa "no hay un valor".
Puede comprobar esto fcilmente empleando IS [NOT] NULL como se muestra aqu:
mysql>SELECT0ISNULL,0ISNOTNULL,''ISNULL,''ISNOTNULL;
+++++
0ISNULL
0ISNOTNULL
''ISNULL ''ISNOTNULL
+++++
0
1
0
1
+++++

Por lo tanto, es totalmente posible insertar cadenas vacias o ceros en columnas marcadas como NOT NULL,
ya que son valores NOT NULL

- 111 -

Coincidencias de patrones
MySQL posee capacidades estndar para utilizar patrones as como tambin una forma de patrones basada
en expresiones regulares extendidas similares a las que se encuentran en utilidades de UNIX, como ser vi,
grep, y sed. Los patrones SQL permiten emplear el caracter '_' para representar coincidencia con un carcter
individual y '%' En MySQL, por defecto, los patrones SQL no son case-sensitive. Abajo se muestran algunos
ejemplos. Advierta que no se emplean los operadores = o <> para trabajar con patrones SQL, en lugar de eso
se usan los operadores de comparacin LIKE o NOT LIKE.
Para encontrar nombres que comiencen con 'b':
mysql>SELECT*FROMpetWHEREnameLIKE'b%';
+++++++
name owner species
sex
birth death
+++++++
Buffy Harold
dog
f
19890513 NULL
Bowser Diane dog
m
19890831 19950729
+++++++

Para encontrar nombres que terminen con 'fy':


mysql>SELECT*FROMpetWHEREnameLIKE'%fy';
+++++++
name owner species
sex
birth death
+++++++
Fluffy Harold
cat
f
19930204 NULL
Buffy Harold
dog
f
19890513 NULL
+++++++

Para encontrar nombres que contengan 'w':


mysql>SELECT*FROMpetWHEREnameLIKE'%w%';
+++++++
name owner species
sex
birth death
+++++++
Claws Gwen cat
m
19940317 NULL
Bowser Diane dog
m
19890831 19950729
Whistler
Gwen bird NULL 19971209 NULL
+++++++

Para encontrar nombres que contengan exactamente 5 caracteres, use 5 veces el caracter patrn '_':
mysql>SELECT*FROMpetWHEREnameLIKE'_____';
+++++++
name owner species
sex
birth death
+++++++
Claws Gwen cat
m
19940317 NULL
Buffy Harold
dog
f
19890513 NULL
+++++++

- 112 -

Los otros patrones que pueden emplearse con MySQL usan expresiones regulares extendidas. Cuando
busque coincidencias con este tipo de patrones, use los operadores REGEXP y NOT REGEXP (o bien los
sinnimos RLIKE y NOT RLIKE).

Algunas caractersticas de las expresiones regulares extendidas:


'.' detecta coincidencia con cualquier carcter individual.
Una clase de carcter '[...]' detecta coincidencia con cualquier caracter entre los corchetes. Por ejemplo, '[abc]'
coincidir con 'a', 'b', o 'c'. Para hacer referencia a un rango de caracteres, use un guin. '[a-z]' detecta
coincidencia con cualquier letra, mientras que '[0-9]' lo hace con cualquier dgito.
'*' detecta coincidencia con cero o ms apariciones de los caracteres que lo preceden. Por ejemplo, 'x' detecta
cualquier nmero de caracteres 'x', '[0-9]' detecta cualquier cantidad de dgitos, y '.' coincidir con cualquier
nmero de cualquier carcter.
REGEXP tendr xito si el patrn suministrado encuentra coincidencia en cualquier parte del valor examinado
(esto difiere de LIKE en que este ltimo solo tiene xito si el patrn concuerda con todo el valor).
Para lograr que un patrn detecte coincidencias solamente al principio o al final del valor examinado, utilice '^'
al principio o '$' al final del patrn.
Para demostrar el funcionamiento de las expresiones regulares extendidas, las consultas con LIKE expuestas
anteriormente se han reescrito utilizando REGEXP. Para hallar nombres que comiencen con 'b', use '^' para
buscar coincidencia al principio del valor:
mysql>SELECT*FROMpetWHEREnameREGEXP'^b';
+++++++
name owner species
sex
birth death
+++++++
Buffy Harold
dog
f
19890513 NULL
Bowser Diane dog
m
19890831 19950729
+++++++

En MySQL 5.0, si realmente quiere forzar a que la comparacin realizada por REGEXP sea case sensitive,
utilice la palabra clave BINARY para convertir a una de las cadenas en una cadena binaria. Esta consulta
solamente encontrar coincidencia con 'b' minsculas al comienzo de un nombre:
mysql>SELECT*FROMpetWHEREnameREGEXPBINARY'^b';

Para hallar nombres finalizados en 'fy', emplee '$' para buscar la coincidencia en el final del nombre:
mysql>SELECT*FROMpetWHEREnameREGEXP'fy$';
+++++++
name owner species
sex
birth death
+++++++
Fluffy Harold
cat
f
19930204 NULL
Buffy Harold
dog
f
19890513 NULL
+++++++

- 113 -

Para encontrar nombres conteniendo una 'w', utilice esta consulta:


mysql>SELECT*FROMpetWHEREnameREGEXP'w';
+++++++
name owner species
sex
birth death
+++++++
Claws Gwen cat
m
19940317 NULL
Bowser Diane dog
m
19890831 19950729
Whistler
Gwen bird NULL 19971209 NULL
+++++++

Debido a que un patrn de expresin regular encuentra coincidencia sin importar el lugar del valor donde se
produce, en la consulta previa no es necesario colocar un comodn a cada lado del patrn para obtener
coincidencia en cualquier parte del valor, como hubiera sucedido de utilizar un patrn SQL Para hallar
nombres conteniendo exactamente cinco caracteres, use '^' y '$' para obligar a que la coincidencia deba estar
al principio y al final del nombre, y cinco instancias de '.' entre ellas.
mysql>SELECT*FROMpetWHEREnameREGEXP'^.....$';
+++++++
name owner species
sex
birth death
+++++++
Claws Gwen cat
m
19940317 NULL
Buffy Harold
dog
f
19890513 NULL
+++++++

La consulta anterior tambin se podra haber escrito empleando el operador '{n}' repetir-n-veces:
mysql>SELECT*FROMpetWHEREnameREGEXP'^.{5}$';
+++++++
name owner species
sex
birth death
+++++++
Claws Gwen cat
m
19940317 NULL
Buffy Harold
dog
f
19890513 NULL
+++++++

Contar registros
Una pregunta frecuente que deben responder las bases de datos es: qu tan a menudo aparece en la tabla
un cierto tipo de dato? Por ejemplo, se podra querer averiguar la cantidad de mascotas de que se dispone, o
cuantas mascotas tiene cada propietario, o varios otros recuentos sobre los animales. Contar la cantidad total
de animales es la misma pregunta que cuntos registros hay en la tabla pet?, ya que hay un registro por
mascota. COUNT() cuenta el nmero de filas, por ello, la consulta para contar animales luce as:
mysql>SELECTCOUNT(*)FROMpet;
++
COUNT()
++
9

- 114 -

++

Anteriormente se recuperaban los nombres de la gente que posea mascotas. Se puede usar COUNT() para
hallar cuantas mascotas tiene cada propietario:
mysql>SELECTowner,COUNT(*)FROMpetGROUPBYowner;
+++
owner COUNT()
+++
Benny 2
Diane 2
Gwen 3
Harold 2
+++

Observe el uso de GROUP BY para agrupar todos los registros de cada propietario. Sin dicha clusula, todo lo
que se hubiera obtenido sera un mensaje de error:
mysql>SELECTowner,COUNT(*)FROMpet;
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP
columnsisillegalifthereisnoGROUPBYclause

COUNT() y GROUP BY son tiles para presentar datos en varias formas. Los siguientes ejemplos muestran
diferentes operaciones: Cantidad de animales por especies:
mysql>SELECTspecies,COUNT(*)FROMpetGROUPBYspecies;
+++
species
COUNT()
+++
bird 2
cat
2
dog
3
hamster
1
snake 1
+++

Cantidad de animales por sexo:


mysql>SELECTsex,COUNT(*)FROMpetGROUPBYsex;
+++
sex
COUNT()
+++
NULL 1
f
4
m
4
+++

(En esta salida, NULL indica "sexo desconocido") Cantidad de animales por combinacin de especies y sexo:
mysql>SELECTspecies,sex,COUNT(*)FROMpetGROUPBYspecies,sex;
++++
species
sex
COUNT()

- 115 -

++++
bird NULL 1
bird f
1
cat
f
1
cat
m
1
dog
f
1
dog
m
2
hamster
f
1
snake m
1
++++

y gatos de esta manera:


mysql>SELECTspecies,sex,COUNT(*)FROMpet
>WHEREspecies='dog'ORspecies='cat'
>GROUPBYspecies,sex;
++++
species
sex
COUNT()
++++
cat
f
1
cat
m
1
dog
f
1
dog
m
2
++++

O si desea la cantidad de animales de cada sexo contando solamente los que tienen sexo conocido:
mysql>SELECTspecies,sex,COUNT(*)FROMpet
>WHEREsexISNOTNULL
>GROUPBYspecies,sex;
++++
species
sex
COUNT()
++++
bird f
1
cat
f
1
cat
m
1
dog
f
1
dog
m
2
hamster
f
1
snake m
1
++++

Utilizar mas de una tabla


La tabla pet mantiene el registro de las mascotas que se poseen. Si quisiera registrar otros datos acerca de
ellas, como eventos de su vida tales como visitas al veterinario o nacimiento de cras, necesitara otra tabla.
Cmo debera ser esta tabla? Se necesita:
Un campo con el nombre de la mascota para saber a quien pertenece cada evento registrado.
La fecha en que ocurri el evento.
Un campo con la descripcin del evento.
Un campo con el tipo de evento, a fin de poder clasificarlo.

- 116 -

Teniendo en cuenta estas consideraciones, la sentencia CREATE TABLE para la tabla event ("eventos", en
ingls) podra ser as:
mysql>CREATETABLEevent(nameVARCHAR(20),dateDATE,
>typeVARCHAR(15),remarkVARCHAR(255));}}}Comosehizoconlatablapet,esms
fcilrealizarlacargainicialdedatossisecreaunarchivodetextodelimitadocon
tabulacionesquecontengalainformacinaagregar:
name date
type
remark
Fluffy 15/05/95
litter 4kittens,3female,1male
Buffy 19930623
litter 5puppies,2female,3male
Buffy 19940619
litter 3puppies,3female
Chirpy 19990321
vet
neededbeakstraightened
Slim 19970803
vet
brokenrib
Bowser 19911012
kernnel
Fang 19911012
kernnel
Fang 28/08/98
birthday
Gavehimanewchewtoy
Claws 19980317
birthday
Gavehimanewfleacollar
Whistler
19981209
birthday
Firstbirthday

Los registros se cargan as:


mysql>LOADDATALOCALINFILE'event.txt'INTOTABLEevent;

Con base en lo que se ha aprendido a partir de las consultas efectuadas sobre la tabla pet, se debera poder
recuperar registros de la tabla event; los principios son los mismos. Pero en un momento dado la tabla event
por s sola es insuficiente para responder las preguntas que pueden formularse. Suponga que se desea saber
a qu edad tuvo sus cras cada mascota. Anteriormente se aprendi a calcular edades a partir de dos fechas.
La fecha en que la mascota tuvo sus crias est en la tabla event, pero para calcular su edad, se necesita su
fecha de nacimiento, la cual est localizada en la tabla pet. Esto significa que la consulta requiere ambas
tablas:
mysql>SELECTpet.name,
>(YEAR(date)YEAR(birth))(RIGHT(date,5)<RIGHT(birth,5))ASage,
>remark
>FROMpet,event
>WHEREpet.name=event.nameANDevent.type='litter';
++++
name age
remark
++++
Fluffy 2
4kittens,3female,1male
Buffy 4
5puppies,2female,3male
Buffy 5
3puppies,3female
++++

Hay varias cosas para observar en esta consulta:


La clusula FROM menciona dos tablas porque la consulta necesita traer datos de ambas
Cuando se combina (tambin se denomina join -unin, en ingls-) informacin desde mltiples tablas, se
necesita indicar qu registro de una tabla se combinar con qu registro de la otra. Esto es sencillo porque
ambas tablas tienen una columna name. La consulta emplea la clusula WHERE para hacer coincidir registros
de las dos tablas basndose en el valor de name.
Dado que la columna name aparece en ambas tablas, se debe especificar a cul tabla pertenece la columna al
hacer referencia a ella. Esto se hace anteponiendo el nombre de la tabla al nombre de la columna.

- 117 -

No es necesario tener dos tablas diferentes para establecer una unin. A veces es til combinar una tabla
consigo misma, si se desea comparar entre s registros de una misma tabla. Por ejemplo, para formar parejas
de mascotas para reproduccin, podra unir la tabla pet consigo misma para generar pares de animales
macho y hembra de la misma especie:
mysql>SELECTp1.name,p1.sex,p2.name,p2.sex,p1.species
>FROMpetASp1,pet AS p2 > WHEREp1.species=p2.species ANDp1.sex='f'AND
p2.sex='m';++++++
name sex
name sex
species
++++++
Fluffy f
Buffy f
Buffy f

Claws m
Fang m
Bowser

cat
dog
m

dog

En la consulta anterior se especificaron alias para la tabla con el fin de indicar a qu instancia de la tabla
pertenece cada columna referenciada.

Instalar y configurar X Window System


Sobre X Window System
El sistema de ventanas X (en ingls X Window System) fue desarrollado a mediados de los aos 1980 en el
MIT para dotar de una interfaz grfica a los sistemas Unix. Este protocolo permite la interaccin grfica en red
entre un usuario y una o ms computadoras haciendo transparente la red para ste. Generalmente se refiere a
la versin 11 de este protocolo, X11, el que est en uso actualmente. X es el encargado de mostrar la
informacin grfica y es totalmente independiente del sistema operativo. El sistema de ventanas X distribuye el
procesamiento de aplicaciones especificando enlaces cliente-servidor. El servidor provee servicios para
acceder a la pantalla, teclado y ratn, mientras que los clientes son las aplicaciones que utilizan estos recursos
para interaccin con el usuario. De este modo mientras el servidor se ejecuta de manera local, las aplicaciones
pueden ejecutarse remotamente desde otras mquinas, proporcionando as el concepto de transparencia de
red. Debido a este esquema cliente-servidor, se puede decir que X se comporta como una terminal grfica
virtual. El hecho que exista un estndar definido para X permite que se desarrollen servidores X para distintos
sistemas operativos y plataformas, lo que hace que el cdigo sea muy portable. Por ejemplo. permite tener
clientes X ejecutndose en un potente servidor UNIX mientras los resultados son visualizados en una PC de
escritorio con cualquier otro sistema operativo funcionando. La comunicacin entre el cliente X y el servidor se
realiza por medio de un protocolo conocido como Xprotocol (Protocolo base del sistema X Window), que
consiste en una serie de bytes interpretados como comandos bsicos para generar ventanas, posicionarlas, o
controlar eventos. Los clientes X acceden al Xprotocol mediante el uso de una biblioteca llamada Xlib, que
evita al programador de clientes X tener que lidiar con el cdigo binario del Xprotocol. Sin embargo, los
aspectos de decoracin de ventana y manejos de ventanas no estn definidos en esta biblioteca. X NO ES UN
gestor de ventanas, necesita de uno para controlar el manejo de ventanas. Esto trae la ventaja de que permite
al usuario instalar el administrador de ventanas que ms le agrade, e incluso tener varios instalados eligiendo
el ms apropiado a la hora de acceder a X. Tambin trae la ventaja de que hace de X estrictamente un
sistema grfico, de tal modo que un cliente X podra estar enviando un grfico a una pantalla, a una impresora
- 118 -

o a cualquier otro hardware sin darse cuenta, flexibilizando la salida grfica. Por otro lado, la desventaja que
trae el hecho de no tener un nico gestor de ventanas es que los programadores de clientes X que desean
hacer uso de los recursos de los gestores de ventanas (botones, barras de deslizamientos, etc) deben elegir
un gestor de ventanas especfico para programar y contar que el usuario tenga por los menos las bibliotecas
de dicho gestor de ventanas instalado. Las bibliotecas de los gestores de ventanas se conocen como
"Toolkits", el estndar X provee slo de un conjunto de herramientas bsicas llamadas Xintrisics que permiten
a los programadores de los gestores de ventanas armar sus Toolkits sobre stas.

Instalando X Window System


La forma de instalar el sistema de ventanas x window en su equipo sera de la siguiente manera:
Para sistemas operativos de la familia Red Hat teclee lo siguiente:
[BASH]#yuminstallxorgx11

Para sistemas operativos de la familia Debian teclee lo siguiente:


[BASH]#aptgetinstallxwindowsystem

Configurando el entorno X Window System


Lo primero que tenemos que hacer es recopilar la informacin necesaria, para la correcta configuracin del
servidor grfico Xorg
La informacin mnima necesaria es la siguiente:
Especificacionesdelmonitor
Chipycantidaddememoriadelatarjetagrfica(vdeo)
Especificacionesdelratn
Especificacionesdelteclado
Especificacionesdelmonitor

Usaremos las especificaciones del monitor para determinar la resolucin y frecuencia de refresco a la que
funcionara. Dichas especificaciones vienen en la documentacin del monitor, o bien la obtenemos desde la
web del fabricante.
Necesitamos tres rangos muy importantes:
Frecuenciaderefrescohorizontal
Frecuenciaderefrescovertical
Resolucinmxima.

Con esta informacin sabemos como hemos de configurar nuestro monitor para no daarlo o quemarlo.
Chip y cantidad de memoria de la tarjeta grafica
- 119 -

El chip de la tarjeta grfica tambin llamada tarjeta de vdeo, define que controlador utilizaremos para que
funcione correctamente.
La memoria de la tarjeta grfica determina la resolucin mxima y la profundidad de color mxima con la que
el sistema puede trabajar.

Especificaciones del mouse


Las especificaciones del ratn son muy fciles, basta con observar dicho ratn para saber:
El tipo de conector: USB, PS2, Serial, etc...
El numero de botones: 1, 2, 3, 4, etc...
Si tiene rueda y cuantas tiene: 1, 2

Especificaciones del teclado


Las especificaciones del teclado al igual que las del ratn, con observar dicho teclado conocemos la
informacin:
El tipo de conector: USB o PS2
Que mapa de caracteres que usa: QWERTY, AZERTY, etc..
El numero de teclas: 101, 102, 104, 105 o microsoft

Fichero xorg.conf
La configuracin del servidor grfico xorg se encuentra en el fichero xorg.conf, en la siguiente ruta:
/etc/X11
Y se encuentra dividido en las siguientes secciones:
Section"Files"
Rutaopathdelosarchivos
Section"Modules" Cargamdulosdinmicos
Section"InputDevice"
Descripcindelosdispositivosperifricos
Section"Device"
Descripcindelosdispositivosgrficos
Section"Monitor" Descripcindelmonitor
Section"Screen"
Configuracindelapantalla
Section"ServerLayout"
Esquemaglobal

Cada seccin comienza con la instruccin Section seguido del nombre de la "seccin entre comillas" las
opciones, driver, etc.. y terminada con EndSection.

Seccion Files

- 120 -

Esta seccin define la ruta de archivos necesarios para levantar el servidor X.


Define la ruta de los tipos de letras en las entradas " FontPath"
Especifica la ubicacin de la base de dartos de colores RGB "RgbPath"
Ejemplo:
SectionFiles
RgbPath/usr/lib/X11/rgb
EndSection

Seccion Modules
La seccin Module especifica que mdulos cargar el servidor grfico X, dichos mdulos aaden
funcionalidad adicional al servidor X.
Section Module
Load dbe Load extmod Load type1 Load freetype Load glx
EndSection

Seccion InputDevice
Cada seccin InputDevice configura un dispositivo de entrada para el servidor X. Los sistemas Xorg tienen
mnimo dos secciones InputDevice:
Un Mouse
Un Teclado
Configuracion tipica de un mouse
Ejemplo:
SectionInputDevice
Identifier Mouse0 Driver mouse Option Protocol Auto Option Device
/dev/psauxOptionEmulate3ButtonsnoOptionZaxisMapping45
EndSection
Identifier:Especificaunnombreparaestaseccin

Driver: Especifica el controlador que debe cargar para el correcto funcionamiento del ratn. "mouse": soporta
cuatro tipos de mouse:
Serial
Bus
PS/2
USB

Option: Especifica las opciones necesarias pertinentes al dispositivo


Para un mouse, las opciones son las siguientes:
Protocol: Indica el protocolo define el tipo de mouse que tenemos
- 121 -

"ImPS/2"
"ExplorerPS/2"
"MouseMan"
"Microsoft"
"Mousesystems"
"IntelliMouse"
"ThinkingMouse"
"ThinkingMousePS/2"
"NetScrollPS/2"
"NetMousePS/2"
"GlidePoint"
"GlidePointPS/2"
"MouseManPlusPS/2"

NOTA:
Los mouse seriales antiguos de dos o tres botones estan normalmente soportados por el protocolo "Microsoft"
o "MouseMan"
Los mouse seriales con rueda los soporta el protocolo "IntelliMouse"
Los mouse PS/2 los soporta el protocolo "ImPS/2"
El protocolo "auto" se usa siempre que este es capaz de detectar el mouse.
CorePointer: Indica que el ratn definido es el mouse principal
Device: Indica la ubicacin del dispositivo fsico (donde se encuentra conectado), las opciones son las
siguientes:
/dev/input/mice(conectadoalpuertoUSB)
/dev/psaux(conectadoalpuertoPS/2)
/dev/ttyS0(conectadoalpuertoSerial0)
/dev/ttyS1(conectadoalpuertoSerial1)
Emulate3Buttoms: Especifica si un mouse de dos botones se comporte como uno de tres
botones,cuandosepresionenambosbotonessimultneamente.

ZAxisMapping: Especifica que funcione la rueda que incorpora el mouse.

Configuracion tipica de un teclado


Ejemplo:
SectionInputDevice
Identifier Generic Keyboard Driver kbd Option CoreKeyboard Option XkbRules
xorgOptionXkbModelpc105OptionXkbLayoutesEndSection
Identifier:Especificaunnombreparaestaseccin.

Driver: Especifica el controlador que debe cargar para el correcto funcionamiento del teclado.
Option: Especifica las opciones necesarias pertinentes al dispositivo
Para un teclado las opciones son las siguientes:

- 122 -

CoreKeyboard: Especifica que es el teclado principal


XkbModel: Especifica el tipo de teclado. Los valores mas comunes son:
"pc101"
"pc102"
"pc104"
"pc105"
"microsoft"
XkbLayout:Especificaellenguajequeusaremos,"es"(espaol),"us"(ingles)

Seccion Device
Esta seccin es la que define y configura la tarjeta grfica (vdeo)
Ejemplo:
SectionDevice
Identifier Device0 Driver nvidia VendorName NVIDIA Corporation Option
RenderAcceltrueOptionAllowGLXWithCompisitetrueOptiondpmsEndSection
Identifier:Especificaunnombreparaestaseccin.

Driver: Especifica el controlador que debe cargar para el correcto funcionamiento del vdeo.
VendorName: Este parmetro es opcional, especifica el fabricante de la tarjeta de vdeo.
BusID: Este parmetro es opcional, especifica el bus en el que se encuentra conectada la tarjeta grfica, Esta
opcin nicamente es necesaria para sistema con mltiples tarjetas grficas.
Screen: Este parmetro es opcional, especifica que conector del monitor en la tarjeta grfica configura la
seccin Device. Esta opcin en muy til solamente para tarjetas con mltiples conectores.
Si dos monitores o mas son conectados en diferentes conectores en la misma tarjeta grfica, deben existir en
xorg.conf secciones Device separadas y cada una de estas secciones debe tener un valor Screen diferente.
Los valores para la entrada Screen debe ser enteros. El primer conector de la tarjeta de vdeo tiene el valor 0.
El valor para cada conector adicional incrementa este valor en uno.
Option "nombre_opcin": Este parmetro es opcional. Reemplace "nombre_opcin" con una de las opciones
listadas para esta seccin en la pagina man de xorg.conf
Una de las opciones mas habituales es "dpms" (Display Power Management Signalling), se usa para activar el
estado de ahorro de energa del monitor.

- 123 -

Seccion Monitor
Esta seccin es la que define y configura los parmetro del monitor
Ejemplo:
SectionMonitor
IdentifierAcerX203WOptionDPMSHorizSync3083VertRefresh5575EndSection
Identifier: Especifica un nombre para esta seccin. Puede existir varias secciones
"Monitor"enelarchivoxorg.conf,cadaunacondiferenteidentificacin(Identifier),
estoescausadoporquedisponemosdedosomasmonitoresconectadosalordenador.

HorizSync: Especifica la frecuencia de barrido horizontal del monitor, expresado en kHz. Puede ser una
frecuencia fija (30.5), multiples frecuencias fijas (30.5, 35.8), un rango (30-110), o varios rangos (15-25, 3064)
VertRefresh: Especifica la frecuencia de barrido vertical del monitor, expresado en Hz, los valores son iguales
a la opcin HorizSync.

Seccion Screen
Esta seccin es la que va a definir la pantalla, vinculando una tarjeta grfica (Device) con la seccin "Monitor"
Ejemplo:
SectionScreen
Identifier Default Screen Device nvidia geforce mx400 Monitor AcerX203W
DefaultDepth24OptionsAddARGBGLXvVisualsTrueSubseccionDisplayDepth1Modes
1600x1050 1200x1024 1024x768 800x600 640X400 Subseccion Display Depth 4
Modes1600x10501200x10241024x768800x600640X400SubseccionDisplayDepth
8 Modes 1600x1050 1200x1024 1024x768 800x600 640X400 Subseccion Display
Depth 15 Modes 1600x1050 1200x1024 1024x768 800x600 640X400 Subseccion
Display Depth 16 Modes 1600x1050 1200x1024 1024x768 800x600 640X400
Subseccion Display Depth 24 Modes 1600x1050 1200x1024 1024x768 800x600
640X400EndSection

Identifier: Especifica un nombre unico para esta seccin


Device: Especifica el nombre de una seccin "Device" existente en el fichero xorg.conf
Monitor: Especifica el nombre nico de una seccin "Monitor" existente en fichero xorg.conf
Observacin: las entradas "Device y Monitor" tienen que tener el mismo valor que la entrada "Identifier" de las
secciones "Device" y "Monitor". De esta manera se entrelazan las configuraciones de las diferentes secciones.
DefaultDepth: Especifica la profundidad de color por defecto en bits.
SubSection "Display": Especifica los modos disponibles de la pantalla para una profundidad de color en
particular.

- 124 -

Observacin: Una seccin "Screen" puede tener mltiples subsecciones "Display", pero debe existir al menos
una para la profundidad de color especificada en la entrada "DefaultDepth"
Depth: Especifica la profundidad de color de la subseccin, los valores posibles son: 1, 4, 8, 15, 16 y 24 bits
Modes: Especifica las resoluciones que podremos visualizar segn nuestro monitor. Puede especificarse una
sola resolucin "1680x1050" (si sabemos que nuestro monitor la soporta), o un listado de estas: "1680x1050"
"1280x1024" "1024x768" "800x600" "640x480". Por defecto se usa la primera en la lista, siempre que este
soportada por nuestro monitor, si no se usa la siguiente, y asi hasta la ultima resolucin que tengamos listada.
Nota: Dependiendo de nuestro monitor y tarjeta grafica (si son de gama "media baja" o inferior), puede darse
los siguientes casos:
A mayor profundidad de color "24 bits" obtenemos menor resolucin "800x600"
A menor profundidad de color "8 bits" obtenemos mayor resolucin "1680x1050"
Option "nombre de opcin": Especifica parmetros extras para la seccin. Reemplace "nombre de opcin" con
una opcin valida listada para esta seccin en la pagina man de xorg.conf

Seccion ServerLayaout
Esta seccin es la que vincula los dispositivos de entrada y salida que controla el servidor xorg.
Como mnimo, esta seccin debe especificar un dispositivo de salida (monitor) y al menos dos de entrada ( un
teclado y un ratn)
En Particular esta seccin junta todos los identificadores "Identifier" de cada seccin.
SectionServerLayout
Identifier Default Layout Screen Default Screen InputDevice Generic Layout
InputDeviceConfiguredMouseEndSection

Identifier: Especifica un nombre para esta seccin.


Screen: Especifica el nombre de la seccin "Screen" a ser usado por el servidor xorg. Pueden estar presente
ms de una opcin "Screen"

Tareas Administrativas
Administrando cuentas de usuario, grupos y ficheros del sistema
En este capitulo abodaremos temas como son la creacion, eliminacion, suspencion y cambio en las cuentas
de usuario del sistema, tambien aprenderemos a crear y eliminar grupos, y por ultimo estudiaremos la manera

- 125 -

de cambiar el grupo al cual pertenece un usuario y anexarlo a otro. Comenzaremos hablando de los ficheros
directamente relacionados con las cuentas de los usuarios y la funcion que estos desempean.

Fichero /etc/passwd
Este fichero almancena datos sobre las cuentas de usuario del sistema, dichos datos se encuentran
organizados linea a linea, de las cuales cada una corresponde a un usuario. Tambien puede encontrar en este
fichero algunos servicios del sistema como son , el servidor web o el de correo. Cada una de estas lineas se
encuentra formada por 7 campos los cuales se encuentran separadpos por el operador
:
Los campos de los cuales hablamos son conformados por los siguientes parametros
UserName
1
X
2
UserID
3
GroupID
4
UserInfo
5
HomeDir
6
Shell
7

El segundo campo es comunmente conocido como el campo de password y se encuentra directamente ligado
a la contrasea del usuario. Este campo puede adoptar 3 parametros posibles, estos parametros son:
x

La letra 'x' indica que el password del usuario se encuentra cifrado y ligado directamente al fichero

/etc/shadow
*
o!

Los parametros o ! indican que el usuario no podra loearse en el sistema, esta opcion es comunmente

asignada a usuarios que hacen uso de servicios como FTP o correo


vacio

Si se encontrace este campo vacio significa entonces que el usuario no tiene asignada ninguna

contrasea
Un ejemplo del fichero /etc/passwd se muestra a continuacion:
Usuario.
-Nombre de la cuenta con la que el usuario se logeara para acceder al sistema Password.
-Contrasea asignada al usuario UID.-Identificador del Usuario GID.
-Identificador que indica a cual grupo pertenece el usuario Informacion Adicional.
-Informacion detallada del usuario Home del Usuario.
-Directorio de trabajo del usuario Shell.
-Interprete de comandos asignado al usuario

Fichero /etc/shadow
Este este fichero almacena las contraseas cifradas de cada usuario del sistema, estos datos se encuentran

- 126 -

organizados linea a linea, de las cuales cada una corresponde a un usuario. Cada una de estas lineas se
encuentra formada por 9 campos los cuales se encuentran separados por el operador
:
Estos 9 campos se encuentran conformados por los siguientes parametros
Campo Descripcion Comentario
1
LogindelUsuario
2
Contraseacifrada Vacio=Sinpasswordo!=Nopermitelogeoensistema
3
Dastranscurridosdesdeel1/ene/1970hastalafechaenquelacontraseafue
cambiadaporltimavez. Nuncavacio
4
Nmerodedasquedebentranscurrirhastaquelacontraseasepuedavolvera
cambiar.
0=Siemprepermitecambio
5
Nmero de das tras los cuales hay que cambiar la contrasea. (1 significa
nunca). A partir de este dato se obtiene la fecha de expiracin de la contrasea.
Normalmenteson10000dias
6
Nmerodedasantesdelaexpiracindelacontraseaenqueseleavisaral
usuarioaliniciodelasesin Vacio=Sinadvertencia
7
Dasdespusdelaexpiracinenquelacontraseaseinhabilitara,siesqueno
secambio.
vacio=Nuncainactivo
8
Fecha de caducidad de la cuenta. Se expresa en das transcurridos desde el
1/Enero/1970 vacio=Nuncaseradeshabilitado
9
Reservadoparausofuturo

Administracin de cuentas de usuario


Las cuentas de usuario estan localizadas en el fichero /etc/passwd, las contraseas cifradas de los usuarios
son asignadas al fichero /etc/shadow. Cuando una nueva cuenta de usuario es creada (usando el comando
useradd) por default toma la plantilla (opcion -m) /etc/skel para generar el entorno de trabajo del usuario.

useradd
Para generar una cuenta de usuario haremos uso del comando useradd que a su vez debera seguir la
siguiente estructura :
[BASH]# useradd [opciones] nombreDelUsuario
Opciones

Descripcion

-b

El nombre de usuario sera aadido a la ruta donde sera ubicada su carpeta de trabajo

-d

El nombre de usuario no sera aadido a la ruta donde sera ubicada su carpeta de trabajo

-e

Se usa para especificar la fecha en la cual expira la cuenta. Debe especificarse en el siguiente formato

Ao-Mes-Dia.
Ejemplos
a) -e 20100506
b) -e 20081224
c) -e 20090214
-f

Numero de dias antes de que la contrasea expire, antes de que la cuenta sea deshabilitada

-g

El nombre del grupo o gid asignado a un nuevo usuario

-G

Grupo secundario al cual puede ser asignado un usuario

Ejemplos
- 127 -

a) -G desarrolloJava
b) -G ventasMedicas
c) -G soportePHP
-u

Identificador o uid que sera asignado al usuario, por defecto Linux asignara UID's a partir del numero

500
-m

Copia el contenido de la carpeta /etc/skel a la carpeta del usuario recien creado.

-s

Interperete de comandos SHELL que sera asignado al usuario, entre las opciones disponibles estan:

usermod
El comando usermod modifica los parametros de acceso asignados a una cuenta existente del sistema.
Sintaxis:
[BASH]# useradd nombreDelUsuario [-c comment] [-d home_dir [ -m]]
[-e expire_date] [-f inactive_time] [-g initial_group] [-G group[,...]] [-l login_name] [-p passwd] [-s shell] [-u uid [
-o]] [-L|-U]
Opciones

Descripcion

-c

Aade o modifica el comentario, campo 5 de /etc/passwd

-d

Modifica el directorio de trabajo o home del usuario, campo 6 de /etc/passwd

-e

Cambia o establece la fecha de expiracin de la cuenta, formato AAAA-MM-DD, campo 8 de

/etc/shadow
-g

Cambia el nmero de grupo principal del usuario (GID), campo 4 de /etc/passwd

-G

Establece otros grupos a los que puede pertenecer el usuario, separados por comas.

-i

Cambia el login o nombre del usuario, campo 1 de /etc/passwd y de /etc/shadow

-L

Bloque la cuenta del usuario, no permitiendol que ingrese al sistema. No borra ni cambia nada del

usuario, solo lo deshabilita.


-s

Cambia el shell por defecto del usuario cuando ingrese al sistema.

-u

Cambia el UID del usuario.

-U

Desbloquea una cuenta previamente bloqueada con la opcin -L.

Si quiseramos cambiar el nombre de usuario de carita a carlita:


[BASH]#usermodlcarlitacarita

Casi seguro tambin cambiar el nombre del directorio de inicio o HOME en /home, pero si no fuera as,
entonces:
[BASH]#usermodd/home/carlitacarlita

Otros cambios o modificaciones en la misma cuenta:


[BASH]#usermodc"supervisordearea"s/bin/kshg505carlita

Lo anterior modifica el comentario de la cuenta, su shell por defecto que ahora sera Korn shell y su grupo
principal de usuario qued establecido al GID 505 y todo esto se aplic al usuario sego que como se observa
debe ser el ltimo argumento del comando.

- 128 -

userdel
El comando userdel remueve un usuario del sistema. Sintaxis:
[BASH]#userdelrnombreDelUsuario

Opciones
-r

Descripcion

Este parametro indica al sistema que sera eliminada la carpeta de trabajo del usuario. Si se usara el

comando userdel sin el parametro -r solo eliminara al usuario del sistema


-f

La opcin -f es igual que la opcin -r, elimina todo lo del usuario, cuenta, directorios y archivos del

usuario, pero adems lo hace sin importar si el usuario esta actualmente en el sistema trabajando. Es una
opcin muy radical, adems de que podra causar inestabilidad en el sistema, asi que hay que usarla solo en
casos muy extremos.

passwd
El comando passwd se utiliza para cambiar contraseas. Cuando se emplea el comando passwd sin
opciones, se cambia la contrasea del usuario que lo invoc. Con el comando passwd primero se exigir la
contrasea vigente y luego se pedir dos veces la nueva para prevenir cualquier error. La utilizacin del
comando passwd con los parmetros usuario y contrasea slo es posible para root. Si se utiliza slo el
parmetro usuario cuando se hace uso de este comando, entonces root puede cambiar la contrasea para ese
usuario.
Los caracteres admitidos para las contraseas son los siguientes:
#*,.;:_-+!$%&/|?{[()]}
Sintaxis:
[BASH]#passwd[Opciones]nombreDelUsuario

Opciones:
Opciones

Descripcion

-e

Esta opcion forzara al usuario a cambiar su contrasea en su siguiente login al sistema

-l

Con esta opcion, el administrador del sistema puede inhabilitar la cuenta de algun usuario especifico

-u

Con esta opcion, el administrador del sistema puede deshabilitar la cuenta de algun usuario especifico

-n

Mnimo nmero de das antes de poder cambiar

-x

Mximo nmero de das de validez; luego pide cambiar

-f

Cambia el nombre completo del usuario

-s

Cambia el SHELL del usuario

chage
Se usa para listar o cambiar el tiempo en el que expira una contrasea de usuario
Sintaxis:

- 129 -

[BASH]#change[opciones]nombreDelUsuario

Opciones
Opciones

Descripcion

-d [dias]Cuenta el nmero de das (desde 01-01-1970) transcurridos desde que cambi la contrasea por
ltima vez
-E [fecha]

Modifica la fecha en que la cuenta del usuario expirar y ser bloqueada

-l [dias] Modifica cuantos das puede permanecer una cuenta con una contrasea expirada antes de ser
bloqueada
-M [dias]

Modifica el nmero mximo de das durante los que es vlida la contrasea de usuario.

Pasados los das, el usuario deber de modificarla


-m [dias]

Modifica el nmero mnimo de das entre cambio de contrasea

-W [dias]

Modifica el nmero de das que se avisar al usuario antes de cambiar la contrasea

newusers
La mayora de las veces que vamos a crear un nuevo usuario utilizamos el comando useradd pero cuando
tenemos una red de muchos usuarios o tenemos que crear o actualizar multiples usuarios en un servidor se
hace til poderlo hacer desde una lista, para esto podemos utilizar el comando newusers. El comando
newusers toma un archivo de texto plano que debe tener el mismo formato que el de el archivo /etc/passwd de
nuestro sistema. Al ejecutar el comando y darle como parmetro la ruta al archivo de texto crear los usuarios
no existentes y actualizar los que ya existen, as mismo si no existe la carpeta /home/nobreDelUsuario la
crear por nosotros. Para hacer uso de este comando haremos lo siguiente: Primero creamos el archivo de
texto con los usuarios:
[BASH]#touch/root/batchnuevosusuarios.txt
[BASH]#chmod0600/root/batchnuevosusuarios.txt

Es importante que este archivo slo pueda ser leido por root (por eso el chmod 0600) ya que las claves en este
archivo estarn en texto plano. Ahora editamos el archivo
[BASH]#vim/root/batchnuevosusuarios.txt

Y ahora agregamos la lista de usuarios, recuerden que debe tener el mismo formato que /etc/passwd:
usuario1:password:1001:513:CuentaMercadeo:/home/usuario1:/bin/bash
usuario2:password:1002:513:UsuarioVentas:/home/usuario2:/bin/bash
pepe:password:1110:501:CuentaInvitado:/home/guest:/bin/menu

Agreguen cuantos usuarios quieran, igualmente pueden agregar los usuarios que quieran actualizar. (muy util
para hacer un reset de password masivo).
Por ltimo ejecutamos el comando:
[BASH]#newusers/root/batchnuevosusuarios.txt

- 130 -

Fichero /etc/login.defs
En el archivo de configuracin /etc/login.defs estn definidas las variables que controlan los aspectos de la
creacin de usuarios y de los campos de shadow usadas por defecto. Algunos de los aspectos que controlan
estas variables son:
NmeromximodedasqueunacontraseaesvlidaPASS_MAX_DAYS
ElnmeromnimodecaracteresenlacontraseaPASS_MIN_LEN
ValormnimoparausuariosnormalescuandoseusauseraddUID_MIN
ElvalorumaskpordefectoUMASK

Si el comando useradd debe crear el directorio home por defecto CREATE_HOME


Basta con leer este archivo para conocer el resto de las variables que son autodescriptivas y ajustarlas al
gusto. Recerdese que se usaran principalmente al momento de crear o modificar usuarios con los comandos
useradd y usermod.
Otros comandos de inicio de sesin del usuario
Opciones

Descripcion

idng[usuario]
Muestraelgrupoactualalcualperteneceelusuario.
groups[usuario]
Muestratodoslosgruposalcualperteneceelusuario
idnu[usuario]
Muestraelnombredelusuariologeado
echo$user
Muestraelusuarioactual
idu
MuestraelIDdelusuarioactual
users
Muestralosusuarioslogeadoslocalmenteenelsistema
who
Muestralosusuarioslogeadoslocalmenteenelsistema
w
Muestralosusuarioslogeadoslocalmenteenelsistema
fingerl[usuario] Muestralosusuarioslogeadoslocaloremotamenteenelsistema
lastlog
Muestra los ultimos accesos al sistema. La lista incluye inicios,
apagadosylogeos

Administracin de grupos
groupadd
Para dar de alta grupos de trabajo en el sistema usaremos el comando groupadd el cual debera ser aplicado
segun la siguiente sintaxis:
[BASH]#groupadd[opciones]nombreDelGrupo

Opciones:
Opciones

Descripcion

-g

Define mediante un valor numerico el ID del grupo, este numero no puede ser uno negativo

-r

Define un grupo del sistema.

Un grupo del sistema es aquel que tiene un numero de identidad

(GID) de grupo por debajo del numero 500


Este particular GID es utilizado por los servicios del sistema como un servidor web o de correo|
-f

Forza al sistema a crear el grupo aunque este ya exista.

-o

Asigna un ID existente a un grupo

- 131 -

groupmod
El comando groupmod permite modificar el nombre o GID de un grupo. Sintaxis:
[BASH]# groupmod [-g nuevo-gid] [-n nuevoNombre] nombreDelGrupo
Opciones:
Opciones

Descripcion

-g

Esta opcion cambia el GID de un grupo existente en el sistema

-n

Esta opcion sirve para cambiar el nombre de un grupo existente por otro

groupdel
El comando groupdel elimina un grupo del sistema Sintaxis:
[BASH]#groupdelnombreDelGrupo

gpasswd
Permite administrar los grupos,se puede utilizar para aadir y eliminar usuarios, sealar un administrador e
indicar una contrasela para el grupo.
NOTA: Las contraseas de grupo solo son necesarias su un usuario que no es miembro del mismo quisiera
anexarse al grupo y convertirlo en uno de sus grupos efectivos, para ello debera proporcioonar la contrasea
del grupo
Sintaxis:
[BASH]#gpasswdopciones[nombreDelGrupo]

Opciones para el administrador del sistema


Opciones
-R

Descripcion

Hace que el grupo sea reservado para miembros

-A [usuario,,] [grupo]

Seala como administrador de un grupo particular a un usuario del grupo

-M [usuario,,] [grupo]

Aade miembros a un grupo

-r [grupo]

Elimina la contrasea del grupo

Opciones para el administrador del grupo


Opciones

Descripcion

-a [usuario,,] [grupo]

Se aade permanentemente un usuario a un grupo

-d [usuario,,] [grupo]

Se borra permanentemente a un usuario del grupo

-r [grupo]

Elimina la contrasea del grupo

grpck
El comando grpck revisa un grupo de sistema Sintaxis:

- 132 -

[BASH]#grpcknombreDelGrupo

Fichero /etc/group
Este archivo guarda la relacin de los grupos a los que pertenecen los usuarios del sistema, contiene una lnea
para cada usuario con tres o cuatro campos por usuario: Ejemplo:
Elcampo1indicaelusuario.
Elcampo2xindicalacontraseadelgrupo,quenoexiste,sihubierasemostrara
unhashencriptado.
Elcampo3eselGroupID(GID)oidentificacindelgrupo.
Elcampo4esopcionaleindicalalistadegruposalosqueperteneceelusuario

Actualmente al crear al usuario con useradd se crea tambin automticamente su grupo principal de trabajo
GID, con el mismo nombre del usuario. Es decir, si se aade el usuario paola tambin se crea el /etc/group el
grupo paola.

Fichero /etc/gshadow
Este fichero almacena las contraseas cifradas de los grupos,los administradores de cada grupo y los
usuarios que pertenecen a cada grupo, contiene una linea para cada grupo con cuatros campos por grupo:
Ejemplo:
NombreDelGrupo

Contraseao!

listaDeAdministradores

listaDeMiembros

Cada uno de estos campos separado por el identificador


:
La lista de administradores y miembros de un grupo deben estar separados mediante el identificador
;

pwconv y pwunconv
El comportamiento por defecto de todas las distros modernas de GNU/Linux es activar la proteccin extendida
del archivo /etc/shadow, que (se insiste) oculta efectivamente el hash cifrado de la contrasea de
/etc/passwd
Pero si por alguna bizarra y extraa situacin de compatibilidad se requiriera tener las contraseas cifradas en
el mismo archivo de /etc/passwd se usara el comando pwunconv:
[BASH]#more/etc/passwd
root:x:0:0:root:/root:/bin/bashhack:x:501:500:HackBeastie:/home/hack:/bin/bash

La 'x' en el campo 2 indica que se hace uso de /etc/shadow como mencionamos anteriormente.
[BASH]#more/etc/shadow
root:ghy675gjuXCc12r5gt78uuu6R:10568:0:99999:7:7:1::

- 133 -

hack:rfgf886DG778sDFFDRRu78asd:10568:0:1:9:1:1::
[BASH]#pwunconv
[BASH]#more/etc/passwd
root:ghy675gjuXCc12r5gt78uuu6R:0:0:root:/root:/bin/bash
sergio:rfgf886DG778sDFFDRRu78asd:501:500:HackBeastie:/home/hack:/bin/bash

En cualquier momento es posible reactivar la proteccin de shadow:


[BASH]#pwconv
[BASH]#lsl/etc/passwd/etc/shadow
rwrr1rootroot11062007070801:07/etc/passwd
r1rootroot6992009070801:07/etc/shadow

Se vuelve a crear el archivo shadow, adems ntese los permisos tan restrictivos (400) que tiene este archivo,
haciendo sumamente difcil que cualquier usuario que no sea root lo lea.

grpconv y grpunconv
Estos comandos funcionan de la misma manera que pwconv y pwunconv, solo que aplicados a los ficheros
/etc/group
/etc/gshadow
Automatizar tareas de administracin del sistema mediante la programacin de scripts de trabajo

Sobre CRON
Cron es un administrador o planificador de tareas de segundo plano. Es un demonio que ejecuta procesos,
programas o scripts, a intervalos regulares programados. Por ejemplo podemos instruirlo para ejecutar un
script cada cinco minutos, una copia de seguridad diaria, o una exportacion semanal de la base de datos. Las
horas a las que deben ejecutarse dichos procesos se indican en el fichero crontab correspondiente al usuario.
En el sistema operativo Unix, cron es un administrador regular de procesos en segundo plano (demonio) que
ejecuta procesos o scripts a intervalos regulares (por ejemplo, cada minuto, de semana o mes). Los procesos
que deben ejecutarse y la hora en la que deben hacerlo se especifican en el archivo crontab correspondiente.
En este modulo veremos como:
Aadir tareas al crontab de root
Aadir tareas enlazadas cada hora, diarias, semanales y mensuales
Aadir tareas al crontab del sistema
El crontab de root
El fichero crontab de root se guarda en /var/spool/cron/crontabs/root, pero nunca editaremos los ficheros de
cron directamente. Para editar el crontab (fichero donde se guardan las tareas programadas) de root,
utilizaremos siempre la utilidad crontab. Concretamente utilizaremos la orden crontab -e

- 134 -

[BASH]#crontabe

Utilizaremos siempre esta orden en lugar de ir a buscar el fichero con un editor de texto ya que asi nos
garantizamos que estamos editando un fichero auxiliar en exclusiva, y evitaremos problemas de concurrencia
con otros administradores. Probablemente crontab nos presentara un fichero vacio o bien con la siguiente
lnea de cabeceras:
#mhdommondowcommand

Esta linea simplemente nos servira de guion para escribir debajo de ella nuestras tareas. Como se puede ver
nos esta indicando el formato, primero los minutos, luego la hora, el dia del mes, el mes y el dia de la semana,
es decir:
# minutos horas diaDelMes mes1-12 diaDeLaSemana1-7 comandoAEjecutar
No obstante aadiremos unas lineas al principio, dandole algunas variables de entorno de nuestro interes, por
ejemplo:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin/:/bin/:/usr/sbin:/usr/bin
MAILITO=sistemas@factor.com
mhdommondowcommand

Las variables:
SHELL Indicaremos con que interprete deberemos ejecutar los comandos
PATH Estableceremos el camino de busqueda de comandos que debera seguir el sistema.
MAILTO

Definiremos a que correo iran los avisos en caso de algo vaya mal al ejecutar una de las

tareas. Estas variables no son estrictamente necesarias, solo son para ajustarlas si queremos.

Listando el crontab
Para obtener un listado de las tareas programadas de root, ejecute lo siguiente:
[BASH]#crontabl

Evidentemente no saldran tareas si todavia no hemos programado ninguna.

Programando tareas
Para programar una tarea utilizaremos la orden crontab -e. Por ejemplo para programar una tarea que a las
19h genere un mensaje en un log, escribiremos lo siguiente:
[BASH]#crontabe
SHELL=/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
mhdommondowcommand
019echo"Sonlas19h.">>/var/log/micron.log

Si quisieramos que se ejecutase a las 19:30h pero solo los lunes pondriamos:
- 135 -

#mhdommondowcommand
30191echo"Sonlas19:30h.dellunes.">>/var/log/micron.log

Y si quisieramos que se ejecute a las 19:30 del dia 1 de diciembre


#mhdommondowcommand
3019112echo"Sonlas19:30h.del1dediciembre.">>/var/log/micron.log

Que pasa si queremos que se ejecute a las 19 y 19:30? Se puede poner mas de un valor en cada campo,
separandolos por comas:
#mhdommondowcommand
0,3019echo"Sonlas19olas19:30h.Noestoyseguro.">>/var/log/micron.log

Y para ejecutarlo cada 5 minutos? Se podria poner 5,10,15,20,25 pero hay una abreviatura, asi /min
#mhdommondowcommand
/5echo"Hanpasadocincominutos.">>/var/log/micron.log

Directorios predefinidos: hourly, daily, weekly y monthly


Los sistemas UNIX modernos vienen con unos directorios predefinidos para que cron los lee y ejecute lo que
hay dentro en los intervalos que su nombre indica:
/etc/cron.daily
/etc/cron.hourly
/etc/cron.weekly
/etc/cron.monthly

Dichos directorios se suelen utilizar para enlazar guiones que deban ser llamados en el intervalo
correspondiente al directorio, sin argumentos. Por ejemplo, si creamos un guion de bash y lo guardamos en
/root/bin, le damos permisos de ejecucion, y lo enlazamos en /etc/cron.hourly, cron lo ejecutar cada hora:
[BASH]#chmod+x/root/bin/miScript.sh
[BASH]#lns/root/bin/miScript.sh/etc/cron.hourly/

Crontab del sistema


El archivo de cron de sistema es /etc/crontab. Si ponemos tareas en dicho archivo seran ejecutadas
igualmente, pero no es recomendable. Este crontab se deja para que lo maneje la distribucion y sus
programas. Es igual que el crontab de root, salvo que en este podemos especificar con que usuario se ejecuta
cada cosa, y cron hara una suplantacion previa a la ejecucion.
Un /etc/crontab tpico es:
[BASH]#cat/etc/crontab
etc/crontab:systemwidecrontab
Unlikeanyothercrontabyoudonthavetorunthecrontab
commandtoinstallthenewversionwhenyoueditthisfile
andfilesin/etc/cron.d.Thesefilesalsohaveusernamefields,

- 136 -

thatnoneoftheothercrontabsdo.
SHELL=/bin/shPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

mhdommondowusercommand
17rootcd/&&runpartsreport/etc/cron.hourly256roottestx/usr/sbin/anacron
||(cd/&&runpartsreport/etc/cron.daily)4767roottestx/usr/sbin/anacron
|| ( cd / && runparts report /etc/cron.weekly ) 52 6 1 root test x
/usr/sbin/anacron||(cd/&&runpartsreport/etc/cron.monthly)

Log de cron
En Debian 5 Lenny el log de cron viene desactivado por defecto. Para activarlo tendremos que editar el
fichero /etc/default/cron y eliminar la almohadilla (#) del principio de la linea EXTRA_OPTS="-L 2" dejando el
fichero asi:
#cat/etc/default/cron
Cronconfigurationoptions
UncommentthisoptionforLSBnamesupportin/etc/cron.d/
LSBNAMES=l
Whethertoreadthesystemsdefaultenvironmentfiles(ifpresent)
Thiswillmakecronsetapropercharsetforthemailsitsends
Commentthisorsetittosomethingotherthanyestoprevent
cronfromreadingit.
READ_ENV="yes"
Extraoptionsforcron,seecron(8)
Forexample,setahigherlogleveltoauditcronswork
EXTRA_OPTS="L2"

De esta forma conseguiremos que cron vaya dejando un rastro en /var/log/syslog que podremos observar, por
ejemplo, asi:
[BASH]#tailf/var/log/syslog

Administrando la hora del equipo


En este capitulo aprenderemos a configuar la hora del sistema mediante el uso de servidores de tiempo NTP.
Reloj de tiempo bajo linux
Linux utiliza dos relojes:
RelojdeHardware
RelojdeSoftware

Un equipo personal tiene un reloj de hardware alimentado por una batera. Esa batera asegura que el reloj
contine trabajando an cuando la computadora se encuentre sin suministro elctrico. El reloj de hardware
puede ser modificado (o definido) desde la pantalla de configuracin de la BIOS o desde cualquier sistema
operativo. El kernel Linux mantiene la fecha y hora de manera independiente al reloj de hardware. Durante el
- 137 -

inicio de un sistema Linux, el kernel configura su propio reloj de software accediendo a la fecha y hora
mantenida por el reloj de hardware. Luego, ambos relojes trabajan independientemente. Linux mantiene su
propio reloj debido a que leer el reloj de hardware constantemente es lento y complicado. El reloj del kernel
siempre muestra la hora universal, por lo que no necesita conocer como utilizar usos horarios. La simplicidad
de este modo de trabajar proporciona alta confiabilidad y facilita actualizar la informacin de la zona horaria.
Cada proceso realiza las conversiones de zona horaria de manera independiente. El reloj de hardware puede
estar en formato de hora local u hora universal. Usualmente es mejor que el reloj de hardware mantenga la
hora universal, porque de esta manera no ser necesario modificar la hora del reloj cuando el horario de
verano empiece o finalice.

Programas para controlar el reloj del sistema


Bajo linux existen 2 herramientas principales que son implementadas para administrar el reloj hardware y el de
software del sistema, estas herramientas son:
hwclock
Controlaelrelojdehardware
date Controlaelrelojdelsistema

Ajustes de tiempo y de las zonas horarias


Hay 2 formas estndar para ajustar el reloj de un equipo
localtime

UTC

Porubicaciongeografica

El tiempo universal coordinado, o UTC, en espaol, tambin conocido como tiempo civil, es el tiempo

de la zona horaria de referencia respecto a la cual se calculan todas las otras zonas del mundo
Ajuste de la hora en Linux

El procedimiento es relativamente simple:


1) El primero consiste en ajustar el reloj de Hardware a traves de la configuracion del BIOS 2) El segundo
consiste en establecer la variable de entorno TZ a la zona horaria adecuada utilizando el siguiente comando
[BASH]#tzselect

Alternativa al paso 2 Utilice el programa tzconfig que establecer un enlace simblico de la siguiente forma:
[BASH]#lns/usr/share/zoneinfo/Mexico/General/etc/localtime

3) El tercero consiste en decirle a Linux que nuestro reloj de hardware y de sistema correb bajo UTC, para ello
teclee lo siguiente:
[BASH]#hwclockutchctosys

- 138 -

Comando hwclock
Hwclock es una herramienta que nos permite:
Acceder al Reloj del Hardware
Mostrar la hora actual
Poner el Reloj del Hardware a una hora especificada
Poner el Reloj del Hardware a la Hora del Sistema
Poner el Tiempo del Sistema desde el Reloj del Hardware.
tambin puede ejecutar hwclock peridicamente para insertar o quitar tiempo del Reloj del Hardware para
compensar desviaciones sistemticas en las que el reloj gana o pierde tiempo consistentemente a una cierta
velocidad si se deja solo.
Sintaxis:
[BASH]#hwclock[opciones]

Opciones:
Opciones

Descripcion

--show Lee el reloj del hardware y muestra la hora en la salida estndar.


--set

Pone el reloj del hardware a la hora dada por la opcin --date

--hctosys

Pone el tiempo del sistema a partir del reloj del hardware. sta es una buena opcin para

poner en uno de los guiones de arranque del sistema.


--systohc

Pone el reloj del hardware a la hora del sistema actual.

--adjust Aade o sustrae tiempo del reloj del hardware para tener en cuenta el desvo sistemtico desde la
ltima vez que el reloj se puso o se ajust. Vea la discusin al respecto ms adelante.
--utc

Indica que el reloj del hardware se mantiene en el tiempo universal coordinado (UTC). Es cosa suya si

mantiene su reloj en hora local o UTC, pero nada en el reloj le dice qu es lo que ha escogido. As que con esta
opcin es como le da esa informacin a hwclock.
Comando date
Este programa se utiliza para mostrar o establecer la hora del sistema
Sintaxis:
[BASH]#date[opciones][+FORMATO]

Formato:
Opciones

Descripcion

%%

Una literal %

%a

Localizacin del nombre abreviado del da de la semana (Sun,Sat)

%A

Localizacin del nombre completo del da de la semana (Sunday,Saturday)

%b

Localizacin del nombre abreviado del nombre del mes

- 139 -

%c

Localizacion de fecha y hora (Sat Nov 04 12:02:33 EST 1989)

%C

Siglo (ao dividido por 100 y truncado a un entero) [00-99]

%d
%D
%e

Dia del mes (01..31)


Fecha (mm/dd/yy)
Dia del mes (1..31,), a diferencia de %d este suprime el espacio en blanco

%F

Lo mismo que %Y-%m-%d

%h

Lo mismo que %b

%H

Hora (00..23)

%I

Hora (01..12)

%j

Dia del ao (001..366)

%k

Hora (0..23)

%l

Hola (1..12)

%m

Mes (01..12)

%M

Minutos (00..59)

%n

Una nueva linea

%N

Nanosegundos (000000000..999999999)

%p

Indicacion de PM o AM en mayusculas

%P

Indicacion de pm o am en minusculas

%r

Tiempo en 12 horas ( hh:mm:ss AP

%R

Tiempo en 24 horas ( hh:mm )

%s

Segundos desde `00:00:00 1970-01-01 UTC' (una extesion de GNU )

%S

Segundos (00..60);

%t

Un tabulador horizontal

%T

Tiempo , 24 horas (hh:mm:ss)

%u

Dia de la semana (1..7) el dia 1 representa el lunes

%U

Nmero de semana del ao con el domingo como primer da de la semana (00..53)

%V

Nmero de semana del ao con el lunes como primer da de la semana (00..53)

%w

Dia de la samana (0..6); 0 representa el Domingo

%W

Numero de la semana del ao con Lunes como primer dia de la semana (00..53)

%x

Representacion de la fecha local (mm/dd/yy)

%X

Representacion de la hora local (%H:%M:%S)

%y

Los ultimos dos digitos del ao (00..99)

%Y

Ao (1970..)

M)

Servicios Esenciales del Sistema


Mail Transfer Agent Basico
Protocolo SMTP

- 140 -

Simple Mail Transfer Protocol (SMTP) Protocolo Simple de Transferencia de Correo, es un protocolo de la
capa de aplicacin. Protocolo de red basado en texto utilizado para el intercambio de mensajes de correo
electrnico entre computadoras u otros dispositivos SMTP se basa en el modelo cliente-servidor, donde un
cliente enva un mensaje a uno o varios receptores. La comunicacin entre el cliente y el servidor consiste
enteramente en lneas de texto compuestas por caracteres ASCII. El tamao mximo permitido para estas
lneas es de 1000 caracteres. Las respuestas del servidor constan de un cdigo numrico de tres digitos,
seguido de un texto explicativo. El nmero va dirigido a un procesado automtico de la respuesta por
autmata, mientras que el texto permite que un humano interprete la respuesta. En el protocolo SMTP todas
las rdenes, rplicas o datos son lneas de texto, delimitadas por el carcter <CRLF>. Todas las rplicas
tienen un cdigo numrico al comienzo de la lnea. En el conjunto de protocolos TCP/IP, el SMTP va por
encima del TCP, usando normalmente el puerto 25 en el servidor para establecer la conexin.

Protocolo POP3
POP3 est diseado para recibir correo, no para enviarlo; le permite a los usuarios con conexiones
intermitentes muy lentas (tales como las conexiones por mdem), descargar su correo electrnico mientras
tienen conexin y revisarlo posteriormente incluso estando desconectados. Cabe mencionar que la mayora de
los clientes de correo incluyen la opcin de dejar los mensajes en el servidor, de manera tal que, un cliente que
utilice POP3 se conecta, obtiene todos los mensajes, los almacena en la computadora del usuario como
mensajes nuevos, los elimina del servidor y finalmente se desconecta. En contraste, el protocolo IMAP permite
los modos de operacin conectado y desconectado. Los clientes de correo electrnico que utilizan IMAP dejan
por lo general los mensajes en el servidor hasta que el usuario los elimina directamente. Esto y otros factores
hacen que la operacin de IMAP permita a mltiples clientes acceder al mismo buzn de correo. La mayora
de los clientes de correo electrnico soportan POP3 IMAP; sin embargo, solo unos cuantos proveedores de
internet ofrecen IMAP como valor agregado de sus servicios.

Protocolo IMAP
Internet Message Access Protocol, o su acrnimo IMAP, es un protocolo de red de acceso a mensajes
electrnicos almacenados en un servidor. Mediante IMAP se puede tener acceso al correo electrnico desde
cualquier equipo que tenga una conexin a Internet. IMAP tiene varias ventajas sobre POP, que es el otro
protocolo empleado para obtener correo desde un servidor. Por ejemplo, es posible especificar en IMAP
carpetas del lado servidor. Por otro lado, es ms complejo que POP ya que permite visualizar los mensajes de
manera remota y no descargando los mensajes como lo hace POP.
Ventajas sobre POP3
Respaldo para los modos de operacin conetado y desconectado
Al utilizar POP3, los clientes se conectan brevemente al servidor de correo, solamente el tiempo que les tome
descargar los nuevos mensajes. Al utilizar IMAP, los clientes permanecen conectados el tiempo que su
interfaz permanezca activa y descargan los mensajes bajo demanda. Esta manera de trabajar de IMAP puede

- 141 -

dar tiempos de respuesta ms rpidos para usuarios que tienen una gran cantidad de mensajes o mensajes
grandes.
Respaldo para que la informacin de estado del mensaje se mantenga en el servidor
A travs de la utilizacin de seales definidas en el protocolo IMAP4 de los clientes, se puede vigilar el estado
del mensaje, por ejemplo, si el mensaje ha sido o no ledo, respondido o eliminado. Estas seales se
almacenan en el servidor, de manera que varios clientes conectados al mismo correo en diferente tiempo
pueden detectar los cambios hechos por otros clientes.
Respaldo para bsquedas de parte del servidor
IMAP4 proporciona un mecanismo para que los clientes pidan al servidor que busque mensajes de acuerdo a
una cierta variedad de criterios. Este mecanismo evita que los clientes descarguen todos los mensajes de su
buzn de correo, agilizando, de esta manera, las bsquedas.

Sobre Sendmail
Las races de Sendmail se remontan al nacimiento del correo electrnico, una dcada antes de que naciese
ARPANET, el precursor de Internet. Por entonces, cada buzn de usuario era un fichero con derechos de slo
lectura y las aplicaciones de correo eran simplemente texto incorporado en ese fichero. Cada usuario tena que
abrir y meterse de lleno en el fichero de correo para buscar correos antiguos y leer el correo nuevo era toda
una faena. La primera transferencia real de un fichero de mensaje de correo entre dos equipos tuvo lugar
hasta el ao de 1972, ao en el que el correo electrnico empez a transferirse por FTP a travs de un
protocolo de red NCP. Este mtodo de comunicacin ms sencillo muy pronto se hizo popular, incluso hasta el
punto de representar la mayor parte del trfico de ARPANET en menos de un ao. Sin embargo, la falta de
estndares entre los protocolos existentes convirti al correo electrnico en ms difcil de enviar desde algunos
sistemas y as continu hasta que ARPANET cre el estndar TCP/IP en 1982. Un nuevo protocolo, SMTP,
que se materializaba en el transporte de mensajes. Estos avances, en combinacin con la sustitucin de los
ficheros host por dns, permitieron que se materializasen los agentes MTA con funciones completas. Sendmail,
que creci a partir de un precedente sistema de entrega de correo electrnico denominado Delivermail, muy
pronto se convirti en estndar a medida que Internet comenzaba a expandirse y a utilizarse ms
ampliamente. El unico punto debil que preseta sendmail es que este este posee el mayor numero de errores
los cuales son reparados casi de inmediato.

Sendmail en la actualidad
Algunos analisis y encuentas nos expresan comentarios muy buenos sobre Sendmail, esto de acuerdo a una
encuesta realizada por la editorial O'Reilly, la cual formulo la siguiente pregunta Cuantas empresas tienen
implementado como servidor de correo a Sendmail? Para dicha encuesta se seleccionaron al rededor de 400
000 dominios, de los cuales el 12.3 % de los encuestados respondieron que tenian implementado a Sendmail
como servidor de correo, el segundo lugar fue para Postfix con un 8.6 % y en tercer lugar tenemos a Postini
con el 8.5%
- 142 -

Sobre Postfix
Postfix es un Agente de Transporte de Correo (MTA) de software libre / cdigo abierto, un programa
informtico para el enrutamiento y envo de correo electrnico, creado con la intencin de que sea una
alternativa ms rpida, fcil de administrar y segura al ampliamente utilizado Sendmail. Formalmente conocido
como VMailer e IBM Secure Mailer, fue originalmente escrito por Wietse Venema durante su estancia en el
Thomas J. Watson Research Center de IBM, y contina siendo desarrollado activamente. Postfix es el agente
de transporte por omisin en diversas distribuciones de Linux y en las ltimas versiones del Mac OS X.

Sobre Exim
Exim (EXperimental Internet Mailer) es un agente de transporte de correo (Mail Transport Agent, usualmente
MTA) desarrollado por la Universidad de Cambridge y puede ser utilizado en la mayora de los sistemas Unix
(entre ellos GNU/Linux). Si bien puede compilarse en sistemas operativos Windows, se recomienda que sea
utilizado en produccin sobre sistemas operativos de la familia Unix. Se distribuye sin costo bajo la licencia
GNU GPL por lo que es, adems, software libre. Tiene una gran flexibilidad en los caminos que pueden seguir
los mensajes segn su origen y por presentar funcionalidades para control de spam, listas de bloqueo
basados en DNS (DNSBL), virus, control de relay, usuarios y dominios virtuales y otros, que se configuran y
mantienen en forma ms o menos sencilla. El proyecto cuenta con buena documentacin, ejemplos y recetas
claras de como hacer determinadas tareas. En trminos generales se destaca que no existen situaciones
para las que Exim sea una opcin incorrecta y en muchas situaciones se desempea como la mejor opcin.
Exim es el MTA por defecto en las distribuciones Debian GNU/Linux.

Sobre Qmail
Qmail es un servidor de correo electrnico (SMTP) hecho para Unix. Utiliza el formato maildir para almacenar
mensajes (un archivo por mensaje), eliminando varios problemas asociados al manejo del formato mbox.
Qmail es distribuido como cdigo fuente (sourcecode), escrito en lenguaje C.
Administrar impresoras e impresiones

Como imprimir en Linux


En Linux podemos imprimir de tres maneras:
1.Escribir directamente en la impresora: la forma ms sencilla de imprimir un archivo en Linux es enviarlo
directamente a la impresora. Por ejemplo, para imprimir investigacion.txt haremos:

- 143 -

[BASH]#catinvestigacion.txt>/dev/lp0

2.El sistema lpr/lpd es la versin para Linux del sistema lp (Line Printer) de UNIX. Hasta que apareci CUPS
era el sistema estndar de imprimir en Linux. Incluso ahora, es el sistema que se instala por defecto.
3.El sistema CUPS (Common UNIX Printing System): actualmente es el sistema estndar de impresin en
Linux.
En el entorno grfico, las aplicaciones que pueden imprimir son compatibles tanto con lpr/lpd como con CUPS:
utilizarn el sistema que est instalado, trabajarn sobre l y obtendrn automticamente las propiedades de
la impresora.

En que consiste el sistema de impresion CUPS


El sistema de impresin CUPS reemplaza al sistema de impresin lpr/lpd y consiste en lo siguiente: 1.El
demonio de impresin cupsd (print spooler daemon): vigila los directorios spool buscando trabajos a imprimir.
Cuando aparece alguno, cupsd lanza una copia de s mismo que imprimir el archivo en la impresora
apropiada. 2.La cola de impresin (spool): ubicada en el directorio /var/spool/cups, donde se almacenan los
trabajos a imprimir. Los nuevos trabajos a imprimir se colocan en la cola de impresin a la espera: el primero
que entra es el primero que sale. 3.Los comandos lpr/lpd para manejar la cola de impresin: el sistema lpr/lpd
es uno de los estndares de UNIX, y las aplicaciones asumen que tendrn los comandos de este sistema de
impresin disponibles. Por este motivo CUPS proporciona su propia versin de esos comandos, que son:
lpr (o lp): enviar trabajos a la cola de impresin. Este comando copia el archivo a imprimir en el directorio de
spool, donde permanece hasta que el demonio cupsd lo imprime. Su sintaxis es:
[BASH]# lpr <archivo>
lpq: consultar los trabajos pendientes en la cola de impresin.
lpc: configurar las impresoras.
lprm: eliminar trabajos de la cola de impresin.
4.los drivers PPD de las impresoras PostScript: en Linux, cuando una aplicacin enva un documento a la
impresora genera un archivo PostScript. Si la impresora entiende el lenguaje PostScript puede imprimir el
documento directamente. Slo tenemos que decirle a CUPS cules son las caractersticas de la impresora, y
eso lo hace el archivo PPD (Postscript Printer Description): contiene todas las caractersticas de la impresora,
como tamaos de papel, colores, resoluciones disponibles, etc.
Si la impresora no entiende PostScript debemos traducir los documentos que generan las aplicaciones
(PostScript) a un lenguaje que entienda la impresora, por lo que necesitamos un filtro. De esto se encarga
Foomatic (paquete foomatic-db-engine): proporciona el archivo PPD y los filtros necesarios para traducir los
documentos (trabaja sobre GhostScript). En ambos casos, el archivo PPD de la impresora se puede descargar
desde LinuxPrinting (linuxprinting.org) o desde la web de CUPS (cups.org) y se debe guardar en el
directorio /usr/share/cups/model.
5.Los comandos CUPS para administrar las impresoras:
- 144 -

lpinfo
lpadmin
enable
disable
accept
reject
lpoptions
lpstat

6.La interfaz web de CUPS: es la mejor opcin para administrar CUPS.

Instalar una impresora local con CUPS


Veamos cmo instalar una impresora local con CUPS utilizando su interfaz web:
conectamoslaimpresora.
conseguimoseinstalamoselarchivoPPDdenuestraimpresora.
instalamosFoomaticsilaimpresoranoesPostScript.
reiniciamoseldemoniodeCUPS:
[BASH]#/etc/init.d/cupsstart
accedemosalinterfazwebdeCUPS:
http://localhost:631
entramosaAdministracion
pulsamos Aadir impresora e introducimos Nombre de la impresora: HP Lasser Jet,
Ubicacin:Oficina:HPLaser.
enlasiguientepantallanospreguntarTipodeconexin:
seleccionamoselmodelo.
nos pedir Usuario y Contrasea, ya que para administrar impresoras hay que tener
permisosderoot(lacontraseaseenvaentextoplano,sinencriptar).
yyatenemoslaimpresorainstalada.
pulsando en Impresoras iremos a la pgina de la nueva impresora. Desde aqu podemos
monitorizar los trabajos de impresin, cambiar las opciones de configuracin y
seleccionarlacomoimpresorapredeterminada.
para terminar, comprobamos que realmente funciona lanzando una pgina de prueba con
Imprimirpginadeprueba.
Compartirnuestraimpresora

Tenemos dos posibilidades para compartir nuestra impresora:


1.que CUPS escuche conexiones de mquinas remotas Los equipos que dispongan de un cliente IPP (Linux,
Unix, Mac y Windows XP) podrn conectar con el demonio de impresin cupsd de nuestra mquina mediante
el protocolo IPP (Internet Printing Protocol, puerto 631 TCP), e imprimir en nuestra impresora, una vez que les
permitamos acceder. Para ello, en el archivo de configuracin de CUPS, /etc/cups/cupsd.conf
especificaremos qu mquinas tienen acceso a CUPS. Buscaremos las lneas:
<Location/>
OrderDeny,AllowDenyAllAllow127.0.0.1</Location>

Vemos que por defecto slo puede acceder a CUPS la propia mquina (127.0.0.1). Para que puedan acceder
las mquinas de la LAN aadiremos la lnea:
Allow192.168.0.0/255.255.255.0

- 145 -

Para terminar reiniciamos el demonio de CUPS:


[BASH]#/etc/init.d/cupsrestart

Una vez compartida la impresora, es muy sencillo imprimir desde Linux:


Interfaz web de CUPS http://localhost:631
Administracin, Aadir impresora
Introducimos Nombre de la impresora, Ubicacin y Descripcin
Tipo de conexin, Internet Printing Protocol (IPP).
URL de la conexin, ipp://192.168.0.2/printers/Canon.
Modelo, Usuario y Contrasea y la impresora ya est instalada.
Asistente para agregar impresoras
Impresora de red o una impresora conectada a otra computadora
Conectarse a una impresora en Internet o en su red domstica u organizacin
URL de la conexin, http://192.168.0.2:631/printers/Canon.
Instalamos los drivers de la impresora desde el CD del fabricante
1.Que el servidor Samba atienda peticiones remotas y las pase a CUPS Los equipos que dispongan de un
cliente SMB (Windows) podrn conectar con el servidor Samba (paquete samba) de nuestra mquina
mediante el protocolo SMB (puerto 139 TCP), y ste se encargar de pasarle la peticin a CUPS.
Vamos a configurar el servidor Samba para compartir nuestra impresora. Primero crearemos en nuestro
sistema un usuario especfico (smbprint) para que acceda a la impresora mediante Samba. Si queremos
permitir acceso annimo lo podemos crear sin contrasea:
[BASH]# # /usr/sbin/adduser --system --disabled-password smbprint
Para compartir nuestra impresora CUPS y que slo el usuario smbprint tenga acceso a ella, como invitado (por
lo que todas las mquinas de la red local y con conexin directa desde Internet podrn imprimir), editaremos el
archivo /etc/samba/smb.conf poniendo:
[printers]
browseable=yesprintable=yespublic=yesguestonly=yesguestaccount=smbprint
path=/home/smbprint

Adems tenemos que decirle a Samba que el sistema de impresin es CUPS, no lpr/lpd, por lo que
cambiaremos /etc/samba/smb.conf para que quede:
[global]
printcapname=cupsprinting=cups

Grabamos los cambios y reiniciamos Samba:


[BASH]#/etc/init.d/sambarestart

Una vez compartida la impresora, es muy sencillo imprimir desde Windows:


localizamos nuestra mquina en el Explorador de archivos. Veremos que tiene una impresora compartida.
pulsamos Conectar... e instalamos los drivers desde el CD del fabricante.

- 146 -

Fundamentos de Red
Fundamentos de TCP/IP
Sobre TCP/IP
La familia de protocolos de Internet es un conjunto de protocolos de red en la que se basa Internet y que
permiten la transmisin de datos entre redes de computadoras. En ocasiones se le denomina conjunto de
protocolos TCP/IP, en referencia a los dos protocolos ms importantes que la componen: Protocolo de Control
de Transmisin (TCP) y Protocolo de Internet (IP), que fueron los dos primeros en definirse, y que son los ms
utilizados de la familia. Existen tantos protocolos en este conjunto que llegan a ser ms de 100 diferentes,
entre ellos se encuentra el popular HTTP (HyperText Transfer Protocol), que es el que se utiliza para acceder
a las pginas web, adems de otros como el ARP (Address Resolution Protocol) para la resolucin de
direcciones, el FTP (File Transfer Protocol) para transferencia de archivos, y el SMTP (Simple Mail Transfer
Protocol) y el POP (Post Office Protocol) para correo electrnico, TELNET para acceder a equipos remotos,
entre otros. El TCP/IP es la base de Internet, y sirve para enlazar computadoras que utilizan diferentes
sistemas operativos, incluyendo PC, minicomputadoras y computadoras centrales sobre redes de rea local
(LAN) y rea extensa (WAN). TCP/IP fue desarrollado y demostrado por primera vez en 1972 por el
Departamento de Defensa de los Estados Unidos, ejecutndolo en ARPANET, una red de rea extensa de
dicho departamento. La familia de protocolos de Internet puede describirse por analoga con el modelo OSI
(Open System Interconnection), que describe los niveles o capas de la pila de protocolos, aunque en la
prctica no corresponde exactamente con el modelo en Internet. En una pila de protocolos, cada nivel
soluciona una serie de problemas relacionados con la transmisin de datos, y proporciona un servicio bien
definido a los niveles ms altos. Los niveles superiores son los ms cercanos al usuario y tratan con datos ms
abstractos, dejando a los niveles ms bajos la labor de traducir los datos de forma que sean fsicamente
manipulables. El modelo de Internet fue diseado como la solucin a un problema prctico de ingeniera. El
modelo OSI, en cambio, fue propuesto como una aproximacin terica y tambin como una primera fase en la
evolucin de las redes de ordenadores. Por lo tanto, el modelo OSI es ms fcil de entender, pero el modelo
TCP/IP es el que realmente se usa. Sirve de ayuda entender el modelo OSI antes de conocer TCP/IP, ya que
se aplican los mismos principios, pero son ms fciles de entender en el modelo OSI.

Desarrollo de TCP/IP
La Familia de Protocolos de Internet fueron el resultado del trabajo llevado a cabo por la Agencia de
Investigacin de Proyectos Avanzados de Defensa (DARPA por sus siglas en ingls) a principios de los 70.
Despus de la construccin de la pionera ARPANET en 1969 DARPA comenz a trabajar en un gran nmero
de tecnologas de transmisin de datos. En 1972, Robert E. Kahn fue contratado por la Oficina de Tcnicas de
Procesamiento de Informacin de DARPA, donde trabajo en la comunicacin de paquetes por satlite y por
ondas de radio, reconoci el importante valor de la comunicacin de estas dos formas. En la primavera de

- 147 -

1973, Vint Cerf, desarrollador del protocolo de ARPANET, Network Control Program(NPC) se uni a Kahn con
el objetivo de crear una arquitectura abierta de interconexin y disear as la nueva generacin de protocolos
de ARPANET. Para el verano de 1973, Kahn y Cerf habian conseguido una remodelacin fundamental, donde
las diferencias entre los protocolos de red se ocultaban usando un Protocolo de comunicaciones y adems, la
red dejaba de ser responsable de la fiabilidad de la comunicacin, como pasaba en ARPANET , era el host el
responsable. Cerf reconoci el mrito de Hubert Zimmerman y Louis Pouzin, creadores de la red CYCLADES,
ya que su trabajo estuvo muy influenciado por el diseo de esta red. Un ordenador denominado router (un
nombre que fue despus cambiado a gateway, puerta de enlace, para evitar confusiones con otros tipos de
Puerta de enlace) esta dotado con una interfaz para cada red, y enva Datagrama de ida y vuelta entre ellos.
Los requisitos para estor routers estn definidos en (Request for Comments 1812).
Esta idea fue llevada a la prctica de una forma mas detallada por el grupo de investigacin que Cerf tena en
Stanford durante el periodo de 1973 a 1974, dando como resultado la primera especificacin TCP (Request
for Comments 675) Entonces DARPA fue contratada por BBN Technologies, la Universidad de Stanford, y la
University College de Londres para desarrollar versiones operacionales del protocolo en diferentes
plataformas de hardware. Se desarrollaron as cuatro versiones diferentes: TCP v1, TCP v2, una tercera
dividida en dos TCP v3 y IP v3 en la primavera de 1978, y despus se estabiliz la versin TCP/IP v4 el
protocolo estndar que todava se emplea en Internet actualmente En 1975, se realiz la primera prueba de
comunicacin entre dos redes con protocolos TCP/IP entre la Universidad de Stanford y la University College
de Londres(UCL). En 1977, se realiz otra prueba de comunicacin con un protocolo TCP/IP entre tres redes
distintas con ubicaciones en Estados Unidos, Reino Unido y Noruega. Varios prototipos diferentes de
protocolos TCP/IP se desarrollaron en mltiples centros de investigacin entre los aos 1978 y 1983. La
migracin completa de la red ARPANET al protocolo TCP/IP concluy oficialmente el da 1 de enero de 1983
cuando los protocolos fueron activados permanentemente. En marzo de 1982, el Departamento de Defensa de
los Estados Unidos declar al protocolo TCP/IP el estndar para las comunicaciones entre redes militares.En
1985, el Centro de Administracin de Internet (Internet Architecture Board IAB por sus siglas en ingls)
organiz un Taller de Trabajo de tres das de duracin, al que asistieron 250 comerciales promocionando as
el protocolo lo que contribuy a un incremento de su uso comercial.

Niveles en la pila TCP/IP


Hay algunas discusiones sobre como encaja el modelo TCP/IP dentro del modelo OSI. Como TCP/IP y modelo
OSI no estn delimitados con precisin no hay una respuesta que sea la correcta. El modelo TCP/IP no est lo
suficientemente dotado en los niveles inferiores como para detallar la autntica estratificacin en niveles:
necesitara tener una capa extra (el nivel de Red) entre los niveles de transporte e Internet. Protocolos
especficos de un tipo concreto de red, que se sitan por encima del marco de hardware bsico, pertenecen al
nivel de red, pero sin serlo. Ejemplos de estos protocolos son el ARP (Protocolo de resolucin de direcciones)
y el STP (Spanning Tree Protocol). De todas formas, estos son protocolos locales, y trabajan por debajo de las
capas de Internet. Cierto es que situar ambos grupos (sin mencionar los protocolos que forman parte del nivel
de Internet pero se sitan por encima de los protocolos de Internet, como ICMP) todos en la misma capa
puede producir confusin, pero el modelo OSI no llega a ese nivel de complejidad para ser ms til como
modelo de referencia. El siguiente diagrama intenta mostrar la pila OSI y otros protocolos relacionados con el
modelo OSI original: Normalmente, los tres niveles superiores del modelo OSI (Aplicacin, Presentacin y

- 148 -

Sesin) son considerados simplemente como el nivel de aplicacin en el conjunto TCP/IP. Como TCP/IP no
tiene un nivel de sesin unificado sobre el que los niveles superiores se sostengan, estas funciones son
tpicamente desempeadas (o ignoradas) por las aplicaciones de usuario. La diferencia ms notable entre los
modelos de TCP/IP y OSI es el nivel de Aplicacin, en TCP/IP se integran algunos niveles del modelo OSI en
su nivel de Aplicacin. Una interpretacin simplificada de la pila TCP/IP se muestra debajo:

Nivel Fisico
El nivel fsico describe las caractersticas fsicas de la comunicacin, como las convenciones sobre la
naturaleza del medio usado para la comunicacin (como las comunicaciones por cable, fibra ptica o radio), y
todo lo relativo a los detalles como los conectores, cdigo de canales y modulacin, potencias de seal,
longitudes de onda, sincronizacin y temporizacin y distancias mximas.

Nivel de Enlace de Datos


El nivel de enlace de datos especifica cmo son transportados los paquetes sobre el nivel fsico, incluyendo los
delimitadores (patrones de bits concretos que marcan el comienzo y el fin de cada trama). Ethernet, por
ejemplo, incluye campos en la cabecera de la trama que especifican que mquina o mquinas de la red son
las destinatarias de la trama. Ejemplos de protocolos de nivel de enlace de datos son Ethernet, Wireless
Ethernet, SLIP, Token Ring y ATM. PPP es un poco ms complejo y originalmente fue diseado como un
protocolo separado que funcionaba sobre otro nivel de enlace, HDLC/SDLC. Este nivel es a veces subdividido
en Control de enlace lgico (Logical Link Control) y Control de acceso al medio (Media Access Control).

Nivel de internet
Como fue definido originalmente, el nivel de red soluciona el problema de conseguir transportar paquetes a
travs de una red sencilla. Ejemplos de protocolos son X.25 y Host/IMP Protocol de ARPANET.
Con la llegada del concepto de Internet, nuevas funcionalidades fueron aadidas a este nivel, basadas en el
intercambio de datos entre una red origen y una red destino. Generalmente esto incluye un enrutamiento de
paquetes a travs de una red de redes, conocida como Internet. En la familia de protocolos de Internet, IP
realiza las tareas bsicas para conseguir transportar datos desde un origen a un destino. IP puede pasar los
datos a una serie de protocolos superiores; cada uno de esos protocolos es identificado con un nico "Nmero
de protocolo IP". ICMP y IGMP son los protocolos 1 y 2, respectivamente.
Algunos de los protocolos por encima de IP como ICMP (usado para transmitir informacin de diagnstico
sobre transmisiones IP) e IGMP (usado para dirigir trfico multicast) van en niveles superiores a IP pero
realizan funciones del nivel de red e ilustran una incompatibilidad entre los modelos de Internet y OSI. Todos
los protocolos de enrutamiento, como BGP, OSPF, y RIP son realmente tambin parte del nivel de red, aunque
ellos parecen pertenecer a niveles ms altos en la pila.

Nivel de Transporte
Los protocolos de enrutamiento dinmico que tcnicamente encajan en el conjunto de protocolos TCP/IP (ya

- 149 -

que funcionan sobre IP) son generalmente considerados parte del nivel de red; un ejemplo es OSPF (protocolo
IP nmero 89).
TCP (protocolo IP nmero 6) es un mecanismo de transporte fiable y orientado a conexin, que proporciona un
flujo fiable de bytes, que asegura que los datos llegan completos, sin daos y en orden. TCP realiza
continuamente medidas sobre el estado de la red para evitar sobrecargarla con demasiado trfico. Adems,
TCP trata de enviar todos los datos correctamente en la secuencia especificada. Esta es una de las
principales diferencias con UDP, y puede convertirse en una desventaja en flujos en tiempo real (muy
sensibles a la variacin del retardo) o aplicaciones de enrutamiento con porcentajes altos de prdida en el
nivel de Internet. Ms reciente es SCTP, tambin un mecanismo fiable y orientado a conexin. Est
relacionado con la orientacin a byte, y proporciona mltiples sub-flujos multiplexados sobre la misma
conexin. Tambin proporciona soporte de multihoming, donde una conexin puede ser representada por
mltiples direcciones IP (representando mltiples interfaces fsicas), as si hay un fallo la conexin no se
interrumpe. Fue desarrollado inicialmente para aplicaciones telefnicas (para transportar SS7 sobre IP), pero
tambin fue usado para otras aplicaciones. UDP (protocolo IP nmero 17) es un protocolo de datagramas sin
conexin. Es un protocolo no fiable (best effort al igual que IP) - no porque sea particularmente malo, sino
porque no verifica que los paquetes lleguen a su destino, y no da garantas de que lleguen en orden. Si una
aplicacin requiere estas caractersticas, debe llevarlas a cabo por s misma o usar TCP. UDP es usado
normalmente para aplicaciones de streaming (audio, video, etc) donde la llegada a tiempo de los paquetes es
ms importante que la fiabilidad, o para aplicaciones simples de tipo peticin/respuesta como el servicio DNS,
donde la sobrecarga de las cabeceras que aportan la fiabilidad es desproporcionada para el tamao de los
paquetes. DCCP est actualmente bajo desarrollo por el IETF. Proporciona semntica de control para flujos
TCP, mientras de cara al usuario se da un servicio de datagramas UDP. TCP y UDP: son usados para dar
servicio a una serie de aplicaciones de alto nivel. Las aplicaciones con una direccin de red dada son
distinguibles entre s por su nmero de puerto TCP o UDP. Por convencin, los puertos bien conocidos (wellknown ports) son asociados con aplicaciones especficas. RTP es un protocolo de datagramas que ha sido
diseado para datos en tiempo real como el streaming de audio y video que se monta sobre UDP.

Nivel de Aplicacion
El nivel de aplicacin es el nivel que los programas ms comunes utilizan para comunicarse a travs de una
red con otros programas. Los procesos que acontecen en este nivel son aplicaciones especficas que pasan
los datos al nivel de aplicacin en el formato que internamente use el programa y es codificado de acuerdo con
un protocolo estndar. Algunos programas especficos se considera que se ejecutan en este nivel.
Proporcionan servicios que directamente trabajan con las aplicaciones de usuario. Estos programas y sus
correspondientes protocolos incluyen a HTTP (HyperText Transfer Protocol), FTP (Transferencia de archivos),
SMTP (correo electrnico), SSH (login remoto seguro), DNS (Resolucin de nombres de dominio) y a muchos
otros. Una vez que los datos de la aplicacin han sido codificados en un protocolo estndar del nivel de
aplicacin son pasados hacia abajo al siguiente nivel de la pila de protocolos TCP/IP. En el nivel de transporte,
las aplicaciones normalmente hacen uso de TCP y UDP, y son habitualmente asociados a un nmero de
puerto bien conocido (well-known port). Los puertos fueron asignados originalmente por la IANA.

- 150 -

Protocolo TCP
Las conexiones TCP se componen de tres etapas: establecimiento de conexin, transferencia de datos y fin
de la conexin. Para establecer la conexin se usa el procedimiento llamado negociacin en tres pasos (3-way
handshake). Una negociacin en cuatro pasos (4-way handshake) es usada para la desconexin. Durante el
establecimiento de la conexin, algunos parmetros como el nmero de secuencia son configurados para
asegurar la entrega ordenada de los datos y la robustez de la comunicacin.

Establecimiento de la conexion
Aunque es posible que un par de entidades finales comiencen una conexin entre ellas simultneamente,
normalmente una de ellas abre un socket en un determinado puerto tcp y se queda a la escucha de nuevas
conexiones. Es comn referirse a esto como apertura pasiva, y determina el lado servidor de una conexin. El
lado cliente de una conexin realiza una apertura activa de un puerto enviando un paquete SYN inicial al
servidor como parte de la negociacin en tres pasos. En el lado del servidor se comprueba si el puerto est
abierto, es decir, si existe algn proceso escuchando en ese puerto. En caso de no estarlo, se enva al cliente
un paquete de respuesta con el bit RST activado, lo que significa el rechazo del intento de conexin. En caso
de que s se encuentre abierto el puerto, el lado servidor respondera a la peticin SYN vlida con un paquete
SYN/ACK. Finalmente, el cliente debera responderle al servidor con un ACK, completando as la negociacin
en tres pasos (SYN, SYN/ACK y ACK) y la fase de establecimiento de conexin. Es interesante notar que
existe un nmero de secuencia generado por cada lado, ayudando de este modo a que no se puedan
establecer conexiones falseadas (spoofing).

Transferencia de datos
Durante la etapa de transferencia de datos, una serie de mecanismos claves determinan la fiabilidad y
robustez del protocolo. Entre ellos estn incluidos el uso del nmero de secuencia para ordenar los segmentos
TCP recibidos y detectar paquetes duplicados, checksums para detectar errores, y asentimientos y
temporizadores para detectar prdidas y retrasos. Durante el establecimiento de conexin TCP, los nmeros
iniciales de secuencia son intercambiados entre las dos entidades TCP. Estos nmeros de secuencia son
usados para identificar los datos dentro del flujo de bytes, y poder identificar (y contar) los bytes de los datos
de la aplicacin. Siempre hay un par de nmeros de secuencia incluidos en todo segmento TCP, referidos al
nmero de secuencia y al nmero de asentimiento. Un emisor TCP se refiere a su propio nmero de secuencia
cuando habla de nmero de secuencia, mientras que con el nmero de asentimiento se refiere al nmero de
secuencia del receptor. Para mantener la fiabilidad, un receptor asiente los segmentos TCP indicando que ha
recibido una parte del flujo continuo de bytes. Una mejora de TCP, llamada asentimiento selectivo (SACK,
Selective Acknowledgement) permite a un receptor TCP asentir los datos que se han recibido de tal forma que
el remitente solo retransmita los segmentos de datos que faltan. A travs del uso de nmeros de secuencia y
asentimiento, TCP puede pasar los segmentos recibidos en el orden correcto dentro del flujo de bytes a la
aplicacin receptora. Los nmeros de secuencia son de 32 bits (sin signo), que vuelve a cero tras el siguiente
byte despus del 232-1. Una de las claves para mantener la robustez y la seguridad de las conexiones TCP es
la seleccin del nmero inicial de secuencia (ISN, Initial Sequence Number). Un checksum de 16 bits,
- 151 -

consistente en el complemento a uno de la suma en complemento a uno del contenido de la cabecera y datos
del segmento TCP, es calculado por el emisor, e incluido en la transmisin del segmento. Se usa la suma en
complemento a uno porque el acarreo final de ese mtodo puede ser calculado en cualquier mltiplo de su
tamao (16-bit, 32-bit, 64-bit...) y el resultado, una vez plegado, ser el mismo. El receptor TCP recalcula el
checksum sobre las cabeceras y datos recibidos. El complemento es usado para que el receptor no tenga que
poner a cero el campo del checksum de la cabecera antes de hacer los clculos, salvando en algn lugar el
valor del checksum recibido; en vez de eso, el receptor simplemente calcula la suma en complemento a uno
con el checksum incluido, y el resultado debe ser igual a 0. Si es as, se asume que el segmento ha llegado
intacto y sin errores.
Hay que fijarse en que el checksum de TCP tambin cubre los 96 bit de la cabecera que contiene la direccin
origen, la direccin destino, el protocolo y el tamao TCP. Esto proporciona proteccin contra paquetes mal
dirigidos por errores en las direcciones. El checksum de TCP es una comprobacin bastante dbil. En niveles
de enlace con una alta probabilidad de error de bit quiz requiera una capacidad adicional de
correccin/deteccin de errores de enlace. Si TCP fuese rediseado hoy, muy probablemente tendra un
cdigo de redundancia cclica (CRC) para control de errores en vez del actual checksum. La debilidad del
checksum est parcialmente compensada por el extendido uso de un CRC en el nivel de enlace, bajo TCP e
IP, como el usado en el PPP o en Ethernet. Sin embargo, esto no significa que el checksum de 16 bits es
redundante: sorprendentemente, inspecciones sobre el trfico de Internet han mostrado que son comunes los
errores de software y hardware[cita requerida] que introducen errores en los paquetes protegidos con un CRC,
y que el checksum de 16 bits de TCP detecta la mayora de estos errores simples. Los asentimientos (ACKs o
Acknowledgments) de los datos enviados o la falta de ellos, son usados por los emisores para interpretar las
condiciones de la red entre el emisor y receptor TCP. Unido a los temporizadores, los emisores y receptores
TCP pueden alterar el comportamiento del movimiento de datos. TCP usa una serie de mecanismos para
conseguir un alto rendimiento y evitar la congestin de la red (la idea es enviar tan rpido como el receptor
pueda recibir). Estos mecanismos incluyen el uso de ventana deslizante, que controla que el transmisor
mande informacin dentro de los lmites del buffer del receptor, y algoritmos de control de flujo, tales como el
algoritmo de Evitacin de la Congestin (congestion avoidance), el de comienzo lento (Slow-start), el de
retransmisin rpida, el de recuperacin rpida (Fast Recovery), y otros.

Tamao de ventana TCP


El tamao de la ventana de recepcin TCP es la cantidad de datos recibidos (en bytes) que pueden ser
metidos en el buffer de recepcin durante la conexin. La entidad emisora puede enviar una cantidad
determinada de datos pero antes debe esperar un asentimiento con la actualizacin del tamao de ventana
por parte del receptor. Un ejemplo sera el siguiente: un receptor comienza con un tamao de ventana x y
recibe y bytes, entonces su tamao de ventana ser (x - y) y el transmisor slo podr mandar paquetes con un
tamao mximo de datos de (x - y) bytes. Los siguientes paquetes recibidos seguirn restando tamao a la
ventana de recepcin. Esta situacin seguir as hasta que la aplicacin receptora recoja los datos del buffer
de recepcin.

- 152 -

Escalado de ventana
Para una mayor eficiencia en redes de gran ancho de banda, debe ser usado un tamao de ventana mayor. El
campo TCP de tamao de ventana controla el movimiento de datos y est limitado a 16 bits, es decir, a un
tamao de ventana de 65.535 bytes. Como el campo de ventana no puede expandirse se usa un factor de
escalado. La escala de ventana TCP (TCP window scale) es una opcin usada para incrementar el mximo
tamao de ventana desde 65.535 bytes, a 1 Gigabyte. La opcin de escala de ventana TCP es usada solo
durante la negociacin en tres pasos que constituye el comienzo de la conexin. El valor de la escala
representa el nmero de bits desplazados a la izquierda de los 16 bits que forman el campo del tamao de
ventana. El valor de la escala puede ir desde 0 (sin desplazamiento) hasta 14. Hay que recordar que un
nmero binario desplazado un bit a la izquierda es como multiplicarlo en base decimal por 2.

Fin de la conexion
La fase de finalizacin de la conexin usa una negociacin en cuatro pasos (four-way handshake), terminando
la conexin desde cada lado independientemente. Cuando uno de los dos extremos de la conexin desea
parar su "mitad" de conexin transmite un paquete FIN, que el otro interlocutor asentir con un ACK. Por tanto,
una desconexin tpica requiere un par de segmentos FIN y ACK desde cada lado de la conexin.
Una conexin puede estar "medio abierta" en el caso de que uno de los lados la finalice pero el otro no. El lado
que ha dado por finalizada la conexin no puede enviar ms datos pero la otra parte si podr.

Puertos TCP
TCP usa el concepto de nmero de puerto para identificar a las aplicaciones emisoras y receptoras. Cada lado
de la conexin TCP tiene asociado un nmero de puerto (de 16 bits sin signo, con lo que existen 65536
puertos posibles) asignado por la aplicacin emisora o receptora. Los puertos son clasificados en tres
categoras: bien conocidos, registrados y dinmicos/privados. Los puertos bien conocidos son asignados por
la Internet Assigned Numbers Authority (IANA), van del 0 al 1023 y son usados normalmente por el sistema o
por procesos con privilegios. Las aplicaciones que usan este tipo de puertos son ejecutadas como servidores
y se quedan a la escucha de conexiones. Algunos ejemplos son: FTP (21), SSH (22), Telnet (23), SMTP (25) y
HTTP (80). Los puertos registrados son normalmente empleados por las aplicaciones de usuario de forma
temporal cuando conectan con los servidores, pero tambin pueden representar servicios que hayan sido
registrados por un tercero (rango de puertos registrados: 1024 al 49151). Los puertos dinmicos/privados
tambin pueden ser usados por las aplicaciones de usuario, pero este caso es menos comn. Los puertos
dinmicos/privados no tienen significado fuera de la conexin TCP en la que fueron usados (rango de puertos
dinmicos/privados: 49152 al 65535, recordemos que el rango total de 2 elevado a la potencia 16, cubre
65536 nmeros, del 0 al 65535).

Protocolo UDP

- 153 -

User Datagram Protocol (UDP) es un protocolo del nivel de transporte basado en el intercambio de
datagramas. Permite el envo de datagramas a travs de la red sin que se haya establecido previamente una
conexin, ya que el propio datagrama incorpora suficiente informacin de direccionamiento en su cabecera.
Tampoco tiene confirmacin ni control de flujo, por lo que los paquetes pueden adelantarse unos a otros; y
tampoco se sabe si ha llegado correctamente, ya que no hay confirmacin de entrega o recepcin. Su uso
principal es para protocolos como DHCP, BOOTP, DNS y dems protocolos en los que el intercambio de
paquetes de la conexin/desconexin son mayores, o no son rentables con respecto a la informacin
transmitida, as como para la transmisin de audio y vdeo en tiempo real, donde no es posible realizar
retransmisiones por los estrictos requisitos de retardo que se tiene en estos casos.

Puertos TCP
UDP utiliza puertos para permitir la comunicacin entre aplicaciones. El campo de puerto tiene una longitud de
16 bits, por lo que el rango de valores vlidos va de 0 a 65.535. El puerto 0 est reservado, pero es un valor
permitido como puerto origen si el proceso emisor no espera recibir mensajes como respuesta. Los puertos 1
a 1023 se llaman puertos "bien conocidos" y en sistemas operativos tipo Unix enlazar con uno de estos
puertos requiere acceso como superusuario. Los puertos 1024 a 49.151 son puertos registrados. Los puertos
49.152 a 65.535 son puertos efmeros y son utilizados como puertos temporales, sobre todo por los clientes al
comunicarse con los servidores.

Diferencias entre TCP y UDP


UDP: proporciona un nivel de transporte no fiable de datagramas, ya que apenas aade la informacin
necesaria para la comunicacin extremo a extremo al paquete que enva al nivel inferior. Lo utilizan
aplicaciones como NFS (Network File System) y RCP (comando para copiar ficheros entre ordenadores
remotos), pero sobre todo se emplea en tareas de control y en la transmisin de audio y vdeo a travs de una
red. No introduce retardos para establecer una conexin, no mantiene estado de conexin alguno y no realiza
seguimiento de estos parmetros. As, un servidor dedicado a una aplicacin particular puede soportar ms
clientes activos cuando la aplicacin corre sobre UDP en lugar de sobre TCP.
TCP: es el protocolo que proporciona un transporte fiable de flujo de bits entre aplicaciones. Est pensado
para poder enviar grandes cantidades de informacin de forma fiable, liberando al programador de la dificultad
de gestionar la fiabilidad de la conexin (retransmisiones, prdida de paquetes, orden en el que llegan los
paquetes, duplicados de paquetes...) que gestiona el propio protocolo. Pero la complejidad de la gestin de la
fiabilidad tiene un coste en eficiencia, ya que para llevar a cabo las gestiones anteriores se tiene que aadir
bastante informacin a los paquetes que enviar. Debido a que los paquetes para enviar tienen un tamao
mximo, cuanta ms informacin aada el protocolo para su gestin, menos informacin que proviene de la
aplicacin podr contener ese paquete (el segmento TCP tiene una sobrecarga de 20 bytes en cada
segmento, mientras que UDP solo aade 8 bytes). Por eso, cuando es ms importante la velocidad que la
fiabilidad, se utiliza UDP. En cambio, TCP asegura la recepcin en destino de la informacin para transmitir.
109.5 Protocolo ICMP El Protocolo de Mensajes de Control de Internet o ICMP (por sus siglas de Internet
Control Message Protocol) es el sub protocolo de control y notificacin de errores del Protocolo de Internet

- 154 -

(IP). Como tal, se usa para enviar mensajes de error, indicando por ejemplo que un servicio determinado no
est disponible o que un router o host no puede ser localizado. ICMP difiere del propsito de TCP y UDP ya
que generalmente no se utiliza directamente por las aplicaciones de usuario en la red. La nica excepcin es la
herramienta ping y traceroute, que envan mensajes de peticin Echo ICMP (y recibe mensajes de respuesta
Echo) para determinar si un host est disponible, el tiempo que le toma a los paquetes en ir y regresar a ese
host y cantidad de hosts por los que pasa.

Tabla de Puertos TCP y UDP


Puerto/Protocolo

Descripcion

1/tcp MultiplexorTCP
7/tcp ProtocoloEcho(Eco)Repondeconecoallamadasremotas
7/udp ProtocoloEcho(Eco)Repondeconecoallamadasremotas
9/tcp ProtocoloDiscardEliminacualquierdatoquerecibe
9/udp ProtocoloDiscardEliminacualquierdatoquerecibe
13/tcp ProtocoloDaytimeFechayhoraactuales
17/tcp QuoteoftheDay(CitadelDa)
19/tcp ProtocoloChargenGeneradordecaractres
19/udp ProtocoloChargenGeneradordecaractres
0
FTPFileTransferProtocol(ProtocolodeTransferenciadeFicheros)datos
21/tcp FTPFileTransferProtocol(ProtocolodeTransferenciadeFicheros)control
22/tcp SSH,scp,SFTP
23/tcp Telnetcomunicacionesdetextoinseguras
25/tcp SMTPSimpleMailTransferProtocol(ProtocoloSimpledeTransferenciadeCorreo)
37/tcp time
43/tcp nicname
53/tcp DNSDomainNameSystem(SistemadeNombresdeDominio)
53/udp DNSDomainNameSystem(SistemadeNombresdeDominio)
67/udp BOOTPBootStrapProtocol(Server),tambinusadoporDHCP
68/udp BOOTPBootStrapProtocol(Client),tambinusadoporDHCP
69/udp TFTP Trivial File Transfer Protocol (Protocolo Trivial de Transferencia de
Ficheros)
0
Gopher
79/tcp Finger
0
HTTPHyperTextTransferProtocol(ProtocolodeTransferenciadeHiperTexto)(WWW)
88/tcp KerberosAgentedeautenticacin
0
POP3PostOfficeProtocol(Email)
111/tcp
sunrpc
113/tcp
ident(auth)antiguosistemadeidentificacin
119/tcp
NNTPusadoenlosgruposdenoticiasdeusenet
123/udp
NTPProtocolodesincronizacindetiempo
123/tcp
NTPProtocolodesincronizacindetiempo
135/tcp
epmap
137/tcp
NetBIOSServiciodenombres
137/udp
NetBIOSServiciodenombres
138/tcp
NetBIOSServiciodeenvodedatagramas
138/udp
NetBIOSServiciodeenvodedatagramas
139/tcp
NetBIOSServiciodesesiones
139/udp
NetBIOSServiciodesesiones
143/tcp
IMAP4InternetMessageAccessProtocol(Email)
161/tcp
SNMPSimpleNetworkManagementProtocol
161/udp
SNMPSimpleNetworkManagementProtocol
162/tcp
SNMPtrap
162/udp
SNMPtrap
177/tcp
XDMCPProtocolodegestindedisplaysenX11
177/udp
XDMCPProtocolodegestindedisplaysenX11
389/tcp
LDAPProtocolodeaccesoligeroaBasesdeDatos

- 155 -

389/udp
LDAPProtocolodeaccesoligeroaBasesdeDatos
443/tcp
HTTPS/SSLusadoparalatransferenciaseguradepginasweb
445/tcp
MicrosoftDS (Active Directory, comparticin en Windows, gusano Sasser,
Agobot)
445/udp
MicrosoftDScomparticindeficheros
0
IPSecISAKMP,AutoridaddeSeguridadLocal
512/tcp
exec
513/tcp
login
514/udp
syslogusadoparalogsdelsistema
0
RIP
591/tcp
FileMaker6.0(alternativaparaHTTP,verpuerto80)
631/tcp
CUPSsistemadeimpresindeUnix
666/tcp
identificacindeDoomparajugarsobreTCP
993/tcp
IMAP4sobreSSL(Email)
995/tcp
POP3sobreSSL(Email)
0
SOCKSProxy
1337/tcp
sueleusarseenmquinascomprometidasoinfectadas
1352/tcp
IBMLotusNotes/DominoRCP
1433/tcp
MicrosoftSQLServer
1434/tcp
MicrosoftSQLMonitor
1434/udp
MicrosoftSQLMonitor
1494/tcp
CitrixMetaFrameClienteICA
1512/tcp
WINS
1521/tcp
Oraclelistenerpordefecto
0EnrutamientoyAccesoRemotoparaVPNconL2TP.
1723/tcp
EnrutamientoyAccesoRemotoparaVPNconPPTP.
1761/tcp
NovellZenworksRemoteControlutility
1863/tcp
MSNMessenger
0
NFSArchivosdelsistemadered
0
CPanelpuertopordefecto
0
WebHostManagerpuertopordefecto
2427/upd
CiscoMGCP
0
NetPanzer
0
NetPanzer
3128/tcp
HTTPusadoporwebcachesypordefectoenSquidcache
3128/tcp
NDLAAS
0
MySQLsistemadegestindebasesdedatos
3389/tcp
RDP(RemoteDesktopProtocol)
3396/tcp
NovellagentedeimpresinNDPS
0
Subversion(sistemadecontroldeversiones)
4662/tcp
eMule(aplicacindecomparticindeficheros)
4672/udp
eMule(aplicacindecomparticindeficheros)
4899/tcp
RAdmin (Remote Administrator), herramienta de administracin remota
(normalmentetroyanos)
0
Universalplugandplay
0
SessionInitiationProtocol(SIP)
0
AOLyAOLInstantMessenger
5222/tcp
XMPP/Jabberconexindecliente
5223/tcp
XMPP/JabberpuertopordefectoparaconexionesdeclienteSSL
5269/tcp
XMPP/Jabberconexindeservidor
5432/tcp
PostgreSQLsistemadegestindebasesdedatos
5517/tcp
SetiqueueproyectoSETI@Home
5631/tcp
PCAnywhereprotocolodeescritorioremoto
5632/udp
PCAnywhereprotocolodeescritorioremoto
0
VNCprotocolodeescritorioremoto(usadosobreHTTP)
0
VNCprotocolodeescritorioremoto(usadosobreHTTP)
0
VNCprotocolodeescritorioremoto(usadosobreHTTP)
0
VNCprotocolodeescritorioremoto(usadosobreHTTP)
0
VNCprotocolodeescritorioremoto(usadosobreHTTP)
0
VNCprotocolodeescritorioremoto(conexinnormal)
6000/tcp
X11usadoparaXwindows
6112/udp
Blizzard
6129/tcp
DamewareSoftwareconexinremota
6346/tcp
Gnutellacomparticindeficheros(Limewire,etc.)
6347/udp
Gnutella
6348/udp
Gnutella

- 156 -

6349/udp
Gnutella
0
Gnutella
6355/udp
Gnutella
6667/tcp
IRCIRCUInternetRelayChat
6881/tcp
BitTorrentpuertopordefecto
6969/tcp
BitTorrentpuertodetracker
0
ServidordeFuentesX11
7100/udp
ServidordeFuentesX11
0
iRDMI por lo general, usado errneamente en sustitucin de 8080. Tambin
utilizadoenelservidordestreamingShoutCast.
0
HTTPHTTPALTverpuerto80.Tomcatlousacomopuertopordefecto.
8118/tcp
privoxy
0
Pichatpeertopeerchatserver
9898/tcp
GusanoDabber(troyano/virus)
0
Webmin(Administracinremotaweb)
19226/tcp
PandaSecurityPuertodecomunicacionesdePandaAgent.
12345/tcp
NetBusen:NetBus(troyano/virus)
31337/tcp
Back Orifice herramienta de administracin remota (por lo general
troyanos)

Direcciones IP
Una direccin IP es un nmero que identifica de manera lgica y jerrquica a una interfaz de un dispositivo
(habitualmente una computadora) dentro de una red que utilice el protocolo IP (Internet Protocol), que
corresponde al nivel de red del protocolo TCP/IP. Dicho nmero no se ha de confundir con la direccin MAC
que es un nmero hexadecimal fijo que es asignado a la tarjeta o dispositivo de red por el fabricante, mientras
que la direccin IP se puede cambiar. Es habitual que un usuario que se conecta desde su hogar a Internet
utilice una direccin IP. Esta direccin puede cambiar cada vez que se conecta; y a esta forma de asignacin
de direccin IP se denomina una direccin IP dinmica (normalmente se abrevia como IP dinmica). Los sitios
de Internet que por su naturaleza necesitan estar permanentemente conectados, generalmente tienen una
direccin IP fija (se aplica la misma reduccin por IP fija o IP esttica), es decir, no cambia con el tiempo. Los
servidores de correo, DNS, FTP pblicos, y servidores de pginas web necesariamente deben contar con una
direccin IP fija o esttica, ya que de esta forma se permite su localizacin en la red. A travs de Internet, los
ordenadores se conectan entre s mediante sus respectivas direcciones IP. Sin embargo, a los seres humanos
nos es ms cmodo utilizar otra notacin ms fcil de recordar y utilizar, como los nombres de dominio; la
traduccin entre unos y otros se resuelve mediante los servidores de nombres de dominio DNS. Existe un
protocolo para asignar direcciones IP dinmicas llamado DHCP (Dynamic Host Configuration Protocol).

Direcciones IPv4
En su versin 6.55, una direccin IP se implementa con un nmero de 32 bit que suele ser mostrado en cuatro
grupos de nmeros decimales de 8 bits (IPv4). Cada uno de esos nmeros se mueve en un rango de 0 a 255
(expresado en decimal), o de 0 a FF (en hexadecimal) o de 0 a 11111111 (en binario). Las direcciones IP se
pueden expresar como nmeros de notacin decimal: se dividen los 32 bits de la direccin en cuatro octetos.
El valor decimal de cada octeto puede ser entre 0 y 255 (el nmero binario de 8 bits ms alto es 11111111 y
esos bits, de derecha a izquierda, tienen valores decimales de 1, 2, 4, 8, 16, 32, 64 y 128, lo que suma 255 en
total).

- 157 -

En la expresin de direcciones IPv4 en decimal se separa cada octeto por un carcter ".". Cada uno de estos
octetos puede estar comprendido entre 0 y 255, salvo algunas excepciones. Los ceros iniciales, si los hubiera,
se pueden obviar.
Ejemplo de representacin de direccin IPv4: 164.12.123.65
Hay tres clases de direcciones IP que una organizacin puede recibir de parte de la Internet Corporation for
Assigned Names and Numbers (ICANN): clase A, clase B y clase C. En la actualidad, ICANN reserva las
direcciones de clase A para los gobiernos de todo el mundo (aunque en el pasado se le hayan otorgado a
empresas de gran envergadura como, por ejemplo, Hewlett Packard) y las direcciones de clase B para las
medianas empresas. Se otorgan direcciones de clase C para todos los dems solicitantes. Cada clase de red
permite una cantidad fija de equipos (hosts).
En una red de clase A, se asigna el primer octeto para identificar la red, reservando los tres ltimos octetos (24
bits) para que sean asignados a los hosts, de modo que la cantidad mxima de hosts es 224 - 2 (las
direcciones reservadas de broadcast [ltimos octetos a 255] y de red [ltimos octetos a 0]), es decir, 16 777
214 hosts.
En una red de clase B, se asignan los dos primeros octetos para identificar la red, reservando los dos octetos
finales (16 bits) para que sean asignados a los hosts, de modo que la cantidad mxima de hosts es 216 - 2, o
65 534 hosts.
En una red de clase C, se asignan los tres primeros octetos para identificar la red, reservando el octeto final (8
bits) para que sea asignado a los hosts, de modo que la cantidad mxima de hosts es 28 - 2, 254 hosts.
La direccin 0.0.0.0 es utilizada por las mquinas cuando estn arrancando o no se les ha asignado direccin.
La direccin que tiene su parte de host a cero sirve para definir la red en la que se ubica. Se denomina
direccin de red.
La direccin que tiene su parte de host a unos sirve para comunicar con todos los hosts de la red en la que se
ubica. Se denomina direccin de broadcast.
Las direcciones 127.x.x.x se reservan para pruebas de retroalimentacin. Se denomina direccin de bucle
local o loopback.
Hay ciertas direcciones en cada clase de direccin IP que no estn asignadas y que se denominan
direcciones privadas. Las direcciones privadas pueden ser utilizadas por los hosts que usan traduccin de
direccin de red (NAT) para conectarse a una red pblica o por los hosts que no se conectan a Internet. En
una misma red no puede existir dos direcciones iguales, pero s se pueden repetir en dos redes privadas que
no tengan conexin entre s o que se sea a travs de NAT. Las direcciones privadas son:
Clase A: 10.0.0.0 a 10.255.255.255 (8 bits red, 24 bits hosts)
Uso VIP EJ:La red militar norte-americana
Clase B: 172.16.0.0 a 172.31.255.255 (12 bits red, 20 bits hosts)
Uso universidades y grandes compaias
Clase C: 192.168.0.0 a 192.168.255.255 (16 bits red, 16 bits hosts)
Uso de compaias medias y pequeas ademas pequeos proveedores de internet(ISP)
A partir de 1993, ante la previsible futura escasez de direcciones IPv4 debido al crecimiento exponencial de
hosts en Internet, se empez a introducir el sistema CIDR, que pretende en lneas generales establecer una
distribucin de direcciones ms fina y granulada, calculando las direcciones necesarias y "desperdiciando" las

- 158 -

mnimas posibles, para rodear el problema que las distribucin por clases haba estado gestando. Este
sistema es, de hecho, el empleado actualmente para la delegacin de direcciones. Muchas aplicaciones
requieren conectividad dentro de una sola red, y no necesitan conectividad externa. En las redes de gran
tamao a menudo se usa TCP/IP. Por ejemplo, los bancos pueden utilizar TCP/IP para conectar los cajeros
automticos que no se conectan a la red pblica, de manera que las direcciones privadas son ideales para
ellas. Las direcciones privadas tambin se pueden utilizar en una red en la que no hay suficientes direcciones
pblicas disponibles. Las direcciones privadas se pueden utilizar junto con un servidor de traduccin de
direcciones de red (NAT) para suministrar conectividad a todos los hosts de una red que tiene relativamente
pocas direcciones pblicas disponibles. Segn lo acordado, cualquier trfico que posea una direccin destino
dentro de uno de los intervalos de direcciones privadas no se enrutar a travs de Internet.

Mascara de una direccion IP


La mscara permite distinguir los bits que identifican la red y los que identifican el host de una direccin IP.
Dada la direccin de clase A 10.2.1.2 sabemos que pertenece a la red 10.0.0.0 y el host al que se refiere es el
2.1.2 dentro de la misma. La mscara se forma poniendo a 1 los bits que identifican la red y a 0 los bits que
identifican el host. De esta forma una direccin de clase A tendr como mscara 255.0.0.0, una de clase B
255.255.0.0 y una de clase C 255.255.255.0. Los dispositivos de red realizan un AND entre la direccin IP y la
mscara para obtener la direccin de red a la que pertenece el host identificado por la direccin IP dada. Por
ejemplo un router necesita saber cul es la red a la que pertenece la direccin IP del datagrama destino para
poder consultar la tabla de encaminamiento y poder enviar el datagrama por la interfaz de salida.

Creacion de Subredes
El espacio de direcciones de una red puede ser subdividido a su vez creando subredes autnomas separadas.
Un ejemplo de uso es cuando necesitamos agrupar todos los empleados pertenecientes a un departamento de
una empresa. En este caso crearamos una subred que englobara las direcciones IP de stos. Para
conseguirlo hay que reservar bits del campo host para identificar la subred estableciendo a uno los bits de redsubred en la mscara. Por ejemplo la direccin 172.16.1.1 con mscara 255.255.0.0 nos indica que los dos
primeros bytes identifican la red (por ser una direccin de clase B), el tercer byte identifica la subred (a 1 los
bits en la mscara) y el tercero identifica el host (a 0 los bits correpondientes dentro de la mscara). Hay dos
direcciones de cada subred quedan reservadas: aquella que identifica la subred (campo host a 0) y la
direccin para realizar broadcast en la subred (campo host a 1).

IP dinamica
Una direccin IP dinmica es una IP asignada mediante un servidor DHCP (Dynamic Host Configuration
Protocol) al usuario. La IP que se obtiene tiene una duracin mxima determinada. El servidor DHCP provee
parmetros de configuracin especficos para cada cliente que desee participar en la red IP. Entre estos
parmetros se encuentra la direccin IP del cliente. DHCP apareci como protocolo estndar en octubre de
1993. El estndar RFC 2131 especifica la ltima definicin de DHCP (marzo de 1997). DHCP sustituye al

- 159 -

protocolo BOOTP, que es ms antiguo. Debido a la compatibilidad retroactiva de DHCP, muy pocas redes
continan usando BOOTP puro. Las IP dinmicas son las que actualmente ofrecen la mayora de operadores.
stas suelen cambiar cada vez que el usuario reconecta por cualquier causa.
Ventajas
Reduce los costos de operacin a los proveedores de servicios internet (ISP).
Reduce la cantidad de IPs asignadas (de forma fija) inactivas.
Desventajas
Obliga a depender de servicios que redirigen un host a una IP.

Asignacion de direcciones IP
Dependiendo de la implementacin concreta, el servidor DHCP tiene tres mtodos para asignar las
direcciones IP:
manualmente, cuando el servidor tiene a su disposicin una tabla que empareja direcciones MAC con
direcciones IP, creada manualmente por el administrador de la red. Slo clientes con una direccin MAC
vlida recibirn una direccin IP del servidor.
automticamente, donde el servidor DHCP asigna permanentemente una direccin IP libre, tomada de un
rango prefijado por el administrador, a cualquier cliente que solicite una.
dinmicamente, el nico mtodo que permite la reutilizacin de direcciones IP. El administrador de la red
asigna un rango de direcciones IP para el DHCP y cada ordenador cliente de la LAN tiene su software de
comunicacin TCP/IP configurado para solicitar una direccin IP del servidor DHCP cuando su tarjeta de
interfaz de red se inicie. El proceso es transparente para el usuario y tiene un periodo de validez limitado.
IP fija
Una direccin IP fija es una IP asignada por el usuario de manera manual. Mucha gente confunde IP Fija con
IP Publica e IP Dinmica con IP Privada. Una IP puede ser Privada ya sea dinmica o fija como puede ser IP
Publica Dinmica o Fija. Una IP Publica se utiliza generalmente para montar servidores en internet y
necesariamente se desea que la IP no cambie por eso siempre la IP Publica se la onfigura de manera Fija y no
Dinmica, aunque si se podra. En el caso de la IP Privada generalmente es dinmica asignada por un
servidor DHCP, pero en algunos casos se configura IP Privada Fija para poder controlar el acceso a internet o
a la red local, otorgando ciertos privilegios dependiendo del nmero de IP que tenemos, si esta cambiara
(fuera dinmica) seria ms complicado controlar estos privilegios (pero no imposible) Las IP Publicas fijas
actualmente en el mercado de acceso a Internet tienen un coste adicional mensual. Estas IP son asignadas
por el usuario despus de haber recibido la informacin del proveedor o bien asignadas por el proveedor en el
momento de la primera conexin. Esto permite al usuario montar servidores web, correo, FTP, etc. y dirigir un
nombre de dominio a esta IP sin tener que mantener actualizado el servidor DNS cada vez que cambie la IP
como ocurre con las IP Publica dinmica.
Ventajas
Permite tener servicios dirigidos directamente a la IP.
Desventajas
Son ms vulnerables al ataque, puesto que el usuario no puede conseguir otra IP.
Es ms caro para los ISP puesto que esa IP puede no estar usndose las 24 horas del da.

- 160 -

Direcciones IPv6
La funcin de la direccin IPv6 es exactamente la misma a su predecesor IPv4, pero dentro del protocolo IPv6.
Est compuesta por 8 segmentos de 2 bytes cada uno, que suman un total de 128 bits, el equivalente a unos
3.4x1038 hosts direccionables. La ventaja con respecto a la direccin IPv4 es obvia en cuanto a su capacidad
de direccionamiento. Su representacin suele ser hexadecimal y para la separacin de cada par de octetos se
emplea el smbolo ":". Un bloque abarca desde 0000 hasta FFFF. Algunas reglas acerca de la representacin
de direcciones IPv6 son:
Los ceros iniciales, como en IPv4, se pueden obviar.
Ejemplo: 2001:0123:0004:00ab:0cde:3403:0001:0063 -> 2001:123:4:ab:cde:3403:1:63
Los bloques contiguos de ceros se pueden comprimir empleando "::". Esta operacin slo se puede hacer una
vez.
Ejemplo: 2001:0:0:0:0:0:0:4 -> 2001::4. Ejemplo no vlido: 2001:0:0:0:2:0:0:1 -> 2001::2::1 (debera ser
2001::2:0:0:1 2001:0:0:0:2::1).

Fichero /etc/services
El fichero /etc/services contiene una lista de todos los puertos que GNU/Linux utiliza. Para listar el contenido
de este fichero teclee lo siguiente:
[BASH]#cat/etc/services

FTP
FTP (sigla en ingls de File Transfer Protocol - Protocolo de Transferencia de Archivos) en informtica, es un
protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP, basado en la
arquitectura cliente-servidor. Desde un equipo cliente se puede conectar a un servidor para descargar
archivos desde l o para enviarle archivos, independientemente del sistema operativo utilizado en cada
equipo. El Servicio FTP es ofrecido por la capa de Aplicacin del modelo de capas de red TCP/IP al usuario,
utilizando normalmente el puerto de red 20 y el 21. Un problema bsico de FTP es que est pensado para
ofrecer la mxima velocidad en la conexin, pero no la mxima seguridad, ya que todo el intercambio de
informacin, desde el login y password del usuario en el servidor hasta la transferencia de cualquier archivo,
se realiza en texto plano sin ningn tipo de cifrado, con lo que un posible atacante puede capturar este trfico,
acceder al servidor, o apropiarse de los archivos transferidos. Para solucionar este problema son de gran
utilidad aplicaciones como scp y sftp, incluidas en el paquete SSH, que permiten transferir archivos pero
cifrando todo el trfico.

- 161 -

Telnet
Telnet (TELecommunication NETwork) es el nombre de un protocolo de red (y del programa informtico que
implementa el cliente), que sirve para acceder mediante una red a otra mquina, para manejarla remotamente
como si estuviramos sentados delante de ella. Para que la conexin funcione, como en todos los servicios de
Internet, la mquina a la que se acceda debe tener un programa especial que reciba y gestione las
conexiones. El puerto que se utiliza generalmente es el 23.

Ping
La utilidad ping comprueba el estado de la conexin con uno o varios equipos remotos por medio de los
paquetes de solicitud de eco y de respuesta de eco (ambos definidos en el protocolo de red ICMP) para
determinar si un sistema IP especfico es accesible en una red. Es til para diagnosticar los errores en redes o
enrutadores IP. Muchas veces se utiliza para medir la latencia o tiempo que tardan en comunicarse dos puntos
remotos, y por ello, se utiliza entre los aficionados a los juegos en red el trmino PING para referirse al lag o
latencia de su conexin. Existe otro tipo, Ping ATM, que se utiliza en las redes ATM (como puede ser una
simple ADSL instalada en casa) y, en este caso, las tramas que se transmiten son ATM (nivel 2 del modelo
OSI). Este tipo de paquetes se envan para probar si los enlaces ATM estn correctamente definidos.

Dig
Dig es una herramienta (linea de comandos) disponible en prcticamente cualquier distribucin linux que te
permite hacer consultas a un servidor dns. Dig precisa conocer la direccin IP de un servidor DNS al que
consultar por defecto, direccin IP que toma del archivo resolv.conf, y en sistemas GNU/Linux en
/etc/resolv.conf

Traceroute
Traceroute es una herramienta de diagnstico de redes que permite seguir la pista de los paquetes que van
desde un host (punto de red) a otro. Se obtiene adems una estadstica del RTT o latencia de red de esos
paquetes, lo que viene a ser una estimacin de la distancia a la que estn los extremos de la comunicacin.
Esta herramienta se llama traceroute en UNIX y GNU/linux, mientras que en Windows se llama tracert.
Ejemplo:
[BASH]#traceroutewww.google.com

traceroute to www.l.google.com (64.233.169.99), 64 hops max, 40 byte packets 1 2 172.16.183.1


(172.16.183.1) 23 ms 23 ms 22 ms 3 10.127.66.229 (10.127.66.229) [MPLS: Label 1479 Exp 0] 38 ms 51 ms
38 ms 4 cnt-00-tge1-0-0.gw.cantv.net (200.44.43.85) 38 ms 38 ms 37 ms 5 cri-00-pos1-0-0.border.cantv.net
(200.44.43.50) 51 ms 43 ms 43 ms 6 sl-st21-mia-14-1-0.sprintlink.net (144.223.245.233) 94 ms 93 ms 93 ms
- 162 -

7 sl-bb20-mia-5-0-0.sprintlink.net (144.232.9.198) 95 ms 93 ms 93 ms 8 sl-crs1-mia-0-4-0-0.sprintlink.net


(144.232.2.248) 94 ms 95 ms 95 ms 9 sl-crs1-atl-0-0-0-1.sprintlink.net (144.232.20.48) 104 ms 104 ms 103
ms 10 sl-st20-atl-1-0-0.sprintlink.net (144.232.18.133) 104 ms 103 ms 11 144.223.47.234 (144.223.47.234)
103 ms 103 ms 103 ms 12 64.233.174.86 (64.233.174.86) 98 ms 97 ms 64.233.174.84 (64.233.174.84) 103
ms 13 216.239.48.68 (216.239.48.68) 105 ms 104 ms 106 ms 14 72.14.236.200 (72.14.236.200) 106 ms 105
ms 15 72.14.232.21 (72.14.232.21) 110 ms 109 ms 107 ms 16 yo-in-f99.google.com (64.233.169.99) 100 ms
99 ms

Funcionamiento
El nmero de la primera columna es el nmero de salto, los tres tiempos siguientes son el tiempo de respuesta
para los paquetes enviados (un asterisco indica que no se obtuvo respuesta), posteriormente viene el nombre
y la direccin IP del nodo por el que pasa. Estas herramientas (traceroute y tracert) son rdenes ejecutables
en una consola en modo texto. Tracert utiliza el campo Time To Live (TTL) de la cabecera IP. Este campo
sirve para que un paquete no permanezca en la red de forma indefinida (por ejemplo, debido a la existencia en
la red de un bucle cerrado en la ruta). El campo TTL es un nmero entero que es decrementado por cada nodo
por el que pasa el paquete. De esta forma, cuando el campo TTL llega al valor 0 ya no se reenviar ms, sino
que el nodo que lo est manejando en ese momento lo descartar. Lo que hace tracert es mandar paquetes a
la red de forma que el primer paquete lleve un valor TTL=1, el segundo un TTL=2, etc. De esta forma, el
primer paquete ser eliminado por el primer nodo al que llegue (ya que ste nodo decrementar el valor TTL,
llegando a cero). Cuando un nodo elimina un paquete, enva al emisor un mensaje de control especial
indicando una incidencia. Tracert usa esta respuesta para averiguar la direccin IP del nodo que desech el
paquete, que ser el primer nodo de la red. La segunda vez que se manda un paquete, el TTL vale 2, por lo
que pasar el primer nodo y llegar al segundo, donde ser descartado, devolviendo de nuevo un mensaje de
control. Esto se hace de forma sucesiva hasta que el paquete llega a su destino.

Configuracion de los parametros de Red


Configuracion de interfaces de Red
La configuracin de la interfaz es importante en un servidor o equipo de escritorio. Los principales archivos de
configuracin son
/etc/hosts

Este archivo de configuracin contiene los nombres de equipos dentro de una red local y se

utilizar para resolver su nombre cuando no se tiene un servidor de DNS en la red local, tambin este archivo
define la direccin de loopback que representa al propio equipo independientemente de la direccin IP que se
le haya asignado.
/etc/resolv.conf Este archivo especifica las direcciones IP de los servidores DNS
/etc/sysconfig/network Este archivo de configuracin es utilizado para definir las caractersticas de red
deseadas
/etc/sysconfig/network scripts/ifcfg-<interfaz>

Estos

archivos

especificar la configuracin de la tarjeta de red.

- 163 -

de

configuracin

son

utilizados

para

Configuracion del archivo /etc/hosts


Este archivo de texto asocia las direcciones IP con el nombre del equipo (hostname). Este archivo debe tener
la siguiente forma:
Direccion IP

nombre.Del.Equipo

alias

Las modificaciones realizadas en este archivo de configuracin son reflejados inmediatamente Nota: Este
archivo se encuentra la direccin de loopback (127.0.0.1), esta direccin es utilizada por varias aplicaciones
para su funcionamientos, se recomienda que no modifique esta linea. Ejemplo:
127.0.0.1
192.168.1.10

localhost.localdomain
mail.redfactor.net

mail

localhost

192.168.1.13

www.red.factor.net

www

207.249.0.40

www.linuxparatodos.net

Configuracion del archivo /etc/resolv.conf


Este archivo de configuracin contiene la direcciones IP de los servidores DNS. Sus parmetros de
configuracin son:
nameserver

Define las direcciones IP de los servidores de nombre en los cuales se debern resolver las

bsquedas. El archivos hosts solo permite hasta 3 servidores de nombre diferentes


domain Define el nombre de dominio local en el cual pertenecen los equipos en una red local.
search Este parmetro define la lista de bsqueda nombres de equiposes til cuando se busca un equipo
dentro de la red local por un nombre corto
sortlist Este parmetro indica la preferencia de los nameserver definidos

Configuracion del archivo /etc/sysconfig/network


Los parmetros que utiliza este este archivo son:
NETWORKING Los valores que admites son:
yes Permite la configuracin de los servicio de red.
no No permite la configuracin de los servicio de red.
FORWARD_IPV4
HOSTNAME

Habilita el reenvo de paquetes. Los valores que admite son yes o no.

Define el nombre del equipo, el cual debe de tener la forma del Fully Qualified Domain Name

(FQDN). Por ejemplo: equipo.ejemplo.net


GATEWAY

Este parametro define la direccin IP del Gateway

Configuracion de la interfaz de red


El directorio de configuracin de la interfaz de red se encuentra en:

/etc/sysconfig/network-scripts/
Dentro de este directorio se encuentran los archivos de configuracin de los dispositivos, dependiendo del
numero de interfaces de red instaladas en el computadora ser el numero de archivos de configuracin, el
nombre de estos archivos depende del tipo de dispositivo

- 164 -

Ethernet
Wi-Fi

ifcfg-eth0, ifcfg-eth1, ..., ifcfg-ethN.

ifcfg-wlan0, ifcfg-wlan1, ..., Ifcfg-wlanN.

Modem ifcfg-ppp0, ifcfg-ppp1, ..., ifcfg-pppN.


en donde N representa el numero de interfaz a configurar. Los parmetros que admiten los archivos de
configuracin de la interfaz de red Ethernet son los siguientes:
DEVICE

Define el nombre del dispositivo fsico

BOOTPROTO none No utiliza ningn protocolo de arranque.


static Se define de forma manual los parmetros de red. dhcp Obtiene los parmetros de red por medio de un
servidor de DHPC|
IPADDR

Define la direccin IP asignada a ese dispositivo.

NETMASK

Define la mascara de red.

NETWORK

Define el segmento de red

HWADDR

Define el direccin MAC del dispositivo de red. Se recomienda que modificar el valor de este

parmetro.
GATEWAY

Define la Direccin IP del Gateway en la red

ONBOOT

Establece si el dispositivo debe activarse con los servicios de red

DNS1, DNS2

Define la direcciones de los servidores DNS primario y secundario a utilizar.

DHCP_HOSTNAME

Esta opcin establece un nombre al equipo. Utilice esta opcin si el servidor DHCP

requiere que el cliente especifique el nombre de su equipo antes de recibir una direccin IP.
Ejemplo del archivo de configuracin.
DEVICE=eth0
BOOTPROTO=static

IPADDR=192.168.2.10

NETMASK=255.255.255.0

NETWORK=192.168.2.0

GATEWAY=192.168.2.254 DNS1=192.168.2.1 HWADDR= 00:1E:EC:6E:CD:51


Tareas de Administracion de Seguridad

El Protocolo SSH
El protocolo SSH (Secure Shell) es una herramienta que nos permite conectarnos a equipos remotos
(Servidores en Produccin) as mismo, nos da la capacidad de llevar a cabo tareas administrativas dentro del
mismo como, activar o apagar servicios, Adems de la conexin a otros equipos, SSH nos permite copiar
datos de forma segura, gestionar claves RSA para no escribir claves al conectar a las mquinas y pasar los
datos de cualquier otra aplicacin por un canal seguro tunelizado mediante SSH. Una clave RSA (Sistema
Criptografico con Clave Publica) es un algoritmo que genera un par de llaves de autenticacion, la publica y la
privada. La publica se distribuye en forma autenticada y la privada que generalmente es guardada en secreto
por el propietario. El protocolo SSH (Secure Shell) esta implementado bajo el estndar TCP/IP, el cual a su
vez se encuentra dividido en 5 secciones:
1.Nivel Fsico 2.Nivel De Enlace 3.Nivel de Internet 4.Nivel de Transporte 5.Nivel de Aplicacin
Por lo que el protocolo SSH esta ubicado en la quinta capa del modelo TCP/IP, nos referimos a la capa de
- 165 -

aplicacin La capa de aplicacin es el nivel que los programas ms comunes utilizan para comunicarse a
travs de una red con otros programas. Los procesos que acontecen en este nivel son aplicaciones
especficas que pasan los datos al nivel de aplicacin en el formato que internamente use el programa y es
codificado de acuerdo con un protocolo estndar. De manera predeterminada, el protocolo SSH atiende
peticiones por el puerto 22 En este capitulo haremos uso de OpenSSH la cual es la alternativa libre y abierta al
programa propietario SSH

Acerca de OpenSSH
OpenSSH (Open Secure Shell) es un conjunto de aplicaciones que permiten realizar comunicaciones cifradas
a travs de una red, usando como base al protocolo SSH. Este proyecto es liderado actualmente por Theo de
Raadt quien actualmente es fundador y lder de proyectos como OpenBSD. Los desarrolladores de OpenSSH
aseguran que este es ms seguro que el original, lo cual es debido a la conocida reputacin de los
desarrolladores de OpenBSD por crear cdigo limpio y perfectamente auditado, lo que contribuye a que sea
ms seguro. Su seguridad tambin es atribuible al hecho de que su cdigo fuente se distribuya libremente con
una licencia BSD. Aunque todo el cdigo fuente del SSH original tambin est disponible, existen restricciones
con respecto a su uso y distribucin, lo que convierte a OpenSSH en un proyecto mucho ms atractivo a la
hora de atraer nuevos desarrolladores.
Adems de la conexin a otros equipos, openSSH nos permite copiar datos de forma segura mediante la
implementacin de dos herramientas proporcionadas por openSSH, estas son:
SCP
SFTP
Estas herramientas en realidad tienen la misma funcin de copiado solo se diferencian en la forma en como
son aplicadas tema del cual hablaremos mas adelante.

Instalando OpenSSH
A partir de este punto empezaremos a descargar los paquetes necesarios para el perfecto funcionamiento de
openSSH, de esta manera si usted se encuentra trabajando bajo algn ambiente grfico, sea KDE o GNOME
le pedimos abra una terminal de BASH, por otra parte si usted se encuentra trabajando bajo linea de
comandos no tendr que hacer nada. Los paquetes a descargar son los siguientes:
openssh
opensshclients
opensshserver

La forma en que se instalaran estos paquetes sera tecleando en consola lo siguiente:


[root@localhost]#yuminstallyopensshopensshclientsopensshserver

Una vez finalizado el proceso de instalacin pasaremos con las configuraciones propias de openSSH, nos
referimos a los ficheros de configuracin
- 166 -

Archivos de configuracin de OpenSSH


OpenSSH dispone de dos conjuntos diferentes de ficheros de configuracin: uno completamente dedicado al
cliente (ssh, scp y sftp) y otro orientado completamente al servidor.
Archivos de configuracin del lado del servidor
La ubicacin de los ficheros de configuracin referentes al servidor openSSH se encuentran en la siguiente
ruta:

/etc/ssh/
Dentro del directorio podemos encontrar los siguientes ficheros de configuracin:
moduli Contiene grupos DiffieHellman usados para el intercambio de la clave Diffie
Hellmanqueesimprescindibleparalaconstruccindeunacapadetransporteseguro.
CuandoseintercambianlasclavesaliniciodeunasesinSSH,secreaunvalorsecreto
ycompartidoquenopuedeserdeterminadoporningunadelaspartesindividualmente.
Estevalorseusaparaproporcionarlaautenticacindelhost.
ssh_config
El archivo de configuracin del sistema cliente SSH por defecto. Este
archivosesobrescribesihayalgunoyapresenteeneldirectorioprincipaldelusuario
sshd_config Elarchivodeconfiguracinparaeldemoniosshd
ssh_host_dsa_key
LaclaveprivadaDSAusadaporeldemoniosshd
ssh_host_dsa_key.pub
LaclavepblicaDSAusadaporeldemoniosshd
ssh_host_key La clave privada RSA usada por el demonio sshd para la versin 1 del
protocoloSSH.
ssh_host_key.pub
LaclavepblicaRSAusadaporeldemoniosshdparalaversin1del
protocoloSSH.
ssh_host_rsa_key
LaclaveprivadaRSAusadaporeldemoniosshdparalaversin2del
protocoloSSH.
ssh_host_rsa_key.pub
La clave pblica RSA usada por el demonio sshd para la
versin2delprotocoloSSH.

Archivos de configuracin del lado del cliente


La ubicacin de los ficheros referentes al cliente se encuentran almacenados en el directorio de trabajo de
cada usuario: Ejemplo: /home/usuario/ Dentro del directorio podemos encontrar los siguientes ficheros de
configuracin:
authorized_keys
Este archivo contiene una lista de claves pblicas autorizadas.
Cuandounclienteseconectaalservidor,elservidorautenticaalclientechequeando
suclavepblicafirmadaalmacenadadentrodeestearchivo.
id_dsa ContienelaclaveprivadaDSAdelusuario.
id_dsa.pub
LaclavepblicaDSAdelusuario
id_rsa LaclaveRSAprivadausadaporsshparalaversin2delprotocoloSSH.
id_rsa.pub
LaclavepblicaRSAusadaporsshparalaversin2delprotocoloSSH.
identity
LaclaveprivadaRSAusadaporsshparalaversin1delprotocoloSSH.
identity.pub LaclavepblicaRSAusadaporsshparalaversin1delprotocoloSSH.
known_hosts EstearchivocontienelasclavesdehostDSAdelosservidoresSSHalos
cuales el usuario ha accedido. Este archivo es muy importante para asegurar que el

- 167 -

clienteSSHestconectadoalservidorSSHcorrecto

Configuracin de fichero sshd_config


La funcin que desempean los ficheros de configuracin de openSSH son de vital importancia para la
seguridad de nuestro servidor , ya que si no se llegaran a configurar apropiadamente estos ficheros la
vulnerabilidad de nuestro servidor seria demasiado sensible a ataques informticos, es por ello que le
ensearemos la manera apropiada en la que deber ser configurado este vital fichero.

Blindando el fichero sshd_config


Este fichero lo podr localizar en en la siguiente ruta
/etc/ssh/

El siguiente paso sera abrir el fichero con la ayuda del editor de textos VI
[root@localhost#]vi/etc/ssh/sshd_config

A partir de este punto comenzaremos a blindar SSH

Cambiando el puerto por defecto


SSH tiene asignado por defecto el puerto 22, esto es algo que conocen todos nuestros posibles atacantes ,
por lo que es una buena idea cambiarlo.
Para modificar esta opcin y las siguientes que iremos mencionando editaremos el fichero de configuracin
shd_config, que por defecto se encuentra en el directorio /etc/ssh/. Se recomienda usar un puerto cualquiera
por encima del 1024, as que usted puede elegir el que quiera. En este ejemplo usaremos el 34765, por lo que
tendr que editar el parmetro Port del fichero de configuracin el cual deber quedar as:
#Thestrategyusedforoptionsinthedefaultsshd_configshippedwith
OpenSSHistospecifyoptionswiththeirdefaultvaluewhere
possible,butleavethemcommented.Uncommentedoptionschangea
defaultvalue.
Port34567
AddressFamilyany
ListenAddress0.0.0.0
ListenAddress::

Desactivando el Protocolo 1
Hay dos versiones de ssh en cuanto a su protocolo de comunicacin, estas son:
Versin 1
Versin 2
La versin 1 de openSSH hace uso de varios algoritmos de cifrado de datos mas sin embargo, algunos de
estos algoritmos han dejado de ser mantenidos por sus creadores y por lo tanto presenta serios huecos de
- 168 -

seguridad que potencialmente permite a un intruso insertar datos en el canal de comunicacin. Para evitar el
uso del protocolo 1 y sus posibles ataques a este, basta con indicar que solo admita comunicaciones de ssh
basadas en el protocolo 2, por lo que tendr que editar el parmetro Protocol del fichero de configuracin el
cual deber quedar as:
#Disablelegacy(protocolversion1)supportintheserverfornew
installations.Infuturethedefaultwillchangetorequireexplicit
activationofprotocol1
Protocol2

Deshabilitando el acceso a root


Este es quiz el parmetro mas importante de seguridad que podemos indicar para blindar nuestro servidor.
Prcticamente la mayora de sistemas operativos Linux crean por defecto al usuario root , es por ello que la
mayora de los ataques informticos se concentran en atacar al equipo a travs de la cuenta de root y mucho
mas si la cuenta tiene asignada una contrasea dbil Una manera de deshabilitar el logeo al sistema a travs
de la cuenta de root es poner en 'no' la variable PermitRootLogin , con esto el usuario root no tendr permiso
de acceder mediante ssh y por lo tanto cualquier intento de ataque directo a root ser intil. Con esto siempre
tendremos que ingresar como un usuario normal y ya estando adentro entonces mediante un su cambiarnos
a la cuenta de root. Para llevar a cabo estos cambios tendr que editar el parmetro PermitRootLogin del
fichero de configuracin el cual deber quedar de la siguiente manera:
#Authentication:
LoginGraceTime2m
PermitRootLoginno

StrictModesyes
MaxAuthTries6

Definiendo un nmero mximo de intentos de conexin


Muchos de los ataques llevados a cabo por piratas informticos se basan en fuerza bruta, estableciendo un
nmero mximo de intentos de conexin lograremos que sus intentos por entrar a nuestro servidor sean
disuadidos. Para llevar a cabo estos cambios tendr que editar el parmetro MaxAuthTries del fichero de
configuracin el cual deber quedar de la siguiente manera:
#Authentication:
LoginGraceTime2m
PermitRootLoginno

StrictModesyes
MaxAuthTries2

El nmero 2 indica la cantidad de veces que podemos equivocarnos al ingresar el usuario y/o contrasea, en
este caso despus de dos intentos, se perder o cerrar la conexin. Claro, es totalmente posible volver a
intentarlo, pero con solo dos intentos por vez.

- 169 -

Activando el modo estricto


La opcin StrictModes debe activarse para que, por ejemplo, los usuarios que establecen permisos de
escritura para todos en sus ficheros y directorios no se lleven una desagradable noticia cuando otro usuario los
modifique, de esta manera se protege la informacin de los usuarios. Para llevar a cabo estos cambios tendr
que editar el parmetro StrictModes del fichero de configuracin el cual deber quedar de la siguiente manera:
#Authentication:
LoginGraceTime2m
PermitRootLoginnoStrictModesyesMaxAuthTries2

Impidiendo la conexin al servidor grfico


Si nuestro servidor no tienen entorno grfico instalado, o no queremos que los usuarios se conecten a l,
definiremos esta opcin en el fichero de configuracin: Para llevar a cabo estos cambios tendr que editar el
parmetro X11Forwarding del fichero de configuracin el cual deber quedar de la siguiente manera:
#Acceptlocalerelatedenvironmentvariables
AcceptEnvLANGLC_CTYPELC_NUMERICLC_TIMELC_COLLATELC_MONETARYLC_MESSAGESAcceptEnv
LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION
LC_ALL
AllowTcpForwardingyes
GatewayPortsno
X11Forwardingyes

Limitando el tiempo para autenticarse con SSH


El nmero indica la cantidad de segundos en que la pantalla de login estar disponible para que el usuario
capture su nombre de usuario y contrasea, si no lo hace, el login se cerrar, evitando as dejar por tiempo
indeterminado pantallas de login sin que nadie las use, o peor aun, que alguien este intentando mediante un
script varias veces el adivinar un usuario y contrasea. Si somos el nico usuario del sistema considero que
con 20 o 30 segundos es mas que suficiente. Para llevar a cabo estos cambios tendr que editar el parmetro
LoginGraceTime del fichero de configuracin el cual deber quedar de la siguiente manera:
#Authentication:
LoginGraceTime30PermitRootLoginnoStrictModesyesMaxAuthTries2

Iniciar, detener o reiniciar el servidor openSSH


Llegado a este punto usted ya deber contar con las configuraciones de seguridad apropiadas, por lo que solo
faltara iniciar el servicio de SSH. Para iniciar el servicio de SSH tendr que teclear en consola y como root lo
siguiente:
[root@localhost]#/etc/init.d/sshdstart

Igualmente existen opciones ya sea para reiniciar, detener, recargar o conocer el status en el que se encuentra
el servicio. Estas opciones pueden ser consultadas en la siguiente tabla:

- 170 -

start Iniciaelservicio
stop Detieneelservicio
restart
Reiniciaelservicio.Ladiferenciaconreloadradicaenquealejecutar
un restart este mata todos los procesos relacionado con el servicio y los vuelve a
generardenuevacuenta
reload Recarga el servicio.La diferencia con restart radica en que al ejecutar un
reloadestesolamentecargalasactualizacioneshechasalficherodeconfiguracindel
servicio sin necesidad de matar los procesos relacionados con el mismo, por lo que
podraentendersequehaceelcambioencaliente.
condrestart Reinicio Condicional. Solamente se inicia si el servicio se encuentra
ejecutndose.
status Daaconocerelestadoenelqueseencuentraelservicio

Anexando el servicio de SSH al arranque del servidor


Para aadir el servicio de SSH al arranque del servidor solo tendr que teclear en consola y como root lo
siguiente:
[root@localhost]#chkconfigsshdon

Esto es til cuando por motivos ajenos a usted se reinicia el servidor, de esta manera cuando el equipo
arranque, automticamente levantara el servicio de SSH sin necesidad de levantarlo manualmente despus.

Aprendiendo a utilizar openSSH


En esta parte del capitulo le ensearemos a:
Conectarse a un equipo remotamente a travs de SSH
Copiar archivos o carpetas desde un equipo remoto
Enviar archivos o carpetas a un equipo remoto
Conectndose a un equipo remoto a travs de SSH
Para establecer una conexin con un servidor SSH remoto desde Centos haremos uso del Bash, o tambin
conocido como Terminal. La sintaxis para llevar a cabo esta operacin es la siguiente:
[root@localhost]#sshusuarioRemoto@ipDelServidorRemoto

En caso de haber establecido un puerto de escucha distinto al puerto 22, solo deber especificar el puerto por
el cual requiere autenticarse al servidor. Ejemplo
[root@localhost]#sshp[puertoDeEscucha]usuarioRemoto@ipDelServidorRemoto

Ejemplo 1: La empresa Factor Integracin para la cual trabajamos, nos ha pedido reiniciar el servicio de
apache , para ello nos ha proporcionado los siguientes datos:
IPdelservidorremoto>207.249.25.60
Nombredelusuarioremoto>adminlog
Puertodeautenticacion>34765
Solucin: 1.Para conectarnos al servidor remoto habr que especificar el puerto de
escucha,elusuarioremotoylaIPdelservidorremoto(Recuerdequenoestapermitido
conectarsecomorootdesdeSSH)

- 171 -

2.-El siguiente paso sera teclear la contrasea del usuario remoto


3.-Una vez dentro del servidor remoto nos logearemos ahora si como root
[adminlog@web]#su
Contrasea:xxxxxxxxxxxxxxxxxx[root@web]#

4.-Por ultimo, solo bastara reiniciar el servidor de apache


[root@web]#/etc/init.d/httpdrestart

5.-Para salir del SSH solo basta teclear exit


[root@web]#exit
Connectionto207.249.25.60closed.[root@localhost]#_

Copiar u obtener archivos o carpetas desde un equipo remoto


Para copiar archivos, ficheros o carpetas desde un equipo remoto hacia nuestro equipo existen dos maneras:
Mediante el uso del comando SCP
Mediante el uso del comando SFTP
Copiando ficheros a travs de SCP (Shell Secure Copy)
Es un medio de transferencia segura de archivos entre un equipo local y uno remoto haciendo uso del
protocolo Open Secure Shell (openSSH). La diferencia en utilizar SCP (Shell ) y SFTP (Security File Transfer
Protocol) para copiar archivos, carpetas o ficheros radica en que para SCP tenemos que conocer exactamente
donde se encuentra el recurso que queremos copiar, de otra forma nunca lo descargara, en cambio SFTP nos
deja navegar entre las carpetas lo cual hace mas sencillo la ubicacin del recurso que deseamos copiar. La
nica desventaja que presenta SCP es que nicamente permite la transferencia de archivos (descarga y
subida de ficheros). La sintaxis de SCP para llevar a cabo esta operacin es la siguiente:
[root@localhost]#scpusuarioRemoto@ipDelServidorRemoto:rutaDelRecursoRemoto

En caso de haber establecido un puerto de escucha distinto al puerto 22, solo deber especificar el puerto por
el cual requiere autenticarse al servidor. Ejemplo:
[root@

localhost

]#scp
usuarioRemoto@ipDelServidorRemoto:rutaDelRecursoRemoto

P[puertoDeEscucha]

Aunado a esto, para descargar una carpeta tendr que seguir la siguiente sintaxis:
[root@

localhost

]#scp

P[puertoDeEscucha]
usuarioRemoto@ipDelServidorRemoto:rutaDelDirectorioRemoto

Ejemplo 2: La misma empresa, Factor Integracin, nos ha pedido copiar la carpeta de inventarios de la
empresa la cual esta hospedada en un servidor remoto , para ello nos ha proporcionado los siguientes datos:
IPdelservidorremoto>207.249.25.60
Nombredelusuarioremoto>adminlog

- 172 -

Puertodeautenticacion>34567
RutadelRecursoRemoto>/tmp/Conta
Solucin: Para poder hacer la copia desde servidor remoto habr que especificar el
puertodeescucha,elusuarioremoto,laIPdelservidorremotoylaruta(sinerrores)
delrecursoremoto.

Lo anterior nos copiar la carpeta "/tmp/Conta" remota en el directorio actual "." naturalmente siempre que
usuario tenga permisos sobre la carpeta y su cuenta est entre las de los que pueden hacer ssh. La opcin "-r"
significa recursivo, es decir, copia la carpeta y todo su contenido, incluidas las subcarpetas y el contenido de
stas.

Copiando ficheros
Protocol)

travs

de

SFTP

(Security

File

Transfer

El protocolo de transferencia de archivos SFTP es un protocolo que proporciona la transferencia de archivos y


la funcionalidad de manipulacin de los mismos Se utiliza normalmente con SSH a fin de asegurar la
transferencia de archivos. En comparacin de capacidades con el anterior protocolo SCP, que nicamente
permite la transferencia de archivos, el protocolo SFTP permite una serie de operaciones sobre archivos,
ficheros, o carpetas remotos, en pocas palabras, nos permite navegar directamente en el servidor remoto con
el fin de localizar el recurso que deseamos descargar. La sintaxis de SFTP para llevar a cabo esta operacin
es la siguiente:
[root@localhost]#sftpusuarioRemoto@ipDelServidorRemoto

En caso de haber establecido un puerto de escucha distinto al puerto 22, solo deber especificar el puerto por
el cual requiere autenticarse al servidor. Ejemplo.
[root@localhost]#sftpoPort=[PuertoDeEscucha]usuarioRemoto@ipDelServidorRemoto
Elsiguientepasoseraautenticarnosconlacontraseadelusuarioremoto
ConnectingtoIPDelServidorRemoto...
usuarioRemoto@IPDelServidorRemoto'spassword:xxxxxxxxxxxxxxxxxxxxxx

Una vez dentro del servidor solo bastara ejecutar el comando get para descargar algn fichero o archivo.
[root@localhost]#sftpoPort=[PuertoDeEscucha]usuarioRemoto@ipDelServidorRemoto
Connecting to IPDelServidorRemoto... usuarioRemoto@IPDelServidorRemoto's password:
xxxxxxxxxxxxxxxxxxxxxxsftp>getrecursoRemoto

La siguiente tabla explica mas a detalle los comandos que pueden ser utilizados con SFTP:
cd[rutaRemota]
Cambiadedirectoriodentrodelservidorremoto
lcd[rutaLocal]
Cambiadedirectorioenelequipolocal
chgrp[grp][rutaRemota] Cambia el grupo de trabajo de un fichero remoto. El [grp]
tienequeserunGroupID
chmod[opciones][rutaRemota]
Cambia los permisos de Lectura, Escritura o de
Ejecucinaunficheroremoto
chown[own][rutaRemota] Cambia el grupo de trabajo de un fichero remoto. El [own]
tienequeserunUserID
get[rutaRemota][rutaLocal]
Copiaunrecursoremotoenunequipolocal
lmkdir[rutaLocal] Creaunacarpetaenelequipolocal
lpwd Imprimelarutalocalenlacualestamostrabajando
mkdir[rutaRemota] Creaunacarpetaenelequiporemoto
put[rutaLocal][rutaRemota]
Sube unficheroo archivo desde una ruta local hasta
unarutaremota

- 173 -

pwd
Imprimelarutaremotaenlacualestamostrabajando
exit SalimosdeSFTP
rename[rutaLocal][rutaRemota] Renombraununficheroremoto
rmdir[rutaRemota] Borraunacarpetaremota
rm[rutaRemota]
Borraunficheroremoto

Ejemplo 3: La misma empresa, Factor Integracin, nos ha pedido copiar el fichero inventarioEnero.odt que se
encuentra dentro la ruta /tmp/Conta/ , para ello nos ha proporcionado los siguientes datos:
IPdelservidorremoto>207.249.25.60
Nombredelusuarioremoto>adminlog
Puertodeautenticacion>34567
RutadelRecursoRemoto>/tmp/Conta
Solucin:1.Parapodertraerlacopiadesdeservidorremotohacianuestroequipohabr
queespecificarelpuertodeescucha,elusuarioremotoylaIPdelservidorremoto

2.- Nos pedir autenticarnos con la contrasea del usuario remoto, en este caso la contrasea del usuario
adminlog
3.-Una vez autenticados con el servidor nos dar acceso a travs de SFTP
4.- Nos moveremos entre directorios con la ayuda del comando cd hasta estar ubicados en /tmp/Conta
5.-Dentro de la carpeta Conta aplicar el comando dir para visualizar el contenido de la misma
sftp>dir
inventarioEnero.odtinventarioFebrero.odtinventarioMarzo.odt

6.-Con la ayuda del comando get descargaremos el fichero nombrado inventarioEnero.odt dentro de la
carpeta home de nuestro sistema

Subir o enviar archivos o carpetas a un equipo remoto


Para subir archivos, ficheros o carpetas desde nuestro equipo hacia un equipo remoto existen dos maneras:
Mediante el uso del comando SCP
Mediante el uso del comando SFTP
Enviando ficheros a travs de SCP (Shell Secure Copy)
La sintaxis de SCP para llevar a cabo esta operacin es la siguiente:
[root@localhost]#scprutaDelRecursoLocalusuarioRemoto@ipDelServidorRemoto:rutaRemota

En caso de haber establecido un puerto de escucha distinto al puerto 22, solo deber especificar el puerto por
el cual requiere autenticarse al servidor. Ejemplo
[root@

localhost

]#scp

P[puertoDeEscucha]
usuarioRemoto@ipDelServidorRemoto:rutaRemota

Aunado a esto, para subir una carpeta tendr que seguir la siguiente sintaxis:

- 174 -

rutaDelRecursoLocal

[root@

localhost

]#scp

P[puertoDeEscucha]
usuarioRemoto@ipDelServidorRemoto:rutaRemota

directorioLocal

Ejemplo 4: Se nos ha pedido subir una actualizacin referente a la pagina web de la empresa , para ello nos ha
proporcionado los siguientes datos:
IPdelservidorremoto>207.249.25.60
Nombredelusuarioremoto>adminlog
Puertodeautenticacion>34567

Ruta del Servidor a donde se tiene que subir la informacin -> /tmp/Conta
Solucin: Para subir este directorio al servidor remoto habr que especificar la ruta del directorio local,el puerto
de escucha, el usuario remoto, la IP del servidor remoto y la ruta (sin errores) a donde se quiere enviar el
directorio
Luego de haber hecho esto nos pedir autenticarnos con la contrasea del usuario remoto
adminlog@207.249.25.60'spassword:xxxxxxxxxxxxx

Al finalizar nos mostrara un ventana mostrando el progreso de cada copia hecha al servidor remoto como la
que se muestra a continuacin.
Actualizacion1.html100%0.0KB/s05:00

actualizacion2.html 100% 0.0KB/s 07:00 actualizacion3.html 100% 0.0KB/s 15:00 actualizacion4.html 100%
0.0KB/s 15:00 actualizacion5.html 100% 0.0KB/s 25:00 actualizacion6.html 100% 0.0KB/s 30:00
actualizacion7.html 100% 0.0KB/s 31:00 actualizacion8.html 100% 0.0KB/s 40:00
Enviando ficheros a travs de SFTP (Security File Transfer Protocol)
La sintaxis de SFTP para llevar a cabo esta operacin es la siguiente:
[root@localhost]#sftpusuarioRemoto@ipDelServidorRemoto

En caso de haber establecido un puerto de escucha distinto al puerto 22, solo deber especificar el puerto por
el cual requiere autenticarse al servidor. Ejemplo.
[root@localhost]#sftpoPort=[PuertoDeEscucha]usuarioRemoto@ipDelServidorRemoto

El siguiente paso sera autenticarnos con la contrasea del usuario remoto


ConnectingtoIPDelServidorRemoto...
usuarioRemoto@IPDelServidorRemoto'spassword:xxxxxxxxxxxxxxxxxxxxxx

Una vez dentro del servidor solo bastara ejecutar el comando put para descargar algn fichero o archivo.
[root@localhost]#sftpoPort=[PuertoDeEscucha]usuarioRemoto@ipDelServidorRemoto
Connecting to IPDelServidorRemoto... usuarioRemoto@IPDelServidorRemoto's password:
xxxxxxxxxxxxxxxxxxxxxxsftp>putrecursoLocal

La siguiente tabla explica mas a detalle los comandos que pueden ser utilizados con SFTP:
cd[rutaRemota]
Cambiadedirectoriodentrodelservidorremoto
lcd[rutaLocal]
Cambiadedirectorioenelequipolocal
chgrp[grp][rutaRemota] Cambia el grupo de trabajo de un fichero remoto. El [grp]
tienequeserunGroupID

- 175 -

chmod[opciones][rutaRemota]
Cambia los permisos de Lectura, Escritura o de
Ejecucinaunficheroremoto
chown[own][rutaRemota] Cambia el grupo de trabajo de un fichero remoto. El [own]
tienequeserunUserID
get[rutaRemota][rutaLocal]
Copiaunrecursoremotoenunequipolocal
lmkdir[rutaLocal] Creaunacarpetaenelequipolocal
lpwd Imprimelarutalocalenlacualestamostrabajando
mkdir[rutaRemota] Creaunacarpetaenelequiporemoto
put[rutaLocal][rutaRemota]
Sube unficheroo archivo desde una ruta local hasta
unarutaremota
pwd
Imprimelarutaremotaenlacualestamostrabajando
exit SalimosdeSFTP
rename[rutaLocal][rutaRemota] Renombraununficheroremoto
rmdir[rutaRemota] Borraunacarpetaremota
rm[rutaRemota]
Borraunficheroremoto

Ejemplo 5: Se nos ha pedido subir una actualizacin referente a la pagina web de la empresa , pero esta vez
sera usando SFTP, para ello nos ha proporcionado los siguientes datos:
IPdelservidorremoto>207.249.25.60
Nombredelusuarioremoto>adminlog
Puertodeautenticacion>34567
RutadelServidoradondesetienequesubirlainformacin>/tmp/Conta

Solucin:
1.- Para subir este directorio al servidor remoto habr que especificar el puerto de escucha, el usuario remoto y
la IP del servidor remoto 2.- Nos pedir autenticarnos con la contrasea del usuario remoto, en este caso la
contrasea del usuario adminlog 3.-Una vez autenticados con el servidor nos dar acceso a travs de SFTP
4.- Nos moveremos entre directorios con la ayuda del comando cd hasta estar ubicados en /tmp/Conta 5.Dentro de la carpeta Conta aplicar el comando lpwd para verificar la ruta en la cual estamos ubicados
localmente
sftp>lpwd
Local working directory: /home/juanito}}} 6.Si no se encuentra ubicado en el
directoriodetrabajoindicadocmbiesededirectoriomedianteelcomandolcd
sftp>lcd/home/juanito/datosActualizados
lcd /home/juanito/datosActualizados}}} 7. Cuando este ubicado en el directorio de
trabajo que contiene la informacin que desea subir al servidor remoto teclee lo
siguiente:
sftp>putdatosactuales
Elcomandoputtienelafuncionalidaddesubirarchivosdesdeunamaquinalocalhasta
unequiporemoto.8.PorultimotecleelapalabraexitparasalirdelSFTP
sftp>exit
[root@localhost]

- 176 -

Fuente Original:
http://www.linuxparatodos.net/web/comunidad/base-deconocimiento/-/wiki/Base+de+Conocimiento/Certificaci%C3%B3n+LPI
Agradecemos el aporte de la Comunidad http://www.linuxparatodos.net
Este obra est bajo una licencia Creative Commons Atribucin-NoComercial-CompartirIgual 2.5
Mxico.
http://creativecommons.org/licenses/by-nc-sa/2.5/mx/

- 177 -

Anda mungkin juga menyukai