Вы находитесь на странице: 1из 284

Tabla de contenido

Presentacin del instructor: ............................................................................................................................... 4


Alineacin de expectativas: ................................................................................................................................ 4
Presentacin del objetivo del curso: .................................................................................................................. 4
Reglas de oro: ..................................................................................................................................................... 4
Cumplimiento de expectativas: .......................................................................................................................... 5

Introduccin ........................................................................................................................... 6
Unidad 1.- Instalacin del Sistema Operativo y Ajustes posteriores ...................................... 7
Introduccin ....................................................................................................................................................... 7
Sistema Operativo UNIX ..................................................................................................................................... 9
Sistema Operativo Linux...................................................................................................................................10
Requerimientos de Hardware de Linux ............................................................................................................12
Sistema de Archivos en Linux ...........................................................................................................................15
Procesamiento de Texto ...................................................................................................................................17
Caractersticas del Sistema Linux .....................................................................................................................20
Software disponible en Linux ...........................................................................................................................20
Distribuciones Linux. .........................................................................................................................................20
Estndar de Jerarqua de Sistema de Archivos. ...............................................................................................25
Estructura de los directorios general ...............................................................................................................25
Estructura de Archivos .....................................................................................................................................26
Instalacion Centos 7.0 ......................................................................................................................................30
Cmo obtener Centos Linux. ............................................................................................................................30
Instalacin ........................................................................................................................................................31
Editor de texto VI y VIM ...................................................................................................................................61
Gestion de memoria Swap ...............................................................................................................................78

Unidad 2.- Administracin del Sistema de Archivos.............................................................. 81


Lmites de tamao ............................................................................................................................................81
Sistema de archivos de gran tamao ...............................................................................................................82
Extents ..............................................................................................................................................................82
Swapinees.........................................................................................................................................................86
Commit .............................................................................................................................................................86
fsck (file system check o bien file system consistency check)..........................................................................87
Uso de dd..........................................................................................................................................................89

Unidad 3. -Administracin de Sofware y servicios. ............................................................... 96


Gestin de paquetes RPM ................................................................................................................................97
Instalacin de paquetes. ..................................................................................................................................99
Gestor de Servicios .........................................................................................................................................106
Secuencia de arranque ...................................................................................................................................108
Arranque y parada de lo servicios ..................................................................................................................111
Envo de seales a los procesos .....................................................................................................................112

pg. 1
Unidad 4.-Gestin de usuarios, grupos y privilegios. ........................................................ 117
Gestin de cuentas de usuario. ......................................................................................................................117
Tipos de usuarios ............................................................................................................................................117
Archivos de configuracin ..............................................................................................................................125
Gestion de cuentas de grupos: ............................................................................................................127
SUDO ..............................................................................................................................................................128

Unidad 5. Permisos y Atributos del Sistema de Archivos. ................................................... 138


Permisos de ficheros ......................................................................................................................................140
Umask .............................................................................................................................................................141
Comando chmod ............................................................................................................................................142
Comando chown ............................................................................................................................................145

Unidad 6.- Herramientas bsicas del Sistema Operativo. ................................................... 150


Compresin y descompresin de archivos.....................................................................................................160
Gestin de procesos y trabajos. .....................................................................................................................169
Configuracin y uso de crond. ........................................................................................................................171
Usando cron ...................................................................................................................................................173
Implementar y Administrar Cuotas De Disco (Disk Quotas) en Linux ............................................................190

UNIDAD 7.- Redes ............................................................................................................... 202


Configuracin de red. .....................................................................................................................................202
Configuracin del fichero resolv.conf ............................................................................................................206
Iptables ...........................................................................................................................................................208
Protocolo TCP .................................................................................................................................................215
Protocolo UDP ................................................................................................................................................216
Protocolo ICMP...............................................................................................................................................216
Protocolo SSH .................................................................................................................................................223
Historia del SSH ..............................................................................................................................................223
Versiones de SSH ............................................................................................................................................224
Caractersticas de SSH ....................................................................................................................................224
Instalacin y Configuracion: ...........................................................................................................................224
Secuencia de eventos de una conexin SSH ..................................................................................................228
Autenticacin en SSH .....................................................................................................................................230
Canales en SSH ...............................................................................................................................................231
Servidores FTP ................................................................................................................................................232
Intalacion y Configuracion de FTP. .................................................................................................................236
Modo activo ...................................................................................................................................................247
Modo pasivo ...................................................................................................................................................248
LINUX aplicado en un entorno real ................................................................................................................249
Configurar lo de redes ....................................................................................................................................249
Ver estatus de ip.............................................................................................................................................249
Como hacer upgrade? ..................................................................................................................................253

pg. 2
Instalar un sistema de web browsing para CLI ...............................................................................................254
Ambiente de trabajo ......................................................................................................................................254
Crear llave.......................................................................................................................................................254
Instalar Apache Server ...................................................................................................................................256
Instalar PHP ....................................................................................................................................................258
Instalar Base De Datos....................................................................................................................................258
Instalar y Configurar SSH Server.....................................................................................................................259
Instalar GCC ....................................................................................................................................................260
Instalar Java ....................................................................................................................................................261
Instalar TOMCAT para HTTP Java ...................................................................................................................262
Instalar NMAP ................................................................................................................................................264
Configuracion de firewall ...............................................................................................................................265
Instalar WGET .................................................................................................................................................273
TELNET ............................................................................................................................................................274
Instalar WEBMIN ............................................................................................................................................274
Instalar un compresor de archivos .................................................................................................................276
Instalar un servidor FTP ..................................................................................................................................278
Configurar SUDO ...........................................................................................................................................279
Instalar Rockit Hunter.....................................................................................................................................280

CONCLUSIONES .................................................................................................................. 282


CIBERGRAFIA ...................................................................................................................... 283

pg. 3
Formacin de la comunidad de aprendizaje:
La formacin de la comunidad de aprendizaje es un proceso que debe llevarse a cabo para iniciar
cada uno de nuestros cursos. Su finalidad es crear un clima propicio para la celebracin de la
actividad instruccional, es decir, generar un entendimiento previo entre el instructor y los
participantes sobre los temas que se desarrollarn durante sta, as como las estrategias
educativas que se llevarn a cabo para lograr un mejor aprendizaje.
Un adecuado manejo de la comunidad de aprendizaje es un elemento fundamental para
garantizar la satisfaccin de uno de los clientes involucrados en la imparticin de los cursos: los
participantes.

Presentacin del instructor:


Nombre, profesin, aos de experiencia como instructor, experiencia en la imparticin del curso,
o cursos similares o relacionados.

Alineacin de expectativas:
El instructor recabar las expectativas de los participantes respecto al curso, con el
fin de dejarles claro el objetivo del mismo.
En caso de que alguna expectativa no coincida con los temas que el curso contiene,
el instructor dejar claro cules de las expectativas expresadas no sern cubiertas
con el curso y porqu.
Las expectativas alineadas sern anotadas en hojas de rotafolio para su revisin al
trmino del curso.
Durante el desarrollo del curso el instructor deber cubrir las expectativas
alineadas.

Presentacin del objetivo del curso:
El instructor presentar a los participantes el objetivo del curso, aclarando dudas al
respecto si las hubiese.
Reglas de oro:
El instructor promover el establecimiento de reglas por parte de los participantes
que se observarn a travs del curso; por lo que puede proponer: tiempo de
tolerancia para iniciar las sesiones, respeto hacia los compaeros, participacin de
todos en tcnicas y ejercicios grupales, etc.; se incluirn todos los puntos que los
participantes consideren pertinentes.

pg. 4
Se anotarn los acuerdos en hojas de rotafolio y se colocarn en un espacio en el
que sean visibles a lo largo de todo el curso.

Cumplimiento de expectativas:
Al finalizar el curso el instructor deber llevar a cabo una revisin de las
expectativas
alineadas que se anotaron en hojas de rotafolio al inicio del curso.

Se revisar cada una de las expectativas alineadas palomeando las que hayan sido
cumplidas, y el instructor explicar de qu manera se llev a cabo tal cumplimiento.

pg. 5
Introduccin

Linux es un sistema operativo de la familia Unix, gratuito, creado mediante la poltica de cdigo
abierto. Estas caractersticas implican un gran ahorro en los costes de instalacin de los
equipos, pero tambin una mayor especializacin por parte del personal informtico.

En todo sistema Unix existe un usuario administrador (root), que controla el funcionamiento
completo del sistema, tiene acceso universal y puede realizar cualquier operacin con los datos
y los dispositivos de la mquina.

Por lo tanto, este curso tiene como finalidad la formacin de profesionales en el rea de
Administracin de Redes que le permite al participante obtener conocimientos profundos en el
rea de infraestructura. Combina una slida formacin terico -prctica con una metodologa que
logra un importante nivel de entrenamiento tcnico.

pg. 6
Unidad 1.- Instalacin del Sistema Operativo y Ajustes posteriores
Introduccin

Un sistema de computadora es un dispositivo electrnico programable que puede almacenar,


recuperar y procesar datos. Ejecuta un conjunto de instrucciones llamado programa. La
ejecucin del programa da al usuario final el resultado deseado. Un ejemplo de ejecucin de
un programa es cuando se trabaja con una calculadora en un sistema operativo Windows.

Una computadora es capaz de realizar mltiples tareas, tales como:


Ejecutar programas de usuario
Conectar computadoras en una Red de rea Local (Local rea Network LAN)
Compartir los recursos
Controlar su hardware

Para que una computadora sea capaz de hacer todo esto, requiere de un programa especial
llamado sistema operativo. El sistema operativo reside en el disco duro de la computadora
y acta como un puente entre los programas de usuario y los programas que controlan le
hardware de la computadora.

El sistema operativo trabaja principalmente en segundo plano. Se encarga de los componentes


hardware de una computadora, adems de asegurar el inicio y ejecucin de diversos programas.
Tambin se encarga de los datos almacenados en los dispositivos de almacenamiento de la
computadora.

El sistema operativo es el responsable de las siguientes funciones del sistema de computadora:

Arrancar o iniciar la computadora


Actuar como interfaz entre el CPU y el mundo externo
Coordinar los dispositivos del sistema
Coordinar las aplicaciones o programas en ejecucin

El sistema operativo controla todo el trabajo de la computadora. Sin el, la computadora solo
es un montn de circuitos electrnicos.

pg. 7
Los siguientes son algunos de los usos del sistema operativo:

Programa de Sistema KERNELque


Programas
Usuario Operativo controlan

Proporciona diferentes recursos a los usuarios, tales como: calculo, almacenamiento,


dispositivos de Entrada/Salida (Input/Output I/O) manejo de red, etc
Permite que varios usuarios trabajen juntos compartiendo e intercambiando programas,
aplicaciones y datos en la misma instalacin.
Ayuda a resolver conflictos cuando los usuarios solicitan el mismo recurso simultneamente.
Proporciona seguridad cuando los usuarios comparten datos y programas.
Asiste en la administracin y evaluacion del uso y eficacia de un sistema, recolectando datos
sobre la utilizacin de los recursos.
En los sistemas de computadoras, existen varios componentes que solo trabajan en forma
secuencial y que solo se pueden compartir directamente en forma marginal. Los sistemas
operativos permiten que se haga un uso eficiente de estos componentes.

Inicio de un Sistema Operativo


El proceso de iniciar el sistema operativo es llamado arranque (bootstrapping o booting). Aqu
se mencionan algunos puntos acerca de cmo se inicia un sistema operativo.
Las instrucciones para el arranque estn incluidas en uno de los chips de la computadora,
llamado el chip BIOS (Basic Input/Output System)
El chip BIOS informa a la computadora que busque un programa especial llamado el gestor de
arranque (boot loader)
El gestor de arranque esta disponible en un lugar fijo en el disco de arranque. El disco de
arranque en cualquier computadora es el disco duro primario.
El gestor de arranque inicia la parte principal del sistema operativo.

Los sistemas operativos son clasificados en dos tipos:

pg. 8
Sistema Operativo de Usuario nico: permite que solo un usuario use todos los recursos del
sistema de computadora en cualquier momento dado. Mientras el procesador maneja un
usuario o programa, otros programas o usuarios no pueden usar estos recursos. Un ejemplo
de Este tipo el sistema operativo DOS.
Sistema Operativo Multiusuario: permite que ms de un usuario o programa se ejecuten o
usen recursos del sistema en forma simultnea. Algunos ejemplos de estos sistemas
operativos multiusuario son UNIX, XENIX, Linux, Solaris, etc.
En los tiempos en que los sistemas operativos como DOS nicamente permitan solo un
usuario para realizar tareas simples, la introduccin de UNIX creo una nueva forma de
computacin. A pesar que Windows tambin es un sistema operativo principalmente de
usuario nico, permite que varias tareas se realicen en forma simultanea. A continuacin se
aprender acerca del sistema operativo UNIX, dado que Linux es una variacin del sistema
operativo UNIX.

Sistema Operativo UNIX

El sistema operativo UNIX tiene una historia muy interesante. Algunos aspectos de su
evolucin son:

Bell Telephone Laboratorios (BTL), GE y MIT se unieron intentando crear un sistema


operativo que permitiera trabajar simultneamente hasta mil usuarios. Ken
Thompson y Dennis Ritchie de BTL trabajaron en esto y crearon un sistema
operativo llamado MULTICS, un acrnimo de MULTiplexed Information and
Computer Services (Servicio de Informacin Multiplexada y Calculo).
BTL se retiro del proyecto durante el desarrollo del trabajo.
En 1969-70, Thompson y Ritchie reescribieron el sistema operativo para jugar un
juego de guerra espacial con otra maquina mas pequea.
Este sistema operativo fue llamado Uniplexed Information and Computing Services
(UNICS), un juego de palabras del MULTICS original.
El nombre de UNICS luego fue transformado a UNIX.
En 1972-73, el sistema UNIX fue reescrito usando el lenguaje de programacin C
El sistema operativo UNIX es uno de los mas poderosos verstiles y flexibles en el
mundo hoy en da.

pg. 9
El sistema operativo UNIX corre en un rango de computadores desde microcomputadoras hasta
mainframes. Algunas de sus caractersticas son:

Es conocido como un sistema operativo abierto dado que puede ser llevado e instalado
en cualquier clase de sistema de computadora y plataforma de hardware.
Normalmente, los sistemas operativos son escritos en lenguaje ensamblador. Sin embargo,
UNIX esta escrito en un lenguaje de alto nivel y su cdigo fuente esta disponible fcilmente.
Esto supone una ventaja para los programadores cuando incorporan cambios para ajustarse
a sus necesidades.
Es un sistema multiusuario y multitarea. Multitarea significa que el sistema operativo coordina
mltiples tareas o trabajos en forma simultanea. Mientras un usuario esta compilando un
programa en C, otro puede crear documentos usando un editor, cada ignorando la presencia
del otro.
UNIX es uno de los sistemas operativos ms poderosos existentes, por el hecho de poder
compartir recursos en tiempo real.
A pesar de que UNIX esta desarrollado para programadores, proporciona un entorno tan flexible
que tambin es usado en negocios, ciencias, educacin e industria.
Los interruptores de telecomunicacin y sistemas de transmisin son algunos ejemplos del
uso del sistema operativo UNIX

A continuacin se aprender acerca del sistema operativo Linux:

Sistema Operativo Linux

Linux es un sistema operativo distribuido gratuitamente basado en el sistema operativo


UNIX. Fue desarrollado originalmente por Linus Torvalds, quien empez a trabajar sobre Linux
en 1991 siendo estudiante de la Universidad de Helsinki en Finlandia. Luego, miles de
programadores contribuyeron a su desarrollo y fue distribuido gratuitamente por Internet.

Por los aos 80, los sistemas operativos eran bsicamente propietarios, lo que significaba que
se tena que usar solo el sistema operativo proporcionado para una plataforma especifica. El
proyecto GNU fue fundado por Richard Stallman, quien fue el tambin fundador de Free
Software Foundation (FSF), autor de GNU GPL (General Public License) y el desarrollador
original de algunos programas de software GNU (por ejemplo, el compilador gcc y el editor de
texto Emacs)

pg. 10
Las principales metas del proyecto GNU incluyeron las siguientes:

Desarrollar un sistema operativo compatible con UNIX


Soportar diferentes arquitecturas de hardware
Hacer que el sistema operativo estuviese disponible libre de costo para
asegurar que los usuarios pudiesen redistribuir todo el sistema y cambiar
contribuir a alguna parte de l.

En 1990, la mayora de las piezas de software del sistema operativo basado en GNU se haban
escrito, excepto la ms importante, el kernel. El kernel es el ncleo del sistema operativo.
Mas tarde, el kernel gratuito basado en UNIX, desarrollado por Linus Torvalds fue
combinado con el sistema GNU. As naci un sistema operativo, el sistema GNU basado en
Linux.

Las etapas significativas en la evolucin de Linux son:


En 1991, Linus Torvalds desarrollo Linux con el soporte de desarrolladores a
lo largo del mundo y lo llamo Linux
El lanzo la versin 0.02 de Linux en 1991
En 1994, fue lanzada la versin 1.0 de Linux
La versin 2.6 completa fue lanzada en Diciembre de 2003. Sin embargo, su
desarrollo contina.
Los siguientes son algunos de los hechos bsicos acerca del sistema operativo Linux:

Es desarrollado, escrito, distribuido y respaldado bajo GPL de GNU (GNU no es UNIX). Como
resultado, su cdigo fuente puede ser distribuido gratuitamente y disponible para el publico
en general.
Los sistemas Linux se usan para redes, desarrollo de software, soluciones de alojamiento
basados en Web y como plataforma de usuario final.
La mascota oficial, que Linus eligi para su sistema operativo, es el pingino Linux llamado Tux
(Torvalds Unix), que se presente en la figura 3

Ilustracin 2 TUX, la mascota de Linux

pg. 11
Linux no es un derivado del cdigo fuente de UNIX. Sin embargo, la interfaz de Linux es
intencionalmente como la de UNIX. As las lecciones aprendidas acerca de UNIX, incluyendo
informacin sobre seguridad son aplicables tanto a UNIX como a Linux
Linux es un sistema operativo estable y verstil, especialmente como un servidor de red.
Proporciona un slido entorno grafico, paquetes fciles de instalar y aplicaciones de alto
nivel.
Requerimientos de Hardware de Linux

Linux soporta plataformas de hardware tales como Intel x86, PowerPC, S/390, SPARC y Alpha.
Los diferentes requerimientos de hardware para Linux se listan en la siguiente tabla

Hardware Requerimientos
CPU La serie x86 de Intel y sus compatibles,
DEC, Alpha, Motorola, PowerPC, etc.
Tarjeta Madre (MotherBoard) Sistemas de bus PCI, EISA, VESA y MCA.
Memoria 64 MB(mnimo), 256 MB recomendados
para mayor eficiencia y ejecucin
Monitor y Adaptador de Video CGA, EGA, VGA, IBM monochrome, Sper
VGA y otras tarjetas aceleradoras de video
Dispositivos de Puntero Ratn serial estndar como Logitech, serie
MM, Microsoft 2 botones, Sistemas Mouse de 3
botones, etc.
Controlador de Disco Duro IDE, EIDE, MFM \, RLL y la mayora de los controladores
ESDI
Espacio de Disco Duro Requiere un mnimo de 100 MB de espacio
para una instalacin mnima de Linux. Para una
instalacin completa con todos los servicios, los
requerimientos pueden ser tanto como 2 GB
Unidades de CD-ROM Sistema estndar de archivo ISO 9660 para CD-ROMS

Unidades de Cinta SCSI


Impresoras Impresoras paralelas
Modems Modems seriales internos y externos
Tarjetas Ethernet Soporta tarjetas Ethernet y adaptadores LAN
populares

3 Tabla: Requerimientos de Hardware de Linux

pg. 12
Organizacin de Linux
El sistema operativo Linux esta organizado funcionalmente en los siguientes tres niveles:
Kernel (Ncleo)
Shell (Interprete de Comandos)
Herramientas y aplicaciones.
La representacin esquemtica de las tres partes principales del sistema operativo Linux se
presenta en la Figura 4
Herramientas y aplicaciones

Shell

Nucelo

Ilustracin 4 Partes Principales del Sistema Operativo Linux

El kernel
El kernel es el ncleo de un sistema operativo, as como la CPU es el ncleo de un sistema
de computadora. El kernel es una coleccin de programas, la mayora escritos en C y solo existe
un kernel para cualquier sistema operativo. Este se comunica directamente con el hardware y
sin un kernel un sistema operativo no puede interactuar con el hardware. Algunas de las tareas
importantes del kernel son:

Verificar si el usuario es un usuario autorizado


Hacer seguimiento de los diferentes programas que estn ejecutndose y
asignar un tiempo especifico a cada programa
Asignar espacio de almacenamiento para los archivos en el sistema
Ejecutar el programa Shell
Manejar la transferencia de informacin entre la computadora y las terminales

pg. 13
En un sistema multiusuario, a cada terminal se le asigna un numero y los usuarios trabajan en
terminales conectadas a la computadora principal. El sistema operativo se comunica con la
Terminal a travs de los nmeros de Terminal

El Shell
El sistema operativo Linux usa un shell para transferir los comandos desde el teclado a la
computadora. El shell (interprete de comandos) es solo otro programa escrito en C.
Acta como un intrprete entre los programas de los usuarios y el kernel. Traduce los
comandos del usuario en la accin apropiada. El shell interacta con el usuario, mientras que
el kernel interacta con el hardware de la maquina.

El shell es el programa que toma comandos y, ejecuta el programa apropiado o lo traduce en


instrucciones que el kernel entiende. Por ejemplo, un comando tal como chdir ser traducido
por el shell a un formato entendible por el kernel, mientras que un comando tal como ls ser
ejecutado por el shell como un programa en el directorio /usr/bin/ls.

El shell es una interfaz basada en texto para el sistema Linux. En Linux, las interfaces graficas
tales como el Sistema X Window (similar al presentado por Windows NT y 2000, que permiten
al usuario ejecutar comandos usando el ratn y el teclado) tambin pueden ser usadas. El shell
por defecto en Linux es bash (Bourne Again Shell). Otros tipos de shell disponibles en Linux
son:

csh (C Shell)
ksh (Korn Shell)
sh (Shell)
esch (enhanced C Shell)

Bourne Shell y el C Shell son los que se usan comnmente. Ambos son controlados por
comandos. El Korn Shell es el menos usado. Todos los shells sirven para el mismo propsito, pero
tiene diferentes caractersticas y sintaxis.

Herramientas y Aplicaciones
En el sistema Linux existe un cierto nmero de herramientas disponibles. Las herramientas

pg. 14
son programas de usuario que pueden ser escritos por terceros para determinados tipos de
aplicaciones. Tpicamente, las herramientas se agrupan para realizar ciertas funciones, tales
como programacin, aplicaciones de negocio y procesamiento de texto.

A continuacin se aprender acerca de la organizacin del sistema de archivos en el sistema


operativo Linux

Sistema de Archivos en Linux

Todos los programas de usuario, documentos, herramientas, aplicaciones, etc son


almacenados como archivos en sistema de computadora. Todos los archivos son almacenados
en un dispositivo de almacenamiento secundario (usualmente un disco). Una porcin del
disco es separada para almacenar la informacin relacionada a los archivos almacenados. Esta
unidad funcional se denomina sistema de archivos.
Algunos de los puntos importantes aqu son:

El rea de la superficie donde se almacenan los archivos se dividen en pistas circulares.


Las pistas circulares estn divididas en sectores o bloques de disco (en forma de torta)
Todos los bloques del disco son del mismo tamao y tienen un numero nico llamado
el numero de bloque de disco
El tamao del bloque de disco vara dependiendo de la distribucin Linux.

La mayora de los sistemas modernos tienen un tamao de bloque de disco de un 1 KB


(kilobytes). Los bloques de disco estn organizados en los siguientes cuatro grupos:

Bloque de Arranque (Boot)


Superbloque
Bloque Inodo (128 bytes)
Bloque de Datos

Cada sistema de archivos tiene un bloque de arranque, un superbloque, una lista de


bloques inodos y una lista de bloques de datos.

Ahora se va a entender la necesidad y uso de cada bloque en el sistema de archivos.

pg. 15
Bloque de Arranque
Consiste de un bloque de disco que contiene el cdigo para iniciar la computadora,
Ocupa el primer bloque de un sistema de archivos
Un sistema solo requiere de un bloque de arranque para iniciar el sistema. En el resto de los
sistemas de archivos, este bloque permanece vaco.
Superbloque
Esta a continuacin del bloque de arranque en el sistema de archivos
Consiste de un bloque de disco que contiene informacin acerca del sistema de archivos
Contiene informacin acerca del nmero de bloques en el sistema de archivos, el nmero de
bloques asignados para inodos (se aprender acerca de los inodos ms adelante) y el nmero
de bloques que estn actualmente libres.
Bloque Inodo
Es el tercer grupo de bloques en un sistema de archivos.
Contiene ms de un bloque de disco para mantener informacin acerca de los archivos en
el sistema de archivos.
Bloque de Datos
Almacena el contenido del archivo
Sigue a los bloques asignados para inodos.
Un sistema de archivos contiene cierto nmero de bloques de datos.
Antes de proceder a aprender acerca de la particin del disco, se entender un poco mas acerca
de la informacin que mantiene inodos. Los inodos mantienen informacin acerca del
propietario del archivo, los bloques de disco usados en el archivo, etc. Los archivos, por otro
lado, contienen los datos del archivo.

Asuma que se crea un archivo llamado midocumento.txt. Este debe ser almacenado en el disco.
Dependiendo del sistema de archivos al que este asociado, los datos del archivo se
almacenaran en los bloques de datos y otra informacin administrativa acerca de este, ser
almacenada en los bloques inodos.

pg. 16
Particin de Disco
Aqu, el sistema divide el disco en particiones de disco.
Cada particin consiste en bloques, situados en forma contigua, pero separados de las otras
particiones

La particin puede ser un sistema de archivos o un espacio de intercambio


(space swap).

Un espacio de intercambio (space swap) se usa para implementar la memoria virtual, donde
una porcin de la memoria principal se almacena temporalmente

La particin primaria es donde se almacenan los archivos relacionados al arranque.

Las particiones del espacio de intercambio (space swap) son una secuencia lineal de
bloques.

El tamao de los archivos cambia a travs del tiempo (crece o disminuye)

Un bloque de datos de un archivo puede no estar en una secuencia lineal de bloques. En


vez de ello, puede estar disperso a lo largo de toda la particin.

Procesamiento de Texto

El sistema Linux proporciona mtodos poderosos de procesamiento de un texto.


Un ejemplo simple de procesamiento es encontrar el nmero de ocurrencias de un patrn
dado en un texto.

A continuacin se considerara un ejemplo:


La pronunciacin de la palabra pronunciacin es pronunciacin

En esta oracin el patrn pronunciacin ocurre tres veces en el texto. Cierto nmero de
herramientas, tales como grep, egrep y fgrep, estn disponibles para realizar el procesamiento
de texto.

pg. 17
Tambin existen otras herramientas de procesamiento de texto, que son conocidas como
editores. Estos proporcionan las funcionalidades para crear, editar (modificar) y guardar
texto.

Algunos ejemplos de editores son:


Vi: es conocido como editor visual y es el editor ms popular. Vi es un programa que
permite a los usuarios editar tanto archivos de texto como binarios. Los archivos de texto
son aquellos que tienen caracteres alfanumricos, mientras que los binarios contienen
caracteres entendibles por la maquina. A pesar que tambin puede leer archivos binarios,
vi es conocido normalmente como un editor de texto.
Un editor de texto es como un procesador de palabras. Los editores de texto se usan
principalmente para escribir programas, que luego son convertidos en un cdigo
entendible por la maquina a travs de otro programa.
Ed: mientras que vi es un editor que permite visualizar el contenido de un archivo, una
pantalla a la vez, ed es un editor en linea. En cualquier momento, solo puede mostrarse
una linea del archivo.

Sed: es un editor de flujos basado en ed. Puede editar archivos sin intervencin del
usuario. Los comandos de edicin pueden ser pasados como argumentos de linea de
comandos. Los argumentos de linea de comandos son aquellos que se proporcionan
junto con un comando, antes de que el comando sea ejecutado. Estos argumentos van
como entradas sobre las cuales el programa puede trabajar para producir cierta salida.
Sed se utiliza extensivamente en los sistemas Linux. Proporciona mecanismos poderosos
para editar flujos de datos pasados a el como entrada.
Emacs: es un poderoso editor de texto. Siendo C el lenguaje de programacin usado
comnmente en los sistemas Linux, emacs tiene caractersticas incorporadas que
permite dar formato automtico a los programas C, a su vez tambin permite la
bsqueda de patrones y lectura de correo electrnico desde el editor.
A continuacin se presenta una breve discusin sobre las capacidades de programacin y
documentacin disponibles en Linux.

Programacin
Se puede programar a travs del shell y esto se conoce como programacin de shell Linux
proporciona ms de un shell. El Bourne Again Shell (popularmente conocido como bash) es

pg. 18
el shell mas usado. Se aprender acerca de los diferentes shells que proporciona Linux
en la unidad 2: El Sistema Linux. Cada shell en Linux proporciona la capacidad de programacin.
Un programa shell puede invocar las herramientas proporcionadas en Linux a travs de una
sintaxis simple. La programacin de shell es similar a un lenguaje de programacin como C.
pero con una sintaxis diferente.

Combinado con el poder del procesamiento de texto, la programacin en Linux es


extremadamente poderosa. La administracin de sistemas complejos en sistemas operativos
estilo UNIX se hace tpicamente a travs de la programacin del shell. El administrador del
sistema usa la programacin del shell en forma extensiva para administrar y monitorear el
sistema operativo.

Documentacin.
Linux proporciona una documentacin bastante elaborada para todas sus herramientas. Las
herramientas son referidas comnmente como comandos.

El sistema Linux proporciona cierto nmero de comandos. Algunos de ellos son:

clear limpia la pantalla


date muestra la fecha y hora
cal muestra el calendario del mes actual
who muestra los usuarios que estn actualmente conectados al sistema
Sin embargo, dado que los comandos son tan extensos, no es posible para ningn usuario
recordar todos los comandos y la sintaxis asociada con estos.
La documentacin puede ser leda fcilmente con la ayuda de una herramienta controlada por
comandos llamada man.
A continuacin se dan ejemplos algunos comandos de uso en conjunto con man

man clear
man date
man man

Los primeros dos usos del comando man muestran la documentacin para los comandos clear
y date, respectivamente. El tercer uso, muestra la documentacin del mismo comando

pg. 19
man

Caractersticas del Sistema Linux

El sistema Linux ofrece las siguientes caractersticas:


Estabilidad: tiene proteccin de la memoria entre procesos, de manera que uno de ellos
no pueda colgar el sistema.
Multitarea: varios programas (realmente procesos) ejecutndose al mismo tiempo
Multiplataforma: se ejecuta en muchos tipos de CPU, no solo Intel
Multiusuario: varios usuarios en la misma maquina al mismo tiempo (y sin licencias para
todos)
Manejo de la Memoria: la memoria gestiona como un recurso unificado para los
programas de usuario y para cache de disco, de tal forma que toda la memoria libre puede
ser usada para cache y este puede a su vez ser reducido cuando se ejecutan grandes
programas
Interfaz Grafica de Usuario: KDE, GNOME.
Desarrollo de Software: KDevelop (Lenguaje C, C++, Java, PHP, Perl, Phyton, entre
otros)
Trabajo de redes: TCP/IP, incluyendo ftp, telnet, NFS, Greles, etc.
Disponibilidad del cdigo Fuente: todo el cdigo fuente esta disponible, incluyendo el
ncleo completo, todos los drivers, las herramientas de desarrollo y todos los programas
de usuario; adems estn disponibles libremente.

Software disponible en Linux


En Linux se encuentran disponibles varios tipos de software. Algunas de las categoras son:
Aplicaciones
Software de Desarrollo
Software Cientfico
Software de Sistema
Utilitarios
Juegos.
Distribuciones Linux.
Como el cdigo fuente para Linux fue desarrollado esta siendo distribuido gratuitamente,
diferentes compaas han desarrollado sus propias versiones o distribuciones de Linux Cada
una de estas variedades tiene su propio conjunto de caractersticas, tales como
procedimientos de instalacin y administracin, paquetes de software y configuraciones.

pg. 20
Muchas de ellas estn configuradas para un tipo especfico de computadora.
Las 10 distribuciones principales se listan a continuacin:

Mandrake Linux, desarrollado por MandrakeSoft.


Red Hat Linux, desarrollado por Red Hat
Debian GNU/Linux, desarrollado por Debian.
SuSE Linux, desarrollado por SuSe, Inc.
Gentoo Linux, desarrollado por Gentoo Technologies, Inc.
El Proyecto Slackware Linux, desarrollado por Slackware Linux, Inc.
Lycoris Desktop, desarrollado por Lycoris
Beehive Linux, desarrollado por el Equipo Beehive
Caldera OpenLinux, desarrollada por Caldera Internacional, Inc.
Turbolinux, desarrollado por Turbolinux, Inc.
Existen muchas ms, aunque la distribucin mas usada es Red Hat Linux

Linux es un sistema de libre distribucin por lo que puedes encontrar todos los ficheros y
programas necesarios para su funcionamiento en multitud de servidores conectados a Internet.
La tarea de reunir todos los ficheros y programas necesarios, asi como instalarlos en tu sistema y
configurarlo, puede ser una tarea bastante complicada y no apta para muchos. Por esto mismo,
nacieron las llamadas distribuciones de Linux, empresas y organizaciones que se dedican a hacer
el trabajo "sucio" para nuestro beneficio y comodidad.

Ilustracin 5 Distribuciones de Linux

Una distribucin no es otra cosa, que una recopilacin de programas y ficheros, organizados y
preparados para su instalacin. Estas distribuciones se pueden obtener a traves de Internet, los
cuales contendrn todo lo necesario para instalar un sistema Linux bastante completo y en la
mayora de los casos un programa de instalacin que nos ayudara en la tarea de una primera
instalacin. Casi todos los principales distribuidores de Linux, ofrecen la posibilidad de bajarse sus
distribuciones, via FTP (sin cargo alguno).

pg. 21
Existen muchas y variadas distribuciones creadas por diferentes empresas y organizaciones a unos
precios bastantes asequibles (si se compran los CDs, en vez de bajrsela via FTP), las cuales
deberas poder encontrar en tiendas de informtica libreras. En el peor de los casos siempre
puedes encargarlas directamente por Internet a las empresas y organizaciones que las crean. A
veces, las revistas de informtica sacan una edicin bastante aceptable de alguna distribucin.

A continuacion una grfica con todas las distribuciones a lo largo de los ltimos aos. Este grfico
es grande asi que pulsar en el mismo para ver la versin en tamao original.

Ilustracin 6 Distribuciones en los ultimos aos

Si vas a instalar el sistema por primera vez, te recomiendo que pruebes una distribucion LiveCD.
Con una de ellas podras probar Linux sin necesidad de instalarlo. A continuacin puedes encontrar
informacion sobre las distribuciones ms importantes de Linux (aunque no las nicas).

UBUNTU.-Distribucin basada en Debian, con lo que esto conlleva y


centrada en el usuario final y facilidad de uso. Muy popular y con
mucho soporte en la comunidad. El entorno de escritorio por defecto
es GNOME.
http://www.ubuntu.com/

pg. 22
REDHAT ENTERPRISE.-Esta es una distribucin que tiene muy buena
calidad, contenidos y soporte a los usuarios por parte de la empresa
que la distribuye. Es necesario el pago de una licencia de soporte.
Enfocada a empresas.
http://www.redhat.com/

FEDORA.-Esta es una distribucin patrocinada por RedHat y soportada


por la comunidad. Facil de instalar y buena calidad.
http://fedora.redhat.com/

DEBIAN.- Otra distribucin con muy buena calidad. El proceso de


instalacion es quizas un poco mas complicado, pero sin mayores
problemas. Gran estabilidad antes que ltimos avances.
http://www.debian.org/

OpenSuSE.-Otra de las grandes. Facil de instalar. Version libre de la


distribucion comercial SuSE.
http://www.opensuse.org/es/

SuSE LINUX ENTERPRISE.-Otra de las grandes. Muy buena calidad,


contenidos y soporte a los usuarios por parte de la empresa que la
distribuye, Novell. Es necesario el pago de una licencia de soporte.
Enfocada a empresas.
https://www.suse.com/

SLACKWARE.- Esta distribucin es de las primeras que existio. Tuvo un


periodo en el cual no se actualizo muy a menudo, pero eso es historia.
Es raro encontrar usuarios de los que empezaron en el mundo linux
hace tiempo, que no hayan tenido esta distribucion instalada en su
ordenador en algun momento.
http://www.slackware.com/

pg. 23
GENTOO.-Esta distribucin es una de las unicas que incorporaron un
concepto totalmente nuevo en Linux. Es una sistema inspirado en BSD-
ports. Podeis compilar/optimizar vuestro sistema completamente
desde cero. No es recomendable adentrarse en esta distribucion sin
una buena conexion a internet, un ordenador medianamente potente
(si quereis terminar de compilar en un tiempo prudencial) y cierta
experiencia en sistemas Unix.
http://www.gentoo.org/

KUBUNTU.-Distribucin basada en Ubuntu, con lo que esto conlleva y


centrada en el usuario final y facilidad de uso. La gran diferencia con
Ubuntu es que el entorno de escritorio por defecto es KDE.
http://www.kubuntu.org/

MANDRIVA.-Esta distribucin fue creada en 1998 con el objetivo de


acercar el uso de Linux a todos los usuarios, en un principio se llamo
Mandrake Linux. Facilidad de uso para todos los usuarios.
http://www.mandrivalinux.org/

pg. 24
Estndar de Jerarqua de Sistema de Archivos.

Introduccin.
El estndar de jerarqua de archivos (FHS o Filesystem Hierarchy Standard) define los principales
directorios y sus contenidos en GNU/Linux y otros sistemas operativos similares a Unix.
En agosto de 1993 inici un proceso para desarrollar un estndar de sistema de archivos
jerrquico, como un esfuerzo para reorganizar las estructuras de archivos y directorios de
GNU/Linux. El 14 de Febrero de 1994 se public el FSSTND (Filesystem Standard), un estndar de
jerarqua de archivos especfico para GNU/Linux. Revisiones de ste se publicaron el 9 de Octubre
de 1994 y el 28 de Marzo de 1995.

A principios de 1996, con la ayuda de miembros de la comunidad de desarrolladores de BSD, se


fij como objetivo el desarrollar una versin de FSSTND ms detallada y dirigida no solo hacia
Linux sino tambin hacia otros sistemas operativos similares a Unix. Como uno de los resultados
el estndar cambi de nombre a FHS o Filesystem Hierarchy Standard.

El FHS es mantenido por Free Standards Group, una organizacin sin fines de lucro constituida
por compaas que manufacturan sustento fsico (Hardware) y equipamiento lgico (Software)
como Hewlett Packard, Dell, IBM y Red Hat. La mayora de las distribuciones de Linux, inclusive
las que forman parte de Free Software Standards, utilizan este estndar sin aplicarlo de manera
estricta.
La versin 2.3 del FHS, que es la utilizada por CentOS, Fedora, Red Hat Enterprise Linux,
openSUSE y SUSE Linux Enterprise, fue anunciada el 29 de enero de 2004.

Estructura de los directorios general

En el sistema de ficheros de UNIX (y similares), existen varias sub-jerarquas de directorios que


poseen mltiples y diferentes funciones de almacenamiento y organizacin en todo el sistema.[1]
Estos directorios pueden clasificarse en:

Estticos: Contiene archivos que no cambian sin la intervencin del administrador (root), sin
embargo, pueden ser ledos por cualquier otro usuario. (/bin, /sbin, /opt, /boot, /usr/bin...)
Dinmicos: Contiene archivos que son cambiantes, y pueden leerse y escribirse (algunos
slo por su respectivo usuario y el root). Contienen configuraciones, documentos, etc. Para
estos directorios, es recomendable una copia de seguridad con frecuencia, o mejor an,
deberan ser montados en una particin aparte en el mismo disco, como por ejemplo,
montar el directorio /home en otra particin del mismo disco, independiente de la particin
principal del sistema; de esta forma, puede repararse el sistema sin afectar o borrar los
documentos de los usuarios. (/var/mail, /var/spool, /var/run, /var/lock, /home...)

pg. 25
Compartidos: Contiene archivos que se pueden encontrar en un ordenador y utilizarse en
otro, o incluso compartirse entre usuarios.
Restringidos: Contiene ficheros que no se pueden compartir, solo son modificables por el
administrador. (/etc, /boot, /var/run, /var/lock...)
Estructura de Archivos

Existe una estructura de archivos estndar FHS (Filesystem Hierarchy Standard) El estndar de
jerarqua de archivos que es un conjunto de recomendaciones orientadas a la compatibilidad de
aplicaciones, herramientas de administracin y desarrollo entre distintos sistemas. Esta es una de
las estructuras de archivos que deja la instalacin por defecto de CentOS

Pero esa estructura tiene ventajas tales como:

Permitir al software conocer la ubicacin de directorios y archivos instalados; Permitir


al software conocer donde se deben instalar los archivos de un programa
Permitir al usuario conocer dnde encontrar los archivos y directorios de los programas
instalados. En un sistema que cumpla con las especificaciones del FHS, los directorios
del sistema de archivos raz o "/", deben ser suficientes para arrancar, reparar y/o
recuperar el sistema.

Los siguientes directorios son necesarios en el directorio raz o "/":


En este directorio estn los ficheros ejecutables bsicos (bin = binarios) Directorio /boot
Aqu estn los ficheros y directorios de arranque (boot) Directorio /dev
Contiene ficheros de dispositivos. Directorio /etc
Contiene ficheros y directorios de configuracin especficos de tu sistema.

Ilustracin 7 Contenido del directorio /etc

pg. 26
Directorio /bin: En este directorio estn los ficheros ejecutables bsicos (bin = binaries)
Directorio /boot: Aqu estn los ficheros y directorios de arranque (boot)
Directorio /dev: Contiene ficheros de dispositivos.
Directorio /etc: Contiene ficheros y directorios de configuracin especficos de tu sistema.
Directorio /home: Contiene los archivos utilizados por el usuario, documentos, escritorio,
descargas, etc.
Directorio /lib: Bibliotecas compartidas esenciales para los binarios de /bin/, /sbin/ y el
ncleo del sistema.
Directorio /lost+found: Directorio especifico para archivos perdidos. Cada particin tiene
el suyo propio independientemente.
Directorio /media: Puntos de montaje para dispositivos de medios como unidades lectoras
de discos compactos.
Directorio /misc: Abreviacin de miscelnea.
Directorio /mnt: Sistemas de ficheros montados temporalmente.
Directorio/opt: En este directorio se suelen almacenar todos los archivos de una
instalacin fuera de los repositorios como puede ser cuando instalamos un .deb
Directorio/proc: Directorio que contiene informacin sobre diferentes partes del sistema,
cpu, discos, tiempo uptime, irqs, memoria, etc
Directorio/root: Directorio particular del superusuario del sistema ( root )
Directorio/sbin: Contiene archivos ejecutables que por lo general son comandos usados
para la administracin del sistema.
Directorio /srv: Es un directorio que contiene datos especficos que son servidos por el
sistema servidor (SeRVer).
Directorio /sys: Contiene parmetros de configuracin del sistema que se est ejecutando.
Datos referidos al kernel, bus, dispositivos, firmware, fs (filesystem) y otros.
Directorio /tmp: Directorio donde se almacenan los ficheros temporales. Son ficheros que
se eliminan con el apagado del sistema.
Directorio /usr: Este es el espacio compartido de todos los usuarios del sistema. Aqu se
guardan los datos compartidos de usuarios: aplicaciones, libreras, manuales, etc.
Directorio /var: Contiene los datos que estn cambiando continuamente en el sistema
como ficheros de log del sistema, correo, colas de impresin, etc.
El diseo predeterminado del instalador de CentOS, Fedora y Red Hat Enterprise Linux utiliza
4 particiones:

pg. 27
Particin Descripcin
/boot Requiere de 200 MiB a 512 MiB.
/ Si se utiliza el diseo de tres particiones, asignar el resto
del espacio disponible en la unidad de almacenamiento.
Si se van asignar particiones para los directorios
mencionados adelante, se requieren de 3072 MiB a 5120
MiB.
/home En estaciones de trabajo, a esta particin se asigna al
menos la mitad del espacio disponible para
almacenamiento.
Memoria de Memoria diseada para el intercambio de informacin
intercambio (Swap) cuando la memoria ram es insuficiente.

Los siguientes directorios jams debern estar fuera de la particin que corresponda a /, es decir,
jams se deben asignar como particiones separadas:
/etc
/bin
/dev
/lib y /lib64
/media
/mnt
/proc
/root
/sbin
/sys
Para futuras versiones de CentOS, el directorio /var tambin deber estar dentro de la misma
particin que corresponda a /, pues el proceso de arranque, que ser gestionado por Systemd, as
lo requerir.
Otras particiones que se recomienda asignar, son:

Particin Funcin
/usr Requiere al menos 3072 MiB en instalaciones bsicas. Debe
considerarse el equipamiento lgico se planee instalar a futuro. Para
uso general se recomiendan al menos de 5120 MiB, y, de ser posible,
considere un tamao ptimo de hasta 20480 MiB.
/tmp Requiere al menos 350 MiB y puede asignarse hasta 5 GiB o ms,
dependiendo de la carga de trabajo y del tipo de aplicaciones. Si, por

pg. 28
ejemplo, el sistema cuenta con un grabador de DVD, ser necesario
asignar a /tmp el espacio suficiente para almacenar una imagen de
disco DVD, es decir, al menos 4.2 GiB, asumiendo que es de una sola
cara y de densidad simple. Algunas distribuciones de vanguardia
utilizan un disco RAM es decir un RAM disk para este directorio
con la finalidad de mejorar el rendimiento del sistema.
/var Requiere al menos 3072 MiB en estaciones de trabajo sin servicios.
En servidores regularmente se le asigna al menos la mitad del
espacio disponible para almacenamiento.
/usr/local Requiere al menos 3072 MiB en instalaciones bsicas. Debe
considerarse el equipamiento lgico que se planee compilar desde
cdigo fuente, e instalar, a futuro. Al igual que /usr, para uso general
se recomiendan al menos de 5120 MiB, y, de ser posible, considere
un tamao ptimo de hasta 20480 MiB.
/opt Requiere al menos 3072 MiB en instalaciones bsicas. Debe
considerarse el equipamiento lgico de terceros que se planee
instalar a futuro. Al igual que /usr, para uso general se recomiendan
al menos de 5120 MiB, y, de ser posible, considere un tamao
ptimo de hasta 20480 MiB.
/var/lib Si se asigna como particin independiente de /var, lo cual permitira
optimizar el registro por diario utilizando el modo journal para un
mejor desempeo, requiere al menos 3072 MiB en instalaciones
bsicas. Deben considerarse las bases de datos o directorios de
LDAP, que se planeen hospedar a futuro. Recuerde que LDAP es
capaz de mandar mensajes a nivel de PING, de igual manera que es
usado para actualizar el cache de la librera del software.
/var/www o Dependiendo del sistema operativo utilizado, el directorio raz del
/srv/www servidor HTTP Apache puede encontrarse dentro de dos diferentes
rutas. CentOS, Fedora y Red Hat Enterprise Linux utilizan
/var/www, mientras que openSUSE y SUSE Linux Enterprise
utilizan /srv/www. Asignar como particin independiente cualquiera
de stos directorios permite optimizar el registro por diario
utilizando el modo writeback para mejorar el desempeo.
Requiere al menos 3072 MiB en instalaciones bsicas. Deben
considerarse los anfitriones virtuales, aplicaciones y contenido para
ser servido a travs del protocolo HTTP, que se planeen hospedar a
futuro.

pg. 29
Instalacion Centos 7.0

CentOS es una distribucin Linux de clase empresarial derivado de fuentes libremente ofrecidos
al pblico por un destacado proveedor de Amrica del Norte Enterprise Linux. CentOS se ajuste
plenamente a la poltica de redistribucin del proveedor de aguas arriba y aspira a ser 100%
compatible a nivel binario. (CentOS principalmente cambia los paquetes para eliminar marcas
comerciales del proveedor y obras de arte.) CentOS es gratuito. CentOS es desarrollado por un
equipo pequeo pero creciente nmero de desarrolladores del ncleo. A su vez, los
desarrolladores principales estn respaldados por una activa comunidad de usuarios como los
administradores de sistemas, administradores de redes, los usuarios empresariales, gerentes,
colaboradores principales de Linux y los entusiastas de Linux de todo el mundo. CentOS tiene
numerosas ventajas sobre algunos de los proyectos de otros clones, incluyendo: una activa y la
creciente comunidad de usuarios, reconstruida rpidamente, probado y QA'ed paquetes de
erratas, una extensa red de servidores espejos , los desarrolladores que estn tocados y de
respuesta, mltiples vas de apoyo gratuitos, como un Chat IRC , listas de correo , Foros , una
dinmica de preguntas frecuentes . Este sitio hace uso de Javascript. Si su navegador no funciona
con JavaScript, le recomendamos que use Firefox.

Cmo obtener Centos Linux.

La distribucin CentOS Linux se deriva de las fuentes de Red Hat Enterprise Linux (RHEL). Al
igual que RHEL, es una distribucin que se destaca por su estabilidad, robustez, y
simplicidad. Estas son caractersticas muy deseables para un administrador de sistemas, por
ello muchos de nosotros la elegimos como distribucin #1 al momento de instalar un nuevo
servidor GNU/Linux. Su estabilidad y robustez nos dan un buen nivel de confianza, al mismo
tiempo que su administracin es muy simple y ampliamente documentada. Aunque, estas
caractersticas no se ponderan al momento de instalar GNU/Linux en una computadora
personal, sino que se opta por tener un sistema no tan estable, pero con las versiones ms
recientes posibles de cada aplicacin o paquete. Estabilidad y actualizaciones son conceptos
divergentes, ya que la estabilidad de una aplicacin se logra con aos de testeo y
depuracin.
Para descargar la ltima versin de CentOS 7 acceder al sitio oficial de
descargas centos.org/download/, y descargar la imagen ISO del DVD
(isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso) desde uno de los
mirrors.

pg. 30
Instalacin

El instalador de CentOS ha cambiado mucho desde la versin anterior. A m personalmente


no me gust, ya que no es el clsico instalador secuencial donde las tareas se realizan de
una por vez, sino que trata de realizar tareas en paralelo para acelerar el proceso. Aunque
esta forma de trabajar puede inducirnos accidentalmente a saltearnos pasos de
configuracin.
Luego de bootear el sistema con el DVD de instalacin, se debe seleccionar la opcin
"Install CentOS 7":

Seleccionar el idioma durante la instalacin:

pg. 31
Lo primero que observamos al iniciar el instalador es un panel de tareas de instalacin. Estas
tareas se pueden realizar en cualquier orden, y algunas no son obligatorias, por lo que es
posible olvidarse o saltearse alguna accidentalmente.

pg. 32
Voy a proceder a realizar cada una de las tareas de configuracin desde arriba hacia abajo,
comenzando por la configuracin regional, accediendo al botn "DATE & TIME":

pg. 33
Seleccionar la ubicacin geogrfica (por ejemplo Buenos Aires, equivalente a GMT-3) y
presionar "Done" para volver al panel. Luego, configurar la disposicin de teclado
accediendo a "KEYBOARD":

pg. 34
Con el botn "ms" (+) agregar el teclado, por ejemplo "Spanish; Castillian (Spanish)":

pg. 35
Presionar "Add" y eliminar la configuracin de teclado por defecto ("English") con el botn
"menos" (-):

pg. 36
Presionar "Done" para confirmar los cambios y acceder al botn "LANGUAGUE SUPPORT"
para instalar los idiomas:

pg. 37
Adems del idioma ingls por defecto, agregar cualquier otro idioma necesario, por ejemplo
"Espaol (Espaa)" y "Espaol (Argentina)":

pg. 38
Presionar "Done" una vez ms para aceptar los cambios y volver al panel. Con esto se ha
finalizado la configuracin inicial ("LOCALIZATION").
A continuacin, acceder al botn "SOFTWARE SELECTION", para seleccionar el software a
instalar. CentOS posee diferentes "sabores" de acuerdo al uso que se le vaya a dar al sistema,
como por ejemplo servidor Web, host de mquinas virtuales, estacin de trabajo, etc. En
este caso voy a seleccionar "KDE Plasma Workspaces" ya que este artculo apunta a una
instalacin bsica de un sistema de escritorio. Si se instala cualquier tipo de versin para
servidores, siguiendo la filosofa de CentOS y GNU/Linux en general, muy seguramente no
se instalar ningn entorno grfico, aunque an no he probado este nuevo instalador. Cabe
destacar que el entorno de escritorio por defecto de las versiones "desktop" de CentOS es
GNOME 3. Como ex-usuario de GNOME 2, decid cambiarme a KDE, pues el nuevo diseo
de GNOME no me agrada. Aunque esto es cuestin de gustos.
Seleccionar "KDE Plasma Workspaces" para instalar CentOS con entorno de escritorio KDE.
Luego seleccionar los agregados opcionales que aparecen tildados en la siguiente captura,
de lo contrario el sistema quedar muy "pelado":

pg. 39
Al finalizar, presionar "Done" para volver al panel.
En la parte final de la configuracin de la instalacin se debe especificar el medio donde se
instalara el sistema, accediendo al botn "INSTALLATION DESTINATION":

pg. 40
Seleccionar un medio y un mtodo de particionado. En este punto se puede optar por
diferentes mtodos de particionado automticos y guiados. En este artculo voy a explicar
cmo utilizar un particionado manual. Para ello se debe especificar la opcin "I will configure
partitioning" y seleccionar un medio. Inmediatamente se abre una herramienta de
particionado muy diferente al anterior GParted. En la parte inferior se observa el espacio
disponible, y el espacio total. Con los botones '+' y '-' se agregan y eliminan particiones. A
modo de ejemplo voy a crear dos particiones, una para todo el sistema, y otra para la
memoria de intercambio (swap):

pg. 41
Presionar el botn '+' y especificar el punto de montaje y el tamao (agregar una letra 'g' al
final para indicar Gigabytes):

pg. 42
Luego indicar el formato del sistema de archivos, por ejemplo "ext4":

pg. 43
Repetir los pasos para el resto de las particiones:

pg. 44
En el panel de la izquierda se muestra cmo quedar la tabla de particiones:

pg. 45
Por supuesto, el esquema de particionado depender del uso de cada sistema. Siempre se
recomienda separar en filesystems diferentes los directorios /var, /usr y /home, como
mnimo. Dependiendo de cada tipo de sistema existirn ms o menos particiones.
Para crear la tabla de particiones, presionar "Done". El sistema advierte todos los cambios
que se producirn a nivel filesystem:

pg. 46
Aceptar los cambios para volver al panel. En este punto slo esta configurar la red, pero la
ansiedad me jug una mala pasada y me olvid ese paso accidentalmente. Aunque es algo
muy sencillo, ya que CentOS utiliza la herramienta NetworkManager.

pg. 47
Luego de configurar la red, presionar el botn "Begin Installation" para comenzar la
instalacin:

pg. 48
Aqu es donde se nota el paralelismo del instalador. Mientras el mismo comienza con sus
tareas, es posible configurar la contrasea de root y crear un usuario adicional. Presionar
"ROOT PASSWORD" para indicar la contrasea de superusuario:

pg. 49
Escoger una contrasea fuerte (se observa en la captura que he elegido una contrasea
dbil, por ello la advertencia) y volver al men anterior para crear un usuario ("USER
CREATION"):

pg. 50
Como en todo sistema GNU/Linux, por seguridad es altamente recomendable iniciar sesin
con un usuario non-root (no administrador), sobre todo si se trata de un sistema de
escritorio. Esto evita la mayora de los problemas de seguridad que existen con otros
sistemas, notablemente Windows. Indicar un nombre completo, nombre de usuario, y
contrasea. Presionando el botn "Advanced" es posible indicar parmetros adicionales
como membresa de grupo, directorio home (por defecto crea uno dentro de /home, cuyo
nombre coincide con el del usuario):

pg. 51
Si se desea que el usuario pueda ejecutar tareas con permisos elevados mediante sudo,
agregarlo al grupo "wheel". Volver y esperar que finalice la instalacin de software:

pg. 52
Al finalizar la instalacin, presionar el botn "Reboot" para reiniciar:

pg. 53
Una vez que reinicia, lo primero que se debe hacer es aceptar la licencia (me olvid esta
captura).
Respecto a este tema hay mucha tela para cortar. CentOS es ahora "propiedad" de Red Hat,
ergo tiene que respetar la ley de regulacin de exportaciones, puntualmente todo lo
referente al soporte a naciones embargadas:
By downloading CentOS software, you acknowledge that you understand all of the
following: CentOS software and technical information may be subject to the U.S. Export
Administration Regulations (the "EAR") and other U.S. and foreign laws and may not be
exported, re-exported or transferred (a) to any country listed in Country Group E:1 in
Supplement No. 1 to part 740 of the EAR (currently, Cuba, Iran, North Korea, Sudan &
Syria); (b) to any prohibited destination or to any end user who has been prohibited from
participating in U.S. export transactions by any federal agency of the U.S. government;
or (c) for use in connection with the design, development or production of nuclear,
chemical or biological weapons, or rocket systems, space launch vehicles, or sounding
rockets, or unmanned air vehicle systems. You may not download CentOS software or
technical information if you are located in one of these countries or otherwise subject to
these restrictions. You may not provide CentOS software or technical information to

pg. 54
individuals or entities located in one of these countries or otherwise subject to these
restrictions. You are also responsible for compliance with foreign law requirements
applicable to the import, export and use of CentOS software and technical information.
http://centos.org/legal/#export-regulations
Digamos que si un norteamericano hace esta misma gua y un cubano la lee, a los ojos del
gobierno yankee es un terrorista. Afortunadamente yo soy argentino y soy libre para escribir
esta gua, y que la lea quien quiera.
Ya lo s, da asco, no queda otra que aceptarla o abandonar CentOS (por qu no Scientific
Linux?).
La misma controversia se gener alrededor de Fedora.
Luego de aceptar la, nefasta licencia, es hora de configurar Kdump, una herramienta que
recopila informacin til en caso de un kernel crash. Como confo en que nunca va a suceder
un crash del kernel, y no me gusta desperdiciar memoria, desactivo Kdump:

Si se hacen cambios en Kdump es necesario reiniciar el sistema:

pg. 55
Al iniciar nuevamente, se accede por primera vez a la pantalla de login, muy bonita para mi
gusto:

pg. 56
Y por primera vez, el escritorio de KDE:

pg. 57
Conceptos importantes, hay que recordar que siempre hay que distinguir los distintos
dispositivos en las instalaciones:

/dev = dispositivo
/sda = disco duro
/st0 = dispositivo de cinta grabable
/nst0 = dispositivo de cinta en modo no regrabable

Y los tipos de particiones, anteriores, actuales y los mas importantes:

ext2 - Second Extended Filesystem es un consolidado y maduro sistema de archivos para


GNU/Linux muy estable. Uno de sus inconvenientes es que no tiene apoyo para el registro
(journaling) (vase ms abajo) o las barreras. La falta de registro por diario (journaling) puede
traducirse en la prdida de datos en caso de un corte de corriente o fallo del sistema. Tambin
puede no ser conveniente para las particiones root (/) y /home, porque las comprobaciones del
sistema de archivos pueden tomar mucho tiempo.

pg. 58
Un sistema de archivos ext2 puede ser convertido a ext3.
ext3(soporta Jornaling) - Third Extended Filesystem es, esencialmente, el sistema de archivos
ext2 pero con el apoyo de journaling y la escritura de barreras. Es compatible con ext2, bien
probado, y extremadamente estable.
ReiserFS(soporta Jornaling) - Sistema de archivos con journaling y altas prestaciones de Hans
Reiser (V3) que utiliza un mtodo muy interesante de transferencia de datos basado en un
algoritmo creativo e innovador. ReiserFS es anunciado como muy rpido, especialmente cuando
se trata de muchos archivos pequeos. ReiserFS es rpido en dar formato, sin embargo,
comparativamente lento en el montaje. Muy maduro y estable. ReiserFS (V3) no est siendo
activamente desarrollado en este momento. Generalmente considerado como una buena opcin
para /var.
XFS (soporta Jornaling) - Primeros sistemas de archivos con journaling desarrollado
originalmente por Silicon Graphics para el sistema operativo IRIX y portado despus a
GNU/Linux. Proporciona un rendimiento muy rpido en los archivos y sistemas de archivos
grandes y es muy rpido en el formato y montaje. Pruebas de benchmark comparativa han
demostrado que es ms lento cuando trata con muchos archivos pequeos. XFS es muy maduro
y ofrece capacidad de desfragmentacin en lnea, adems este permite soporte para ACLs sin
opciones de montado especial.

Felicidades Tu Servidor ha sido instalado de manera satisfactoria!!!!

Hay que tener en cuenta la importancia de recordar lo siguiente:

1. Para que vamos a utilizar nuestro servidor, es decir para administracin de pginas web,
administracin de puntos de venta, administracin corporativa, etc.
2. El ciclo de vida que manejaremos dependiendo del tipo de instalacin que tendremos y
el cual es vital para este punto.
3. El Hardware que se maneja y el volumen de usuarios a los cuales se les dara soporte con
este.
Una vez terminando de instalar el servidor por ahora solo hacermos una correccin al server para
poder tener salida a internet y este es realizando una correccin al archivo que esta ubicado en
la siguiente ruta

Vi /etc/sysconfig/network-scripts/ifcfg-eth0

Lo cual nos abrir un archive con la siguiente estructura:

DEVICE="eth0"
NM_CONTROLLED="yes"
ONBOOT="yes"

pg. 59
HWADDR=08:00:27:89:15:BE
TYPE=Ethernet
BOOTPROTO=dhcp

La opcin ONBOOT, debe estar en no, con la tecla i, podremos insertar la modificacin, entrares
y lo modificaremos a yes y saldremos del archivo con :wq y reiniciaremos el sistema.

Tenga cuidado de no modificar nada mas en el archivo pues no tendr acceso a internet.

pg. 60
Editor de texto VI y VIM

Vi (Visual) es un programa informtico que entra en la categora de los editores de texto. Pues a
diferencia de un procesador de texto no ofrece herramientas para determinar visualmente cmo
quedar el documento impreso. Por esto carece de opcin como centrada o justificacin de
prrafos, pero permite mover, copiar, eliminar o insertar caracteres con mucha versatilidad. Este
tipo de programas es frecuentemente utilizado por programadores para escribir cdigo fuente de
software.

Vi fue originalmente escrito por Bill Joy en 1976, tomando recursos de ed y ex, dos editores de
texto para Unix, que trataban de crear y editar archivos, de ah, la creacin de vi.
Hay una versin mejorada que se llama Vim, pero Vi es un editor de texto que se encuentra en
casi todo sistema de tipo Unix, de forma que conocer rudimentos de Vi es una salvaguarda ante
operaciones de emergencia en diversos sistemas operativos.

Vim (del ingls Vi IMproved) es una versin mejorada del editor de texto vi, presente en todos los
sistemas UNIX.
Su autor, Bram Moolenaar, present la primera versin en 1991, fecha desde la que ha
experimentado muchas mejoras. La principal caracterstica tanto de Vim como de Vi consiste en
que disponen de diferentes modos entre los que se alterna para realizar ciertas operaciones, lo
que los diferencia de la mayora de editores comunes, que tienen un solo modo en el que se
introducen las rdenes mediante combinaciones de teclas o interfaces grficas.
La mejor forma de entender estos conceptos es simplemente usando vi para editar un archivo de
prueba.

La sintaxis para vi es: vi


Nombrearchivo
donde nombrearchivo es el nombre del archivo que quieres editar.

As se inicia el editor y, como el fichero no existe todava, lo crea para ser editado. El editor est
ahora en modo de comandos esperando por un comando.

Partamos vi tipeando [xxx]%


vi prueba
Ejemplo

lo cual editar el archivo prueba. Deberas ver algo como esto:

~
~
~

pg. 61
~
~
~
"prueba" [New file]

para comenzar a insertar texto usa la tecla i

Mientras ests insertando texto, puedes tipear cuantas lneas quieras (presionando [Enter]
despus de cada una, por supuesto), y puedes corregir los errores.
Para finalizar el modo de edicin, y volver al modo de comandos, presiona [esc]. Mientras ests
en modo de comandos, puedes usar las teclas de flechas para moverte
por todo el archivo. Aqu, como tenemos solo una lnea de texto, al tratar de usar las
flechas para subir y para bajar vi har un pitido.

Las siguientes teclas controlar el movimiento del cursor.

k arriba
j abajo
h izquierda
l derecha

Modo de entrada de texto (aadir, insertar)

a aade texto a partir del carcter en que est situado el cursor i inserta texto a partir de la
posicin del cursor
o inserta una lnea debajo de la posicin del cursor
O inserta una lnea encima de la posicin del cursor

pg. 62
Borrando y cambiando texto

Los cinco comandos ms utilizados para alterar el texto son x borra el carcter en el cursor
r sustituye el carcter en el cursor
dd borra la lnea en la que est el cursor
:s/palabrainicial/palabrafinal/c cambia de a una de las coincidencias
:s/palabrainicial/palabrafinal/g cambia todas las coincidencias
Estos cinco comandos son ejecutados en el modo de comandos, y vuelven al modo de comandos
despus de ejecutarse.

Deshaciendo cambios
Hay veces que se realizan cambios y nos damos cuenta inmediatamente que hemos cometido un
error. El editor vi facilita mecanismos para deshacer acciones de comandos previos.

El comando u deshace el comando previo.

El comando U deshace todos los cambios realizados en la lnea actual.

Guardando cambios y permaneciendo en vi


Es muy recomendable guardar los cambios que se van realizando de una forma regular. Para ello
se utiliza

:w

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

:w nuevo_fichero2

Abandonando vi
Para dejar vi se utiliza;

ZZ Guarda los cambios en el fichero original, y vuelve al intrprete de comandos


:wq Igual que ZZ
:q! Abandona el editor, no guarda los cambios, y vuelve al intrprete de comandos

pg. 63
Comandos adicionales para posicionamiento del cursor

Adems de las teclas h, j, k, l existen cuatro ms:


b mueve el cursor al comienzo de la palabra anterior e mueve el cursor al final de la palabra
siguiente
0 mueve el cursor al comienzo de la lnea (cero)
$ mueve el cursor al final de la lnea

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

Para ficheros muy largos, se puede ir a una lnea del texto 3000G a a la lnea nmero 3000
Para posicionar el curso en la ltima lnea del fichero, teclea /G/
Para posicionar el cursor al comienzo del fichero, teclea 1G
El siguiente comando muestra el nmero de lnea actual control-g

Bsqueda

Otro mtodo de posicionarse dentro de un fichero es buscando una cadena de caracteres. En el


modo de comandos, cualquier cadena de caracteres precedida por / significa el comando de
bsqueda hacia adelante. El cursor se posiciona en la primera ocurrencia de dicha cadena.

El comando n busca hacia adelante la siguiente ocurrencia. Para buscar hacia atrs, se utiliza el
comando?

Borrar texto
Ya se vio anteriormente el comando dd para borrar la lnea actual.
El comando dw borra la palabra actual. Ntese que el comando de borrado comienza por d,
seguido por el mbito de aplicacin (d para una lnea, w para una palabra (word en ingls)).

Quitar y poner
Cuando se borra algo, es almacenado en un buffer temporal. El contenido de este buffer puede
ser accedido y 'puesto' o pegado en cualquier sitio del texto.
Para recuperar el ltimo texto borrado, se usa el comando p

Resumen y algo mas


El presente editor consta de diferentes comandos, los cuales se dan a conocer en el siguiente
resumen:

pg. 64
vi [archivo].

Movimientos bsicos:
=> Un espacio a la izquierda. j => Una lnea hacia abajo.
k => Una lnea hacia arriba.
l => Un espacio a la derecha.
$ => Mueve al final de la lnea actual.
+ => Comienzo de la lnea siguiente.
- => Comienzo de la lnea anterior. 0 => Comienzo de la lnea actual.

Control de despliegue:

CTRL-d => Deslizar hacia adelante.


CTRL-u => Deslizar hacia atrs.
CTRL-f => Pantalla siguiente.
CTRL-b => Pantalla anterior
CTRL-l => Redibuja la pantalla.
G => Moverse al final del archivo.

Comandos para agregar textos:


A => A final de la lnea. i => Antes del cursor.
I => Al principio de la lnea.
O => Abre una lnea por encima. O
=> Abre una lnea por debajo.

Comandos para eliminar y cambiar texto:


dd => Elimina lnea.
cc => Cambiar lnea.
D => Elimina hasta el final de lnea.
C => Cambiar hasta final de lnea
x => Elimina el carcter del cursor.
r => Cambia el carcter del cursor.

Comandos sobre palabras:


cw => Cambiar palabra.
dw => Elimina palabra.
:s/palabrainicial/palabrafinal/c cambia de a una de las incidencias
:s/palabrainicial/palabrafinal/g cambia todas las incidencias
e => Mueve cursor a final de palabra.
w => Mueve cursor a siguiente palabra.

pg. 65
Comandos de bsqueda:
/ => Bsqueda hacia adelante.
? => bsqueda hacia atrs.
n => Siguiente ocurrencia.
N => Posterior ocurrencia.
:set nu => mostrar nmeros de lnea

Comandos de edicin avanzada:


u => Deshacer cambio ms reciente.
U => Recupera todos los cambios de una lnea.
p => Coloca el contenido del buffer a la derecha del cursor.
P => Coloca el contenido del buffer a la izquierda del cursor.
y => Copia los carcteres comenzando en el cursor en el buffer.
Y => Copia la lnea actual completa en el buffer.

Comandos de control:

:w => Guarda sin salir.


:wq => Guarda y sale.
:q => Abandona si no hay modificaciones.
:q! => Abandona an con los cambios.
:nmero => Ir a la lnea nmero.
ZZ => Guarda y sale.

Otros
J unir dos lneas en una
C reemplaza caracteres
C o c$ reemplaza hasta el fin de lnea
c0 reemplaza desde el comienzo de lnea
BS borrar caracter hacia la izquierda
:set cambio de opciones
:set nonu no mostrar nmeros de lnea
:set showmode mostrar modo actual de vi
:set noshowmode no mostrar modo actual de vi

pg. 66
Nota: Los comandos en maysculas y minsculas alteran el resultado (cuidado)
Para volver de nuevo al Modo de Comandos, lo cual es necesario, por ejemplo, para mover el
cursor, presiona la tecla de escape o <esc>. Si no recuerdas en qu modo ests presiona <esc>: si
estabas en Modo de Insercin, ahora pasas al Modo de Comandos; si estabas en Modo de
Comandos, vi emitir un pitido y te dejar en Modo de Comandos.
Un editor de texto es simplemente un programa que se usa para editar ficheros que contengan
texto. Aunque hay muchos editores disponibles, el nico que vas a encontrar seguro en todos los
sistemas UNIX es vi (el "editor visual").

Existe un editor vi ampliado llamado vim que contiene facilidades adicionales, as como diversas
versiones del vi original. En todos los casos, el conjunto de comandos bsicos es el mismo.

Ejercicio:
Instala VI y VIM
Generamos un usuario nuevo y que no tenga privilegios:
# useradd m pruebavi
Asignamos un password a nuestro usuario
# passwd pruebavi
Nos cambiamos al usuario
# su l pruebavi
Creamos un documento nuevo con el comando vim
$ vim nuevo.txt

~
~
~
~
~
~
"nuevo.txt" [New file]

Una vez abierto el documento presionamos la tecla i para insertar texto nuevo
~

pg. 67
~
~
~
~
-INSERT-

Una vez que presiones i, aparecer insertar en la interface, esto indica que podemos editar el
archivo creado, una vez hecho esto escribiremos la frase Linux el mejor sistema y pulsamos enter,
a continuacin escribiremos El megor sistema que conosco este texto tiene errores
ortogrficos, escrbalo de manera errnea pues el ejercicio es para realizar dichas correcciones
utilizando el editor VIM.

~Linux el mejor sistema


~El megor sistema que conosco
~
~
~
-INSERT-
Ahora posicionese sobre la malabra megor sobre la letra g y presione shift + r y acontinuacion
aparecer la opcin remplazar, pulse la letra j y observe como se reemplaza por la letra g, repita
el procedimiento y corrija la letra z por la s en la palabra conosco
~ Linux el mejor sistema
~ El megor sistema que conosco
~
~
~
~
-REMPLAZAR-
Precione la tecla Esc seguido de : y la letra w para guardar los cambios.
~ Linux el mejor sistema
~ El mejor sistema que conozco
~
~
~
~
:w
Al pulsar enter notara un mensaje que dice que los cambios han sido realizados.
Vuelva a pulsar: (dos puntos) y luego escriba otro.txt pulse enter y ahora notara que se guardo el

pg. 68
archivo con el nombre otro.txt
~ Linux el mejor sistema
~ El mejor sistema que conozco
~
~
~
~
"otro.txt" [New file]
Vuelva a pulsar i, de nuevo aparecer el mensaje de INSERTAR

~ Linux el mejor sistema


~ El mejor sistema que conozco
~
~
~
~
-INSERT-
Escriba lo siguiente:
~ Linux el mejor sistema
~ El mejor sistema que conozco
~Hoy es un dia aburrido
~conozco solo gente aburrida
~mi novia es muy aburrida
~
-INSERT-
Ahora pulse esc, seguido pulse: (dos puntos) y por ultimo escriba lo siguiente:
%s/aburrid/divertid/g
~ Linux el mejor sistema
~ El mejor sistema que conozco
~Hoy es un dia aburrido
~conozco solo gente aburrida
~mi novia es muy aburrida
~
%s/aburrid/divertid/g
Pulse enter y observara lo siguiente:
~ Linux el mejor sistema
~ El mejor sistema que conozco
~Hoy es un dia divertido

pg. 69
~conozco solo gente divertida
~mi novia es muy divertida
~
3 sustituciones en 3 lineas

En este ejercicio, el smbolo % indicaba que se aplicara un procedimiento a todo el archivo,


adems de la lnea misma, la letra s indicaba que se realizara la bsqueda de la cadena de
caracteres mal definida despus de la diagonal (/) por la cadena de caracteres aburrid en
toda la lnea, indicado por la letra g.

A continuacin, posiciones el cursor de teclado utilizando las flechas del teclado hasta el primer
carcter de la primera lnea:
~Linux el mejor sistema
~El mejor sistema que conozco
~Hoy es un dia divertido
~conozco solo gente divertida
~mi novia es muy divertida
~
Pulsamos la letra d en dos ocaciones para ver como se elimina la primera lnea del archivo
~El mejor sistema que conozco
~Hoy es un dia divertido
~conozco solo gente divertida
~mi novia es muy divertida
~
Ahora pulsamos la tecla p para pegar la lnea
~El mejor sistema que conozco
~Hoy es un dia divertido
~conozco solo gente divertida
~mi novia es muy divertida
~Linux el mejor sistema
~
En este caso usted podr ver que se pega debajo del texto o donde tenga el cursor, lo cual quiere
decir que hay que posicionarse en la lnea correcta para pegar lo copiado
Ahora posicinese en la primera lnea del texto y va a oprimir 3 y despus dd y podra observar
como se copiaron ahora las 3 lineas consecutivas a partir de donde esta posicionado el texto y
podra pegar de la misma manera
~conozco solo gente divertida
~mi novia es muy divertida
~

pg. 70
Ahora vuelva a pulsar p y se restauran las tres lneas principales pero si pulsamos p de nueva se
volvern a pegar las lneas copiadas esto podra pasar n cantidad de veces segn sea el caso
~conozco solo gente divertida
~mi novia es muy divertida
~Linux el mejor sistema
~El mejor sistema que conozco
~Hoy es un dia divertido
~Linux el mejor sistema
~El mejor sistema que conozco
~Hoy es un dia divertido
~Linux el mejor sistema
~El mejor sistema que conozco
~Hoy es un dia divertido
~
Ahora procedemos a salir del archivo guardando los datos, pulsaremos: wq seguido de enter
~conozco solo gente divertida
~ mi novia es muy divertida
~ Linux el mejor sistema
~ El mejor sistema que conozco
~ Hoy es un dia divertido
~ Linux el mejor sistema
~ El mejor sistema que conozco
~ Hoy es un dia divertido
~ Linux el mejor sistema
~ El mejor sistema que conozco
~ Hoy es un dia divertido
~

: wq

Vuelva a editar el archivo pulsando vi nuevo.txt y pulsaremos : /divertid y veremos como se raliza
una bsqueda sombreando las cadenas de coincidencias.

~conozco solo gente divertida


~ mi novia es muy divertida
~ Linux el mejor sistema
~ El mejor sistema que conozco
~ Hoy es un dia divertido
~ Linux el mejor sistema
~ El mejor sistema que conozco

pg. 71
~Hoy es un dia divertido
~ Linux el mejor sistema
~ El mejor sistema que conozco
~Hoy es un dia divertido
~
/divertid

Para cancelar el resaltado de los resultados, pulse la combinacin de teclas: nohl:


Si pulsamos shift + a, se realizara la insercin, pero al final de la lnea.
Pulse Esc y seguido la tecla de la letra o y observara como se inicializa la funcin insertar pero
en una nueva lnea.

~ conozco solo gente divertida


~ mi novia es muy divertida
~
~ Linux el mejor sistema
~ El mejor sistema que conozco
~ Hoy es un dia divertido
~ Linux el mejor sistema
~ El mejor sistema que conozco
~ Hoy es un dia divertido
~ Linux el mejor sistema
~ El mejor sistema que conozco
~ Hoy es un dia divertido
~
-INSERT-
Pulse nuevamente la tecla <Esc> y en seguida la combinacin dG (d, luego SHIFT+G). Notar que
elimina todo el contenido del texto desde la posicin del cursor hasta el final del archivo:
~conozco solo gente divertida
~mi novia es muy divertida
~
9 lineas menos
Precione: u y observara como se cancela la modificacin hecha:

~ conozco solo gente divertida


~ mi novia es muy divertida
~
~ Linux el mejor sistema
~ El mejor sistema que conozco

pg. 72
~ Hoy es un dia divertido
~ Linux el mejor sistema
~ El mejor sistema que conozco
~ Hoy es un dia divertido
~ Linux el mejor sistema
~ El mejor sistema que conozco
~ Hoy es un dia divertido
~
9 Lineas ms
Una vez verificado esto guardamos el archivo y salimos de la edicin.
Para mayor informacin revisar la documentacin y la orientacin de comandos incluida en este
manual sobre VI.
Ajustes y Optimizacion del Servidor.
A partir de este momento se pretende realizar un checklist con los puntos importantes a
configurar en el server para ponerlo a punto para cualquier entrega.
Localizacin

La internacionalizacin es el proceso de disear software de manera tal que pueda adaptarse a


diferentes idiomas y regiones sin la necesidad de realizar cambios de ingeniera ni en el cdigo.
La localizacin es el proceso de adaptar el software para una regin especfica mediante la adicin
de componentes especficos de un locale y la traduccin de los textos, por lo que tambin se le
puede denominar regionalizacin. No obstante la traduccin literal del ingls es la ms
extendida.1

Es una prctica comn en el idioma ingls (sobre todo en el mbito de la computacin),


abreviar internationalization con elnumernimo "i18n". Ello se debe a que entre la primera i y la
ltima ene de dicha palabra hay 18 letras. Lo mismo sucede con localization, que se abrevia
"L10n". La L mayscula se utiliza para distinguirla de la i minscula de i18n.
Algunas empresas, como Microsoft e IBM, usan el trmino globalizacin para referirse a la
combinacin de internacionalizacin y localizacin. Globalizacin puede tambin abreviarse con
el numernimo "g11n".
Internacionalizacin y localizacin son dos de los conceptos ms en boca en la moderna industria
del lenguaje.

La localizacin del sistema se logra mediante la edicin de 2 archivos localizados en las rutas:

/etc/sysconfig/i18n:

/boot/grub/menu.lst

pg. 73
En ambos hay que buscar la configuracin LANG="es_ES.UTF-8 y hay que modificarla por
LANG=es_MX.UTF-8

Esto nos dar la virtud de modificar la configuracin de espaol de Espaa por la configuracin de
espaol de Mxico.
Una vez realizada esta tarea se realizara un reincio de sistema para hacer los cambios de manera
permanente con el comando:
#reboot y enter.

Nivel de Ejecucin 1 o monousuario

Un sistema operativo monousuario (de mono: 'uno'; y usuario) es un sistema operativo que slo
puede ser ocupado por un nico usuario en un determinado tiempo. Ejemplo de sistemas
monousuario son las versiones domsticas de Windows. Administra recursos de memoria
procesos y dispositivos de las PC'S.

Es un sistema en el cual el tipo de usuario no est definido y, por lo tanto, los datos que tiene el
sistema son accesibles para cualquiera que pueda conectarse.
En algunos sistemas operativos se accede al sistema reproductor de un usuario nico que tiene
permiso para realizar cualquier operacin. Este es el caso de los sistemas operativos ms antiguos
como MS-DOS y algunos ms recientes como la serie Windows 95/98/Me de Microsoft o MacOS
(antes de Mac OS X) de Macintosh. En estos sistemas no existe una diferenciacin clara entre las
tareas que realiza un administrador del sistema y las tareas que realizan los usuarios habituales,
no disponiendo del concepto de multiusuario, un usuario comn tiene acceso a todas las
capacidades del sistema, pudiendo borrar, incluso, informacin vital para su funcionamiento. Un
usuario malicioso (remoto o no) que obtenga acceso al sistema podr realizar todo lo que desee
por no existir dichas limitaciones.
Nivel de ejecucion 1 o s (single), es el nivel de ejecucion de monousuario, sin acceso a servicios
de red, este nivel es regularmente utilizado en tareas de mantenimiento del sistema y el usuario
que ejecuta es root, permite reparar problemas en el sistema.

La manera de acceder al sistema en modo monousuario es el siguiente:


Cuando se inicia el sistema lo primero que carga es el grub, donde se encuentran las tablas de
booteo, en caso de tener mas sistemas seria la parte donde se elegiria el sistema a iniciar, en
nuestro caso que solo tenemos un sistemas iniciara un contador de 3 segundo, para lo cual
detendremos este conteo presionando cualquier tecla menos enter, porque esto accesaria al
sistema de manera inmediata:

pg. 74
En este punto seleccionaremos la letra p para poder introducer el password del grub que se
ingreso en la instalacion inicial:

pg. 75
Se pone el password:

A continuacion presionaremos la tecla e para realizar la edicion del commando de booteo:

pg. 76
Seleccionamos la linea que del kernel de inicio:
Recuerde estas tres funciones del booteo o arranque
Lo primero es que el kernel o nucleo busca y monta el initrd
Linuxrc carga los modulos para montar el file system
El gestor de arranque carga el kernel e inintrd en la memoria.

Editamos esta de igual forma y al final de la linea ponemos un espacio y un numero 1,


presionamos enter y nos regresara a la lista de configuraciones nuevamente, estando en esta
presionamos b como indica el menu para realizar el booteo:

pg. 77
Y esto nos dara acceso al sistema en nivel monousuario, para realizar las tareas que impliquen
tener este tipo de nivel.

Gestion de memoria Swap


La memoria es uno de los recursos ms valiosos que gestiona el sistema operativo. Uno de
los elementos principales que caracterizan un proceso es la memoria que utiliza. sta est
lgicamente separada de la de cualquier otro proceso del sistema (excepto los threads de un
mismo proceso que comparten normalmente la mayor parte de la memoria que tienen
asignada). Un proceso no puede acceder, al espacio de memoria asignado a otro proceso, lo
cual es imprescindible para la seguridad y estabilidad del sistema. El direccionamiento es una
parte importante de la gestin de memoria, puesto que influye mucho en la visin del mismo por
parte de un proceso, como en el aprovechamiento del hardware y el rendimiento del sistema.
En Linux, adems, un proceso tiene dos espacios de memoria: el espacio de memoria del
usuario, nico para ese proceso, y el espacio de memoria del kernel, idntico en todos los
procesos.
Objetivos del sistema de gestin de memoria:
Ofrecer a cada proceso un espacio lgico propio.
Proporcionar proteccin entre procesos.
Permitir que los procesos compartan memoria.
Dar soporte a las distintas regiones del proceso.
Maximizar el rendimiento del sistema.
Proporcionar a los procesos mapas de memoria muy grandes.

pg. 78
Espacio de direcciones de un proceso
Conjunto de direcciones a las que hace referencia.

Los espacios de direcciones involucrados en la gestin de la memoria son de tres tipos:


A. Espacio de direcciones fsicas. Las direcciones fsicas son aquellas que referencian
alguna posicin de la memoria fsica. Se obtienen despus de aplicar una
transformacin por parte de la MMU (Unidad de Manejo de Memoria).
B. Espacio de direcciones lgicas o virtuales. Las direcciones lgicas son las direcciones
utilizadas por los procesos. Sufren una serie de transformaciones, realizadas por el
procesador (la MMU), antes de convertirse en direcciones fsicas.
C. Espacio de direcciones lineales. Las direcciones lineales se obtienen a partir de las
direcciones lgicas tras haber aplicado una transformacin dependiente de la
arquitectura. En Linux las direcciones lgicas y lineales son idnticas. En el i386, es
el nombre que reciben las direcciones tras haber aplicado la tcnica de segmentacin.
En la segmentacin, tras haber realizado las correspondientes comprobaciones de
seguridad, se le suma a la direccin lgica una cierta direccin base, obteniendo as
la direccin lineal. A partir del kernel de Linux 2.2.x, las direcciones base de casi todos
los segmentos es 0, y por lo tanto, las direcciones lineales y las lgicas son las mismas.

La unidad de manejo de memoria (MMU) es parte del procesador. Sus funciones son:

a) Convertir las direcciones lgicas emitidas por los procesos en direcciones fsicas.
b) Comprobar que la conversin se puede realizar. La direccin lgica podra no tener
una direccin fsica asociada. Por ejemplo, la pgina correspondiente a una direccin
se puede haber intercambiada a una zona de almacenamiento secundario
temporalmente.
c) Comprobar que el proceso que intenta acceder a una cierta direccin de memoria
tiene permisos para ello.

En caso de fallo se lanzar una excepcin que deber ser resuelta por el kernel del sistema
operativo. El kernel del sistema operativo est siempre en memoria principal, puesto que si se
intercambia a una zona de almacenamiento secundario, quin sera el encargado de llevarlo a
memoria principal cundo se produjera un fallo de acceso a memoria?

La MMU se inicializa para cada proceso del sistema. Esto permite que cada proceso pueda usar
el rango completo de direcciones lgicas (memoria virtual), ya que las conversiones de estas

pg. 79
direcciones sern distintas para cada proceso.

En todos los procesos se configura la MMU para que la zona del kernel (el cuarto gigabyte) slo
se pueda acceder en modo kernel (modo privilegiado). La configuracin correspondiente al espacio
de memoria del kernel es idntica en todos los procesos. Todos los threads de un mismo proceso
tambin compartirn la configuracin del espacio de memoria del usuario.

Para ejecutar un proceso debe estar, al menos en parte, en memoria principal. Subsistema de
Gestin de Memoria (parte del kernel del sistema operativo):

Decide qu procesos residen en memoria principal (al menos una parte).


Maneja parte del espacio de direcciones virtuales que ha quedado fuera.
Controla la cantidad de memoria principal.
Gestiona el intercambio de procesos entre memoria principal y memoria secundaria o
dispositivo de swap.
La memoria se asigna de la siguiente manera:
a. Si se tiene menos de 1Gb de memria ram, se asigna el doble de la cantidad de memoria.
b. Si se tienen mas de 1Gb de memoria ram, se asigna la cantidad de memoria ram mas 2.

pg. 80
Unidad 2.- Administracin del Sistema de Archivos.

Ext3 (third extended filesystem o "tercer sistema de archivos extendido") es un sistema de


archivos con registro por diario(journaling). Fue el sistema de archivos ms usado
en distribuciones Linux, aunque en la actualidad ha sido remplazado por su sucesor, ext4.
La principal diferencia con ext2 es el registro por diario. Un sistema de archivos ext3 puede
ser montado y usado como un sistema de archivos ext2. Otra diferencia importante es que ext3
utiliza un rbol binario balanceado (rbol AVL) e incorpora elasignador de bloques de disco Orlov.

Ventajas
Aunque su velocidad y escalabilidad es menor que sus competidores, como JFS, ReiserFS o XFS,
tiene la ventaja de permitir actualizar de ext2 a ext3 sin perder los datos almacenados ni tener
que formatear el disco. Tiene un menor consumo de CPU y est considerado ms seguro que
otros sistemas de ficheros en Linux dada su relativa sencillez y su mayor tiempo de prueba.
El sistema de archivo ext3 agrega a ext2 lo siguiente:

Registro por diario.


ndices en rbol para directorios que ocupan mltiples bloques.

Lmites de tamao
Ext3 tiene dos lmites de tamao distintos. Uno para archivos y otro para el tamao del sistema
de archivos entero. El lmite del tamao del sistema de archivos es de 232 bloques

Tamao del Tamao mximo de los Tamao mximo del sistema de


bloque archivos ficheros

1 KiB 16 GiB 2 TiB

2 KiB 256 GiB 8 TiB

4 KiB 2 TiB 16 TiB

8 KiBlmites 1 2 TiB 32 TiB

pg. 81
Particin Ext4 (fourth extended filesystem cuarto sistema de archivos extendido)
Es un sistema de archivos transaccional (en inglsjournaling), anunciado el 10 de
octubre de 2006 por Andrew Morton, como una mejora compatible de ext3. El 25 de
diciembre de2008 se public el kernel Linux 2.6.28, que elimina ya la etiqueta de "experimental"
de cdigo de ext4.
Las principales mejoras son:
Soporte de volmenes de hasta 1024 PiB.
Soporte aadido de extent.
Menor uso del CPU.
Mejoras en la velocidad de lectura y escritura.

Sistema de archivos de gran tamao


El sistema de archivos ext4 es capaz de trabajar con volmenes de gran tamao, hasta
1 exbibyte1 y ficheros de tamao de hasta 16 TiB.

Extents
Los extents han sido introducidos para reemplazar al tradicional esquema de bloques usado por
los sistemas de archivos ext2/3. Un extent es un conjunto de bloques fsicos contiguos, mejorando
el rendimiento al trabajar con ficheros de gran tamao y reduciendo la fragmentacin. Un extent
simple en ext4 es capaz de mapear hasta 128 MiB de espacio contiguo con un tamao de bloque
igual a 4 KiB.2

Compatibilidad hacia adelante y hacia atrs


Cualquier sistema ext3 existente puede ser montado como ext4 sin necesidad de cambios en el
formato del disco. Tambin es posible actualizar un sistema de archivos ext3 para conseguir las
ventajas del ext4 ejecutando un par de comandos. Esto significa que se puede mejorar el
rendimiento, los lmites de almacenamiento y las caractersticas de sistemas de archivos ext3 sin
reformatear y/o reinstalar el sistema operativo. Si se requiere de las ventajas de ext4 en un
sistema de produccin, se puede actualizar el sistema de archivos. El procedimiento es seguro y
no existe riesgo para los datos (aunque siempre es recomendado hacer un respaldo de la
informacin crtica). Ext4 usar la nueva estructura de datos slo para la informacin nueva. La
estructura antigua ser conservada sin modificacin y ser posible leerla y/o modificarla cuando
sea necesario. Esto significa que si se convierte un sistema de archivos a ext4 no se podr regresar
a ext3 de nuevo.3

pg. 82
El uso de extents est fijado por defecto desde la versin del kernel 2.6.23. Anteriormente, esta
opcin requera ser activada explcitamente (por ejemplo mount /dev/sda1 /mnt/point -t
ext4dev -o extents ).

Asignacin persistente de espacio en el disco


El sistema de archivos ext4 permite la reserva de espacio en disco para un fichero. Hasta ahora la
metodologa consista en rellenar el fichero en el disco con ceros en el momento de su creacin.
Esta tcnica no es ya necesaria con ext4, ya que una nueva llamada del sistema "preallocate()" ha
sido aadida al kernel Linux para uso de los sistemas de archivos que permitan esta funcin. El
espacio reservado para estos ficheros quedar garantizado y con mucha probabilidad ser
contiguo. Esta funcin tiene tiles aplicaciones en streaming y bases de datos.

Asignacin retrasada de espacio en el disco


Ext4 hace uso de una tcnica de mejora de rendimiento llamada Allocate-on-flush, tambin
conocida como reserva de memoria retrasada. Consiste en retrasar la reserva de bloques de
memoria hasta que la informacin est a punto de ser escrita en el disco, a diferencia de otros
sistemas de archivos, los cuales reservan los bloques necesarios antes de ese paso. Esto mejora
el rendimiento y reduce la fragmentacin al mejorar las decisiones de reserva de memoria basada
en el tamao real del fichero.

Lmite de 32000 subdirectorios superado


En ext3 el nivel de profundidad en subdirectorios permitido estaba limitado a 32000. Este lmite
ha sido aumentado a 64000 en ext4, permitiendo incluso ir ms all de este lmite (haciendo uso
de "dir_nlink"). Para permitir un rendimiento continuo, dada la posibilidad de directorios mucho
ms grandes, htree est activado por defecto en ext4. Esta funcin est implementada desde la
versin 2.6.23. htree est tambin disponible en ext3 cuando la funcin dir_index est activada.

Chequeo del sistema de ficheros ms rpido


En ext4, los grupos de bloques no asignados y secciones de la tabla de inodos estn marcados
como tales. Esto permite a e2fsck saltrselos completamente en los chequeos y en gran medida
reduce el tiempo requerido para chequear un sistema de archivos del tamao para el que ext4
est preparado. Esta funcin est implementada desde la versin 2.6.24 del kernel Linux.

pg. 83
Noatime (No tiempos de acceso)

Hoy vamos a ver una configuracin muy simple de aplicar, y que hace que el sistema vaya
muuucho ms flido. Y estoy hablando del parmetro "noatime".

Qu es esto de "noatime"? Pues "noatime " es un parmetro especial en el montaje de los


dispositivos como discos duros o memrias extraibles. Se acostumbra a modificar en el fichero
/etc/fstab.

[Explicacin]
Resulta que nuestro sistema de ficheros guarda, para cada uno de nuestros ficheros, un
parmetro que se llama "atime", o "access time". Total, que cada vez que accedemos (leemos)
un fichero, el valor "atime" se actualiza. As podemos saber cul fu la ltima vez que
accedimos/leimos un determinado fichero.

Pero claro, esto tiene un comportamiento no deseado: Resulta que por cada lectura que
hacemos a disco, necesitamos escribir algo a disco!! (Actualizar el valor "access time"). Esto
parece absurdo! Para leer tenemos que escribir.

Habr alguien que pensar: exagerado! No es para tanto. Total, tiene que escribir a disco tan
solo unos pocos bytes, esto no es nh.

Pues bueno, resulta que escribir estos pocos bytes si jode, y mucho. Me explico. Linux tiene un
sistema fantstico de caches, completamente transparente para el usuario. Te permite hacer lo
siguiente:

# cat ./bashrc
# cat ./bashrc

La primera vez que haces el "cat" de cualquier fichero ( en nuestro caso, .bashrc ), se va al disco
duro, y lo lee. Pero tambin lo pone en la memoria RAM. La segunda vez que ejecutas el
comando "cat", sabe que lo tiene cacheado y lo lee directamente de memria RAM. No hace
falta tocar disco duro. Esto hace que el sistema vaya muuuucho ms rpido, ya que todo los

pg. 84
ficheros que hayas leido una vez ( y no se hayan modificado ) ya estn cacheados, y no se
precisa leer a disco. Pero que pasa si no tenemos desactivado el "atime", pues que con
cada lectura, aunque la tuvieses cacheada, tienes que hacer una escritura a disco para
actualizar el tiempo de acceso. Nos ha jodido.

Esto, en porttiles tiene un impacto muy grande ya que al cabo de X segundos de no utilizar
el disco duro, ste se para. Un tema de ahorro de energa. Qu pasa si queremos hacer una
lectura o escritura? Pues que el disco se tiene que volver a poner a girar con el consiguiente
consumo energtico/tiempo perdido. Pero si intentamos leer un fichero CACHEADO por el
sistema, el disco duro ni se entera. Sigue parado. Por lo que es genial.

Como hacerlo?, Cmo activar la opcin "noatime"?


Con tu editor preferido (gedit, nano, emacs) el fichero, en mi caso "vim":
# sudo vim /etc/fstab

Busca tu disco duro principal. Lo mas seguro es que sea una entrada como esta:
UUID=3e9532f9-226c-4f17-ae64-dad42519a1fc / ext4 errors=remount-ro 0 1

y aade simplemente "noatime" en las opciones para que quede tal que as:
UUID=3e9532f9-226c-4f17-ae64-dad42519a1fc / ext4 noatime,errors=remount-ro 0 1

y punto. Reinicia y ya lo tienes.

[Cundo aplicar esta configuracin]


Bueno pues, recomendado, a todas las mquinas en general. Sin excepcin.

Muy recomendado, en porttiles. Por el tema de ahorro de corriente, y del encendido/parado


del disco.

Y OBLIGATORIO en los equipos:

- Servidores ( web-ftp-sambda ) con muchas lecturas. Aqu si que utilizar el sistema de cachs es
algo bsico, y no quitar el atime podra hacer que el rendimiento fuese psimo.
- Equipos con discos duros SSD. Esto es debido a que los SSD tienen un nmero de escrituras

pg. 85
mximas por bloque, y al llegar este nmero se desactiva el bloque y no se utiliza nunca ms. Por
lo que tener el "atime" activado significa que la vida del disco va a ser mucho mas corta.

Swapinees

De modo predeterminado, el ncleo de Linux utiliza un valor de 60 para vm.swapiness y tiene la


finalidad de permitir hacer pruebas a los desarrolladores del ncleo de Linux.
Este valor corresponde a la frecuencia con la que las aplicaciones utilizan memoria virtual. Pueden
establecerse valores entre 0 y 100, donde el valor ms bajo establece que se utilice menos la
memoria de intercambio, lo cual significa que se reclamar en su lugar el cach de la memoria.

Para la mayora de los casos, conviene cambiar este valor por uno ms bajo a fin de que el sistema
utilice menos la memoria de intercambio y utilice ms la memoria cache. sta es una clase de
memoria RAM esttica de acceso aleatorio (SRAM o
Static Random Access Memory). Se sita entre la Unidad Central de Procesamiento (CPU) y la
memoria RAM y se presenta de forma temporal y automtica para el usuario proporcionado
acceso rpido a los datos de uso ms frecuente.

Lo ms recomendable es cambiar el valor de vm.swappiness a 10, que resulta un valor ms


apropiado para un sistema de escritorio o una porttil. Para tal fin, se edita el archivo
/etc/sysctl.conf y se aade al final de ste:
vm.swappiness = 10
Con lo anterior, la siguiente vez que se inicie el sistema aplicar el cambio y se utilizar con menos
frecuencia la memoria virtual. Para que el cambio surta efecto de inmediato, se ejecuta lo
siguiente:

sysctl -w vm.swappiness=10

Si se asigna 0 (cero) como valor para vm.swappiness, se estar desactivando el uso de memoria
virtual, lo cual es poco recomendado, salvo que se disponga de una buena cantidad de memoria
fsica. Por lo general, el valor 0 para esta opcin se utiliza solo en porttiles con unidades SSD,
donde, de hecho, se busca realizar cuanto menos escritura como sea posible sobre las unidades
de almacenamiento.

Commit

pg. 86
Esta opcin controla el tiempo que se utilizar entra cada operacin sincronizacin (sync) de datos
y metadatos en una particin. El tiempo predeterminado es de 5 segundos y puede
incrementarse para mejorar el desempeo, tomando en consideracin que si se especfica
demasiado tiempo y ocurre una interrupcin de energa antes de hacer una operacin de
sincronizacin (sync), se perdern los datos ms recientes con los que se haya trabajado. Slo
usarla se recomienda si se dispone de un sistema de respaldo de energa confiable.

/dev/mapper/lv_varwww /var/www ext4 defaults,commit=30 1 2


fsck (file system check o bien file system consistency check)

Es una utilidad de los sistemas Unix y similares, como Linux, AIX y MAC OS X 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 una verificacin.
Para verificar un sistema de archivos es muy aconsejable hacerlo mientras ste est desmontado.
Para detectar, verificar y corregir los errores del sistema de archivos. Es recomendable utilizarlo
solo con sistemas desmontados.
Su sintaxis es de la forma:
fsck [-sAVRTMNP] [-C[fd]] [-t fstype] [filesys..] [fs-specific-options]

Donde:
-C Muestra el progreso en tiempo real de un modo visual.
-A Chequea todos los dispositivos definidos en el fichero /etc/fstab
-M No chequea sistemas montados.
-t Especifica el tipo o tipos de sistema de ficheros a chequear. Si lo acompaamos de la
opcin -A, solo chequearemos los sistemas que coincidan con fstype(una lista
separada por comas).

Filesys

Puede ser el nombre de un dispositivo (/dev/hdc1, /dev/sda3), un punto de montaje


(/, /usr, /home) o un label o UUID (UUID=f6c797e5-605b-4884-92d7-cdb694a42122,
LABEL=home). Si no se especifica, por defecto se analizaran los definidos en el fichero /etc/fstab

pg. 87
Opciones:
--a repara de manera automtica, no pide confirmacin.
--n reporta los problemas sin repararlos.
--c busca bloques daados y los agrega a la lista de bloques daados.
--f forzar la revisin.
--v verbose, genera ms informacin.
--r modo interactivo. Espera nuestra respuesta.
--y si a todo.
Ejercicio:

Con el siguiente comando determinamos que dispositivo corresponde a /boot:


# df -h | grep /boot
Desmontamos la particin correspondiente a /boot.
# umount /boot
Revisamos nuevamente que la particin /boot est desmontada:
# df -h | grep /boot

Siempre que se incluye la opcin y se asume que se responder que si a todas las preguntas
de confirmacin que mande la ejecucin de los comandos y con la opcin C muestra una barra
de progreso.
# fsck -fyC /dev/sda1

Si aadimos la opcin c realizara la verificacin de solo lectura para realizarla sobre bloques que
pudieran estar daados, y con la opcin k preservara la lista donde aadirn los nuevos bloques
daados.
# fsck -fykc /dev/sda1

Realizando la tarera con la opcin cc realizara la verificacin de lectura y escritura pero de


manera no destructiva.
# fsck -fykcc /dev/sda1

Con la opcin p realizara la verificacin y reparacin de manera automtica.


# fsck -fpC /dev/sda1

pg. 88
Comando que realiza la misma tarea, pero combinando todas la opciones mencionadas
anteriormente.
# fsck -fpkcc /dev/sda1

Con la opcin D realizara la verificacin optimizando al mismo tiempo la estrutura de los


directorios.
# fsck -fpD /dev/sda1

La optimizacin de directorios se realiza volviendo a crear un ndice de stos s el sistema de


archivos incluye soporte para ndices (como es el caso de Ext4) o bien re-ordenando y
comprimiendo directorios en los casos de directorios pequeos o bien sistemas de archivos que
utilicen directorios lineales tradicionales.

Con el comando en este formato este se aade al inodo (nodo ndice) de bloques daados.
# fsck -fpDkcc /dev/sda1

Montaremos /boot una vez terminado el ejercicio.


# mount /boot
Con el siguiente comando forzaremos a realizar una verificacin de sistema de archivos:
# shutdown -F -r now

Uso de dd

El comando dd (Dataset Definition), es una herramienta sencilla, til, y sorprendentemente fcil


de usar; con esta herramienta se puede hacer lo mismo, sobre dispositivos: discos y particiones,
que con programas comerciales como Norton Ghost, en Windows o libres como CloneZilla, en
Linux, con solo una pequea lnea de comandos.

Sintaxis Bsica:

La sintaxis ms bsica para el uso del comando dd, seria esta:

$ sudo dd if=origen of=destino

pg. 89
Donde if significa input file=archivo de entrada, es decir, lo que se quiere copiar y of significa
output file=archivo de salida, o sea, el archivo destino (donde se van a copiar los datos); origen
y destino pueden ser dispositivos (lectora de CD o DVD, disco duro, diskettera, pendrive, particin,
etc.), archivo de copia de seguridad o imagen de disco, etc, pero no carpetas o subcarpetas.

Para el uso sin problemas de este comando, lo primero siempre es tener claro como se llaman las
particiones/discos duros en Linux (/dev/sda1 por ejemplo; /dev deriva de device= dispositivo, en
ingls). Para saber el disco/particin de origen y el de destino, algo que averiguamos fcilmente
con el comando sudo fdisk -l o con algn programa grfico de particiones como gparted. Toda la
informacin sobre el comando dd, se puede consultar con el comando man dd e info dd ,

Se debe utilizar este comando con precaucin, y comprobando siempre el orden y nombre de los
discos/particiones, porque lo mismo que se clona un disco, lo borra en un visto y no visto.

Sintaxis con el comando pv: Usar el comando dd con la sintaxis anterior tiene un pequeo
inconveniente, ya que es un comando muy reservado no da informacin , pues al ejecutarlo,
el prompt de la terminal queda inmvil, por lo que no sabemos que es lo que esta pasando y
cuanto tiempo falta para que termine de ejecutarse. Este pequeo inconveniente se puede
solucionar aadiendo el comando pv, ( *) el cual acta como una tubera de terminal que mide
los datos que pasan a travs de ella- a la sintaxis del comando dd , de forma que ahora la sintaxis
seria:

$ dd if=origen |pv|dd of=destino

Como resultado obtendramos en el terminal una especie de barra de progreso, la informacin


sobre bytes transferidos, el tiempo que lleva ejecutndose y la tasa de transferencia, todo esto
en tiempo real.

( alf ) ( ~ )

>> dd if=/demmcblk0p1 |pv|dd of=/dev/mmcblk0p2

1,630GB 0:21:30 [1,12MB/s] [

pg. 90
Adems al terminar nos muestra estadsticas de la tasa de transferencia, el total de bytes
transferidos y el tiempo total que tard en transferir todos los datos.

( alf ) - ( ~ )

dd if=/devmmcblk0p1 |pv|dd of=/dev/mmcblk0p2

10530816+0 registros ledos <=>

10530816+0 registros escritos

5391777792 bytes (5.4 GB) copiados, 3873,48 s, 1,4 MB/s

5,02GB 1:04:33 [1,33MB/s] [ <=>

10530816+0 registros ledos <=>

10530816+0 registros escritos

5391777792 bytes (5.4 GB) copiados, 3873,48 s, 1,4 MB/s

( alf ) - ( ~ )

(*) Comprobar antes de ejecutar cualquier linea de comandos con esta segunda sintaxis, que
tenemos instalado en el sistema el paquete pv, o instalarlo si no lo tuviramos.

Vamos a ver algunos ejemplos prcticos y opciones de este comando ( en su versin con el truco
explicado anteriormente con el comando pv ) :

pg. 91
A) Sobre discos duros y particiones:
= Clonar un disco duro:
Con esto clonaramos el disco hda en hdb. (discos IDE):
$ sudo dd if=/dev/hda |pv|dd of=/dev/hdb bs=1M
Con esto clonaramos el disco sda en sdb. (discos SATA):
$ sudo dd if=/dev/hda |pv|dd of=/dev/sdb bs=1M

Con la opcin bs=1M , se consigue que tanto la lectura como la escritura se haga en bloques de 1
megabyte, (menos, seria mas lento pero mas seguro, y con mas nos arriesgamos a perder datos
por el camino).

Hay que tener en cuenta que de esta forma se graba el disco tal cual, MBR, tabla de particiones,
espacio vaco, etc, por lo que solo podrs grabar en un disco del mismo o mayor tamao.

= Grabar solo la primera particin (hda1) del disco de origen en el disco (hdb) de destino:

$ sudo dd if=/dev/hd1 |pv|dd of=/dev/hdb bs=1M

= Grabar el disco completo (hda) en la primera particin (hdb1) del disco de destino:

$ sudo dd if=/dev/hda |pv|dd of=/dev/hdb1 bs=1M

= Crear una imagen puede ser bin o iso del disco duro (hda) , en el directorio /home:

$ sudo dd if=/dev/hda |pv|dd of=/home/hda.bin

= Borrar totalmente la informacin de un disco: para ello, llena el disco con caracteres aleatorios,
cinco veces. No va a quedar ni rastro de informacin en el disco:

For n in {1..5}; do dd if=/dev/undandom |pv|dd of=/dev/hda bs=8b


Conv=notrunc;

= Borrar cualquier particin y disco completo de cualquier dispositivo:

pg. 92
$ sudo dd if=/dev/zero |pv|dd of=/dev/sdx (borrado del disco completo)
$ sudo dd if=/dev/zero |pv|dd of=/dev/sdxa (borrar una particin)
donde: x es el disco a borrar , a es la particin a borrar

Esta operacin es muy til para borrar completamente cualquier particin, adems los datos que
se borrarn no se pueden recuperar, por lo tanto es un borrado a bajo nivel y muy seguro, muy
til por ejemplo para cuando los pendrives se nos infectan de virus con nuestro querido windows.

B) Sobre un CD/DVD

= Crear/Montar una imagen .iso de un CD (o DVD)

Para crear la imagen .iso de un CD en el directorio /home:

$ sudo dd if=/dev/cdrom |pv|dd of=/home/imagendeCD.iso

Para montar la imagen .iso del CD:

$ sudo mount o loop imagendeCD.iso /mnt/home

= Recuperar un DVD rayado (Esto no recupera todo el DVD, en este caso, solo los sectores
legibles). Sirve tambin para discos duros defectuosos:

$ sudo dd if=/dev/cdrom |pv|dd of=/home/dvd_recuperadp.iso


conv=noerror,sync

La opcin noerror, sirve para obviar los errores de lectura en cualquier situacin.

pg. 93
C) Sobre MBR y VBS:

Los primeros 512 bytes del disco duro o unidad de almacenamiento utilizado para el sistema
operativo, corresponde al sector de arranque maestro, donde:

Los primeros 446 bytes corresponden al gestor de arranque


Los siguientes 64 bytes corresponden a la tabla de particiones. 16 bytes para cada particin
primaria y/o extendida que existan.
Los ltimos 2 bytes corresponden a la firma de unidad con capacidad de inicio. Tambin se
les conoce como los 2 bytes mgicos.
= Copiar/Restaurar el Master Boot Record (MBR):

Para copiar el MBR:

# dd if=/dev/sda of=mbr.bin bs=512 count=1

Para restaurar el MBR:

# dd if=mbr.bin of=/dev/sda bs=512 count=1

= Limpiar nuestro MBR y la tabla de particiones:

$ sudo dd if=/dev/zero |pv|dd of=/dev/had bs=512 count=1

= Limpia el MBR pero no toca la tabla de particiones, ( muy til para borrar el GRUB sin perder
datos en las particiones):

$ sudo dd if=/dev/zero |pv|dd of=/dev/had bs=446 count=1

= Copiar/Restaurar el Volume Boot Sector (VBS):

Para copiar el VBS:

$ sudo dd if=/dev/hda |pv|dd of=/home/sector_arranque_hda count=1 bs=512

pg. 94
Para restaurar el VBS:

$ sudo dd if=/home/sector_arranque_hda |pv|dd of=/dev/had

D) Otros:
= Grabar una imagen del disco en nuestro directorio /home saltndonos los errores del disco (muy
til para discos que se estn muriendo):

$ sudo dd conv=noerror if=/dev/hda |pv|dd of=~/home/imagen_disco_con_errores-iso

= Crear un archivo vaco de 1 Mb:

$ sudo dd if=/dev/zero |pv|dd of=archivo_nuevo_vacio bs=1024 count=1024

= Crear un archivo swap de 2Gb:


$ sudo dd if=/dev/zero |pv|dd of=/swapspace bs=4k count=2048 mkswap /swapspace# swapon
/swapspace
= Convertir todas las letras en maysculas:
$ sudo dd if=miarchivo |pv|dd of=miarchivo conv=ucase

Formato de bajo nivel.

Si es necesario dar un formato de bajo nivel a fin de eliminar toda la informacin del disco duro,
puede ejecutar lo siguiente, considerando en el ejemplo que se intenta dar formato de bajo nivel
al disco duro /dev/sda, para escribir 0 (ceros) en cada sector de la unidad de almacenamiento.
dd if=/dev/zero of=/dev/sda

Ejecute lo siguiente para dar formato de bajo nivel escribiendo nmeros aleatorios en todos los
sectores de una unidad de almacenamiento que corresponde a /dev/sda:

if=/dev/urandom of=/dev/sda

pg. 95
Unidad 3. -Administracin de Sofware y servicios.

Antiguamente muchos programas Linux eran distribuidos como cdigo fuente, que el usuario
construa en el programa o en la serie de programas en los que era necesario, junto con las pginas
de los manuales que fueran necesarias, los archivos de configuracin, y dems. Hoy en da, la
mayora de los distribuidores de Linux utilizan programas o sets de programas prearmados
denominados paquetes, los cuales son enviados para su distribucin listos para instalar.
Aprender de qu manera las herramientas para administracin de programas lo ayudan a
instalar, actualizar, y eliminar paquetes. Este manual trata particularmente el tema del Red Hat
Package Manager (RPM), desarrollado por by Red Hat, y del Yellowdog Updater Modified (YUM),
originalmente desarrollado para administrar los sistemas Red Hat Linux en el Departamento de
Fsica de la Universidad Duke.

Dado que los desarrolladores de Linux se han esforzado para que el uso de Linux sea ms fcil, las
herramientas bsicas han sido complementadas por otras, incluyendo las herramientas GUI, las
cuales ocultan al usuario algunas de las complejidades de las herramientas bsicas. RPM, YUM, y
APT (para los sistemas Debian) poseen muchas similitudes. Todos ellos pueden instalar y quitar
paquetes. La informacin sobre los paquetes instalados se guarda en una base de datos. Todos
ellos tienen funcionalidad de lnea bsica de comando, adems de herramientas adicionales que
pueden proporcionar al usuario interfaces de uso ms sencillo. Todos ellos pueden recuperar
paquetes de Internet.

Al instalar un sistema Linux, por lo general usted puede instalar una gran variedad de paquetes.
El set puede personalizarse segn el uso que se quiera dar al sistema, como servidor, escritorio,
o terminal de trabajo del desarrollador. Y en algn momento probablemente sea necesario
instalar paquetes nuevos para obtener alguna otra funcionalidad, actualizar el paquete que
posee, o incluso borrar paquetes que ya no se necesitan o son obsoletos debido a la aparicin de
nuevos paquetes. Demos un vistazo a la forma en la que usted realiza estas tareas, y a algunos de
los desafos a los que debe hacer frente, como la bsqueda de algn paquete que contenga algn
comando en particular.

pg. 96
Si no sabemos o tenemos informacin de algn paquete o programa, podremos utilizar
inicialmente el comando info, que es el encargado de mostrar la informacin en forma de manual
del programa si esta instalado con el comando info:

# info yum

Gestin de paquetes RPM


Red Hat lanz RPM en 1995. Actualmente RPM es el sistema de gestin de paquetes usado para
crear paquetes en Linux Standard Base (LSB). Las opciones del comando rpm estn agrupadas en
tres subgrupos segn se utilicen para:

Consultar y verificar paquetes


Instalar, actualizar y borrar paquetes
Realizar varias funciones

En este manual nos ocuparemos de los dos primeros subgrupos de opciones de comandos. Usted
encontrar informacin sobre el tercer subgrupo en las pginas de los manuales para RPM.

Deberamos tener en cuenta tambin que rpm es el nombre de comando para el comando
principal utilizado con RPM, mientras que .rpm es la extensin utilizada en los archivos RPM. Por
lo tanto "un rpm" o "el xxx rpm" se referir generalmente a un archivo RPM, mientras que rpm por
lo general se referir al comando.
Si en algn momento la base de datos que contiene la informacin de los rpms se corrompe por
cualquier tipo de dao, sea software o hardware con el siguiente comando puede reconfigurarla
a su estado original:
# rpm rebuilddb

Si lo que necesita es revisar si tiene instalado algn paquete dentro de su sistema, ejecutando el
siguiente comando puede realizar esta consulta, agregando la opcin q la cual realizara un query
como el bases de datos, es decir una consulta, para el siguiente ejemplo tomaremos como
ejemplo el paquete coreutils, el cual debe estar instalado, dndonos una salida con la informacin
del paquete:
# rpm -q coreutils
Si necesitamos una infomacion mas detallada de dicho paquete usaremos el comando agregando
la opcin i:

# rpm -qi coreutils

Al substituir la i por la opcin l (ele) podramos listar todos los componentes que son afectados

pg. 97
por dicho paquete:

# rpm -ql coreutils

Si nos interesa saber a que paquete pertenece alguna aplicacin ejecutaramos al comando como
sigue
# rpm -qf /bin/kill

Ejecutando el siguiente comando nos mostrara la lista de paquetes instalados.


# rpm -qa |more

Si buscamos un paquete en especfico utilizaremos el siguiente.


# rpm -qa |grep utils

Si queremos ver los paquetes en orden de instalacin, es decir los que se instalaron primero hasta
los ltimos, teclearemos el siguiente:

# rpm -qa --last|more

Si queremos verificar todos los componentes del sistema mostrando los modificados ,
ejecutaremos lo siguiente:

# rpm -Va

pg. 98
Instalacin de paquetes.

Lo primero es descargar el rpm que vamos a utilizar lo cual lo haremos en la siguiente liga:
http://get.adobe.com/es/flashplayer/

Una vez descargado lo transferiremos a la maquina virtual.

Una vez descargado el paquete de flash podramos realizar una revisin detallada de lo que
incluye el paquete ejecutando el siguiente comando:

# rpm -qpi flash-plugin-11.2.202.424-release.i386.rpm

Para realizar la instalacin despus de descargar el rpm que vallamos a utilizar, se instala con el
comando:

En este ejemplo vamos a instalar el paquete de flash-plugin-11.2.202.424-release.i386.rpm

# rpm ivh y el nombre del paquete

Para ver los componentes que esta instalando el paquete ejecutamos el siguiente comando:

# rpm -qpl y el nombre del paquete instalado

Para verificar que el paquete de firmas es el adecuado para el paquete ejecutamos el siguiente
comando:
# rpm -K el nombre del paquete instalado

En caso contrario nos podra salir un mensaje parecido al siguiente:

Nombre del paquete instalado: (sha1) dsa sha1 MD5 GPG NOT OK
Si tuviera alguna complicacin y el paquete no se instalara agregara al comando la opcin --force:
# rpm -ivh --force Nombre del paquete a instalar
Si le interesa saber en algn momento las dependencias del paquete podra ejecutar el siguiente
comando:
# rpm -qp --requires Nombre del paquete a instalar

Si se desea desinstalar cualquier paquete sin importar que otros dependan de este, se puede
utilizar con la opcin --nodeps. Esto es contraindicado y slo debe ser utilizado en situaciones

pg. 99
muy particulares. Evite siempre desinstalar paquetes que sean dependencia de otros en el
sistema a menos que vaya a reinstalar inmediatamente un paquete que cubra las dependencias
que se hayan visto afectadas.

Para desinstalar un rpm necesitara ejecutar el siguiente comando:

# rpm e Nombre del paquete.


En resumen:

Para instalar:

# rpm -i paquete.rpm
Para desinstalar:

# rpm -e paquete.rpm
Para instalar y ver el progreso:

# rpm -iv paquete.rpm


Para instalar o actualizar segun el caso y ver el progreso (opcin recomendada):
# rpm -Uvh paquete.rpm
Para confirmar si esta instalado o no:

# rpm -q paquete.rpm
Para forzar la desinstalacion (opcin no recomendada):

# rpm -e paquete.rpm --force

Instalar un paquete que tiene una versin anterior previamente instalada:


# rpm Fvh paquete.rpm

Uso de Yellow dog Updater, Modified (YUM.)

YUM es una herramienta libre de gestin de paquetes para sistemas Linux basados en RPM. Fue
desarrollado por Seth Vidal y un grupo de programadores voluntarios, y actualmente se mantiene
como parte del proyectoLinux@DUKE de la Universidad de Duke. A pesar de que yum es una
utilidad para lnea de comandos, otras herramientas proveen a yum de una interfaz grfica de
usuario, como pup, pirut y yumex. Desde que Seth Vidal trabaja en Red Hat, programadores de

pg. 100
dicha compaa estn implicados en el desarrollo de yum.

Yum es una utilidad totalmente reescrita a partir de su herramienta predecesora, Yellowdog


Updater (YUP), y fue desarrollada principalmente para actualizar y controlar los sistemas Red
Hat utilizados en el departamento de fsica de la Universidad de Duke. Desde entonces, ha sido
adoptada por Fedora, CentOS, y otras distribuciones de GNU/Linux basadas en RPM, incluyendo
el mismo Yellow Dog, donde reemplaz a la utilidad original YUP. El manejador de paquetes
de Red Hat, up2date, tambin puede hacer uso de los repositorio de software de yum cuando
realiza actualizaciones de software. Red Hat Enterprise 5 reemplaz up2date por yum y pirut.Con
los paquetes "yum-updatesd" o "yum-updateonboot" se puede hacer una actualizacin de
software automtica.

El sistema de repositorios yum est convirtindose rpidamente en un estndar para los


repositorios basados en RPM. En SUSE Linux 10.1 se aade soporte para repositorios YUM
en YaST, y los repositorios de openSUSE estn basados exclusivamente en Yum.
Yellow dog Updater, Modified est disponible bajo licencia GNU GPL versin 2 o superiores.

pg. 101
Ejercicio:

# yum list available | more > Lista todo los paquetes disponibles

# yum list installed | more > Lista los paquetes instalados

# yum list installed kernel > Lista la versin instalada en el kernel

# yum list updates | less > Lista los paquetes que pueden ser actualizados

# yum list all | less > Lista todos los paquetes existentes

# yum grouplist > Lista los grupos de paquetes disponibles en YUM

# yum search nombre-paquete > Realiza la bsqueda de un paquete(cups)

# yum info nombre-paquete > Consulta de informacin de paquetes(cups)

#yum groupinfo "Grupo" > Muestra la informacin de un grupo(servidor web)

#yum install nombre-paquete > Instala un paquete(openssh)

# yum install --nogpgcheck nombre-paquete > Instala con resolucin de


dependencias

# yum -y install nombre-paquete > Instala con respuesta positiva a los


modulos que instala(cups-pdf)

Instalacin de grupos de paquetes con resolucin automtica de dependencias:

pg. 102
# yum groupinstall "Nombre del Grupo" > Instala grupos de
paquetes(servidor web)

# yum -y groupinstall "Nombre del Grupo" > Instala con respuesta positiva a
los modulos que instala(servidor web)

# yum remove nombre-paquete > Desinstala paquetes(cups-pdf)

# yum groupremove "Nombre del Grupo" > Desinstala grupos(servidor web)

# yum update > Actualizacion de base de datos del sistema

# yum -y update > Realiza la actualizacin resolviendo las preguntas de


instalacin.

# yum --skip-broken update > Actualiza la base omitiendo las dependencias


corruptas

# yum update nombre-paquete > Actualiza un solo paquete(cups)

# yum -y update nombre-paquete > Actualiza resolviendo las preguntas de


instalacin(cups)

# yum groupupdate "Nombre del Grupo" > Actualiza un grupo(servidor web)

# yum -y groupupdate "Nombre del Grupo" > Actualiza grupo con resolucin
de preguntas de instalacin(Base de datos MySQL).

# yum clean all > Limpia el cache de YUM

# yum clean metadata > Limpia los metadatos

# yum clean packages > Limpia paquetes descargados

# yum check > Chekear las bases de datos de RPM

Una tarea importante como administrador de sistemas es tener el sistema actualizado, para eso:
Instalamos el aquete PackageKit-cron con el siguiente comando:

pg. 103
# yum -y install PackageKit-cron

Editamos el archivo /etc/sysconfig/packagekit-background:

Active el servicio cambiando el valor de ENABLED a yes y habilite MAILTO=root para enviar a root
un reporte de las actualizaciones aplicadas:

# should we attempt to do this? (valid: yes|no)


ENABLED=yes

# if MAILTO is set, the mail command is used to deliver PackageKit output


# by default MAILTO is unset, so crond mails the output by itself
MAILTO=root

Reiniciamos el servicio crond:

# service crond restart


Despues:

Instalamos el paquete yum-updatesd con el siguiente comando:

# yum -y install yum-updatesd

Edite el archivo /etc/yum/yum-updatesd.conf:

# vi /etc/yum/yum-updatesd.conf

Cambiamos los valores de do_update, do_download y do_download_deps a yes.

# automatically install updates

pg. 104
do_update = yes
# automatically download updates
do_download = yes
# automatically download deps of updates
do_download_deps = yes

Activamos el servicio yum-updatesd con la siguiente instruccion.

# chkconfig yum-updatesd on

Iniciamos el servicio yum-updatesd:

# service yum-updatesd start

Y por ultimo reiniciamos el servicio crond:

# service crond restart

pg. 105
De esta manera estaremos automatizando las actualizaciones del sistema, mandando un registro
de actualizaciones.

Gestor de Servicios

La gestin de servicios consiste en activar o desactivar servicios en los distintos niveles de


ejecucin del sistema y en iniciar, detener o activar stos cuando las circunstancias lo requieran.
El sistema operativo GNU/Linux puede aprovechar los niveles de ejecucin a travs de los
programas del proyecto sysvinit. Despus de que el ncleo Linux ha arrancado, el
programa init lee el archivo /etc/inittab para determinar el comportamiento para cada nivel de
ejecucin. A no ser que el usuario especifique otro valor como un parmetro
de autoarranque del ncleo, el sistema intentar entrar (iniciar) al nivel de ejecucin por defecto.
La mayor parte de usuarios de sistemas puede comprobar el nivel de ejecucin actual con
cualquiera de los comandos siguientes:
# runlevel # como usuario root
$ who r # como cualquier usuario

En sistemas GNU/Linux y otras versiones de Unix, init es el programa encargado de llevar la


estacin al nivel de ejecucin en que se desea que opere. Init es el primer proceso en ejecucin
despus del la carga del Kernel e implementa dos sistemas de inicio: System V, o BSD-Like. Estos
sistemas especifican los guiones (scripts) de arranque para inicializar los diferentes servicios,
programas o registros que sean necesarios para que el sistema funcione como el usuario quiere
o como el administrador estableci.

Una vez que el sistema inicia y root a montado el file system, se ejecuta el /sbin/init y el ID que se
asigna al proceso es el 1 o monousuario.
En los sistemas GNU/Linux se especifican hasta 7 niveles de ejecucin (tambin conocidos como
runlevels o niveles de corrida). En las distribuciones Red Hat, as como en la gran mayora de
distribuciones, la especificacin de los niveles de ejecucin son como sigue:

Nivel de ejecucin 0#
Halt. Este nivel de ejecucin se encarga de detener todos los procesos activos en el sistema,
enviando a la placa madre una interrupcin para el completo apagado del equipo.
Nivel de ejecucin 1#
Single. Nivel de ejecucin monousuario, sin acceso a servicios de red. Este nivel es regularmente
utilizado en tareas de mantenimiento del sistema, y el usuario que ejecuta es root.

pg. 106
Nivel de ejecucin 2#
Al igual que el nivel de ejecucin monousuario, pero con funciones de red y comparticin de datos
mediante nfs.

Nivel de ejecucin 3#
Sistema multiusuario, con capacidades plenas de red, sin entorno grfico. Este nivel de ejecucin
es el recomendado para sistemas de servidor, ya que evita la carga innecesaria de aplicaciones
consumidoras de recursos.

Nivel de ejecucin 4#
Nivel especificado como nivel de experimentacion, pero no se utiliza.

Nivel de ejecucin 5#
Al igual que el nivel de ejecucin 3, pero con capacidades grficas. Ideal para entornos de
escritorio.

Nivel de ejecucin 6#
Reboot. Este nivel de ejecucin se encarga de detener todos los procesos activos en el sistema,
enviando a la placa madre una interrupcin para el reinicio del equipo.

Con el siguiente comando verificaramos en que nivel se esta trabajando

# cat /etc/inittab |grep initdefault |grep id

5 es el nivel predeterminado de inicio del sistema. Para cambiar el valor del nivel de ejecucin
predeterminado, se edita como root el archivo /etc/inittab:

# vim /etc/inittab

Con el siguiente comando podramos ver el nivel actual de el sistema


# runlevel
Cuando nos muestra una N antes del nivel quiere decir que el nivel inicial es el actual
#N5
Cuando se muestran 2 valores distintos quiere decir que se conmuto el nivel inicial
#35
C

pg. 107
on el siguiete comando podramos ver de forma mas detallada la informacin del nivel de
ejecucin:
who -r
Con el comando init podremos hacer la conmutacin o cambio de nivel de ejecucin:
# init 1
Con el siguiente comando cambiaremos al nivel de ejecucin 3:
# init 3
Con el siguiente cambiaremos al nivel 6 lo cual probocaria que el sistema reiniciara de manera
inmediata:
# init 6
Con el siguiente el sistema se apagara, pues cambiaria al nivel 0 o apagado:
# init 0

Secuencia de arranque

1.- CentOS arranca ejecutando el programa init. El archivo de configuracin de init es /etc/inittab.
La entrada initdefault determina el nivel de ejecucin inicial del sistema.

2.- Edita el fichero /etc/inittab, localiza la entrada initdefault, y determina en que nivel de
ejecucin est trabajando el sistema.

3.- Tambin puedes obtener el nivel de ejecucin actual ejecutando la instruccin runlevel.

4.- Los primeros scripts que se ejecutan a continuacin (indicado en la linea del fichero
/etc/inittab: si::sysinit:/etc/init.d/rcS) son los que se encuentra en el directorio /etc/rcS. Estos
scripts son los encargados de realizar algunas tareas como:

Monta el file system root y /proc.


Elimina temporales y archivos de bloqueo.
Establece el reloj
Inicia scripts de red y activa la particin swap.
Activa el teclado y fuentes.
Carga mdulos.
Establece valores a muchas variables del entorno:PATH, HOSTNAME,...
Arranca la swap
Arranca fsck automtico, si hace falta.

pg. 108
Activa quotas.
Chequea los argumentos pasados al kernel.
Chequea los filesystems
Inicializa los puertos serie.
Puertos USB.

5.- Lista los ficheros que se encuentran en el directorio /etc/rc.d


6.- Comprueba que son enlaces simblicos a los scripts que se encuentran en el directorio
/etc/init.d

7.- A continuacin se ejecutan los scripts de inicializacin de los servicios del nivel de ejecucin
por defecto. Estos scripts se encuentran en los directorios /etc/rcn donde n es el nivel de
ejecucin.

Ejemplo:
Nivel Script Directorio
0 rc 0 /etc/rc0.d/
1 rc 1 /etc/rc1.d/
2 rc 2 /etc/rc2.d/
3 rc 3 /etc/rc3.d/
Es el script /etc/init.d/rc el que procesa todos los archivos K y S de los directorios /etc/rcn.d

Para ( con el argumento stop ) aquellos procesos que comienzan por K ( kill )
Lanza ( con el argumento start ) los que comienzan por S ( start ).
Despus de la letra S o K hay dos dgitos numricos que indican el orden de ejecucin. El
orden es ASCII.
Todos los ficheros K o S son enlaces simblicos a los scrips de cada servicio que estn en el
directorio /etc/init.d

a. Visualiza los ficheros de los distintos directorios /etc/rcn.d.


b. Comprueba los ficheros de ejecucin del nivel de ejecucin que se ejecuta por
defecto en Debian
c. Con la instruccin telinit podemos ejecutar otrps niveles de ejecucin. Entra en el
nivel monousuario. Entra en el nivel de reinicio. Entra en el nivel de parada del
sistema.

pg. 109
De modo esquemtico podemos ver:

Un servicio que tenga un enlace simblico denominado S80XXX, significa que el servicio iniciar
despus de todos los dems servicios que tengan un nmero menor.
Es decir, S80XXX iniciar despus de S70YYY.

Un servicio que tenga un enlace simblico denominado K30XXX, significa que el servicio terminar
antes que todos los dems servicios que tengan un nmero mayor.
Es decir, K30XXX terminar primero que K40YYY.

Qu hacer para eliminar un servicio en un determinado nivel?

Borrar el vnculo simblico en /etc/rcn.d/


Renombrarlo con algo que no empiece con S o K y dejarlo por si queremos luego activarlo.
Lo que no hay que hacer nunca es eliminar el archivo original en /etc/init.d/
1) Vamos a eliminar el servicio ssh (encargado de iniciar el servidor grfico) del nivel de
ejecucin 2, para ello elimina el fichero que inicia ese servicio.
2) Reinica el sistema y comprueba que el servidor grfico no se ha iniciado.
3) Para restablecer el enlace simblico para que podamos iniciar el servicio usamos la
instruccin update-rc.d (busca la pgina del manual para aprender ms sobre esta
instruccin. Ejecuta:

update-rc.d gdm defaults para crear los enlaces simblicos que ejecutan el script de gdm
4) Vuelve a reiniciar el sistema y comprueba que el servidor grfico se vuelve a ejecutar.

pg. 110
5) Pregunta: Para qu podramos utilizar la configuracin de distintos niveles de
ejecucin?

Tambien podra utilizar el siguiente comando para crear enlaces simblicos:

# ln s file1 link-to-file1 cp s file1 link-to-file1 que serian equivalentes

Ahora hay que tener en cuenta que:

Un enlace simbolico puede apuntar a un archivo aunque este en un file system distinto

Si elimina el archivo original, el enlace sigue apuntando, pero a un archivo inexistente.

Arranque y parada de lo servicios


Una vez que se han cargado los servicios que se encuentran en el directorio /etc/rc2.d,
podemos comprobar que los demonios correspondientes a cada servicio se estn
ejecutando con la instruccin:

# ps -A

En cualquier momento podemos parar o reiniciar cualquier servicio ejecutando los scripts
del directorio /etc/init.d con las siguientes opciones: start, stop, restart, force-reload,...

1) Comprueba que el servicio ssh se est ejecutando.


2) Para el servicio, y comprueba con la instruccin ps que el proceso no se est
ejecutando.
3) Vuelve a reiniciar el servicio.

pg. 111
Envo de seales a los procesos

Es posible el envo de distintas seales a los procesos. La ms usada es matar un proceso, si por
ejemplo se queda inactivo. Para ello utilizamos la siguiente instruccin:

kill -9 PID

El PID es el identificador del proceso, y lo puedes obtener mirando la lista de procesos por
ejemplo con ps -A.

Podemos tambin utilizar la siguiente instruccin

killall nombredelproceso

Del mismo modo puedes ver el nombre del proceso mirando la lista de procesos con ps.

1) Imagnate que el servidor grfico se queda "colgado". Entra en un terminal de texto


con CTRL+ALT+F1, y tras iniciar sesin como root mata el proceso gdm (Gestor de
arranque del servidor grfico).

2) Para comprobar que el servidor grfico no funciona puedes hacer varias cosas: lista los
procesos y comprueba que no existe el proceso gdm ni el Xorg. Tambin puedes intentar
entrar en la consola grfica con CTRL+ALT+F7.

3) Vuelve a ejecutar el gestor de arranque grfico gdm.

4) Del mismo modo puedes matar el demonio del servicio ssh, y volver a reiniciarlo
posteriormente.

Servicios.

La gestin de servicios se hace a travs de dos herramientas: chkconfig y service. Ambas utilizan
como argumentos los nombres de los archivos de inicio de los servicios, los cuales se localizan
dentro del directorio/etc/init.d

pg. 112
Chkconfig
Chkconfig permite configurar que servicios arrancan/detienen en cada nivel de ejecuccin.
Aclaracin: chkconfig no inicia ni detiene servicios al momento (excepto aquellos bajo xinetd), tan
solo crea o elimina precisamente los enlaces de los que se habl en el punto anterior de una
manera mas amigable. Si lo que se quiere es iniciar o detener el servicio en tiempo real o
manualmente hay que usar service o directamente el script con su argumento conveniente tal
como se explic anteriormente.

Veamos ejemplos que muestran como trabajar con chkconfig.


Con la opcin --list nos da una lista completa de todos los servicios instalados y para cada nivel si
arrancar (on) al entrar a ese nivel o se detendr (off) o simplemente no se iniciara. Ntese que
al final de la lista vienen los servicios que dependen del superservidor xinetd.

# chkconfig list
Con el siguiente comando eliminaremos el servicio del sistema, es decir se eliminara el link del
/etc/init.d
# chkconfig --del sshd

Con el siguiente comando agregaremos el servicio al inicio del sistema, es decir arrancara al inicio
del sistema, aadindolo al directorio /etc/init.d

# chkconfig --add sshd


Lo anterior por lo general se ejecuta automticamente junto con la instalacin de los paquetes
RPM correspondientes para cada servicio. Slo es necesario ejecutarlo cuando se instalan
servicios que fueron compilados a partir de paquetes de cdigo fuente o bien casos donde las
instrucciones de instalacin explcitamente solicitan hacerlo.

Al ejecutar chkconfig con el nombre del servicio y on como argumentos para activar un servicio
que ha sido previamente aadido al sistema.

# chkconfig crond on

Con el siguiente comando se detendra el servicio

# chkconfig crond off

Con el siguiente comando podremos ver en que niveles esta activo y desactivo el servicio:

pg. 113
# chkconfig --list network

Ejecutaremos el siguiente comando para verificar que el servicio de crond esta desactivo en todos
los niveles

# chkconfig list crond

Ahora ejecutaremos el siguiente comando y lo activaremos en el nivel 3 y 5:

# chkconfig --level 35 crond on


Verificamos con el comando nuevamente y veremos que ya esta activo en los niveles que
necesitamos:

# chkconfig list crond

Si ejecutamos el comando nuevamente con la opcin off se desactivara nuevamente

# chkconfig --level 35 crond off

Si ejecutamos el comando con la opcin reset los valores que se asignan son los predeterminados.

chkconfig crond reset

Este proceso se puede trabajar tambin con una interfaz grafica, esta se denomina ntsysv

pg. 114
Con esta podemos administrar los servicios principales, pudiendo interactuar con ella para la
utilizacin de los servicios.

Service.
Un daemon (demonio) (nomenclatura usada en sistemas UNIX y UNIX
like), service(servicio) (nomenclatura usada en Windows) o programa residente (nomenclatura
usada en MS-DOS) es un tipo especial de proceso informtico no interactivo, es decir, que se
ejecuta en segundo plano en vez de ser controlado directamente por el usuario. Este tipo de
programas continua en el sistema, es decir, que puede ser ejecutado en forma persistente o
reiniciado si se intenta matar el proceso dependiendo de configuracin del demonio y polticas
del sistema. La palabra daemon viene de las siglas en ingls D.A.E.MON (Disk And Execution
Monitor).

Iniciar un servicio
Al ejecutar el siguiente comando, iniciaremos un servicio, si esta detenido:

# service network start /etc/init.d/ network start

Para un servicio
Al ejecutar el siguiente comando, detendremos el servicio de ser necesario:

# service network stop /etc/init.d/network stop

pg. 115
Estado de un servicio
Al ejecutar el siguiente comando, verificaremos el estado del servicio en cuestio:

# service network status /etc/init.d/network status

Reinicio de un servicio

# service network restart /etc/init.d/network restart

pg. 116
Unidad 4.-Gestin de usuarios, grupos y privilegios.

Gestin de cuentas de usuario.

Linux es un sistema multiusuario, por lo tanto, la tarea de aadir, modificar, eliminar y en general
administrar usuarios se convierte en algo no solo rutinario, sino importante, adems de ser un
elemento de seguridad que mal administrado o tomado a la ligera, puede convertirse en un
enorme hoyo de seguridad. En este manual aprenders todo lo necesario para administrar
completamente tus usuarios en GNU/Linux.
Tipos de usuarios

Los usuarios en Unix/Linux se identifican por un nmero nico de usuario, User ID, UID. Y
pertenecen a un grupo principal de usuario, identificado tambin por un nmero nico de grupo,
Group ID, GID. El usuario puede pertenecer a ms grupos adems del principal.
Aunque sujeto a cierta polmica, es posible identificar tres tipos de usuarios en Linux:

Usuario root
Tambin llamado superusuario o administrador.
Su UID (User ID) es 0 (cero).
Es la nica cuenta de usuario con privilegios sobre todo el sistema.
Acceso total a todos los archivos y directorios con independencia de propietarios y permisos.
Controla la administracin de cuentas de usuarios.
Ejecuta tareas de mantenimiento del sistema.
Puede detener el sistema.
Instala software en el sistema.
Puede modificar o reconfigurar el kernel, controladores, etc.
Usuarios especiales
Ejemplos: bin, adm, lp, sync, shutdown, mail, operator, squid, apache, etc.
Se les llama tambin cuentas del sistema.
No tiene todos los privilegios del usuario root, pero dependiendo de la cuenta asumen
distintos privilegios de root.
Lo anterior para proteger al sistema de posibles formas de vulnerar la seguridad.
No tienen contraseas pues son cuentas que no estn diseadas para iniciar sesiones con
ellas.
Tambin se les conoce como cuentas de "no inicio de sesin" (nologin).
Se crean (generalmente) automticamente al momento de la instalacin de Linux o de la
aplicacin.
Generalmente se les asigna un UID entre 1 y 100 (definifo en /etc/login.defs)

pg. 117
Usuarios normales
Se usan para usuarios individuales.
Cada usuario dispone de un directorio de trabajo, ubicado generalmente en /home.
Cada usuario puede personalizar su entorno de trabajo.
Tienen solo privilegios completos en su directorio de trabajo o HOME.
Por seguridad, es siempre mejor trabajar como un usuario normal en vez del usuario root, y
cuando se requiera hacer uso de comandos solo de root, utilizar el comando su.
En las distros actuales de Linux se les asigna generalmente un UID superior a 500.
etc/passwd
Cualquiera que sea el tipo de usuario, todas las cuentas se encuentran definidas en el archivo de
configuracin 'passwd', ubicado dentro del directorio /etc. Este archivo es de texto tipo ASCII, se
crea al momento de la instalacin con el usuario root y las cuentas especiales, ms las cuentas de
usuarios normales que se hayan indicado al momento de la instalacin.
El nombre que es asignado al grupo que se almacena en /etc/passwd es Primary group
El archivo /etc/passwd contiene una lnea para cada usuario, similar a las siguientes:

root:x:0:0:root:/root:/bin/bash
sergio:x:501:500:Sergio Gonzlez:/home/sergio:/bin/bash

pg. 118
La informacin de cada usuario est dividida en 7 campos delimitados cada uno por ':' dos puntos.

/etc/passwd
Campo 1 Es el nombre del usuario, identificador de inicio de sesin (login). Tiene que ser
nico.
Campo 2 La 'x' indica la contrasea encriptada del usuario, adems tambin indica que se
est haciendo uso del archivo /etc/shadow, si no se hace uso de este archivo,
este campo se vera algo as como: 'ghy675gjuXCc12r5gt78uuu6R'.
Campo 3 Nmero de identificacin del usuario (UID). Tiene que ser nico. 0 para root,
generalmente las cuentas o usuarios especiales se numeran del 1 al 100 y las de
usuario normal del 101 en delante, en las distribuciones mas recientes esta
numeracin comienza a partir del 500.
Campo 4 Numeracin de identificacin del grupo (GID). El que aparece es el nmero de
grupo principal del usuario, pero puede pertenecer a otros, esto se configura
en/etc/groups.
Campo 5 Comentarios o el nombre completo del usuario.
Campo 6 Directorio de trabajo (Home) donde se sita al usuario despus del inicio de
sesin.
Campo 7 Shell que va a utilizar el usuario de forma predeterminada.

Nota: Recuerde usted puede ver las caractersticas de pasword ejecutando el comando passwd
con la opcin S y el nombre del usuario.

/etc/shadow

Anteriormente (en sistemas Unix) las contraseas cifradas se almacenaban en el


mismo/etc/passwd. El problema es que 'passwd' es un archivo que puede ser ledo por cualquier
usuario del sistema, aunque solo puede ser modificado por root.
Con cualquier computadora potente de hoy en da, un buen programa de descifrado de
contraseas y paciencia es posible "crackear" contraseas dbiles (por eso la conveniencia de
cambiar peridicamente la contrasea de root y de otras cuentas importantes). El archivo
'shadow', resuelve el problema ya que solo puede ser leido por root. Considrese a 'shadow' como
una extensin de 'passwd' ya que no solo almacena la contrasea encriptada, sino que tiene otros
campos de control de contraseas.

El archivo /etc/shadow contiene una lnea para cada usuario, similar a las siguientes:

root:ghy675gjuXCc12r5gt78uuu6R:10568:0:99999:7:7:-1::
sergio:rfgf886DG778sDFFDRRu78asd:10568:0:-1:9:-1:-1::

pg. 119
La informacin de cada usuario est dividida en 9 campos delimitados cada uno por ':' dos puntos.

/etc/shadow
Campo 1 Nombre de la cuenta del usuario.
Campo 2 Contrasea cifrada o encriptada, un '*' indica cuenta de 'nologin'.
Campo 3 Das transcurridos desde el 1/ene/1970 hasta la fecha en que la contrasea fue
cambiada por ltima vez.
Campo 4 Nmero de das que deben transcurrir hasta que la contrasea se pueda volver
a cambiar.
Campo 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.
Campo 6 Nmero de das antes de la expiracin de la contrasea en que se le avisar al
usuario al inicio de la sesin.
Campo 7 Das despus de la expiracin en que la contrasea se inhabilitara, si es que no
se cambio.
Campo 8 Fecha de caducidad de la cuenta. Se expresa en das transcurridos desde el
1/Enero/1970 (epoch).
Campo 9 Reservado.

/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:
root:x:0:root
ana:x:501:
sergio:x:502:ventas,supervisores,produccion
cristina:x:503:ventas,sergio

El campo 1 indica el usuario.


El campo 2 'x' indica la contrasea del grupo, que no existe, si hubiera se mostrara un 'hash'
encriptado.
El campo 3 es el Group ID (GID) o identificacin del grupo.
El campo 4 es opcional e indica la lista de grupos a los que pertenece el usuario
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
'sergio' tambin se crea el /etc/group el grupo 'sergio'. Aun asi, existen comandos de
administracin de grupos que se explicarn ms adelante.

pg. 120
/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 usada por defecto. Algunos de los
aspectos que controlan estas variables son:
Nmero mximo de das que una contrasea es vlida PASS_MAX_DAYS
El nmero mnimo de caracteres en la contrasea PASS_MIN_LEN
Valor mnimo para usuarios normales cuando se usa useradd UID_MIN
El valor umask por defecto UMASK
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 que en breve se explicaran.
Aadir usuarios con useradd

useradd o adduser es el comando que permite aadir nuevos usuarios al sistema desde la lnea
de comandos. Sus opciones ms comunes o importantes son las siguientes:
-c aade un comentario al momento de crear al usuario, campo 5 de /etc/passwd
-d directorio de trabajo o home del usuario, campo 6 de /etc/passwd
-e fecha de expiracin de la cuenta, formato AAAA-MM-DD, campo 8 de /etc/shadow
-g nmero de grupo principal del usuario (GID), campo 4 de /etc/passwd
-G otros grupos a los que puede pertenecer el usuario, separados por comas.
-r crea una cuenta del sistema o especial, su UID ser menor al definido en/etc/login.defs en
la variable UID_MIN, adems no se crea el directorio de inicio.
-s shell por defecto del usuario cuando ingrese al sistema. Si no se especifica, bash, es el que
queda establecido.
-u UID del usuario, si no se indica esta opcin, automticamente se establece el siguiente
nmero disponible a partir del ltimo usuario creado.
Ahora bien, realmente no hay prcticamente necesidad de indicar ninguna opcin ya que si
hacemos lo siguiente:

#> useradd juan


Se crear el usuario y su grupo, asi como las entradas correspondientes en /etc/passwd,
/etc/shadow y /etc/group. Tambin se crear el directorio de inicio o de trabajo: /home/juan y
los archivos de configuracin que van dentro de este directorio y que ms adelante se detallan.

Las fechas de expiracin de contrasea, etc. Quedan lo ms amplias posibles asi que no hay
problema que la cuenta caduque, asi que prcticamente lo nico que faltara sera aadir la
contrasea del usuario y algn comentario o identificacin de la cuenta. Como aadir el password
o contrasea se estudiara en un momento y viendo las opciones con '-c' es posible establecer el

pg. 121
comentario, campo 5 de /etc/passwd:

#> useradd -c "Juan Perez Hernandez" juan

Siempre el nombre del usuario es el ltimo parmetro del comando. Asi por ejemplo, si queremos
salirnos del default, podemos establecer algo como lo siguiente:

#> useradd -d /usr/juan -s /bin/csh -u 800 -c "Juan Perez Hernandez" juan


Con lo anterior estamos cambiando su directorio de inicio, su shell por defautl sera csh y su UID
ser el 800 en vez de que el sistema tome el siguiente nmero disponible.

En algunas distribuciones es posible con el siguiente comando:

# useradd m p password juan

Donde password es el password asignado y juan es el usuario.

Modificar usuarios con usermod

Como su nombre lo indica, usermod permite modificar o actualizar un usuario o cuenta ya


existente. Sus opciones ms comunes o importantes son las siguientes:
-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.
-l 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 'sergio' a 'sego':

#> usermod -l sego sergio


Casi seguro tambin cambiar el nombre del directorio de inicio o HOME en /home, pero si no
fuera as, entonces:
#> usermod -d /home/sego sego

pg. 122
Otros cambios o modificaciones en la misma cuenta:

#> usermod -c "supervisor de area" -s /bin/ksh -g 505 sego

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.
El usuario 'sego' sali de vacaciones y nos aseguramos de que nadie use su cuenta:

#> usermod -L sego

Eliminar usuarios con userdel

Como su nombre lo indica, userdel elimina una cuenta del sistema, userdel puede ser invocado
de tres maneras:
#> userdel sergio

Sin opciones elimina la cuenta del usuario de /etc/passwd y de /etc/shadow, pero no elimina su
directorio de trabajo ni archivos contenidos en el mismo, esta es la mejor opcin, ya que elimina
la cuenta pero no la informacin de la misma.
#> userdel -r sergio

Al igual que lo anterior elimina la cuenta totalmente, pero con la opcin -r adems elimina su
directorio de trabajo y archivos y directorios contenidos en el mismo, asi como su buzn de
correo, si es que estuvieran configuradas las opciones de correo. La cuenta no se podr eliminar
si el usuario esta logueado o en el sistema al momento de ejecutar el comando.

#> userdel -f sergio


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.

Cambiar contraseas con passwd


Crear al usuario con useradd es el primer paso, el segundo es asignarle una contrasea a ese
usuario. Esto se logra con el comando passwd que permitir ingresar la contrasea y su
verificacin:

pg. 123
#> passwd sergio
Changing password for user prueba.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
#>

El usuario root es el nico que puede indicar el cambio o asignacin de contraseas de cualquier
usuario. Usuarios normales pueden cambiar su contraea en cualquier momento con tan solo
invocar passwd sin argumentos, y podr de esta manera cambiar la contrasea cuantas veces lo
requiera.

Password tiene integrado validacin de contraseas comunes, cortas, de diccionario, etc. asi que
si por ejemplo intento como usuario normal cambiar mi contrasea a 'qwerty' el sistema me
mostrar lo siguiente:

$> passwd
Changing password for user prueba.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
$>

Ntese que al ingresar 'qwerty' como contrasea se detect que es una secuencia ya conocida
como contrasea y me manda la advertencia: "BAD PASSWORD: it is based on a dictionary word",
sin embargo me permite continuar, al ingresar la verificacin. Es decir, passwd avisa de malas o
dbiles contraseas pero permite establecerlas si realmente se desea.
Resumiendo entonces, se podra decir que todo este tutorial se reduce a dos lneas de comandos
para crear y dejar listo para trabajar a un usuario en Linux:

#> useradd ana


#> passwd ana
Se crea el usuario 'ana', useradd hace todo el trabajo de establecer el shell, directorio de inicio,
copiar archivos iniciales de configuracin de la cuenta, etc. y despus passwdestablece la
contrasea. Asi de simple.
passwd tiene varias opciones que permiten bloquear la cuenta '-l', desbloquearla '-u', y varias
opciones ms que controlan la vigencia de la contrasea, es decir, es otro modo de establecer los
valores de la cuenta en /etc/shadow. Para ms informacin consulta las pginas del manual:

pg. 124
$> man passwd

Archivos de configuracin

Los usuarios normales y root en sus directorios de inicio tienen varios archivos que comienzan
con "." es decir estn ocultos. Varan mucho dependiendo de la distribucin de Linux que se tenga,
pero seguramente se encontrarn los siguientes o similares:

#> ls -la
drwx------ 2 ana ana 4096 jul 9 09:54 .
drwxr-xr-x 7 root root 4096 jul 9 09:54 ..
-rw-r--r-- 1 ana ana 24 jul 9 09:54 .bash_logout
-rw-r--r-- 1 ana ana 191 jul 9 09:54 .bash_profile
-rw-r--r-- 1 ana ana 124 jul 9 09:54 .bashrc

.bash_profile aqu podremos indicar alias, variables, configuracin del entorno, etc. que
deseamos iniciar al principio de la sesin.
.bash_logout aqu podremos indicar acciones, programas, scripts, etc., que deseemos ejecutar al
salirnos de la sesin.
.bashrc es igual que .bash_profile, se ejecuta al principio de la sesin, tradicionalmente en este
archivo se indican los programas o scripts a ejecutar, a diferencia de .bash_profile que configura
el entorno.
Lo anterior aplica para terminales de texto 100%.
Si deseamos configurar archivos de inicio o de salida de la sesin grfica entonces, en este caso,
hay que buscar en el men del ambiente grfico algn programa grfico que permita manipular
que programas se deben arrancar al iniciar la sesin en modo grfico. En la mayora de las
distribuciones existe un programa llamado "sesiones" o "sessions", generalmente esta ubicado
dentro del men de preferencias. En este programa es posible establecer programas o scripts que
arranquen junto con el ambiente grfico, sera equivalente a manipular 'bashrc'.
Adems Linux permite que el usuario decida que tipo de entorno Xwindow a utilizar, ya sea algn
entorno de escritorio como KDE o Gnome o algn manejador de ventanas como Xfce o Twm.
Dentro del Home del usuario, se crear un directorio o archivo escondido "." , por ejemplo
'.gnome' o '.kde' donde vendr la configuracin personalizada del usuario para ese entorno.
Dentro de este directorio suele haber varios directorios y archivos de configuracin. Estos son
sumamente variados dependiendo de la distribucin y del entorno. No es recomendable
modificar manualmente (aunque es perfectamente posible) estos archivos, es mucho mas sencillo
modificar va las interfases grficas que permiten cambiar el fondo, protector de pantalla, estilos
de ventanas, tamaos de letras, etc.

pg. 125
Resumen de comandos y archivos de administracin de usuarios
Existen varios comandos ms que se usan muy poco en la administracin de usuarios, que sin
embargo permiten administrar aun ms a detalle a tus usuarios de Linux. Algunos de estos
comandos permiten hacer lo mismo que los comandos previamente vistos, solo que de otra
manera, y otros como 'chpasswd' y 'newusers' resultan muy tiles y prcticos cuando de dar de
alta a mltiples usuarios se trata.

A continuacin presentamos un resumen de los comandos y archivos vistos en este tutorial ms


otros que un poco de investigacin.

Comandos de administracin y control de usuarios


adduser Ver useradd
chage Permite cambiar o establecer parmetros de las fechas de control de la
contrasea.
chpasswd Actualiza o establece contraseas en modo batch, mltiples usuarios a
la vez. (se usa junto con newusers)
id Muestra la identidad del usuario (UID) y los grupos a los que pertence.
gpasswd Administra las contraseas de grupos (/etc/group y /etc/gshadow).
groupadd Aade grupos al sistema (/etc/group).
groupdel Elimina grupos del sistema.
groupmod Modifica grupos del sistema.
groups Muestra los grupos a los que pertence el usuario.
newusers Actualiza o crea usuarios en modo batch, mltiples usuarios a la vez. (se
usa junto chpasswd)
pwconv Establece la proteccin shadow (/etc/shadow) al archivo /etc/passwd.
pwunconv Elimina la proteccin shadow (/etc/shadow) al archivo /etc/passwd.
useradd Aade usuarios al sistema (/etc/passwd).
userdel Elimina usuarios del sistema.
usermod Modifica usuarios.

Archivos de administracin y control de usuarios


.bash_logout Se ejecuta cuando el usuario abandona la sesin.
.bash_profile Se ejecuta cuando el usuario inicia la sesin.
.bashrc Se ejecuta cuando el usuario inicia la sesin.
/etc/group Usuarios y sus grupos.
/etc/gshadow Contraseas encriptadas de los grupos.
/etc/login.defs Variables que controlan los aspectos de la creacin de usuarios.
/etc/passwd Usuarios del sistema.

pg. 126
/etc/shadow Contraseas encriptadas y control de fechas de usuarios del sistema.

Gestion de cuentas de grupos:

Creacin de grupos
El comando groupadd permite aadir un grupo indicando como parmetro el nombre del grupo.
Ejemplo, si deseamos crear un grupo llamado 'alumnos' ejecutaremos:
// Aadir un grupo
$ sudo groupadd alumnos
Modificacin de grupos
El comando groupmod permite modificar el nombre de un grupo o el gid del mismo. La sintaxis
es: sudo groupmod [-g nuevo-gid] [-n nuevo-nombre] nombre-grupo, ejemplo:
// Cambiar el gid del grupo profesores
$ sudo groupmod -g 2000 profesores

Eliminacin de grupos
Se realiza con el comando groupdel seguido del nombre del grupo, ejemplo:
// Eliminacin de un grupo
$ sudo groupdel profesores
Eliminara el grupo profesores. Si algn usuario tuviera dicho grupo como grupo primario, el
comando groupdel no eliminar el grupo.
Aadir usuarios a un grupo
Se utiliza el comando adduser seguido del nombre del usuario y del nombre del grupo al que
queremos aadirle, ejemplo:
// Aadir a 'juan' al grupo 'profesores'
$ sudo adduser juan profesores
Quitar usuarios de un grupo
Se utiliza el comando deluser seguido del nombre del usuario y del nombre del grupo del que
queremos quitarle, ejemplo:

// Quitar a 'juan' del grupo 'profesores'


$ sudo deluser juan profesores

pg. 127
SUDO
El programa sudo (del ingls substitute user do) es una utilidad de los sistemas
operativos tipo Unix, como Linux, BSD, o Mac OS X, que permite a los usuarios ejecutar programas
con los privilegios de seguridad de otro usuario (normalmente el usuario root) de manera segura.
Se instala por defecto en /usr/bin.

Sudo fue escrito originalmente por Bob Coggeshall y Cliff Spencer en 1980, en el departamento
de ciencias de la computacin de la Universidad estatal de Nueva York. La versin actual la
mantiene el desarrollador de OpenBSD Todd C. Miller y se distribuye bajo una licencia BSD.

En 1985 se public en el grupo de noticias net.sources una versin mejorada acreditada a Phil
Betchel, Cliff Spencer, Gretchen Phillips, John LoVerso y Don Gworek. Garth Snyder public otra
versin mejorada en el verano de 1986 y durante los siguientes cinco aos fue mantenido con la
colaboracin de muchas personas, incluyendo Bob Coggeshall, Bob Manchek, y Trent Hein.

En 1991 Dave Hieb y Jeff Nieusma escribieron una nueva versin con un formato mejorado para
el fichero /etc/sudoers bajo contrato con la firma consultora The Root Group, versin que
posteriormente fue publicada bajo los trminos de la Licencia Pblica General
de GNU (GNU/GPL).

Desde 1996 el proyecto es mantenido por Todd Miller con la colaboracin de Chris Jepeway y
Aaron Spangler.

Seguro que todo el mundo ha utilizado o como mnimo ha odo hablar de sudo, el comando que
permite ejecutar sentencias con los privilegios de cualquier usuario -incluidos los privilegios de
superusuario- y que es una medida muy interesante para evitar tener que entrar directamente
como estos usuarios con el ms tradicional su.

pg. 128
Ilustracin 8 La famosa tira cmica de XKCD deja claro qu es lo que permite hacer sudo

En Linux.com han publicado una fantstica introduccin a sudo, que significa substitute user do
o super user do (segn como lo usemos), y que como indican en ese artculo realiza una tarea
importante y crucial en muchas distribuciones Linux. Hay cierta polmica en si el uso de sudo es
bueno o malo para la seguridad, pero sea como fuere, seguro que hay un buen montn de
ocasiones en las que os vendr bien usar el sudo.

En el artculo nos cuentan la historia de sudo, que comenz a utilizarse en 1.980 y que poco a
poco se fue popularizando hasta llegar a las distribuciones gracias al trabajo de Todd Miller, que
sigue siendo su desarrollador principal.

Las diferencias entre sudo y su son claras, ya que su permite loguearnos como cualquier otro
usuario o como superusuario, mientras que sudo slo permite ejecutar comandos con los
privilegios de otros usuarios -incluido el superusuario, como ya hemos comentado-. Los riesgos
para la seguridad son menores -aunque podemos seguir cagndola con sudo, por supuesto- y por
eso es bueno que sepis cmo configurar y utilizar sudo.

pg. 129
La configuracin es clave, y para ello es necesario editar -con mimo y cuidado- el
fichero/etc/sudoers. Precaucin, amigo conductor, porque un error en este fichero puede tener
consecuencias graves para el sistema. En el artculo explican cmo aadir nuevos perfiles y
usuarios a la lista de los que pueden realizar sudo y con qu privilegios pueden hacerlo, as que
os recomiendo este artculo (en ingls, pero que puedes leer en un espaol aceptable gracias a la
magia de servicios como Google Translate) para conocer detalles importantes de esa
configuracin y uso del famoso comando sudo.

Visudo

Permite la edicin del archivo de configuracin de sudo sudoers. Invoca al editor que se tenga por
defecto que generalemente es 'vi'. visudo cuando es usado, bloquea el archivo /etc/sudoers de
tal manera que nadie ms lo puede utilizar, esto por razones obvias de seguridad que evitarn
que dos o ms usuarios administradores modifiquen accidentalmente los cambios que el otro
realiz.
Otra caracterstica importande de visudo es que al cerrar el archivo, verifica que el archivo este
bien configurado, es decir, detectar si hay errores de sintaxis principalmente en sus mltiples
opciones o reglas de acceso que se tengan. Por esta razn no debe editarse /etc/sudoers
directamente (perfectamente posible ya que es un archivo de texto como cualquier otro) sino
siempre usar visudo.

Si al cerrar visudo detecta un error nos mostrar la lnea donde se encuentra, y la pregunta "What
now?":
>>> sudoers file: syntax error, line 15 <<<
What now?
Se tienen tres opciones para esta pregunta:
e - edita de nuevo el archivo, colocando el cursor en la lnea del error (si el editor soporta
esta funcin.)
x - salir sin guardar los cambios.
Q - salir y guarda los cambios.

pg. 130
Por defecto el archivo de configuracin es /etc/sudoers pero se pueden editar otros archivos que
no sean ese y que se aplique la sintaxis de sudo, y esto se logra con la opcin -f(visudo -f
/otro/archivo).
Si tan solo se desea comprobar que /etc/sudoers esta bien configurado se usa la opcin -c, toma
por el archivo de configuracin por defecto o si no se indica algn otro.
#> visudo -c
/etc/sudoers file parsed OK

La opcin -s activa el modo 'estricto' del uso de visudo, es decir no solo se comprobar lo
sintctico sino tambin el orden correcto de las reglas, por ejemplo si se define el alias para un
grupo de comandos y este se usa antes de su definicin, con esta opcin se detectar este tipo de
errores.

Sudoers
Archivo de configuracin de sudo, generalmente ubicado bajo /etc y se modifica a travs del uso
de visudo. En este archivo se establece quien (usuarios) puede ejecutar que (comandos) y de que
modo (opciones), generando efectivamente una lista de control de acceso que puede ser tan
detallada como se desee.
Es ms fcil entender sudo si dividimos en tres partes su posible configuracin, ests son:
Alias
Opciones (Defaults)
Reglas de acceso

Por extrao que parezca ninguna de las secciones es obligatoria, o tienen que estar en algn orden
especfico, pero la que al menos debe de existir es la tercera, que es la defincin de los controles
o reglas de acceso. Se detallar cada uno de estos en un momento. Para los que les gusta saber
ms la cuestin tcnica es interesante saber que la construccin de un archivo sudoers esta
basado en la forma BNF (Backus-Naur Form), concretamente en versin extendida (EBNF), si
estudiaste algn curso de informtica universitario seguramente sabes de lo que hablo. EBNF
describe de una forma precisa y exacta la gramtica de un lenguaje, esta se va creando a travs
de reglas de produccin que a la vez son la base para ser referenciadas por otras reglas.
Afortunadamente no necesitas saber nada de esto, solo entender como se aplican estas reglas.

Alias
Un alias se refiere a un usuario, un comando o a un equipo. El alias engloba bajo un solo nombre
(nombre del alias) una serie de elementos que despus en la parte de definicin de reglas sern
refiridos aplicados bajos cierto criterio. Es decir, regresando a EBNF estamos creando las reglas
de produccin inicial. La forma para crear un alias es la siguiente:

pg. 131
tipo_alias NOMBRE_DEL_ALIAS = elemento1, elemento2, elemento3, ... elementoN
tipo_alias NOMBRE1 = elemento1, elemento2 : NOMBRE2 = elemento1, elemento2
En el segundo caso, separado por ":" es posible indicar ms de un alias en una misma defincin.
El tipo_alias define los elementos, es decir, dependiendo del tipo de alias sern sus elementos.
Los tipo de alias son cuatro y son los siguientes:

Cmnd_Alias - define alias de comandos.


User_Alias - define alias de usuarios normales.
Runas_Alias - define alias de usuarios administradores o con privilegios.
Host_Alias - define alias de hosts o equipos.

El NOMBRE_DEL_ALIAS puede llevar letras, nmeros o guin bajo ( _ ) y DEBE de comenzar con
una letra mayscula, se acostumbra a usarlos siempre en maysculas.
Los elementos del alias varian dependiendo del tipo de alias, asi que vemoslos por partes asi
como varios ejemplos para que comience a quedar claro todo esto.
Comando Cmnd_Alias

Definen uno o ms comandos y otros alias de comandos que podrn ser utilizados despus en
alias de usuarios. Ejemplos:

Cmnd_Alias WEB = /usr/sbin/apachectl, /usr/sbin/httpd, sudoedit /etc/httpd/


Indica que a quien se le aplique el alias WEB podr ejecutar los comandos apachectl, httpd y editar
todo lo que este debajo del directorio /etc/httpd/, ntese que debe de terminar con '/' cuando
se indican directorios. Tambin, la ruta completa a los comandos debe ser indicada.

Cmnd_Alias APAGAR = /usr/bin/shutdown -h 23\:00


Al usuario que se le asigne el alias APAGAR podr hacer uso del comando 'shutdown' exactamente
con los parmetros como estn indicados, es decir apagar -h (halt) el equipo a las 23:00 horas.
Ntese que es necesario escapar el signo ':', asi como los smbolos ' : , = \

Cmnd_Alias NET_ADMIN = /sbin/ifconfig, /sbin/iptables, WEB


NET_ADMIN es un alias con los comandos de configuracin de interfaces de red ifconfig y de
firewall iptables, pero adems le agregamos un alias previamente definido que es WEB, asi que a
quien se le asigne este alias podr hacer uso de los comandos del alias WEB.

Cmnd_Alias TODO_BIN = /usr/bin/, !/usr/bin/rpm


A quien se le asigne este alias podr ejecutar todos los comandos que estn dentro del directorio
/usr/bin/ menos el comando 'rpm' ubicado en el mismo directorio.

pg. 132
NOTA IMPORTANTE: este tipo de alias con un permiso muy amplios menos '!' algo, generalmente
no son una buena idea, ya que comandos nuevos que se aadan despus a ese directorio tambin
podrn ser ejecutados, es mejor siempre definir especficamente lo que se requiera.
User_Alias
Definen a uno o ms usuarios, grupos del sistema (indicados con %), grupos de red (netgroups
indicados con +) u otros alias de usuarios. Ejemplos:
User_Alias MYSQL_USERS = andy, marce, juan, %mysql
Indica que al alias MYSQL_USERS pertenecen los usuarios indicados individualmente ms los
usuarios que formen parte del grupo 'mysql'.
User_Alias ADMIN = sergio, ana
'sergio' y 'ana' pertenecen al alias ADMIN.

User_Alias TODOS = ALL, !samuel, !david


Aqui encontramos algo nuevo, definimos el alias de usuario TODOS que al poner como elemento
la palabra reservada 'ALL' abarcara a todos los usuarios del sistema, pero no deseamos a dos de
ellos, asi que negamos con '!', que seran los usuarios 'samuel' y 'david'. Es decir, todos los usuarios
menos esos dos.

NOTA IMPORTANTE: este tipo de alias con un permiso muy amplios menos '!' algo, generalmente
no son una buena idea, ya que usuarios nuevos que se aadan despus al sistema tambin sern
considerados como ALL, es mejor siempre definir especficamente a los usuarios que se requieran.
ALL es vlido en todos los tipos de alias.

User_Alias OPERADORES = ADMIN, alejandra


Los del alias ADMIN ms el usuario 'alejandra'.

Runas_Alias
Funciona exactamente igual que User_Alias, la nica diferencia es que es posible usar el ID del
usario UID con el caracter '#'.
Runas_Alias OPERADORES = #501, fabian
Al alias OPERADORES pertenecen el usuario con UID 501 y el usuario 'fabian'

Host_Alias
Definen uno o ms equipos u otros alias de host. Los equipos pueden indicarse por su nombre (si
se encuentra en /etc/hosts) por nombre de dominio, si existe un resolvedor de dominios, por
direccin IP, por direccin IP con mscara de red.

pg. 133
Ejemplos:
Host_Alias LANS = 192.168.0.0/24, 192.168.0.1/255.255.255.0
El alias LANS define todos los equipos de las redes locales.

Host_Alias WEBSERVERS = 172.16.0.21, web1 : DBSERVERS = 192.168.100.10, dataserver

Se define dos alias en el mismo rengln: WEBSERVERS y DBSERVERS con sus respectivas listas de
elementos, el separador ':' es vlido en cualquier definicin de tipo de alias.
Opciones (defaults)
Las opciones o defaults permiten definir ciertas caractersticas de comportamiento para los alias
previamente creados, para usuarios, usuarios privilegiados, para equipos o de manera global para
todos. No es necesario definir opciones o defaults, sudo ya tiene establecidas el valor de cada
uno, y es posible conocerlas a travs de sudo -V (ver en la seccin sudo de este tutorial).
Sin embargo, la potencia de sudo est en su alta granularidad de configuracin, asi que es
importante conocer como establecer opciones espcificas.
Las opciones o defaults es posible establecerlos en cuatro niveles de uso:

De manera global, afecta a todos


Por usuario
Por usuario privilegiado
Por equipo (host)

Se usa la palabra reservada 'Defaults' para establecer las opciones y dependiendo del nivel que
deseamos afectar su sintaxis es la siguiente:
Global: Defaults opcion1, opcion2 ...
Usuario: Defaults:usuario opcion1, opcion2 ...
Usuario Privilegiado: Defaults>usuario opcion1, opcion2 ...
Equipo: Defaults@equipo opcion1, opcion2 ...

La lista de opciones es algo extensa, pueden consultarse en las pginas del manual (man sudoers)
o en el excelente manual sobre sudo del sitio web de www.rpublica.net,
http://www.rpublica.net/sudo/indice.html#defaults, est en espaol y define muy claramente lo
que significa cada opcin. En este tutorial de LinuxTotal.com.mx me concretar a ejemplificar
varios ejemplos del uso de establecer opciones.
Los defaults los divide el manual (man sudoers) en cuatro: flags o booleanos, enteros, cadenas y
listas. Veamos entonces algunos ejemplos de uso para cada uno de ellos:

pg. 134
Listas

Permite establecer/eliminar variables de entorno propias de sudo. Los 'Defaults' para variables es
de los menos usados en las configuraciones de sudo y ciertamente de los ms confusos. Para
entender como se aplican es ms fcil si primero ejecutas como 'root' el comando sudo -V, y al
final del listado encontrars en maysculas las posibles variables de entorno que se pueden
establecer o quitar y que vienen del shell.
Solo existen tres opciones de listas: env_check, env_delete y env_keep, las listas pueden ser
remplazadas con '=', aadidas con '+=', eliminadas con '-=' o deshabilitadas con '!'. Con un par de
ejemplos quedar ms claro.

Defaults env_delete -= HOSTNAME


Elimina la variable de entorno 'HOSTNAME', (pero preserva todas las dems que hubiera) y
comandos que se ejecuten bajo sudo y que requieran de esta variable no la tendran disponible.

Defaults env_reset
Defaults env_check += DISPLAY, PS1

La primera opcin 'env_reset' reinicializa las variables de entorno que sudo utilizar o tendr
disponibles, y solo quedan disponibles LOGNAME, SHELL, USER y USERNAME. La siguiente lnea
indica que agregue (+=) a lo anterior, tambin la variable de entorno DISPLAY a su valor
establecido antes del reset.
Reglas de acceso
Aunque no es obligatorio declarar alias, ni opciones (defaults), y de hecho tampoco reglas de
acceso, pues el archivo /etc/sudoers no tendra ninguna razn de ser si no se crean reglas de
acceso. De hecho podramos concretarnos a crear solamente reglas de acceso, sin opciones ni
alias y podra funcionar todo muy bien.
Las reglas de acceso definen que usuarios ejecutan que comandos bajo que usuario y en que
equipos. La mejor y (segn yo, nica manera) de entender y aprender a configurar sudoers es con
ejemplos, asi que directo al grano:
usuario host = comando1, comando2, ... comandoN
Sintaxis bsica, 'usuario' puede ser un usuario, un alias de usuario o un grupo (indicado por %),
'host' puede ser ALL cualquier equipo, un solo equipo, un alias de equipo, una direccin IP o una
definicin de red IP/mscara, 'comandox' es cualquier comando indicado con su ruta completa.
Si se termina en '/' como en /etc/http/ entonces indica todos los archivos dentro de ese directorio.
daniela ALL = /sbin/iptables
Usuario 'daniela' en cualquier host o equipo puede utiliar iptables.

ADMIN ALL = ALL

pg. 135
Los usuarios definifos en el alias 'ADMIN' desde cualquier host pueden ejecutar cualquier
comando.
%gerentes dbserver = (director) /usr/facturacion, (root) /var/log/*

Un ejemplo ms detallado. Los usuarios que pertenezcan al grupo del sistema llamado 'gerentes'
pueden en el equipo llamado 'dbserver' ejecutar como si fueran el usuario 'director' la aplicacin
llamada 'facturacion', adems como usuarios 'root' pueden ver el contendido de los archivos que
contenga el directorio /var/log.

Lo anterior intoduce algo nuevo, que en la lista de comandos es posible indicar bajo que usuario
se debe ejecutar el permiso. Por defecto es el usuario 'root', pero no siempre tener que asi.
Adems la lista 'hereda' la primera definicin de usuario que se indica entre parntesis ( ), por eso
si se tiene ms de alguno hay que cambiar de usuario en el comando conveniente, el ejemplo
anterior tambin sera vlido de la siguiente manera:
%gerentes dbserver = /var/log/*, (director) /usr/facturacion
No es necesario indicar (root) ya que es el usuario bajo el cual se ejecutan los comandos por
defecto. Tambin es vlido usar (ALL) para indicar bajo cualquier usuario. El ejemplo siguiente da
permisos absolutos.
sergio ALL = (ALL) ALL
Se establece permiso para el usuario 'sergio' en cualquier host, ejecutar cualquier comando de
cualquier usuario, por supuesto incluyendo los de root.

SUPERVISORES PRODUCCION = OPERACIN

Una regala formada solo por alias. En el alias de usuario SUPERVISORES los usuarios que esten
indicado en ese alias, tendrn permiso en los equipos definidos en el alias de host
'PRODUCCION', de ejecutar los comandos definidos o listados en el alias de comandos
'OPERACION'.
En este ltimo ejemplo se aprecia lo ltil que pueden ser los alias, ya que una vez definida la
regla, solo debemos agregar o eliminar elementos de las listas de alias definidos previamente. Es
decir, se agrega un equipo ms a la red, se aade al alias 'PRODUCCION', un usuario renuncia a
la empresa, alteramos el alias 'SUPERVISORES' eliminndolo de la lista, etc.
checo ALL = /usr/bin/passwd *, !/usr/bin/passwd root

Este es un ejemplo muy interesante de la potencia y flexibilidad . Al usuario 'checo', desde


cualquier equipo, tiene permiso de cambiar la contrasea de cualquier usuario (usando el
comando 'passwd'), excepto '!' la contrasea del usuario 'root'. Lo anterior se logra mediante el
uso de argumentos en los comandos. En el primer ejemplo '/usr/bin/passwd *' el asterisco indica
una expansin de comodin (wildcard) que indica cualquier argumento, es decir, cualquier usuario.

pg. 136
En el segundo caso '!/usr/bin/passwd root', si indica un argumento especfico 'root', y la '!' como
ya se sabe indica negacin, negando entonces el permiso a cambiar la contrasea de root.
Cuando se indica el comando sin argumentos: /sbin/iptables sudo lo interpreta como 'puede usar
iptables con cualquiera de sus argumentos'.

mariajose ALL = "/sbin/lsmod"


Al estar entre comillas dobles un comando, entonces sudo lo interpreta como 'puede hacer uso
del comando lsmod pero sin argumentos'. En este caso el usuario 'mariajose' podr ver la lista de
mdulos del kernel, pero solo eso.

Tags (etiquetas de comandos)


Cuando se definen reglas, en la lista de comandos, estos pueden tener cero (como en los ejemplos
anteriores) o ms tags. Existen 6 de estas etiquetas o tags,

NOPASSWD Y PASSWD
Por defecto sudo requiere que cualquier usuario se identifique o autntifique con su contrasea.
Aprendimos en la seccin de 'Opciones' o 'Defaults' que es posible indicar que un usuario o alias
de usuario no requiera de autentificacin. Pero el control granular propio desudo, permite ir aun
ms lejos al indicar a nivel de comandos, cules requieren contrasea para su uso y cules no.
gerardo webserver = NOPASSWD: /bin/kill, /usr/bin/lprm, /etc/httpd/conf/

Usuario 'gerardo' en el equipo 'webserver' no requerira contrasea para los comandos listados.
El tag se hereda, es decir no solo el primer elemento de la lista de comandos, sino los
subsiguientes. Suponiendo que el ltimo '/etc/httpd/conf/' elemento, que permite modificar
cualquier archivo contenido en el directorio, si deseamos que use contrasea, lo siguiente lo
conseguir:
gerardo webserver = NOPASSWD: /bin/kill, /usr/bin/lprm, PASSWD: /etc/httpd/conf/

Aunque ya que solicitar contrasea es el default o defecto preestablecido, lo anterior tambin


funcionar de la siguiente manera:

gerardo webserver = /etc/httpd/conf/, NOPASSWD: /bin/kill, /usr/bin/lprm,

pg. 137
Unidad 5. Permisos y Atributos del Sistema de Archivos.

Sistema plano de ficheros

La estructura en forma de rbol tiene el inconveniente de que se requiere ir recorriendo el


rbol para ir localizando cada uno de los elementos. Por ello se hace necesario un sistema
mucho ms directo.

A cada ficheros se le asocia un nmero para poder localizarlo directamenta. Dicho


nmero se llama inodo. Los nmeros de inodos sonel ndice del sistema plano de ficheros,
tambin llamado por ello tabla deinodos. Cada fichero de cada sistema de ficheros tiene un inodo
distintosalvo que se trate de un enlace rgido (hard link). Sin embargo hay inodos que no se
corresponden con ningn fichero.

Un fichero en sentido estricto indica capacidad de contener una secuencia de bytes.

Un inodo indica bsicamente la capacidad de tener un nombre asociado al sistema de


ficheros.

Un fichero tiene asociadas funciones de posicin y de lectura y escritura de informacin


dentro del fichero. Un inodo es una referencia muy directa a un fichero y a grandes
rasgos tiene asociadas funciones que permiten manejar y cosntruir la estrauctura del rbol
del sistema de ficheros.

Tipos de ficheros:
a. Regular: Son meros almacenes de informacin. Algunos contiene cdigo
ejecutable.
b. Directorios: Son una tabla con nmeros de inodos y nombres de ficheros.
c. Ficheros especiales: Pueden ser dispositivo tipo carcter o dispositivo
de bloques. El manejo de estos ficheros depende del dispositivo en particular.
d. Fifo: son pipes con nombre. Son propios de System V y en BSD no
existen pero en Linux si estn disponibles.
e. Enlaces simblicos (symbolic links): Son ficheros que contiene un puntero a otro
fichero que podra perfectamente estar en un sistema de ficheros distinto.
f. El Soket: es un fichero especial de 4.3 BSD y se utiliza para comunicar
procesos que pueden estar en mquinas distintas.
g. Enlaces rgidos (hard links): Realmente es un nico fichero que puede ser
visto con distintos nombres dentro de un mismo sistema
de ficheros. Es decir se pueden observar como si fueran ficheros

pg. 138
idnticos con el mismo inodo. La informacin reside en un mismo lugar y lo que
ocurra aparentemente en un sitio ocurrir instantneamente en el otro lugar.
Los enlaces de este tipo no pueden ocurrir entre sistemas de ficheros distintos.
No todos los visto sistemas de ficheros soportan hard links ya que es un concepto
muy ligado a los SO tipo Unix
Generalmente los diferentes tipos de ficheros son capaces de aceptar operaciones de
apertura, cierre, lectura y escritura de forma similar. Por ello
se puede redirigir una entrada y una salida a diferentes tipos deficheros. Parte de la enorm
e potencia y flexibilidad de los SO tipo Unix
residen en este hecho. Gracias a esto la combinacin de entradas salidas entre procesos,
ficheros, dispositivos, etc... resulta muy sencilla y flexible.

Existe una salvedad importante. Los directorios en este sentido son totalmente
especiales y un intento de escribir en un directorio dar siempre un error siempre
aunque sea realizado por 'root'. No tiene sentido permitirlo. Los directorios
se crean, borran, y modifican con comandos especficos para ellos.

Atributos de fecha en ficheros


En Unix y Linux los ficheros en sentido amplio tienen asociadas siempre tres fechas. En
realidad estas fechas estn almacenadas internamente como
el nmero de segundos transcurridos desde el '1 de Enero de 1970'.
Una de ellas indica el tiempo del ltimo acceso realizado sobre ese
fichero. La otra indica la fecha de creacin (en realidad es la fecha del ultimo cambio
de estado) de ese fichero y la ltima y quizs ms
importante (es la que vemos al consultar con 'ls -l') indica la fecha de la ultima
modificacin.

En realidad si cambiamos el estado de un fichero por ejemplo cambiando permisos


O el propietario se modificar las fechas de creacin y del ltimo acceso.
Por eso la fecha que hemos denominado de creacin puede ser posterior a la
a la fecha de modificacin del fichero.
Cuando se crea un fichero las tres fechas tendrn el mismo valor. Cuando se
lee un fichero se modifica la fecha de acceso del mismo pero acceder al nombre
de un fichero o consultar el estado de un fichero no modifica ninguna fecha.
Su fecha de acceso tampoco ya que en realidad lo que se hace es leer la informacin del
directorio que lo contiene el cual si que vera modificada su fecha de acceso.

Las fechas de modificacin asociadas a los directorios cambian con las altas o bajas de los
elementos dentro del directorio. Esto es debido a que dichas operaciones se consideran

pg. 139
como si fueran escrituras en el ficheroespecial de tipo directorio. Un directorio es al fin y alcabo
una simple tabla. Esto lo recordaremos cuando hablemos de permisos asociados a directorios.

Para modificar las fechas de modificacin y de acceso de un fichero se puede usar el


comando touch.

Permisos de ficheros
Usaremos el trmino fichero en su sentido ms amplio. Es decir que el
tema de permisos e aplicable a distintos tipos de ficheros con algunas
matizaciones que explicaremos ms adelante. Los ficheros tienen muchos
atributos adems de su nombre.

Para ver los ms significativos haremos:


$ ls -l
Supongamos que tenemos el siguiente fichero llamado 'kkkkk'
. - r w x r w x r w x 1 root root 14740 abr 15 12:05 kkkk

l Enlace simblico
p Fifo con nombre
b Dispositivo de bloques
c Dispositivo de caracteres
d Directorio

En ingls se usan los trminos owner , group, y others para designar


respectivamente al propietario, al grupo y a cualquier usuario.

Notacin numrica para permisos


Los permisos de los ficheros son almacenados en formato binario y se puede referenciar
numricamente. Vimos que a cada permiso individual le
asocibamos un nmero de tres dgitos formado por dos ceros y un tercer nmero que poda
ser nicamente 1, 2, o 4. Por ejemplo el permiso de
escritura para un usuario cualquiera era 002. Con estos nmeros se puede codificar los
permisos de la forma que indicamos en el siguiente ejemplo:

r w x - - w x - r - x Esto equivaldra a un permiso 735


4 2 1 - 0 2 1 - 4 0 1 ( 4+2+1 , 0+2+1 , 4+0+1 = 7,3,5)

pg. 140
Los permisos tambin pueden representarse como una secuencia de bits.
Un bit es un valor que solo puede valer 0 o 1. En el caso anterior,
podramos representarlo de la forma 111 010 101 donde 1 indica que si hay
permiso 0 que no lo hay y la posicin de cada 0 y cada 1 representa a cada uno
de los permisos.

Umask
Es un comando interno del bash. Se utiliza cuando se crean ficheros.
No podemos profundizar mucho en temas de matemtica binaria porquenos saldramos del te
ma pero la umask se aplica mediante una operacin llamada AND NOT.

Consiste en tomar a umask como una mscara donde los bits a 1


especifican los bits de permisos que se pondrn a cero.

Por ejemplo si queremos abrir un fichero con permisos 664 y tenemos una
umask de 022 obtendremos un fichero 644.
664 110 110 100
022 000 010 010
-----------------
644 110 100 100

Valor octal Valor simblico Descripcin


0 rwx Lectura, escritura y acceso a directorios
1 rw- Lectura y escritura
2 r-x Lectura y acceso a directorios
3 r-- Slo lectura
4 -wx Escritura y acceso a directorios
5 -w- Slo escritura
6 --x Slo acceso a directorios
7 --- Nada

Esto tiene la utilidad de proteger el sistema frente a cierto tipo de


descuidos durante la creacin de ficheros.

Por ejemplo supongamos que un administrador de un sistema considera que por


defecto todos los ficheros que el crea deberan carecer de
permisos de ejecucin y de escritura para todo el mundo y que para los usuarios
de su mismo grupo deberan de carecer de permiso de ejecucin.

pg. 141
Para ello establecer una 'umask = 023'. Es decir una umask que elimina los permisos
---.-w-.-wx
Para un script que genere ficheros que solo deban ser accesibles para el usuario que los ha
generado usaramos. 'umask = 077'

El valor predeterminado de la mscara de usuario del sistema en CentOS, es 0022, es decir se


asigna permiso 0755 (-rwxr-xr-x) para nuevos directorios y 0644 (-rw-r--r--) para nuevos archivos.
El sistema jams permite crear nuevos archivos con atributos de ejecucin. El valor
predeterminado se define en una variable de entorno del archivo /etc/profile y puede ser
cambiado por el que el administrador del sistema considere pertinente. El valor tambin puede
establecerse por usuario en el archivo ~/.bash_profile CentOS.

Comando chmod
Este comando sirve para alterar una serie de atributos del fichero.
Existen dos formas de usarlo. Una indicando el tipo de acceso y a quien lo
queremos conceder o eliminar. Existen una serie de atributos que se
pueden modificar usando este comando.

04000 Set uid on execute.


02000 Set gid on execute.
01000 Save text on image after execution.
00400 r Permiso de lectura para el propietario (owner)
00200 w Permiso de escritura para el propietario
00100 x Permiso de ejecucin para el propietario
00040 r Permiso de lectura para el grupo (group)
00020 w Permiso de escritura para el grupo
00010 x Permiso de ejecucion para el grupo
00004 r Permiso de lectura para cualquiera (others)
00002 w Permiso de escritura para cualquiera
00001 x Permiso de ejecucion para cualquiera
Consulte las pginas del manual relativas a este comando. Como de costumbre
el manual resulta imprescindible a la hora de recordar la utilizacin de un
comando pero no a la hora de comprender conceptos nuevos.

No se preocupe con los ejercicios que le proponemos a continuacin comprender


perfectamente:
$ cd /tmp
$ touch chmod.txt

pg. 142
$ ##################################
$ chmod 777 chmod.txt
$ ls -l kk
-rwxrwxrwx .... .... ......
$ ##################################
$ chmod 707 chmod.txt
$ ls -l kk
-rwx---rwx .... .... ......
$ ##################################
$ chmod 421 chmod.txt
$ ls -l kk
-r---w---x .... .... ......
$ ##################################
$ chmod 124 chmod.txt
$ ls -l kk
---x-w-r-- .... .... ......
$ ##################################
$ # 'chmod 0 chmod.txt ' equivale a 'chmod 000 chmod.txt '
$ chmod 0 chmod.txt
$ ls -l kk
---------- .... .... ......
$ ##################################

$ chmod +r chmod.txt
$ ls -l kk
-r--r--r-- .... .... ......
$ ##################################

$ chmod +x chmod.txt
$ ls -l chmod.txt
-r-xr-xr-x .... .... ......
$ ##################################

$ chmod -r chmod.txt
$ ls -l chmod.txt
---x--x--x .... .... ......
$ ##################################

pg. 143
$ chmod u+r chmod.txt
$ ls -l chmod.txt
-r-x--x--x .... .... ......
$ ##################################

$ chmod a-x chmod.txt


$ ls -l chmod.txt
-r-------- .... .... ......
$ ##################################

$ chmod g+x chmod.txt


$ ls -l chmod.txt
-r----x--- .... .... ......

$ ##################################
$ chmod o+x chmod.txt
$ ls -l chmod.txt
-r----x--x .... .... ......
$ ##################################

$ chmod a+rwx chmod.txt


$ ls -l chmod.txt
-rwxrwxrwx .... .... ......
rm chmod.txt

Opciones de chmod.
-R
Cambia permisos de forma descendente en un directorio dado. Es la nica opcin de los
estndares POSIX.
-c
Muestra cules archivos han cambiado recientemente en una ubicacin dada
-f
Omite mostrar errores de archivos o directorios que haya sido imposible cambiar
-v
Descripcin detallada de los mensajes generados por el proceso
Para obtener una descripcin completa del uso de chmod, ejecute:

pg. 144
man 1 chmod

Comando chown

El comando 'chown' sirve para cambiar el UID y el GID de un fichero. Esto solo se puede
hacer si tenemos los permisos para ello.
Normalmente su uso est reservado a 'root' y por ello no diremos nada ms. Es muy
posible que si usted usa Linux en un ordenador personal necesite algunos de estos
conocimientos pero se sale de los propsitos de este curso. Le basta con saber que existe
y para que sirve.

Concesin de acceso por parte del kernel


Explicaremos el funcionamiento de los permisos de la forma ms precisa que nos sea posible.

Para ello usaremos unas abreviaturas que ya conocemos.


EUID es el Identificador de usuario efectivo de un proceso
EGID es el Identificador de grupo efectivo de un proceso
UID en un fichero es un atributo que identifica al propietario.
GID en un fichero es un atributo que identifica al grupo del propietario.

En realidad hablamos de propietario como el usuario que creo el fichero.


El Kernel realizar el siguiente test para conceder a un proceso el acceso de cierto tipo a
un fichero.

1. Si el EUID del proceso es 0 se da acceso. (root puede hacer lo que sea).

2. Si el EUID del proceso es igual al UID del owner (propietario del fichero) se concede el
acceso si los permisos de usuario rwx son los adecuados.

3. Si el EUID del proceso es distinto al UID del owner, y si el EGID del proceso es igual al
GID del owner, se concede el acceso si los permisos de grupo rwx son los adecuados.

4.Si el EUID del proceso es distinto al UID del owner, y si el EGID


del proceso es distinto al GID del owner, se concede el acceso si los permisos de los
others rwx son los adecuados.

NOTA IMPORTANTE : El comando rm permite borrar cualquier fichero sea cual sean los permisos
cuando el proceso tiene un EUID coincidente con el propietario el fichero. nicamente ocurre
que si el fichero esta protegido contra escritura suele pedir (dependiendo de la

pg. 145
configuracin) confirmacin antes de borrarlo. El permiso para borrar un fichero no se guarda
como atributo del fichero. Esto se hace a nivel de directorio y pasamos a explicarlo
inmediatamente.

Significado de los permisos en directorios


Para entender como funcionan los permisos aplicados a un directorio hay
que imaginar que un directorio es un fichero normal que solo contiene una
tabla en la que se relacionan los ficheros presentes en ese directorio. En
todos los directorios existen siempre un par de entradas obligadas que son
'.' y '..' para el directorio actual y para el directorio padre respectivamente.

Vamos a explicarlo sobre la marcha a la vez que hacemos el ejercicio.


Recuerde usar un usuario normal (distinto de root) para realizar los ejercicios.

$ cd /tmp
$ mkdir otromas
$ cd otromas
$ echo > k1
$ echo > k2
$ cd /tmp
$ chmod 777 otromas

Para ver como ha quedado los permisos hacemos...


$ ls -ld otromas
Para ver que ficheros contiene el directorio otromas hacemos...

$ ls otromas
Si un directorio no tiene permiso de lectura, resultara imposible para
cualquier comando incluido ls averiguar cual es su contenido.

Sin abandonar la sesin anterior continuamos el ejercicio


Eliminamos los premisos de lectura del directorio kk

$ chmod -r otromas
$ ls -ld otromas

Nos dara un resultado, pero si ejecutamos el siguiente codigo


$ ls -l otromas

pg. 146
Esto nos podra mandar un mensaje como este ls: otromas: Permiso denegado
En este intante podemos entrar dentro del directorio
Incluso podemos crear un nuevo fichero pero ya no podemos saber cual es el contenido del
directorio.
$ cd otromas
$pwd

Debemos ver lo siguiente;


/tmp/ otromas
Ahora crearemos un tercer archivo
$ echo > k3

Y al dar el comando siguiente nos daremos cuenta que ya no tendremos permisos

$ ls -l

ls: .: Permiso denegado

Hemos podido meternos dentro del directorio otromas porque aun tenemos permiso para ello
pero seguimos sin poder saber cual es su contenido.

$ cd /tmp

Si no se tiene permiso de ejecucin en un directorio no se podr hacer cd


a ese directorio, ni a ninguno de los directorios que cuelgan de el.

Esto imposibilita todas las operaciones que utilicen ese directorio como parte del camino.
Sin abandonar la sesin anterior continuamos el ejercicio
Ahora eliminamos permiso de ejecucin
$ chmod -x otromas
$ ls -ld otromas

Nos mostrara algo como lo siguiente;

d-w--w--w- 2 ..... ...... kk

pg. 147
Ahora intentamos entrar

$ cd otromas
Y nos mandara un mensaje parecido al siguiente;
bash: cd: otromas: Permiso denegado
Nos damos cuenta que no hemos podido entrar
$ rm kk/k2
bash: cd: otromas: Permiso denegado

Tampoco nos deja borrar el fichero desde fuera

Recuperamos permiso de ejecucin


$ chmod +x otromas
$ ls -ld kk
$ rm kk/k2
$ ls otromas
k1
Si no tiene permiso de escritura no se podra dar altas, baja o
modificaciones en la tabla lo que se traduce en que no se pueden borrar
sus ficheros ni crear otros nuevos, ni renombrar ficheros.

Sin abandonar la sesin anterior continuamos el ejercicio


Ahora eliminaremos permisos de escritura

$ chmod 666 otromas


$ ls -ld otromas

Ahora no tenemos permiso de escritura

$ cd otromas
$ ls
rm: borrar `k1'? (s/n) s
rm: k1: Permiso denegado

$ echo > k3
bash: k3: Permiso denegado

pg. 148
$ touch k3
touch: k3: Permiso denegado

Sin permiso de escritura en el directorio no se pueden crear ficheros nuevos dentro de el ni borrar
ficheros pero los ficheros son perfectamente accesibles

$ echo "Mensaje de prueba" > k1


$ cat k1

Vamos a limpiar

$ chmod 777 /tmp/ otromas


$ rm /tmp/ otromas /*
$ rmdir /tmp/ otromas

pg. 149
Unidad 6.- Herramientas bsicas del Sistema Operativo.

Comandos de uso bsico, muvete por la consola.


Para realizar el siguiente ejercicio iniciaremos instalando los siguientes paquetes que
complememtaran elementos necesarios para poder realizar las tareas en la consola y poder hacer
uso de los comandos que se demostraran en el ejercicio:

# yum -y install man perl less file man-pages-es finger


El commando makewhatis sirve para generar un ndice de las pginas de manual presentes en el
sistema.
# Makewhatis
Una vez ejecutado el comando esperaremos unos segundos o minutos dependiendo del Hw
disponible para la generacin de los manuales.

Generaremos un usuario comn para poder realizar el siguiente ejercicio:

Ejecutaremos el siguiente comando;

# useradd usuarioconsola

Despus asignaremos el password a nuestro usuario;

# passwd usuarioconsola

Le asignaremos un password

Cierre la sesin de root ejecutando el mandato exit:

# Exit

Ejercicio;
Nos loguearemos con nuestro usuario usuarioconsola en una terminal para la realizacin del
ejercicio:Cambiar de usuario a super-usuario.

Ejecute el mandato su sin argumentos e ingrese la clave de acceso de root cuando se le


solicite:

$ su

pg. 150
Con el siguiente comando visualizaremos lo que se conoce como variables de entorno:
# echo $USER; echo $LOGNAME; echo $SHELL; echo $PATH; echo $HOME
Observe que aunque se tienen privilegios de root, se carece de las variables de entorno de ste,
por lo cual algunos mandatos slo se podrn ejecutar si se especfica la ruta exacta de stos
(ejemplos: /sbin/service, /sbin/chkconfig, /sbin/fsck y /sbin/fdisk).

Ahora nos sadremos de la consola con el siguiente comando.


# Exit
Ejecutando el comando su acompaado de la opcin -l ingresamos la clave de acceso de
root una vez que nos lo ordene:

su l
Ejecutamos ahora el comando y podremos ver las variables de entorno:

echo $USER; echo $LOGNAME; echo $SHELL; echo $PATH; echo $HOME
Observe que adems de los privilegios de root, se tienen tambin de las variables de entorno
de ste, pues en realidad se ha realizado un ingreso (login) como root.

Nos volvemos a salir con el siguiente comando para regresar como usuario regular
usuarioconsola

Exit
Ejecutando el siguiente comando nos mostrara la informacion del sistema:
$ uname a
$ hdparm en suse y el centos con parmetros.

Lo anterior nos mostrar el nombre del ncleo, nombre de anfitrin, nmero de lanzamiento del
ncleo, versin del ncleo de Linux, tipo de microprocesador, plataforma del sistema y nombre
del sistema operativo, algo parecido a lo siguiente:

Linux localhost.localdomain 2.6.32-71.29.1.el6.i686 #1 SMP Mon Jun 27


18:07:00 BST 2011 i686 i686 i386 GNU/Linux
Ejecutando el siguiente comando nos mostrara el nombre de usuario que est usted est
utilizando:

pg. 151
$ whoami
Con el siguiente comando nos mostrara los usuarios que estn conectados en el sistema y dnde
lo estn haciendo:
$ who
Con el siguiente nos mostrara cules usuarios estn conectados en el sistema, en qu tipo de
terminal lo estn haciendo y qu estn haciendo o ejecutando:
$w
Con el siguiente nos mostrara el grupo al que pertenece en caso de pertenecer a alguno:

$ id

Con el siguiente comando podr visualizar cules usuarios estn conectados en el sistema, en qu
tipo de terminal lo estn haciendo y mostrar la informacin de usuario definida en el archivo
/etc/passwd:
$ finger
Ejecutando el siguiente podr ver bitcora de acceso de los ms recientes ingresos a sistema de
todos los usuarios existentes en el sistema;
$ lastlog
Con el siguiente podremos visualizar la bitcora, con los ultimos accesos hacia el sistema;
$ last
Con el siguiente podremos ver los privilegios de root de la bitcora de intentos fallidos de acceso
al sistema;
$ su -l root -c "lastb"
Ejecute lo siguiete, esto devolver que /etc/hosts es un archivo de texto:

$ file /etc/hosts
Ejecutando lo siguiente, podremos ver que /boot/grub/e2fs_stage1_5 es un archivo que carga el
boot y sus propiedades:
$ file /boot/grub/e2fs_stage1_5
Ejecutando el siguiente, nos mostrara el directorio en el cual estamos ubicados:
$ pwd
Para poder cambiarnos de directorio utilizaremos el comando cd, de la guiente forma:

pg. 152
$ cd /usr/local
Ahora ejecutaremos de nuevo el siguiente comando y podremos ver que el directorio a cambiado:
$ pwd
Si utilizamos el comando cd sin argumentos, nos devolver al hogar el usuario que estemos
usando:
$ cd
Ejecute nuevamente el mandato pwd para verificar que se encuentra en su directorio de inicio.
Ahora ejecutamos el comando, el cual listara los archivos contenidos en la ruta que describamos,
sin necesidad de cambiarnos de directorio:
$ ls /usr/local
Ejecutando el comando siguiente listara los archivos directos del directorio donde estemos
ubicados, en este caso no debe mostrar ninguno pues nos encontramos en el home de nuestro
usuario:
$ ls
Ahora si ejecutamos el siguiente, podremos ver los archivos ocultos

$ ls a

Ejecutando el siguiente nos mostrara los mismos archivos per de manera ordenada por nombre,
los atributos y permisos:
$ ls la
Ejecutando el siguiente, nos mostrara los archivos en orden inverso:
$ ls -lar
Ejecutando el siguiente nos los mostrara por nombre, en orden inverso y el tamao de los
archivos:
$ ls -hlar
Ejecutando el siguiente, mostrara los permisos, los atributos adems de que los ordenara por
tamao:
$ ls -Sla
Ejecutando el siguiente mostrara lo mismo que el comando anterior pero en orden inverso:
$ ls Slar
Ejecutando el siguiente, mostrara los permisos y atributos, pero el orden lo realizara por fecha de
modificacion:

pg. 153
$ ls tla

Ejecutando el siguiente ser lo mismo pero en orden inverso:


$ ls -tlar
Ejecutando el siguiente nos mostrara lo mismo agregando el tamao de los archivos:
$ ls -htlar
Ejecutando el siguiente mostrara la informacin del inodo que corresponde a cada archivo:
$ ls -ia
Ejecutando el siguiente, mostrara tambin el detalle del inodo de cada archivo:
$ ls -lia

pg. 154
El comando touch crea archivos, pero se pueden generar tambin en cadenas, es decir generar
varios archivos con un comando, ejecuaremos el siguiente para generar archivos vacios:

$ touch texto1 texto2 texto11 texto12 texto136 texto246


$ touch textoA textoB textoaa textoAB textoabc textoABC
Ejecutando el siguiente, nos mostrara como, comn el valor 1 y tomando como universo el *, de
esta manera los archivos que mostrara sern todos lo que contenga 1 entre algo y algo
$ ls texto*1*
Ejecutando el siguiente comando, nos listara todos los archivos que inicien con la cadena texto1,
pero solo los que carecen de 1 en cualquier parte despus de la cadena descrita:
$ ls texto[!*1]*
Ejecutando el siguiente comando nos listara todos los archivos que inician con la cadena texto,
pero solo los que tienen 3 caracteres consecutivamente:
$ ls texto???
Ejecutando el siguiente, nos mostrara todos lo que inician con la cadena texto, pero solo 2
caracteres consecutivos:
$ ls texto??
Ejecutando el siguiente solo listara los archivos que inicien con la cadena texto, pero solo aquellos
que incluyan nmeros despus de la cadena antes descrita:
$ ls texto[[:digit:]]*
Ejecutando el siguiente listara solo los archivos que inician con la cadena texto, pero solo aquellos
que terminan con letras minusculas:
$ ls texto[[:lower:]]*
Ejecutando la siguiente nos listara solo los archivos que inicien con la cadena texto y que terminan
con letras mayusculas:
$ ls texto[[:upper:]]*
Ejecutando el siguiente nos mostrara los archivos que contengan la cadena texto y solo los que
terminan con caracteres distintos de numeros:
$ ls texto*[![:digit:]]
Ejecutando lo siguiente nos listara los archivos que inician con la cadena texto, pero solo aquellos
que terminan con la letra c minscula o C mayuscula:
$ ls texto*[cC]

pg. 155
Ejecutando el siguiente nos listara todos los archivos que contengan la cadena texto, pero solo
aquellos que cualquier carcter distindo de c minscula o C mayuscula:
$ ls texto*[!cC]
Ejecutando el siguiente comando, listar todos lo archivos con la cadena texto pero solo los
archivos qe incluyan la letra a, A o el nmero 1 despues de dicha cadena:
$ ls texto[!aA1]*
Con el siguiente comando crearemos un directorio nuevo llamado ejercicios1:
$ mkdir ejercicios1

Ingresamos dentro de la carpeta con el siguiente comando

$ cd ejercicios1

Y dentro creamos otro directorio llamado UNO con el comando siguiente:

$ mkdir UNO

Nos salimos de la carpeta para realizar este proceso pero desde el directorio original es decir crear
un directorio fuera del directorio con el siguiente comando:

$ mkdir ejercicios1/DOS

Ahora ejecutamos lo siguiente para intentar generar otro directorio denominado UNO, pero
dentro del directorio ejercicios2 (el cual es inexistente).
$ mkdir ejercicios2/UNO/

pg. 156
Lo anterior devolver un mensaje de error como el siguiente:
mkdir: no se puede crear el directorio ejemplos2/uno: No existe el archivo
o el directorio
A fin de poder crear el directorio UNO, dentro del directorio ejercicios2, es necesario crear
primero ejercicios2. Sin embargo puede indicarle a mkdir que genere toda la ruta aadiendo la
opcin -p (path):
$ mkdir -p ejercicios2/uno
Para verificar que esta creada podemos ejecutar lo siguiente:
$ ls
Y ver que existe ya el directorio ejercicios2, y despus ejecutar;

$ ls ejercicios2

Y verificar que existe UNO destro de ejercicios2.

El comando cp sirve para copiar archivos, con el siguiente comando copiaremos un archivo dentro
del directorio ejercicios2
$ cp /etc/fstab ~/ejercicios1/
Vuelva a utilizar el mandato cp de este modo:
$ cp /etc/passwd ~/ejercicios1/
Con estos dos procedimientos, se habrn copiado dos distintos archivos (/etc/fstab y
/etc/passwd) dentro del directorio ejericicios1
Intente copiar el directorio ~/ejemplos1/ como el nuevo directorio ~/copia1, ejecutando lo
siguiente:
$ cp ~/ejercicios1/ ~/copia1
Lo anterior devolver un error porque ~/ejemplos1 es un directorio:
$ cp: se omite el directorio ejercicios1/
Para poder llevar acabo la tarea de la copia de un directorio con su contenido hay que utilizar la
opcin -r por la recuisividad. Ejecute la tarea de la siguiente forma:
$ cp -r ~/ejercicios1/ ~/copia1/
Podremos ver el contenido de ambos directorios utilizando el mandato ls con la opcin -l:
$ ls -l ejercicios1/ copia1/
El comando rm sirve para eliminar archivos y directorios, ahora lo usaremos de la siguiente forma,
elimine el directorio copia1, ejecutando lo siguiente:

pg. 157
$ rm -fr ~/copia1/
Se puede lograr una copia de un directorio, conservando todos los atributos y permisos del
contenido del directorio original, utilizando el mandato cp# con la opcin -a:
$ cp -a ~/ejercicios1/ ~/copia1/
Podremos realizar una copia de un directorio, conservando todos los atributos y permisos del
contenido del directorio original, pero slo copiando los archivos que cambiaron respecto de el
directorio de origen y viendo una salida descriptiva, utilice el mandato cp con las opciones -auv:
$ cp -auv ~/ejercicios1/ ~/copia1/
Visualice de nuevo el contenido de ambos directorios utilizando el mandato ls con la opcin -l:
$ ls -l ~/ejercicios1/ ~/copia1/
Utilice el mandato touch para cambiar la fecha de modificacin del archivo ~/ejericios1/fstab:
$ touch ~/ejercicios1/fstab
Con el comando cp y la opcin -a se realiza una copia exacta del directorio de origen con todo
y sus contenidos, -u para realizar solo la copia de los contenidos nuevos y v para visualizar la
salida de una manera mas detallada:
$ cp -auv ~/ejercicios1/* ~/copia1/
Ejecutamos nuevamente el comando mkdir y generamos un directorio con el nombre nuevo
dentro del directorio de ejercicios1;
$ mkdir ~/ejercicios1/nuevo
Ingresamos al directorio de ejercicios1para continuar y ejecutamos lo siguiente:
$ cd ~/ejercicios1/
Listamos el contenido de este directorio, ejecutando lo siguiente:
$ ls
Nos mostrara los archivos fstab y passwd y el directorio nuevo:
$ adicional fstab passwd
Con el comando mv moveremos los archivos de lugar, mostrando su funcionamiento con el
siguiente coamando:
$ mv fstab nuevo/
Examine el contenido del directorio ejercicios1utilizando de nuevo el mandato ls;
$ ls
Ingresamos al directorio nuevocon el comando siguiente;

pg. 158
$ cd nuevo
Visualizamos nuevamente el contenido del directorio de trabajo actual ejecutando el siguiente
comando;
$ ls
Regresamos al directorio ejercicios1que se encuentra un nivel arriba utilizando el coamando;
$ cd ../

Eliminamos el archivo passwd utilizando el comando rm de la siguiente forma;


$ rm passwd
Hacemos lo mismo con el archivo fstab que esta dentro de directorio nuevo;
$ rm nuevo/fstab
Y eliminamos el directorio nuevo de la siguiente forma;
$ rmdir nuevo
Creamos un nuevo sub-directorio con el nombre NuevoDir1;
$ mkdir NuevoDir1
Accesamos a este nuevo directorio:
$ cd NuevoDir1
Ejecutamos lo siguiente:
$ mkdir Nuevo Directorio
Listamos el contenido actual mostrando una sola columna:
$ ls -1
Lo anterior cre dos nuevos directorios, uno con el nombre Nuevo y otro con el nombre
Directorio, por lo que mostrara los siguientes archivos o carpetas:
$ Directorio Nuevo
Ejecutando el comando de la siguiente forma, solo que en esta ocasin utilizar una diagonal
inversa antes del espacio:
$ mkdir Nuevo\ Directorio
Listamos de nueva cuenta el contenido del directorio de trabajo actual mostrando una sola
columna:
$ ls -1
Lo anterior cre un nuevo directorio denominado Nuevo Directorio, lo que nos mostrara un

pg. 159
listado como la siguiente:
$ Directorio
Nuevo
Nuevo Directorio
La diagonal inversa funciona como carcter de escape para indicar que espacio entre Nuevo y
Directorio es parte del nombre el directorio que vamos crear.
Una vez que hemor realizado esta tarea borraremos el directorio con todo su contenido desde el
home con un comando, pero regresando al home

$ cd

Y dando un ls podremos ver el directorio o dirctorio principales

$ ls

Y para borrar la carpeta le daremos el siguiente comando;

$ rm r ejercicios1

Lo cual hara un borrado recursivo, lo cual ralizara un borrado completo


Siempre es recomendable pensar de manera detenida cuando se va a realizar un borrado de
archivos o directorios, o tener en cuenta si se tienen respaldos ola vitalidad de los archivos a
los que se les va a aplicar dicha tarea.

Compresin y descompresin de archivos.

En Linux hay diversas herramientas para empaquetar y comprimir archivos, tomando en cuenta
que empaquetar es juntar dos o ms archivos en un solo archivo (paquete) y comprimir es
tomar este archivo-paquete y comprimirlo a continuacin te muestro un resumen de las ms
comunes, de acuerdo a la extensin que comunmente se acostumbra ponerles.

Ficheros gz
Para comprimir ficheros en formato .gz, se utiliza el siguiente comando:
gzip -9 fichero
-9 : le indica a gz que utilice el mayor factor de compresin posible.
Para descomprimir ficheros .gz, se utilizara el siguiente comando:
gzip -d fichero.gz
-d : indica descompresin

pg. 160
Ficheros bz2
Para comprimir ficheros en formato bz2, se utiliza el siguiente comando:
bzip fichero
Para descomprimir ficheros .bz2, se usa el comando siguiente:
bzip2 -d fichero.bz2
-d : indica descompresin.

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

Ficheros tar.gz
Para comprimir ficheros en formato tar.gz, se utiliza el siguiente comando:
tar -czfv archivo.tar.gz ficheros
-c : indica a tar que cree un archivo.
-z : indica que use el compresor gzip
-f : indica a tar que el siguiente argumento es el nombre del fichero.tar
-v : indica a tar que muestre lo que va empaquetando
Para descomprimir ficheros con extensin tar.gz, se usa el siguiente comando:
tar -xzvf archivo.tar.gz
-x : le dice a tar que extraiga el contenido del fichero tar.gz
-z : le indica a tar que esta comprimido con gzip
-v : va mostrando el contenido del fichero
-f : le dice a tar que el siguiente argumento es el fichero a descomprimir.
Para poder ver el contenido de un fichero comprimido en tar.gz, se usa el siguiente comando:
tar -tzf archivo.tar.gz

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

Para realizar una compresin de tipo gzip ejecutaramos el comando de la forma que sigue;

$ tar zcf comprimido.tar.gz pixmaps/


Para poder ver el contenido del archivo comprimido ejecutaremos el comando de la siguiente
forma:
$ tar ztvf comprimido.tar.gz
Para extraer el contenido del archivo, ejecutariamos lo siguiente:

pg. 161
$ tar zxvf comprimido.tar.gz -C ~/archivosgz/
Para realizar una extraccin de los archivos de manera selectiva, ejecutaramos lo siguiente:

$ tar zxvf foo.tar.gz -C ~/ejemplos1/ --wildcards '*.png'

tar -c ficheros | bzip2 > archivo.tar.bz2


Para descomprimir ficheros tar.bz2, se utiliza el siguiente comando:
bzip2 -dc archivo.tar.bz2 | tar -xv

Y para ver el contenido de un fichero tar.bz2, se usa el siguiente comando:


bzip2 -dc archivo.tar.bz2 | tar t
Para realizar una compresin en formato BZ2, ejecutaremos lo siguiente:
$ tar jcf comprimido.tar.bz2 pixmaps/

Para poder ver los archivos que estn contenidos dentro del archivo, ser necesario ejecutar lo
siguiente:
$ tar jtvf comprimido.tar.bz2
Para extraer el contenido del archivo comprimido es necesario ejecutar el comando de extraccin
de la siguiente manera:
$ tar jxvf comprimido.tar.bz2 -C ~/archivosbz2/

Para poder realizar una extraccin selectiva se ejecutaria de la siguiente manera:


$ tar jxvf comprimido.tar.bz2 -C ~/archivosbz2/ --wildcards '*.png'

Ficheros zip
Para poder comprimir en formato zip, se usara el comando siguiente:
zip archivo.zip ficheros a comprimir

Para poder descomprimir los ficheros zip, se usa el siguiente comando:


unzip archivo.zip

Para ver el contenido de un fichero zip, se pone el siguiente comando:


unzip -v archivo.zip

Ahora procederemos a realizar la comprension y descompresion utilizando el format zip, que es


el analogo de winzip en windows.

Realizamos la compresin del archivo de la siguiente manera

pg. 162
$ zip -r comprimido.zip pixmaps/
El siguiente mostrara el contenido del archivo comprimido.zip:

$ unzip -l comprimido.zip

Para extraer el contenido del archivo comprimido.zip dentro del directorio ~/archivos/,
ejecutando lo siguiente:
$ unzip comprimido.zip -d ~/archivos/

Si la salida le pregunta si desea sobre-escribir los archivos existentes, responda que si a todo
pulsando la letra A y enter.

Para extraer una seleccin de archivos que estn dentro el comprimido, realizaramos la tarea de
la siguiente forma;
$ unzip comprimido.zip -d ~/archivos/ *.png

Si la salida pregunta nuevamente presione A para sobreescribir:


Para extraer los archivos con la misma extencion pero de segundo nivel tendramos que hacerla
de la siguiente forma;
$ unzip comprimido.zip -d ~/archivos/ */*.png

Si necesita ayuda con el comando con respecto a sus opciones o el uso, puede hacer la consulta
de ambos, tanto de zip, como de unzip con los siguientes comandos;
$ man 1 zip
$ man 1 unzip

Fichero XZ
Para realizar una compresin de tipo XZ necesitaramos ejecutarlo de la siguiente forma:
$ tar Jcf comprimido.tar.xz pixmaps/
Para poder visualizar el contenido del archivo comprimido es necesario ejecutar el comando de
la siguiente forma:
$ tar Jtvf comprimido.tar.xz
Para extraer el contenido del archivo necesitaramos realizar la ejecucin del comando de la
siguiente forma:
$ tar Jxvf comprimido.tar.xz -C ~/archivosXZ/

pg. 163
Para extraer los archivos de manera selectiva, tendramos que ejecutarlo de la siguiente manera:
$ tar Jxvf comprimido.tar.xz -C ~/archivosXZ/ --wildcards '*.png'

Ficheros rar
Para comprimir en formato rar, se usara el siguiente comando:
rar -a archivo.rar ficheros
Para descomprimir ficheros en formato rar, se utiliza el siguiente comando:
unrar -x archivo.rar
Para ver el contenido de un fichero rar, se usa el siguiente comando:
unrar -v archivo.rar
unrar -l archivo.rar
Tengo que decir que todos estos comandos, es para hacerlo desde terminal una terminal, como
ejemplo os vendra de maravilla si os quedarais sin entorno grfico y tuvieseis que descomprimir
algn archivo.
Pero para los que no quieran usar la terminal, pueden estar tranquilos, que existen muy buenas
interfaces grficas. Como lo es File Roller.

Ejercicio;
Lo primero que haremos para llevar acabo esta prctica, ser verificar o realizar la instalacin de
los paquetes necesarios para llevar acabo la practica, como la instalacin que se hizo fue minima,
lo primero que haremos ser instalar dichos paquetes que en este caso son los compresores:

Iniciamos la secion como root, para poder ejecutar el siguiente comando el cual realizara la
instalacin

# yum install zip unzip gzip tar bzip2 xz

Una vez que estn instalados los paquete nos salimos para realizar las tareas con un usuario
ordinario, podemos utilizar cualquiera de los usuarios que ya hemos creado o podremos crear
uno nuevo con el siguiente comando;

# useradd compresor

Y le asignamos un password

# passwd compresor

Seguido nos logueamos con este;

pg. 164
Para poder llevar a cabo el ejercicio necesitamos realizar la compresin de alguna carpeta o
algn archivo, para esto realizaremos la copia de una carpeta del mismo sistema, para fines
ilustrativos utilizaremos la carpeta llamada pixmaps, que se encuentra en la ubicacin
/usr/shae/pixmaps, para lo cual la copiaremos integra al home del usuario que estemos usando
con el siguiente comando;

$ cp a /usr/share/pixmaps .

Ficheros tar
Para poder empaquetar ficheros, utilizamos el siguiente comando:
tar -cvf archivo.tar /dir/a/comprimir/
-c : indica a tar que cree un archivo.
-v : indica a tar que muestre lo que va empaquetando.
-f : indica a tar que el siguiente argumento es el nombre del fichero.tar.
Para poder desempaquetar los ficheros .tar, utilizamos el siguiente comando:
tar -xvf archivo.tar
-x : indica a tar que descomprima el fichero.tar.
-v : indica a tar que muestre lo que va desempaquetando.
-f : indica a tar que el siguiente argumento es el nombre del fichero a desempaquetar.
Si se quiere ver el contenido de un fichero .tar, se utiliza el siguiente comando:
tar -tf archivo.tar
-t : Lista el contenido del fichero .tar
-f : indica a tar que el siguiente argumento es el nombre del fichero a ver.

Compresion y desconpresion de archivos con formato tar.

Para comprimir un archivo o carpeta ejecutaramos lo siguiente:


$ tar cf comprimido.tar pixmaps/
Para mostrar el contenido el archivo comprimido en formato tar, ejecutaramos lo siguiente:
$ tar tvf comprimido.tar
Para extraer el contenido del comprimido, necesitaramos ejecutar el siguiente comando;
$ tar xvf comprimido.tar -C ~/archivostar/
Para extraer una seleccin de archivos, del archivo comprimido hay que ejecutarlo de la manera
siguiente;
$ tar xvf comprimido.tar -C ~/archivostar/ --wildcards '*.png'
Para consultar la sintaxis o las opciones de tar, puede realizar la siguiente ejecucin;
$ man 1 tar

pg. 165
Respaldos de archivos en Linux
Una de las tareas mas comunes de los administradores de sistemas es el respaldo de archivos
o informacin generada o acumulada dentro de nuestros servidores, partiendo del tipo de
utilidad que tenga el server podra ser vital, realizar el respaldo de informacin contenido
dentro de nuestra infraestructura, para tal motivo existen varios tipos de respaldos, los cuales
se describen a continuacion.

Completos
Se consideran de nivel 0 y es condierado el comprende los respaldos integros de inicio a fin, es
decir del primer archivo al ultimo.

Diferenciales:
Se consideran de nivel 1. Consisten en respaldos que dependen de un respaldo completo o
de nivel 0 para poder restaurar todos los datos, slo archivando los archivos nuevos o que
cambiaron respecto del ltimo respaldo completo. Es decir, para restaurar los datos se requiere
el ltimo respaldo completo y el respaldo diferencial. Hoy en da se utilizan muy poco, salvo que
el administrador del sistema sea poco experimentado o bien porque as es como lo prefiere,
pues consumen mucho ms espacio en el sistema de archivos que los respaldos incrementales.

Incrementales:
Se considera respaldo diferencial cuando hay un solo respaldo completo antes de ste, de nivel
2 cuando hay un respaldo completo y un respaldo incremental antes de ste, de nivel 3 cuando
hay un respaldo completo y dos incrementales antes de ste y as sucesivamente. Son similares
al respaldo diferencial, pero stos pueden hacerse a partir de un respaldo completo y/o un
diferencial y/o otros incrementales, restaurando los datos en secuencia, por lo cual permiten
ahorrar el espacio disponible en el sistema de archivos. Es decir, para restaurar los datos, se
requiere el ltimo respaldo completo y uno o ms respaldos incrementales.
Un respaldo completo se puede realizar con tar, con las opciones cpf, el nombre del archivo
*.tar a crear, la opcin -g (definir crear un archivo incremental en el nuevo formato de GNU)
y el nombre del archivo con extensin *.snar. ste ltimo es utilizado por el compresor tar
para almacenar la informacin respecto de qu fue lo que se respald. La opcin p es
importante para crear y restaurar los respaldos, pues permite preservar los permisos y atributos
originales de los datos. Si se omite esta opcin, todo el contenido almacenado y restaurado sera
propiedad del usuario root.
Recuerde que puede lograr sincornizaciones de archivos tambin incluyendo archivos ocultos con
el comando rsync, ejemplo:

# rsync a /home/* /backup

pg. 166
Para realizar el ejercicio es necesario loguaerse como root:
# su -l

Para generar un respaldo lo primero es definir en donde se va a poner el respaldo, o definir la


particin en donde se va a guardar el respaldo; para lo cual crearemos una carpeta dentro de
/var al cual nombraremos respaldos, esta tarea la realizaremos de la siguiente manera;
# mkdir /var/respaldos

Con el siguiente comando crearemos el primer respaldo, que es considerado un repaldo completo
o de nivel 0 /usr/share/pixmaps, guardando los archivos de datos y un incremental dentro
de /var/respaldos.

# tar cpf /var/respaldos/completo.tar \


-g /var/respaldos/registro.snar /usr/share/pixmaps

Para generar el respaldo de manera incremental, se define el nombre el archivo utilizado el mismo
archivo con extencion .snar

# tar cpf /var/respaldos/incremental-1.tar \


-g /var/respaldos/registro.snar /usr/share/pixmaps

De la misma manera crearemos el segundo respaldo incremental:


# tar cpf /var/respaldos/incremental-2.tar \
-g /var/respaldos/registro.snar /usr/share/pixmaps
Ahora crearemos un tercer respaldo incremental:

# tar cpf /var/respaldos/incremental-3.tar \


-g /var/respaldos/registro.snar /usr/share/pixmaps

Con el siguiente comando empezaremos a realizar la restauracin de los respaldos:

# tar xpf /var/respaldos/completo.tar \


-g /var/respaldos/registro.snar -C /

Con el siguiente recuperaremos el incremental nmero 1;

pg. 167
# tar xpf /var/respaldos/incremental-1.tar \
-g /var/respaldos/registro.snar -C /

Con el siguiente recuperaremos el incremental nmero 2;

# tar xpf /var/respaldos/incremental-2.tar \


-g /var/respaldos/registro.snar -C /

Con el siguiente acompletariamos el respaldo terminando de hacer el respaldo y restaurandolo

# tar xpf /var/respaldos/incremental-3.tar \


-g /var/respaldos/registro.snar -C /

Si se dispone de poco espacio estos pueden hacerse tambin de volmenes distintos, y asi
distribuir el espacio que ocupan los respaldos o moviendo a otros volmenes las fracciones del
respaldo si el espacio asi nos lo permite.

Para realizar un respaldo de esta forma tendramos que usar la opcin -M lo cual configura el
respaldo para ubicarlo en distintos volmenes y la opcin -L para indicar el tamao que le
asignaremos al la fraccin a generar, este se define en bytes.
El ejemplo generara el respaldo de la misma carpeta usada hasta este momento,
/usr/share/pixmaps en una unidad de almacenamiento externa que podra ser una usb o un disco
duro, en cuatro partes de 4 GiB cada una, asumiendo que /usr/share/pixmaps ocupa menos de
16 GiB de espacio en el sistema de archivos y que la unidad de almacenamiento externo est
montada en el directorio /media/DISCO/:

# tar cpf /media/DISCO/respaldo01.tar -g /media/DISCO/registro.snar -M -L


4194304 /usr/share/pixmaps

# tar cpf /media/DISCO/respaldo02.tar -g /media/DISCO/registro.snar -M -L


4194304 /usr/share/pixmaps

# tar cpf /media/DISCO/respaldo03.tar -g /media/DISCO/registro.snar -M -L


4194304 /usr/share/pixmaps

# tar cpf /media/DISCO/respaldo04.tar -g /media/DISCO/registro.snar -M -L


4194304 /usr/share/pixmaps
Para llevar acabo la restauracin de dicho respaldo se utilizara la opcin -M para indicar que se
trata de un respaldo de varios volmenes, y que debe restaurarse en una unidad como un solo
archivo;

pg. 168
# tar xpf /media/DISCO/respaldo01.tar -g /media/DISCO/registro.snar -M -C
/

# tar xpf /media/DISCO/respaldo02.tar -g /media/DISCO/registro.snar -M -C


/

# tar xpf /media/DISCO/respaldo03.tar -g /media/DISCO/registro.snar -M -C


/

# tar xpf /media/DISCO/respaldo04.tar -g /media/DISCO/registro.snar -M -L -


C/

Una vez terminado el ejercicio tendremos la recuperacin del archivo o archivos originales de
manera incremental.

Gestin de procesos y trabajos.

La ms simple definicin de un proceso podra ser que es una instancia de un programa en


ejecucin (corriendo). A los procesos frecuentemente se les refiere como tareas. El contexto de
un programa que esta en ejecucin es lo que se llama un proceso. Este contexto puede ser mas
procesos hijos que se hayan generado del principal (proceso padre), los recursos del sistema que
este consumiendo, sus atributos de seguridad (tales como su propietario y permisos de archivos
asi como roles y dems de SELinux), etc.

Linux, como se sabe, es un sistema operativo multitarea y multiusuario. Esto quiere decir que
mltiples procesos pueden operar simultneamente sin interferirse unos con los otros. Cada
proceso tiene la "ilusin" que es el nico proceso en el sistema y que tiene acceso exclusivo a
todos los servicios del sistema operativo.

Programas y procesos son entidades distintas. En un sistema operativo multitarea, mltiples


instancias de un programa pueden ejecutarse sumultneamente. Cada instancia es un proceso
separado. Por ejemplo, si cinco usuarios desde equipos diferentes, ejecutan el mismo programa
al mismo tiempo, habra cinco instancias del mismo programa, es decir, cinco procesos distintos.
Cada proceso que se inicia es referenciado con un nmero de identificacin nico conocido como
Process ID PID, que es siempre un entero positivo. Prcticamente todo lo que se est ejecutando
en el sistema en cualquier momento es un proceso, incluyendo el shell, el ambiente grfico que
puede tener mltiples procesos, etc. La excepcin a lo anterior es el kernel en si, el cual es un
conjunto de rutinas que residen en memoria y a los cuales los procesos a travs de llamadas al
sistema pueden tener acceso.

pg. 169
Comando Ps

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 (y principales):

Las opciones completas de ps las encuentras en las pginas del manual (man ps), o escribiendo
en la terminal ps L, y para ver un resumen de sus opciones ms comunes usaps --help:

#> ps --help
********* simple selection ********* ********* selection by list *********
-A all processes -C by command name
-N negate selection -G by real group ID (supports names)
-a all w/ tty except session leaders -U by real user ID (supports names)
-d all except session leaders -g by session OR by effective group name
-e all processes -p by process ID
T all processes on this terminal -s processes in the sessions given
a all w/ tty, including other users -t by tty
g OBSOLETE -- DO NOT USE -u by effective user ID (supports names)
r only running processes U processes for specified users
x processes w/o controlling ttys t by tty
*********** output format ********** *********** long options ***********
-o,o user-defined -f full --Group --User --pid --cols --ppid
-j,j job control s signal --group --user --sid --rows --info
-O,O preloaded -o v virtual memory --cumulative --format --deselect
-l,l long u user-oriented --sort --tty --forest --version
-F extra full X registers --heading --no-heading --context
********* misc options *********
-V,V show version L list format codes f ASCII art forest
-m,m,-L,-T,H threads S children in sum -y change -l format
-M,Z security data c true command name -c scheduling class

pg. 170
-w,w wide output n numeric WCHAN,UID -H process hierarchy

A continuacin algunos cuantos ejemplos de ps con la salida recortada.


El comando siguiente, muestra todos los procesos
# ps e

El comando siguiente muestra opciones completas


#ps ef
El siguiente muestra opciones completas extras
# ps eF
El siguiente comando ,muestra en formato BSD sin guion, usuarios y otras caractersticas;
# ps aux
El siguiente muestra un output personalizado, se indican los campos separados por coma
# ps eo user,pid,tty

El siguiente comando muestra el rbol de procesos;


#ps eH

El siguiente muestra lo mismo con otro formato


# ps axf

El siguiente se ejecuta cin la ruta, colo con el nombre real


# ps ec

El siguiente no muestra procesos, lista todos los cdigos de formatos


# ps L

Pstree
Muestra los procesos en forma de rbol, pstree --help te da las opciones ms comunes.
Recomiendo uses lo uses con la opcin -A y -G para que te un rbol con lneas con lneas estilo
ASCII y de terminal VT100 respectivamente, puedes aadir tambin -u para mostrar entre
parntesis al usuario propietario del proceso:

# pstree

Configuracin y uso de crond.


Esta es una introduccin a cron, cubre lo bsico de lo que cron puede hacer y la manera de usarse.

pg. 171
Qu es cron?
Cron es el nombre del programa que permite a usuarios Linux/Unix ejecutar automticamente
comandos o scripts (grupos de comandos) a una hora o fecha especfica. Es usado normalmente
para comandos de tareas administrativas, como respaldos, pero puede ser usado para ejecutar
cualquier cosa. Como se define en las pginas del manual de cron (#> man cron) es un demonio
que ejecuta programas agendados.

Recuerde que si no tiene lo que busca dentro del manual de cron, podra encontrar mas
informacin utilizando los comandos:
# whatis crontab
# man kcrontab
Dependiendo de la distribucin que este utilizando.
En prcticamente todas las distribuciones de Linux se usa la versin Vixie Cron, por la persona que
la desarroll, que es Paul Vixie, uno de los grandes gurs de Unix, tambin creador, entre otros
sistemas, de BIND que es uno de los servidores DNS ms populares del mundo.

Iniciar cron
Cron es un demonio (servicio), lo que significa que solo requiere ser iniciado una vez,
generalmente con el mismo arranque del sistema. El servicio de cron se llama crond. En la mayora
de las distribuciones el servicio se instala automticamente y queda iniciado desde el arranque
del sistema, se puede comprobar de varias maneras:

#> /etc/rc.d/init.d/crond status


#> /etc/init.d/crond status Usa cualquiera de los dos dependiendo de tu distro
crond (pid 507) is running...
o si tienes el comando service instalado:
#> service crond status
crond (pid 507) is running...
se puede tambin revisar a travs del comando ps:
# ps -ef | grep crond

si por alguna razn, cron no esta funcionando:


#> /etc/rc.d/init.d/crond start
Starting crond: [ OK ]

Si el servicio no estuviera configurado para arrancar desde un principio, bastara con agregarlo
con el comando chkconfig:

pg. 172
#> chkconfig --level 35 crond on
Con esto lo estaras agregando al nivel de ejecucin 3 y 5, para que inicie al momento del arranque
del sistema.

Usando cron
Hay al menos dos maneras distintas de usar cron:
La primera es en el directorio etc, donde muy seguramente encontrars los siguientes directorios:
cron.hourly
cron.daily
cron.weekly
cron.monthly

Si se coloca un archivo tipo script en cualquiera de estos directorios, entonces el script se


ejecutar cada hora, cada da, cada semana o cada mes, dependiendo del directorio.
Para que el archivo pueda ser ejecutado tiene que ser algo similar a lo siguiente:

#!/bin/sh
#script que genera un respaldo
cd /usr/documentos
tar czf * respaldo
cp respaldo /otra_directorio/.

Ntese que la primera lnea empieza con #!, que indica que se trata de un script shell de bash, las
dems lneas son los comandos que deseamos ejecute el script. Este script podra nombrarse por
ejemplo respaldo.sh y tambin debemos cambiarle los permisos correspondientes para que
pueda ser ejecutado, por ejemplo:

#> chmod 700 respaldo.sh


#> ls -l respaldo.sh
-rwx------ 1 root root 0 Jul 20 09:30 respaldo.sh

La "x" en el grupo de permisos del propietario (rwx) indica que puede ser ejecutado.
Si este script lo dejamos en cron.hourly, entonces se ejecutar cada hora con un minuto de
todos los das, en un momento se entender el porque.

Como segundo modo de ejecutar o usar cron es a travs de manipular directamente el


archivo /etc/crontab. En la instalacin por defecto de varias distribuciones Linux, este archivo se
ver a algo como lo siguiente:

pg. 173
#> cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Las primeras cuatro lneas son variables que indican lo siguiente:


SHELL es el 'shell' bajo el cual se ejecuta el cron. Si no se especifica, se tomar por defecto el
indicado en la lnea /etc/passwd correspondiente al usuario que este ejecutando cron.
PATH contiene o indica la ruta a los directorios en los cuales cron buscar el comando a ejecutar.
Este path es distinto al path global del sistema o del usuario.
MAIL TO es a quien se le enva la salida del comando (si es que este tiene alguna salida). Cron
enviar un correo a quien se especifique en este variable, es decir, debe ser un usuario vlido del
sistema o de algn otro sistema. Si no se especifica, entonces cron enviar el correo al usuario
propietario del comando que se ejecuta.

HOME es el directorio raz o principal del comando cron, si no se indica entonces, la raz ser la
que se indique en el archivo /etc/passwd correspondiente al usuario que ejecuta cron.
Los comentarios se indican con # al inicio de la lnea.
Despus de lo anterior vienen las lneas que ejecutan las tareas programadas propiamente. No
hay lmites de cuantas tareas pueda haber, una por rengln. Los campos (son 7) que forman estas
lneas estn formados de la siguiente manera:

Minuto Hora DiaDelMes Mes DiaDeLaSemana Usuario Comando

Campo Descripcin
Minuto Controla el minuto de la hora en que el comando ser ejecutado, este valor
debe de estar entre 0 y 59.
Hora Controla la hora en que el comando ser ejecutado, se especifica en un
formato de 24 horas, los valores deben estar entre 0 y 23, 0 es medianoche.
Da del Da del mes en que se quiere ejecutar el comando. Por ejemplo se indicara
Mes 20, para ejecutar el comando el da 20 del mes.

pg. 174
Mes Mes en que el comando se ejecutar, puede ser indicado numricamente
(1-12), o por el nombre del mes en ingls, solo las tres primeras letras.
Da de la Da en la semana en que se ejecutar el comando, puede ser numrico (0-
semana 7) o por el nombre del da en ingls, solo las tres primeras letras. (0 y 7 =
domingo)
Usuario Usuario que ejecuta el comando.
Comando Comando, script o programa que se desea ejecutar. Este campo puede
contener mltiples palabras y espacios.

Un asterisco * como valor en los primeros cinco campos, indicar inicio-fin del campo, es decir
todo. Un * en el campo de minuto indicar todos los minutos.

Para entender bien esto de los primeros 5 campos y el asterisco usar mejor varios ejemplos:

Ejemplo Descripcin
01 * * * * Se ejecuta al minuto 1 de cada hora de todos los das
15 8 * * * A las 8:15 a.m. de cada da
15 20 * * * A las 8:15 p.m. de cada da
00 5 * * 0 A las 5 a.m. todos los domingos
* 5 * * Sun Cada minuto de 5:00a.m. a 5:59a.m. todos los domingos
45 19 1 * * A las 7:45 p.m. del primero de cada mes
01 * 20 7 * Al minuto 1 de cada hora del 20 de julio
10 1 * 12 1 A la 1:10 a.m. todos los lunes de diciembre
00 12 16 * Al medioda de los das 16 de cada mes y que sea Mircoles
Wen
30 9 20 7 4 A las 9:30 a.m. del dia 20 de julio y que sea jueves
30 9 20 7 * A las 9:30 a.m. del dia 20 de julio sin importar el da de la semana
20 * * * 6 Al minuto 20 de cada hora de los sbados
20 * * 1 6 Al minuto 20 de cada hora de los sbados de enero

Ejecutando Cron con mltiples usuarios, comando crontab


Linux es un sistema multiusuario y cron es de las aplicaciones que soporta el trabajo con varios
usuarios a la vez. Cada usuario puede tener su propio archivo crontab, de hecho el/etc/crontab se
asume que es el archivo crontab del usuario root, aunque no hay problema que se incluyan otros
usuarios, y de ah el sexto campo que indica precisamente quien es el usuario que ejecuta la tarea
y es obligatorio en /etc/crontab.
Pero cuando los usuarios normales (e incluso root) desean generar su propio archivo de crontab,
entonces utilizaremos el comando crontab.

pg. 175
En el directorio /var/spool/cron (puede variar segn la distribucin), se genera un archivo cron
para cada usuario, este archivo aunque es de texto, no debe editarse directamente.
Se tiene entonces, dos situaciones, generar directamente el archivo crontab con el comando:
$> crontab -e
Con lo cual se abrira el editor por default (generalemente vi) con el archivo llamado crontab vacio
y donde el usuario ingresar su tabla de tareas y que se guardar automticamente como
/var/spool/cron/usuario.
El otro caso es que el usuario edite un archivo de texto normal con las entradas de las tareas y
como ejemplo lo nombre 'mi_cron', despus el comando $> crontab mi_cron se encargar de
establecerlo como su archivo cron del usuario en /var/spool/cron/usuario:

$> vi mi_cron
# borra archivos de carpeta compartida
0 20 * * * rm -f /home/sergio/compartidos/*
# ejecuta un script que realiza un respaldo de la carpeta documentos el primer da de cada mes
0 22 1 * * /home/sergio/respaldomensual.sh
# cada 5 horas de lun a vie, se asegura que los permisos sean los correctos en mi home
1 *5 * * * 1-5 chmod -R 640 /home/sergio/*
:wq (se guarda el archivo)
$> ls
mi_cron
$>
mi_cron
(se establece en /var/spool/cron/usuario)

Resumiendo lo anterior y considerando otras opciones de crontab:

$> crontab archivo.cron (establecer el archivo.cron como el crontab del usuario)


$> crontab -e (abrir el editor preestablecido donde se podr crear o editar el archivo
crontab)
$> crontab -l (lista el crontab actual del usuario, sus tareas de cron)
$> crontab -r (elimina el crontab actual del usuario)

En algunas distribuciones cuando se editan crontabs de usuarios normales es necesario reiniciar


el servicio para que se puedan releer los archivos de crontab en /var/spool/cron.
#> service crond restart
Para entender mejor como iniciar/detener/reiniciar servicios, en este artculo encontrars ms
informacin.

pg. 176
Controlando el acceso a cron
Cron permite controlar que usuarios pueden o no pueden usar los servicios de cron. Esto se logra
de una manera muy sencilla a travs de los siguientes archivos:
/etc/cron.allow
/etc/cron.deny
Para impedir que un usuario utilice cron o mejor dicho el comando crontab, basta con agregar su
nombre de usuario al archivo /etc/cron.deny, para permitirle su uso entonces sera agregar su
nombre de usuario en /etc/cron.allow, si por alguna razn se desea negar el uso de cron a todos
los usuarios, entonces se puede escribir la palabra ALL al inicio de cron.deny y con eso bastara.
#> echo ALL >>/etc/cron.deny
o para agregar un usuario mas a cron.allow
#> echo juan >>/etc/cron.allow

Si no existe el archivo cron.allow ni el archivo cron.deny, en teora el uso de cron esta entonces
sin restricciones de usuario. Si se aaden nombres de usuarios en cron.allow, sin crear un archivo
cron.deny, tendr el mismo efecto que haberlo creado con la palabra ALL. Esto quiere decir que
una vez creado cron.allow con un solo usuario, siempre se tendrn que especificar los dems
usuarios que se quiere usen cron, en este archivo.

Administracion de trabajos en cron


crontab archivo
Remplaza el existente archivo crontab con un archivo definido por el usuario
crontab -e
Editar el archivo crontab del usuario, cada linea nueva sera una nueva tarea de
crontab.
crontab -l
Lista todas las tareas de crontab del usuario
crontab -d
Borra el crontab del usuario
crontab -c dir
Define el directoriod e crontab del usuario (este debe tener permisos de escritura y
ejecucion del usuario)
crontab -u usuario
prefijo para manejar el crontab de otro usuario
Ejemplos:
$ sudo crontab -l -u root
$ sudo crontab -e usuario2
#crontab -d -u usuario

pg. 177
Ejercicio:
Para iniciar comenzaremos instalando el paquete necesarios;
# yum y install cronie
# yum y install anacron

El formato del archivo /etc/crontab.

Cualquier usuario que sea definido para ejecutar un programa en el archivo /etc/crontab, podr
ejecutar todo aquello para lo cual tenga privilegios, siempre y cuando se defina un intrprete de
mandatos vlido (por ejemplo /bin/bash o /bin/sh) en la variable de entorno SHELL, as como las
rutas de binarios ejecutables que sean necesarias, sin importar lo que est definido en el archivo
/etc/passwd o las variables de entorno definidas en el archivo ~/.bashrc del usuario a utilizar.

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

El archivo /etc/crontab permite adems definir a cul usuario enviar un mensaje de correo
electrnico con los resultados de las salidas de los programas que las generen y el intrprete de
mandatos a utilizar.

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=alguien@gmail.com

El archivo utiliza un formato de 7 campos, donde se define, respectivamente, minuto, hora, da


del mes, mes, da de la semana, usuario a utilizar y el programa a ejecutar.

.----------------------- Minuto (0 - 59)


| .-------------------- Hora (0 - 23)
| | .----------------- Da del mes (1 - 31)
| | | .-------------- Mes (1 - 12)
| | | | .----------- Da de la semana (0 - 6) (domingo=0 o 7), y
| | | | | tambin acepta como valores:
| | | | | mon, tue, wed, thu, fri, sat y sun
| | | | | .-------- Usuario
| | | | | | .- Programa a ejecutar

pg. 178

1 14 * * * hector /home/hector/bin/tarea.sh > /dev/null 2>&1

Formato exclusivo de cronie.


A diferencia de vixie-cron, con cronie se pueden omitir los primeras 5 campos y en su lugar utilizar
las siguientes opciones:
@reboot (ejecutar una vez despus de reiniciar el sistema)
@yearly y @annually (ejecutar anualmente, es decir: 0 0 1 1 *)
@monthly (ejecutar mensualmente, es decir: 0 0 1 * *)
@weekly (ejecutar semanalmente, es decir: 0 0 * * 0)
@daily (ejecutar diariamente, es decir: 0 0 * * *)
@hourly (ejecutar cada hora, es decir: 0 * * * *)

Formato para utilizar con crontab -e.


Todos los usuarios del sistema pueden ejecutar crontab con la opcin -e, a excepcin de aquellos
quienes tengan /dev/null (dispositivo nulo) como intrprete de mandatos o bien que se
encuentren listados en el archivo /etc/cron.deny.
Para los usuarios que tengan /sbin/nologin como intrprete de mandatos, ser necesario se
defina /bin/bash o /bin/sh en la variable de entorno SHELL al inicio del archivo cron
correspondiente. Con este tipo de usuarios, habra que ejecutar lo siguiente para poder hacer uso
de crontab.
# su -l usuario -s /bin/bash -c "crontab -e"
ATD
El At tiene basicamente la misma funcionalidad, solo cambia el formato con el que se especifica
un 'momento'. Tiene una sintaxis muy parecida al ingles. Dare ejemplos para que se entienda,
pero antes debemos comprender que el At no ejecuta un comando o script, sino una serie de
comandos, que At nos solicitara interactivamente. Tambien podemos especificar un script (y NO
un binario) para que sea ejecutado, mediante el parametro '-f', que ahora veremos.
Veamos unos ejemplos, para comprender mejor el uso de at:
at midnight - Ejecutara a la medianoche el script que ingresemos interactivamente al ejecutar el
comando. Tambien podemos usar noon (mediodia) o teatime (4pm). Por otra parte, podemos
agregar today (hoy) o tomorrow (maniana) como sufijo. Ejemplo: at 8:30am tomorrow (8.30 am
de maniana).
at 3:15pm - Ejecutara a las 3:15 de la tarde.
at now + 2 days - Ejecutara dentro de dos dias.
at 10am + 1 week - Ejecutara a las 10am dentro de una semana.
at 11pm Jul 22 - Ejecutara a las 23hs del 22 de Julio.
Y usando el parametro '-f', podriamos hacer: at -f ~/algun_script now + 10 minutes (ejecutar el
script ~/algun_script dentro de 10 minutos a partir de ahora).

pg. 179
En vez de usar day[s], week[s], tambien podemos usar minute[s], hour[s]. El now indica "AHORA".
Fecha u hora se pueden especificar con los siguientes formatos: HH:MM (hora:minutos),
MMDDYY o MM/DD/YY o DD.MM.YY (mes dia anio).
Los diferentes comandos que hacen al paquete AT son:
atd - El AT Daemon - Como cron, se debe cargar desde un script de /etc/rc.d
at - El at propiamente dicho. Ver los ejemplos.
atq - Ver la lista de trabajos ('jobs') pendientes.
atrm - Para eliminar un trabajo pendiente de la cola (queue).
batch - Como at, pero ejecutara el script cuando el nivel de carga del sistema haya bajado lo
suficiente. (default, 0.8).
El atq es el at con el parametro '-l', y el atrm es el at, pero con el parametro '-d'.
El at tambien admite el parametro '-m', que enviara un eMail al usuario una vez realizado el
trabajo.
Para permitir o denegar el uso de at podemos hacer lo mismo que con cron, y los archivos Allow
y Deny se encuentran en /etc/at.allow y /etc/at.deny, y se respeta el mismo esquema que en
Cron.

Kill
El comando kill, que literalmente quiere decir matar, sirve no solo para matar o terminar procesos
sino principalmente para enviar seales (signals) a los procesos. La seal por default (cuando no
se indica ninguna es terminar o matar el proceso), y la sintaxis es kill PID, siendo PID el nmero
de ID del proceso. Asi por ejemplo, es posible enviar una seal de STOP al proceso y se detendr
su ejecucin, despus cuando se quiera mandar una seal de CONTinuar y el proceso continuara
desde donde se quedo.

El siguiente comando muestra todas las posibles seales que puedan enviarse a un proceso;
# kill l
Es decir todos los procesos que estn en un nivel Start.
La lista previa presenta una lista de todas las posibles seales que pueden mandarse a un proceso
y estas pueden ser invocadas a travs del nmero de la seal o de su cdigo, por ejemplo:

#> kill -9 11428 (termina, mata un proceso completamente)


#> kill -SIGKILL 11428 (Lo mismo que lo anterior)

Las seales ms comunes son la 19 y 20 que detienen momentneamente la ejecucin de un


proceso o programa, 18 la continua, 1 que es la seal de hang up que obliga al proceso a releer
sus archivos de configuracin estando en ejecucin y 9 que termina rotundamente un proceso.

pg. 180
Killall

El comando killall, que funciona de manera similar a kill, pero con la diferencia de en vez de indicar
un PID se indica el nombre del programa, lo que afectar a todos los procesos que tengan ese
nombre. Asi por ejemplo si se tienen varias instancias ejecutndose del proxy server squid,
con killall squid eliminar todos los procesos que se esten ejecutando con el nombre 'squid'
#> killall -l (lista de posibles seales)
#> killall -HUP httpd (manda una seal de "colgar", detenerse releer sus archivos de
configuracin y reiniciar)
#> killall -KILL -i squid (manda seal de matar a todos los procesos squid pero pide confirmacin
en cada uno)

Nice
Permite cambiar la prioridad de un proceso. Por defecto, todos los procesos tienen una prioridad
igual ante el CPU que es de 0. Con nice es posible iniciar un programa (proceso) con la prioridad
modificada, ms alta o ms baja segn se requiera. Las prioridades van de -20 (la ms alta) a 19
la ms baja. Solo root o el superusuario puede establecer prioridades negativas que son ms altas.
Con la opcin -l de ps es posible observar la columna NI que muestra este valor.

#> nice (sin argumentos, devuelve la prioridad por defecto)

renice
Asi como nice establece la prioridad de un proceso cuando se incia su ejecucin, renicepermite
alterarla en tiempo real, sin necesidad de detener el proceso.

#> nice -n -5 yes (se ejecuta el programa 'yes' con prioridad -5)
(dejar ejecutando 'yes' y en otra terminal se analiza con 'ps')
#> ps -el
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 12826 12208 4 75 -5 - 708 write_ pts/2 00:00:00 yes
#> renice 7 12826
12826: prioridad antigua -5, nueva prioridad 7
#> ps -el
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 12826 12208 4 87 7 - 708 write_ pts/2 00:00:15 yes
(obsrvese el campo NI en el primer caso en -5, y en el segundo con renice qued en 7, en tiempo

pg. 181
real)

nohup y &
Cuando se trata ejecutar procesos en background (segundo plano) se utiliza el comandonohup o
el operador & . Aunque realizan una funcin similar, no son lo mismo.
Si se desea liberar la terminal de un programa que se espera durar un tiempo considerable
ejecutndose, entonces se usa. Esto funciona mejor cuando el resultado del proceso no es
necesario mandarlo a la salida estndar (stdin), como por ejemplo cuando se ejecuta un respaldo
o se abre un programa Xwindow desde la consola o terminal. Para lograr esto basta con escribir
el comando en cuestin y agregar al final el smbolo & (ampersand).
$> yes > /dev/null &
$> tar czf respaldo /documentos/* > /dev/null/ &
$> konqueror & (con estos ejemplos se ejecuta el comando y se libera la terminal regresando el
prompt)
Sin embargo lo anterior produce que el padre del proceso PPID que se invoc sea el proceso de
la terminal en si, por lo que si cerramos la terminal o salimos de la sesin tambin se terminaran
los procesos hijos que dependan de la terminal, no muy conveniente si se desea que el proceso
continu en ejecucin.
Para solucionar lo anterior, entonces se usa el comando nohup que permite al igual que '&'
mandar el proceso y background y que este quede inmune a los hangups (de ah su nombre
nohup) que es cuando se cuelga o termina la terminal o consola de la cual se ejecut el proceso.
$> nohup yes > /dev/null &
$> nohup czf respaldo /documentos/* > /dev/null/
$> nohup konqueror

Asi se evita que el proceso se "cuelgue" al cerrar la consola.

Jobs
Si por ejemplo, se tiene acceso a una nica consola o terminal, y se tienen que ejecutar varios
comandos que se ejecutarn por largo tiempo, se pueden entonces como ya se vi previamente
con nohup y el operador '&' mandarlos a segundo plano o background con el objeto de liberar la
terminal y continuar trabajando.
Pero si solo se est en una terminal esto puede ser difcil de controlar, y para eos tenemos el
comando jobs que lista los procesos actuales en ejecucin:
#> yes > /dev/null &
[1] 26837
#> ls -laR > archivos.txt &
[2] 26854

pg. 182
#> jobs
[1]- Running yes >/dev/null &
[2]+ Running ls --color=tty -laR / >archivos.txt &

En el ejemplo previo, se ejecut el comando yes y se envi a background (&) y el sistema devolvi
[1] 26837, indicando asi que se trata del trabajo o de la tarea [1] y su PID, lo mismo con la segunda
tarea que es un listado recursivo desde la raz y enviado a un archivo, esta es la segunda tarea.
Con los comandos fg (foreground) y bg background es posible manipular procesos que esten
suspendidos temporalmente, ya sea porque se les envi una seal de suspensin como STOP (20)
o porque al estarlos ejecutando se presion ctrl-Z. Entonces para reanudar su ejecucin en primer
plano usaramos fg:
#> jobs
[1]- Stopped yes >/dev/null &
[2]+ Stopped ls --color=tty -laR / >archivos.txt &
#> fg %1
#> jobs
[1]+ Running yes >/dev/null &
[2]- Stopped ls --color=tty -laR / >archivos.txt &

Obsrvese como al traer en primer plano al 'job' o proceso 1, este adquiri el smbolo [+] que
indica que esta al frente. Lo mismo sera con bg que volvera a reinicar el proceso pero en segundo
plano. Y tambin es posible matar los procesos con kill indicando el nmero que
devuelve jobs: kill %1, terminara con el proceso en jobs nmero 1.

Top
Una utilera muy usada y muy til para el monitoreo en tiempo real del estado de los procesos y
de otras variantes del sistema es el programa llamado top, se ejecuta desde la lnea de comandos,
es interactivo y por defecto se actualiza cada 3 segundos.
$> top
top - 13:07:30 up 8 days, 6:44, 4 users, load average: 0.11, 0.08, 0.08
Tasks: 133 total, 1 running, 131 sleeping, 0 stopped, 1 zombie
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st
Mem: 497356k total, 472352k used, 25004k free, 21500k buffers
Swap: 1156640k total, 257088k used, 899552k free, 60420k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
26156 sergon 15 0 2160 1016 784 R 1 0.2 0:00.93 top
1 root 15 0 2012 616 584 S 0 0.1 0:00.98 init
2 root RT 0 0 0 0 S 0 0.0 0:00.29 migration/0

pg. 183
3 root 34 19 0 0 0 S 0 0.0 0:00.00 ksoftirqd/0
4 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/0
5 root RT 0 0 0 0 S 0 0.0 0:00.38 migration/1
...
Estando adentro de la apliacin, presionando 'h' muestra una ayuda de los posibles comandos
que permiten configurar top, por ejemplo, al presionar 's' pregunta por el tiempo en segundos
de actualizacin, etc.
Estas son algunas de las herramientas, las ms importantes y usadas, para adminsitrar procesos,
hay varios programas en ambientes grficos que en una sola pantalla permiten todo lo anterior y
ms, y en lnea de comandos te recomiendo htop, que es como un toppero en esteroides.

pg. 184
Ejercicio;
Para desarrollar el ejercicio, primero hay que realizar un par de instalaciones de algunos paquetes
que van a ser necesarios para lo cual nos loguearemos como root y realizarlas con el siguiente
comando:
# yum -y install procps top util-linux-ng
Una vez realizadala instalacin, nos salimos de la secion o nos logueamos en otra terminal, con
cualquiera de los usuarios antes creados para poder llevar acabo el ejercicio.
Ejecutamos un proceso sleep con un tiempo estimado de 700 segundos, esto lo lograremos con
el siguiente comando;

$ sleep 700
Pulsaremos las teclas CTRL+Z, lo cual pondr el proceso en segundo plano:
Ejecutamos el comando jobs o trabajos, para visualizar el trabajo detenido:
$ jobs
Ejecutando el comando bg reactivaremos el trabajo 1 que esta en backgroud o en segundo plano:
$ bg 1

Ejecute nuevamente sleep con el valor 900 y un signo & al final, para generar otro proceso mas:
$ sleep 900 &
Con esto lo que haremos ser enviar el trabajo a segundo plano.
Ejecutamos nuevamente el comando de Jobs para poder ver los trabajos que hemos ejecutado:
$ jobs
[1]- Ejecutando sleep 600 &
[2]+ Ejecutando sleep 700 &
Ejecutando el comando fg con 1 como argumento podremos enviar al primer plano el primer
trabajo:
$ fg 1
Realizando esto, har que el proceso o trabajo sleep 700 regrese a primer plano.
Para terminar este ltimo trabajo, pulse CTRL+C.
Acontinuacion ejecutaremos el comando ps aux, que en la parte de ps, dice que mostrara todas
las terminales, incluyendo los procesos, pero a diferencia del otro agregaremos una pipa, y un
atributo llamado less el cual nos mostrara toda la informacin de manera pausada segn se
requiera;
$ ps aux |less
Si realizamos la conbinacion de la pipa junto con grep, nos realizara una bsqueda selectiva de los

pg. 185
procesos que incluyan el nombre de sleep;
$ ps aux |grep sleep
En este caso deberemos de ver aun uno de los procesos sleep que declaramos anteriormente.
Ahora de lo que estamos viendo el proceso sleep debe de mostrar un numero de proceso, si
ejecutamos el comando kill seguido del proceso se terminara con esta tarea;
$ kill No.de proceso
Si ejecutamos de nuevo el comando sleep, pero ahora con un tiempo de 300, como argumento,
con un signo & al final, se generar otro trabajo en segundo plano;
$ sleep 300 &
Como sabemos que el trabajo es el nico y esta en proceso 1, podramos terminarlo con el
siguiente comando:
$ kill %1
Generaremos otro proceso pero ahora con un tiempo de 500 segundo pasndolo a segundo plano
tambin;
$ sleep 500 &
Si ejecutamos el ps con la pipa y el argumento sleep podremos ver el proceso que acabamos de
generar.
$ ps aux |grep sleep
Observaremos cual el numero de PID o numero de indentidad, y lo terminaremos con el comando
kill, pero en esta ocacion agregaremos el argumento -9
$ kill -9 No.de Proceso
Para poder ver mejor el funcionamiendo de jobs agregaremos dos tareas al mismo tiempo de
la siguiente forma:
$ sleep 500 & sleep 900 &
Correremos de nuevo el comando para poder visualizar los trabajos que estn corriendo:
$ Jobs
Si ejecutamos nuevamente ps, pero con la opcin -j, podremos visualizar los nmeros de
proceso o de ID de estos:
$ ps -j
Ejecutaremos el comando killall con la cadena sleep como argumento, a fin de terminar de
manera normal de todos los procesos denominados sleep.
$ killall sleep
Repetimos el proceso de dar de alta dos tareas al mismo tiempo, las visualizamos con ps, pero

pg. 186
ahora los terminaremos con un comando killall, agregando la opcin s y el valos 9, con la misma
cadena como argumento y veremos que termina todos los procesos

$ killall -s 9 sleep

Comandos nice y renice.

Realizaremos la compresin de los archivos que estn en la carpeta /lib/modules, en espaol los
modulos de las libreras en un archivo tar llamado comprimidonice

# tar jcf comprimidonice.tar.bz2 /lib/modules

Al terminar utilice time para cuantificar la ejecucin del compresor con las opciones jxf, para
descomprimir el archivo comprimidonice.tar.bz2. Esto con la finalidad de cuantificar la
descompresin con la prioridad de planificacin 0 (valor predeterminado del sistema), la cual
permite utilizar los recursos que regularmente permite utilizar el sistema al usuario.

# time tar jxf comprimidonice.tar.bz2

La salida nos debe mostrar unas medidas de tiempo.


Para darle prioridad a esta tarea utilizaremos el comando nice, esto le dara una planificacin a
10(valor predeterminado de nice), esto con el objetivo de utilizar menos recursos de sistema, para
ello ejecutaremos el comando del la siguiente manera:

# time nice -n +10 tar jxf comprimidonice.tar.bz2

Los resultados debern ser ligeramente mayores, en cuanto a tiempo de ejecucin pues la
prioridad fue aumentada.

El usuario ordinario solo puede definir valores de prioridad de planificacin del 0 al 19,
prioridad de planificacin predeterminada a prioridad de planificacin menos favorable. Los
valores negativos, del -1 al -20, que son los ms favorables, slo los pude utilizar root.

Para verificar lo descrito anteriormente podramos ejecutar su con la opcin -c, con la cual se
indicar entre comillas cualquier cosa para ser ejecutada como root, de la siguiente forma.

pg. 187
$ su -c "time nice -n -20 tar jxf cmprimidonice.tar.bz2"

Los resultados debern ser sensiblemente inferiores que la ejecucin con el valor predeterminado
de prioridad de planificacin (0).

La ejecucin del comando anterior, creara un directorio denominado lib dentro del directorio de
inicio del usuario, pero ste le pertenece de root, por lo cual el usuario regular ser incapaz de
borrarlo. Borrelo para evitar tener que realizar nuevamente el procedimiento, para esto es
recoemndable tener 2 terminales abiertas y poder realizar las tareas de manera mas fluida.

$ su -c "rm -fr /home/fulano/lib"

Ulitizaremos renice para cambiar la prioridad de planificacin de procesos en ejecucin. Para


poder demostrar de forma mas clara este comando, iniciaremos utilizando ps con las opciones
alx las cuales nos mostrarn todos los procesos de todas las terminales:

$ ps alx |less

Con el siguiente comando cambiaremos la prioridad de planificacin a un valor de -10, al proceso


que en el ejemplo corresponde al PID que elija:
$ su -c "renice -n -10 -p PID"

Con el siguiente cambiaremos la prioridad de planificacin a -10 a todos los procesos del usuario
con el que estemos trabajando:

$ su -c "renice -n -10 -u user"

El siguiente ejemplo cambia la prioridad de planificacin a -10 a todos los procesos del grupo
desarrollo:
$ su -c "renice -n -10 -g desarrollo"
Top.
Top es una herramienta que proporciona una visualizacin continua y en tiempo real de los
procesos activos en un sistema, como una lista que de modo predeterminado lo hace de acuerdo
al uso del CPU. Puede ordenar la lista por uso de memoria y tiempo de ejecucin.

pg. 188
Para ordenar la lista de procesos por orden de uso de memoria, pulse SHIFT+M. Para ordena la
lista de procesos por orden de tiempo de ejecucin, pulse SHIFT+T. Para invertir el orden de la
lista, pulse SHIFT+R. Para activar o bien desactivar, la visualizacin por hilos, pulse SHIFT+H. Para
ordenar de nuevo la lista de procesos por orden de uso de CPU, pulse SHIFT+P.
Para mostrar los procesos de un usuario en especfico, pulse la tecla u y defina a continuacin el
nombre del usuario.

Para terminar o aniquilar cualquier proceso, pulse la tecla k y defina a continuacin el nmero de
identidad de proceso que corresponda y luego la seal a utilizar (9 o 15).
Para cambiar la prioridad de planificacin de cualquier proceso, pulse la tecla r y a continuacin
defina el nmero de identidad de proceso que corresponda y luego el valor de prioridad de
planificacin deseado.
Pulse la tecla h para ver el la ayuda completa de top.
La ejecucin es;
$ top

lsof.

Lsof significa listar archivos abiertos (list open files). Es utilizado ampliamente en sistemas
operativos tipo POSIX para hacer reportes de archivos y los procesos que estn utilizando a stos.
Se puede utilizar para revisar que procesos estn haciendo uso de directorios, archivos
ordinarios, tuberas (pipes), zcalos de red (sockets) y dispositivos. Uno de los principales usos de
determinar que procesos estn haciendo uso de archivos en una particin cuando esta no se
puede desmontar. Lsof fue desarrollado por Vic Abell, quien alguna vez fue director del Centro de
Cmputo de la Universidad de Purdue.

Lo primero que tenemos que hacer s instalar el paquete, para instalar lsof, ejecute lo siguiente:

yum -y install lsof

Ejercicio;
Utilizando lsof podremos ver todos los procesos que utilizan el sistema de archivos en general,
ejecute lsof:

pg. 189
# lsof

Si lo ejecutamos de la siguiente manera podremos visualizar ms cmodamente esta salida:

# lsof | more

Usted podra especificar que se muestren todos los procesos desde un directorio en particular, de
la siguiente manera podramos solicitar, que se muestren los procesos que estn conpartiendo o
haciendo uso de /var.

# lsof /var

Si se necesita mostrar solamente el archivo utilizado por un proceso en particular, podra usar con
la opcin -p seguida del nmero del proceso en el cual tuviramos interes:

# lsof -p PID

Con la opcin -i podr mostrar todos los archivos de red utilizados por procesos de red. Si deseara
mostrar los archivos de red en uso por algn proceso de red en particular, se utilizan las opciones
-i seguido de la opcion grep y el nombre de algn servicio. En el siguiente ejemplo se pide a lsof
mostrar solamente los archivos de red utilizados por los procesos de red derivados de named:

# lsof -i | grep named

Si tiene dudas y desea consultar el manual de lsof puede consultarse ejecutando lo siguiente:

# man 8 lsof

Implementar y Administrar Cuotas De Disco (Disk Quotas) en Linux

Sistemas Linux con gran cantidad de usuarios, como servidores de correo, servidores samba, etc.,
tarde o temprano tienen el problema de usuarios que almacenan demasiada informacin en sus
directorios de trabajo, pudiendo incluso en casos extremos llenar completamente discos duros
haciendo el sistema inservible. Con el uso de cuotas de disco (disk quotas) es posible limitar la

pg. 190
cantidad de espacio disponible para cada usuario o de manera global para todos. En este manual
de LinuxTotal.com.mx conocers a fondo como implementar y administrar cuotas de disco para
control de los usuarios.

Tipos de cuota
Por Bloques (blocks): Un bloque corresponde a 1 kb y una cuota por bloques correspondera al
total de bloques que un usuario puede utilizar en el sistema. Recuerda que los archivos se guardan
en bloques de disco. Asi un archivo de 100 bytes, ocupar un un bloque de 1kb en el disco duro.
Por Inodos (inodes): Un inodo o inode en ingls (Index Node) es un nmero que actua como
apuntador para el sistema de archivos de Linux y le indica en que bloques especficos del disco
duro se encuentran los datos de un archivo. Tambin el inodo en su referencia guarda informacin
sobre permisos, propietario, atributos, etc. Se podra ver en una analoga simple que un inodo es
como un nmero de serie nico para cada archivo del sistema y a travs de este nmero el sistema
recupera sus datos (bloques) y sus atributos (permisos, propietario, fechas, etc.).
En el caso de las cutoas, una cuota por inodos indicara el total de indos a los que el usuario tiene
derecho, casi representara el total de archivos que el usuario puede crear y digo "casi" porque
los usuarios podemos crear enlaces simblicos (ln -s) sobre archivos ya existentes que no
aumentan las cantidad de inodos. Pero por simplicidad puedes verlo como un 1 inodo = 1 archivo.

Lmites
Tanto las cuotas por bloques o por inodos, tienen lmites de uso y son de dos tipos:

a) HARD: (Duro) Cuando se establece (para bloques o inodos), es el lmite absoluto. El


usuario no podr exceder este lmite.

b) SOFT: (Suave) Este lmite (para bloques o inodos) que es siempre menor al HARD,
puede ser excedido por el usuario, pero ser constantemente advertido que el lmite
de uso para bloques o inodos ya ha sido excedido. Podra verse como un lmite de
advertencia que le estar indicando al usuario que su lmite ya se excedi y tome
medidas.

Cuando se usa el lmite SOFT, dos situaciones pueden ocurrir. La primera es que NO se tenga
establecido un tiempo de gracia, y entonces el usuario podr seguir usando bloques o inodos
hasta llegar al lmite HARD que ser su lmite absoluto de uso.

pg. 191
La segunda situacin es que SI se tenga establecido el tiempo de gracia, que puede ser en das,
horas, minutos o segundos. En este caso, el usuario podr seguir usando bloques o inodos hasta
que termine el tiempo de graca o llegue al lmite HARD, cualquiera que ocurra primero.
El tiempo de gracias se puede establecer por usuario o globalmente y ms adelante veremos como
establecerlo.

Donde se implementan?
Las cuotas se establecen por filesystem o sistema de archivos, es decir, debes de decidir en donde
es ms conveniente instalar un sistema de cuotas, pero no hay ningn problema si se instala en
todos. Las cuotas pueden establecerse por usuario, por grupos o ambos.
En el siguiente ejemplo:

#> mount
/dev/sda1 on /boot type ext3 (rw,noatime)
/dev/sda2 on / type ext3 (rw,noatime)
/dev/sda3 on /home type ext3 (rw,noatime)
none on /proc type proc (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

Lo anterior es un ejemplo tpico de un equipo Linux con varios sistemas de archivos (/boot, / y
/home). Como se sabe en /home es donde los usuarios tienen sus directorios de trabajo (HOME),
asi que solo en este sistema de archivos crearemos cuotas, en los otros dos no tiene caso.

Configuracin
Todo debe hacerse como root, y lo primero que haremos es editar el archivo "/etc/fstab" y
aadiremos "usrquota" o "grpquota", dependiendo si se desea cuotas por usuario o grupos, o
incluso ambas.

#> vi /etc/fstab
/dev/sda2 / ext3 noatime 1 1
/dev/sda1 /boot ext3 noatime 1 2
/dev/sda3 /home ext3 noatime 1 2
....

(Aadimos en la cuarta columna el tipo de cuotas que deseamos)

pg. 192
/dev/sda2 / ext3 noatime 1 1
/dev/sda1 /boot ext3 noatime 1 2
/dev/sda3 /home ext3 noatime,usrquota,grpquota 1 2
...

Algo similar a lo anterior deber tener tu archivo de configuracin, y como ya se indic solo
agregamos el soporte para cuotas en el sistema de archivos que nos interese. Lo anterior por si
solo, es obvio que no hace nada, habra que reiniciar el sistema para que se apliquen los cambios
pero realmente no es necesario, lo siguiente re-monta el sistema de archivos "/home":

#> mount -o remount /home


#> mount
/dev/sda1 on /boot type ext3 (rw,noatime)
/dev/sda2 on / type ext3 (rw,noatime)
/dev/sda3 on /home type ext3 (rw,noatime,usrquota,grpquota)
none on /proc type proc (rw)

El sistema de archivos "/home" esta listo ahora para soportar cuotas de disco. El siguiente paso
es verificar con el comando quotacheck por sistemas de archivos que soporten cuotas. Este
comando crea, verifica o repara el control de cuotas en los sistemas que lo soporten, en este caso
creara el soporte:

#> quotacheck -augmv


quotacheck: Scanning /dev/sda3 [/home] done
quotacheck: Cannot stat old user quota file: No existe el fichero o el directorio
quotacheck: Cannot stat old group quota file: No existe el fichero o el directorio
quotacheck: Cannot stat old user quota file: No existe el fichero o el directorio
quotacheck: Cannot stat old group quota file: No existe el fichero o el directorio
quotacheck: Checked 2539 directories and 35556 files
quotacheck: Old file not found.
quotacheck: Old file not found.

Los errores que enva es precisamente porque no exista un sistema de cuotas previo, es normal
que los enve. Cuando las cuotas esten en pleno uso, es conveniente ejecutar
quotacheck peridicamente para que verifique inconsistencias y se corrijan a tiempo. En cuanto
a las opciones estas indican lo siguiente:

pg. 193
a - all, es decir verifica todos los sistemas de archivos por cuotas.
u - user, verifica por soporte de cuotas para usuarios.
g - group, verifica por soporte de cuotas para grupos.
m - no-remount, evita que el sistema se remonte como de solo lectura.
v - verboso, reporta lo que hace conforme progresa, son los mensajes que salen a la
terminal.
Como ves, la opcin -a en este caso no era necesario puesto que solo tenemos "/home" con
cuotas, asi que el comando anterior tambin pudiera ser invocado de esta manera:

#> quotacheck -ugmv /home

Pues el sistema esta listo para manipular cuotas de usuario, esto lo podemos comprobar porque
en la raz del sistema de archivos soportado con cuotas deben existir los archivos "aquota.user" y
"aquota.group" que son binarios, no trates de modificarlos o manipularlos:

#> cd /home
#> ls -l
total 72
-rw------- 1 root root 8192 2008-05-17 21:38 aquota.group
-rw------- 1 root root 8192 2008-05-17 21:38 aquota.user
drwx--x--x 4 user1 user1 4096 2008-05-12 16:13 user1/
drwx--x--x 4 user2 user2 4096 2008-05-12 16:13 user2/
drwx--x--x 3 user3 user3 4096 2008-05-05 12:01 user3/
drwx--x--x 3 user4 user4 4096 2008-05-05 12:01 user4/

(obsrvese los dos archivos de control de cuotas, para usuarios y grupos)

Si se tuvieran ms sistemas de archivos con soporte para cuotas en la raz de cada uno estaran
estos archivos, o solo uno dependiendo lo que se pidi, usuarios, grupos o ambos. Por cierto, en
sistemas con kernel 2.2 o anterior se usaba la versin 1 de cuotas y sus archivos de control se
nombraban "quota.user" y "quota.group", del kernel 2.4 y posteriores con la versin 2 y 3, se
utiliza los mostrados anteriormente.
Ahora bien, lo anterior deja listo el sistema para el soporte de cuotas pero ests siguen sin ser
activadas se requiere activar el soporte de cuotas, para lo cual invocamos el comandoquotaon:

#> quotaon -ugv /home

pg. 194
/dev/sda3 [/home]: group quotas turned on
/dev/sda3 [/home]: user quotas turned on

Activamos para "/home" cuotas de usuario y grupos. Cuando por alguna razn sea necesario
desactivar las cuotas, entonces utiliza la contraparte, que es el comando quotaoff:

#> quotaoff -v /home


/dev/sda3 [/home]: group quotas turned off
/dev/sda3 [/home]: user quotas turned off

Muy bien, hasta aqui ya tienes el sistema de archivos "/home" o el que hayas elegido (o todos)
para trabajar con soporte de cuotas para los usuarios y grupos, ahora veremos como aplicar estas
cuotas con los usuarios.

Aplicando la cuota a usuarios


Ahara hay que aplicar la cuota por usuario, aunque el sistema de archivos ya soporta cuotas y
estn habilitadas, por defecto ningn usuario tiene establecidas cuotas. Asi que para iniciar habr
que administrar cada usuario a travs del comando edquota, que abrir el editor de texto que se
tenga por defecto y mostrar lo siguiente:

#> edquota -u user1


Disk quotas for user user1 (uid 502):
Filesystem blocks soft hard inodes soft hard
/dev/sda3 56 0 0 14 0 0

Las columnas "blocks" e "inodes" son informativas, es decir nos indican la cantidad de bloques o
inodos utilizados actualmente por el usuario, y las que podemos editar son las columnas "soft" y
"hard" de cada caso. Como ya se explic en la primera parte de este artculo, se puede indicar
libremente cualquiera de los cuatro valores, es perfectamente posible establecer valores por
bloques, por inodos o ambos, solo recuerda que el lmite soft debe ser menor al hard.
Si se establece solo el hard, no habr advertencias previas y el usuario ya no podr guardar
archivos cuando se llegue al valor. Si se establece soft y hard, avisar cuando se rebase el lmite
soft y entrar en juego el periodo de gracia. Si se acaba el tiempo de gracias o se llega al har (lo
que sea primero) ya no se podrn crear ms archivos hasta que no se eliminen algunos de los que
se tengan actualmente.

pg. 195
Para modificar cuotas a nivel grupo, se usa el mismo comando pero con la opcin -g(edquota -g
ventas).En el ejemplo previo se modifica la cuota del usuario "user1" en el sistema de archivos
"/home" que es el que se ha usado de ejemplo en este artculo de LinuxTotal.com.mx, el
comportamiento por default es modificar cuotas para ese usuario en todos los sistemas de
archivos que tengan activo el control de cuotas (quotaon). Si se desea control de cuotas para un
filesystem en especfico entonces se agrega la opcin -f:
#> edquota -u user1 -f /home
(solo aplica la cuota en el sistema de archivos indicado)

Verificando el uso de las cuotas


Como usuario administrador 'root' puedes ver el uso de cuotas de cualquier usuario, ya sea
individualmente o por medio de un reporte global.
Por usuario o individualmente se usa el comando quota, estando como "root":

#> quota -u user1


Disk quotas for user user1 (uid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda3 56 70 100 14 0 0

Con usuarios que manejan cantidades muy grandes de cuota, es un poco dificil calcular en
trminos de megas o gigas el espacio usuado y los lmites de cuotas:

#> quota -u sergio


Disk quotas for user sergio (uid 500):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda3 42578888 0 50000000 34895 0 0

Usando la opcin -s se mejora el informe:

#> quota -s -u sergon


Disk quotas for user sergon (uid 500):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda3 41582M 0 48829M 34905 0 0

Como usuario individual del sistema, puedes observar tus cuotas con el mismo comandoquota,
sin argumentos.

pg. 196
Ahora bien, si se desea un reporte global de las cuotas de todos los usuarios o por grupos, siendo
"root" utiliza el comando repquota:
#> repquota /home
*** Report for user quotas on device /dev/sda3
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 184280 0 0 11 0 0
sergio -- 42579852 0 50000000 34902 0 0
user1 -- 56 70 100 14 0 0
user2 -- 52 0 0 13 0 0
user3 -- 28 0 0 7 0 0
user4 -- 28 0 0 7 0 0

Con repquota es tambin posible utilizar la opcin -s para observar los tamaos en formato
legible. Si se usa la opcin -a (all) en vez del sistema de archivos "/home", el reporte ser para
todos los sistemas de archivos en el equipo que soporten cuotas. Asi mismo este reporte por
defecto es por usuarios, si se requiere que repquota reporte por grupos, aade entonces la
opcin -g.
Obsrvese en la segunda lnea del reporte el tiempo de gracia (grace time), que es de 7 das tanto
para cuotas por bloque como para cuotas por archivos o inodos. Esto aplica para todos los
usuarios en global, como se aprecia en el listado que ninguno tiene establecido un tiempo de
gracia diferente al global.

Estableciendo el tiempo de gracia


A nivel global, un periodo de gracia para todos, utiliza la opcin -t del comando edquota, como
en el siguiente ejemplo, recuerda que debes ser "root":

#> edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/sda3 7days 7days

7 das es el periodo por defecto, si lo cambias a digamos 12 horas, sera "12hours". El tiempo de
gracia puede ser distinto para el lmite soft por bloques o por inodos.

pg. 197
Por usuario especfico se realiza con la opcin -T del mismo comando e indicando el usuario:

#> edquota -u user1 -T


Times to enforce softlimit for user user1 (uid 502):
Time units may be: days, hours, minutes, or seconds
Filesystem block grace inode grace
/dev/sda3 unset unset

Lo nico que hay que considerar es que los tiempos de gracias por usuario deben ser menores al
global. Y que este empieza a correr una vez que se ha llegado al lmite soft. Cuando esto suceda,
si entras a editar de nuevo el tiempo de gracia del usuario (edquota -u user -T) se reflejara en
segundos el tiempo que le queda, pudindolo aumentar de nuevo si eres "root". O dejarlo en cero
y entonces el global ser el que se utilice.

Fijar cuotas de manera global a todos los usuarios


En sistemas Linux con pocos usuarios, establecer las cuotas usuario por usuario no representa
ningn problema. Pero si hablamos por ejemplo de una universidad donde pudieran existir miles
de cuentas entonces si es un problema establecer cuentas individualmente.

Realmente no existe una manera "oficial" de establecer cuotas masivamente, sin embargo, no
hay problema, usaremos un pequeo script que te permitira realizarlo.

Establece la cuota que deseas globalmente en un solo usuario:

#> edquota -u user1


Disk quotas for user user1 (uid 502):
Filesystem blocks soft hard inodes soft hard
/dev/sda3 68 300 400 17 0 0
:wq

Veamos el reporte de cuotas con repquota:

[root@segolap ~]# repquota /home


*** Report for user quotas on device /dev/sda3
Block grace time: 7days; Inode grace time: 7days
Block limits File limits

pg. 198
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
user1 -- 68 300 400 17 0 0
user2 -- 352 0 0 13 0 0
user3 -- 28 0 0 7 0 0
user4 -- 28 0 0 7 0 0

Solo el usuario "user1" tiene cuotas, las columnas de "grace" tendrn valores una vez que se
llegue al lmite soft o suave. Usaremos entonces la opcin -p (protptype) para hacer duplicados a
partir del ya establecido.
#> edquota -p user1 user2

Con lo anterior "copias" la informacin de lmites de cuotas del "user1" al "user2", no hay lmite
de cuantos usuarios puedes colocar como argumentos asi que lo siguiente es vlido:
#> edquota -p user1 user2 user3 user4

Prctico para unos cuantos usuarios pero intil si necesitamos duplicarlo en cientos de usuarios,
asi que hagamos un comando compuesto que nos extraiga los nombres de los usuarios, se puede
usar por ejemplo gawk para realizar lo anterior:

#> gawk -F: '$3 > 499 {print $1}' /etc/passwd


user1
user2
user3
user4

Usamos el separador ":" de campos (-F), e indicamos como accin que en el campo 3 ($3)
busquemos todos los UID mayores a 499 y que los imprima ({print $1}). Ahora solo tenemos que
usar este comando junto con edquota -p:

#> edquota -p user1 `gawk -F: '$3 > 499 {print $1}' /etc/passwd`

NOTA IMPORTANTE: el uso de acento grave que abarca al comando gawk, esto para que el
shell lo ejecute primero y el resultado sern los argumentos, uno o cientos de usuarios cuyo
UID es mayor a 499)

pg. 199
Haciendo uso de repquota de nuevo veamos que pas:
#> repquota /home
*** Report for user quotas on device /dev/sda3
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
user1 -- 68 300 400 17 0 0
user2 -- 352 300 400 7days 13 0 0
user3 -- 28 300 400 7 0 0
user4 -- 28 300 400 7 0 0

Primero, todos los usuarios tienen las mismas cuotas que el "user1" que fue el prototipo para los
dems y segundo se observa que el "usuario" que tiene 352 bloques utilizados al pasar el lmite
suave entro al periodo de gracia automticamente que el global es de 7 das. A partir del instante
que el lmite cambi de 0 a 300, comenz el periodo de gracia. Ahora solo podr crear ms
archivos durante 7 das o cuando llegue a 400, lo primero que ocurra, claro, asumiendo que no
borre archivos primeros para recuperar espacio.

Para fines practicos realice el siguiente ejercicio;

Daremos de alta un usuario;


# useradd usuarioquota

Le asignamos un password;
# passwd usuarioquota

Ahora a este usuario le asignaremos una cuota de gracias de 50Mb(51200) y una cuota definitiva
de 100Mb(102400).

Nos logueamos como usuarioquota


Una vez en el perfil copiaremos los archivos que estn en la carpeta /usr/lib a un directorio en el
home del usuarioquota

$ cp -r /usr/lib ~/prueba-cuotas

Notar que llegar un momento en el que el sistema indicar que ya es imposible continuar
copiando contenido dentro de ~/prueba-cuotas debido a que se agot el espacio disponible para
el usuario en el sistema de archivos.

pg. 200
Ejecute de nuevo quota y observe con detenimiento la salida. En sta aparecer un asterisco junto
a la cantidad mostrada en las columnas de bloques o bien inodos en los casos donde se hayan
excedido las cuotas.
Verificamos con el comando quota
$ quota
Para solucionar el problema, borramos la carpeta y despus verificamos de nuevo.

pg. 201
UNIDAD 7.- Redes

Configuracin de red.

Primero nos tenemos que identificar como root para ejecutar los comandos. Para esto colocamos
en la lnea de comandos:

# su -

Para ver cuales son las interfaces de red que tienes disponibles ejecutamos:

# ifconfig | less
La opcin de less te permite ver pagina por pgina las interfaces (en caso de que tengas muchas
o una ventana de comandos pequea), este comando slo te muestra las interfaces que estn
arriba (up). Te debe aparecer algo como eth0, eth1 y lo (esta interfaz es la de loopback y es la del
propio servidor).

Si queremos mostrar todas las interfaces esten arriba (o levantadas) ejecutamos el siguiente
comando:

# ifconfig a

Y nos debera mostrar algo como esto:

eth0 Link encap:Ethernet HWaddr 00:0C:29:97:XX:XX


inet addr:10.21.9.70 Bcast:10.21.11.255 Mask:255.255.252.0
inet6 addr: fe80::20c:29ff:fe97:24e3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:491604 errors:0 dropped:0 overruns:0 frame:0
TX packets:3856 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:57073655 (54.4 MiB) TX bytes:506213 (494.3 KiB)
Interrupt:185 Base address:0x1400

eth1 Link encap:Ethernet HWaddr 00:11:25:29:XX:XX

pg. 202
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:19
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1901 errors:0 dropped:0 overruns:0 frame:0
TX packets:1901 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3804398 (3.6 MiB) TX bytes:3804398 (3.6 MiB)

En este caso tenemos dos interfaces eth0 y eth1, y slo eth0 esta arriba, ya que como
podemos ver eth1 no tiene ninguna direccin IP asignada y no tiene ninguna configuracin.Por
ltimo tenemos la interfaz lo, que es la interfaz de loopback es decir nuestra propia mquina y
que podemos acceder a travs de la direccin 127.0.0.1 (o cualquier rango de 127.0.0.X), y sirve
para comprobar que por lo menos nos responde nuestro propio ordenador o computadora.

Ahora que ya sabemos identificar nuestras tarjetas de red pasemos a lo que podemos hacer con
ellas.
Para asignar direcciones IP manualmente esto ejecutamos el siguiente comando:

# ifconfig eth0 192.168.1.100 255.255.255.0 up

Con broadcast

# ip addr add 192.168.0.10/24 dev eth0 brd +

Cambiando eth0 por el nombre de la interfaz que necesitamos. Si queremos deshabilitar una
interfaz ejecutamos:

# ifconfig eth0 down

pg. 203
Recuerde que si agrega direcciones con rutas lo hara de la siguiente manera:

#route add 169.155.0.0/16 dev eth0

Y la informacin de las rutas agregadas esta en el archivo routes ubicado en:

/etc/sysconfig/network/routes

Adems hay un programa interactivo de consola que nos deja configurar la red mucho ms fcil,
incluyendo dhcp, direcciones estticas puerta de enlace (gateway) ejecutamos el siguiente
comando:
Red Hat:

# redhat-config-network

CentOS y Fedora:

#system-config-network

Te aparecer un dilogo donde tendras que escoger la interfaz de red que quieres configurar y
luego de seleccionarla vers las distintas opciones.

Una vez que cambies los parmetros de tu interfaz de red siempre es bueno reiniciar el servicio de
red para que se reflejen los cambios:
# service network restart

Archivos de configuracin

Si quieres manualmente cambiar los archivos de configuracin de tus interfaces de red debes
editar los archivos dentro de /etc/sysconfig/network-scripts/ por ejemplo para la interfaz eth0

pg. 204
sera:

# vim /etc/sysconfig/network-scripts/ifcfg-eth0

NOTA IMPORTANTE: No olvides hacer un backup del archivo en caso de falla antes de hacer
cualquier cambio con:

# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /root/ifcfg-eth0.backup

Puedes utilizar el editor que quieras (nano, emac, etc) Debes ver una configuracin como la
siguiente:

DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
HWADDR=00:0C:29:97:XX:XX
IPADDR=192.168.1.100
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
TYPE=Ethernet

Una vez realizados los cambios reiniciamos los servicios de red:

# service network restart

Puedes cambiar los parmetros segn lo que necesites, por ejemplo si necesitas se configure por
DHCP deberas tener algo como:

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
HWADDR=00:0c:29:97:24:e3

pg. 205
TYPE=Ethernet

Una vez realizados los cambios reiniciamos los servicios de red:

# service network restart

Configurando DNS

Para hacer que tu computadora u ordenador busque en un servidor DNS especfico tienes que
modificar el archivo /etc/resolv.conf ejecuntado

# vim /etc/resolv.conf

Ah puedes agregar los servidores que quieras por ejemplo con:

Nameserver 10.50.50.130
nameserver 10.50.50.131

Utilizando las direcciones IP de los servidores DNS que quieras.

Configuracin del fichero resolv.conf

Cuando se configura la biblioteca de resolucin para utilizar los servicios de BIND, tiene que
indicarse tambin qu servidores utilizar. El fichero resolv.conf contiene una lista de servidores,
que si est vaca har considerar al sistema que el servidor est en su mquina.

Si ejecuta un servidor de nombres en su mquina local, tendr que configurarlo por separado,
como se explicar despus. Si se encuentra en una red local y puede usar un servidor de nombres
existente, mejor. Si estamos conectados a Internet por mdem, lo habitual es especificar
en resolv.conf el servidor de nombres que nos diga nuestro proveedor de servicios.
La opcin ms importante del fichero resolv.conf es nameserver, que tiene la direccin IP del
servidor de nombres a usar. Si especifican varios servidores poniendo varias lneas nameserver,
se intentarn usar en el orden dado; por lo que debera poner en primer lugar el servidor de

pg. 206
nombres ms rpido o cercano. Actualmente, puede ponerse un mximo de tres servidores
distintos. Si no se pone ninguno, intentar buscar un servidor de nombres en la mquina local.
Otras dos opciones, domain y search, nos permiten usar nombres cortos (sin dominio) para
mquinas que estn en nuestro dominio. Normalmente, para conectarnos a una mquina de la
misma red, no queremos poner el dominio completo, sino su nombre. Por ejemplo, gauss en lugar
de gauss.mathematics.groucho.edu.

Para esto sirve la palabra domain. Nos permite especificar un dominio predeterminado que se
aade a las peticiones cuando su bsqueda inicial falla. Por ejemplo, al buscar gauss y fallar el
servidor de nombres buscndolo en Internet, le aade automticamente su dominio
predeterminado y ya s puede resolverlo.

Esto est bien, pensaremos, pero tan pronto como nos refiramos a una mquina que est fuera
del Departamento de Matemticas, tendremos que volver a teclear el dominio completo. A lo
mejor queremos teclear solo quark.physics para referirnos a una mquina del Departamento de
Fsicas.

Para esto podemos usar la lista de bsqueda, que puede especificarse con la opcin search. En
esta lista se especifica una lista de dominios donde resolver nombres cortos. Los elementos de la
lista deben especificarse separndolos por espacios o tabuladores.

Las opciones search y domain son mutuamente excluyentes y no pueden aparecer ms de una
vez. Si ninguna de las dos se pone, el sistema intentar asignar a los nombres cortos el dominio
de la mquina local, que averiguar usando la llamada al sistema getdomainname (2). Si el nodo
local no tiene dominio, se asumir que el dominio predeterminado es la raz.

Si decidimos poner una opcin search en el fichero resolv.conf, habr que ser cuidadosos con los
dominios que aadimos a la lista. Las bibliotecas de resolucin anteriores a BIND 4.9 solan
construir una lista de bsqueda predeterminada para el dominio cuando no se proporciona otra
lista. Esta lista predeterminada se haca con el dominio del nodo, ms todos los dominios padre
hasta llegar a la raz. Esto daba lugar a bsquedas innecesarias a los servidores de nombres
externos.

pg. 207
Asumamos que estamos en la Cervecera Virtual y queremos conectarnos al
sistema foot.groucho.edu. Por un error tecleamos el nombre foo, que no existe. El servidor de la
universidad nos responder que no existe el nodo. Con la bsqueda antigua, intentar buscar ese
nombre en los dominios vbrew.com y com. Este ltimo es problemtico porque causa una
bsqueda innecesaria y adems podra existir. Al final nos habremos intentado conectar a una
mquina totalmente ajena.

En algunos casos, esto es un potencial problema de seguridad. De hecho las listas de bsqueda
deben limitarse a dominios de la organizacin local o algo similar. La lista en el Departamento de
Matemticas debe limitarse a los dominios maths.groucho.edu y groucho.edu.
Como lo anterior puede resultar confuso, sea el siguiente ejemplo de fichero resolv.conf para la
Cervecera Virtual:

# /etc/resolv.conf
# Nuestro dominio
domain vbrew.com
#
# Nuestro servidor principal va a ser vlager:
name server 172.16.1.1

Cuando se trate de traducir el nombre vale, el sistema empezar por buscar directamente vale y
si falla, probar con vale.vbrew.com.

Iptables

Red Hat Enterprise Linux contiene herramientas avanzadas para el filtrado de paquetes de red
el proceso dentro del kernel de controlar los paquetes de red al entrar, mientras se mueven y
cuando salen de la red. Los kernels anteriores al 2.4 confiaban en ipchains para el filtrado de
paquetes y usaban listas de reglas aplicadas a los paquetes en cada paso del proceso de filtrado.
La introduccin de kernel 2.4 trajo consigo iptables (tambin llamado netfilter), lo cual es similar
a ipchains pero expande enormemente el mbito y el control disponible para el filtrado de
paquetes de red.
Este captulo se centra en las bases del filtrado esencial de paquetes, define las diferencias
entre ipchains e iptables, explica las diferentes opciones disponibles con comandos iptables y

pg. 208
muestra cmo se pueden preservar las reglas de filtrado durante reinicios del sistema.

Filtrado de paquetes
El kernel de Linux tiene incorporado la caracterstica interna de filtrar paquetes, permitiendo
aceptar algunos de ellos en el sistema mientras que intercepta y para a otros. El netfilter del kernel
tiene tres tablas o listas de reglas incorporadas. Son las siguientes:
filter La tabla por defecto para el manejo de paquetes de red.
nat Usada para alterar paquetes que crean una nueva conexin y utilizada para
la Traduccin de direcciones de red (Network Address Translation, NAT).
mangle Usada por tipos especficos de alteracin de paquetes.

Cada una de estas tablas tiene un grupo de cadenas incorporadas que corresponden a las acciones
llevadas a cabo por el filtro de la red.
Las cadenas internas para la tabla filtro son las siguientes:
INPUT Aplica a los paquetes recibidos a travs de una interfaz de red.
OUTPUT Esta cadena sirve para paquetes enviados por medio de la misma interfaz de red
que recibi los paquetes.
FORWARD Esta cadena sirve para paquetes recibidos en una interfaz de red y enviados
en otra.
Las cadenas internas para la tabla nat son las siguientes:
PREROUTING Altera los paquetes de red cuando estos llegan.
POSTROUTING Esta cadena altera paquetes antes de que sean enviados por medio de una
interfaz de red.
POSTROUTING Altera los paquetes de red cuando estos son enviados.
PREROUTING Esta cadena altera paquetes recibidos por medio de una interfaz de red
cuando llegan.
OUTPUT Esta cadena altera paquetes generados localmente antes de que sean dirigidos
por medio de una interfaz de red.
POSTROUTING Esta cadena altera paquetes antes de que sean enviados por medio de una
interfaz de red.
Las cadenas internas para la tabla mangle son las siguientes:
PREROUTING Esta cadena altera paquetes recibidos por medio de una interfaz de red
antes de que sean dirigidos.

pg. 209
POSTROUTING Altera los paquetes de red cuando estos son enviados.
Cada paquete de red recibido o enviado desde un sistema Linux est sujeto a al menos una tabla.
Sin embargo, un paquete puede estar sometido a mltiples reglas dentro de cada tabla antes de
emerger al final de la cadena. La estructura y propsito de estas reglas puede variar, pero
normalmente buscan identificar un paquete que viene de o se dirige hacia una direccin IP en
particular, o un conjunto de direcciones, cuando utiliza un determinado protocolo y servicio de
red.

Independientemente de su destino, cuando un paquete cumple una regla en particular en una de


las tablas, se les aplica un objetivo (target) o accin a ellos. Si la regla especifica un
objetivo ACCEPT para un paquete que coincida, el paquete se salta el resto de las verificaciones
de la regla y se permite que contine hacia su destino. Si una regla especifica un objetivo DROP,
a ese paquete se le niega el acceso al sistema y no se enva nada de vuelta al servidor que envi
el paquete. Si una regla especifica un objetivo QUEUE, el paquete se pasa al espacio del usuario.
Si una regla especifica el objetivo opcional REJECT, el paquete es descartado, pero se enva un
paquete de error al que envi el paquete.
Cada cadena tiene una poltica por defecto de ACCEPT, DROP, REJECT, o QUEUE. Si ninguna de
estas reglas en la cadena se aplica al paquete, entonces el paquete es tratado de acuerdo a la
poltica por defecto.
El comando iptables configura estas tablas, as como tambin configura nuevas tablas si es
necesario.

Diferencias entre iptables e ipchains


A primera vista, ipchains e iptables parecen ser bastante similares. Ambos mtodos de filtrado de
paquetes usan cadenas de reglas operando dentro del kernel de Linux para decidir qu hacer con
los paquetes que cumplen determinadas reglas. Sin embargo, iptables proporciona un mtodo
mucho ms extensible de filtrado de paquetes, proporcionando al administrador un nivel de
control mucho ms refinado sin tener que aumentar la complejidad del sistema entero.
Ms concretamente, los usuarios que se encuentren cmodos con ipchains deberan tener
cuidado con las siguientes diferencias significativas entre ipchains e iptables antes de
utilizar iptables:

pg. 210
Bajo iptables, cada paquete filtrado se procesa nicamente usando las reglas de una cadena
solamente, en lugar de hacerse con mltiples. Por ejemplo, un paquete FORWARD que llega
al sistema usando ipchains tendr que pasar por las cadenas INPUT, FORWARD, y OUTPUT
para llegar a su destino. Sin embargo, iptables slo enva paquetes a la cadena INPUT si su
destino es el sistema local y tan slo los enva a la cadena OUTPUT si el sistema local es quien
genera los paquetes. Por esta razn, es importante que coloque la regla designada para
capturar un paquete particular dentro de la regla que en verdad maneja el paquete.
El objetivo DENY ha sido cambiado a DROP. En ipchains, los paquetes que coincidan una
regla en una cadena podran ser dirigidos al objetivo DENY. Este objetivo debe ser cambiado
a DROP bajo iptables.
El orden es importante cuando se estn colocando opciones en una regla. Anteriormente,
con ipchains, el orden de las opciones de una regla no importaba. El comando iptables usa
una sintaxis ms estricta. En comandos iptables, el protocol (ICMP, TCP o UDP) debe ser
especificado antes del puerto fuente o destino.
Cuando especificamos las interfaces de red que vamos a usar en una regla, deberemos
utilizar slo interfaces de entrada (opcin -i) con cadenas INPUT o FORWARD y las de salida
(opcin -o) con cadenas FORWARD o OUTPUT. Esto es necesario debido al hecho de que las
cadenas OUTPUT no se utilizan ms con las interfaces de entrada, y las cadenas INPUT no
son vistas por los paquetes que se mueven hacia las interfaces de salida.
Opciones usadas en comandos iptables
Las reglas para el filtrado de paquetes se ponen en funcionamiento ejecutando el
comando iptables. Con frecuencia se utilizan los aspectos siguientes del paquete como el criterio:
Tipo de paquete Dicta qu tipo de paquetes filtra el comando.
Fuente/Destino del paquete Especifica cules paquetes filtra el comando basndose en el
origen o destino del paquete.
Objetivo Indica qu accin es tomada en paquetes que cumplen los criterios mencionados
anteriormente.
Las opciones usadas con las reglas iptables dadas deben estar agrupadas lgicamente, basndose
en el propsito y en las condiciones de la regla general, para que la regla sea vlida. El resto de
esta seccin explica las opciones usadas comnmente para el comando iptables.

Estructura de las opciones iptables


Muchos comandos iptables tienen la siguiente estructura:

pg. 211
iptables [-t <table-name>] <command> <chain-name> <parameter-1> \
<option-1> <parameter-n> <option-n>

La opcin <table-name> permite al usuario seleccionar una tabla diferente a la tabla


predeterminada filter a usar con el comando. La opcin <command> indica una accin especfica
a realizar, tal como anexar o eliminar la regla especificada por la opcin <chain-name>. Luego de
la opcin <chain-name> se encuentran un par de parmetros y opciones que definen qu pasar
cuando un paquete coincide con la regla.

Cuando miramos la estructura de un comando iptables, es importante recordar que, al contrario


que la mayora de los comandos, la longitud y complejidad de un comandoiptables puede cambiar
en funcin de su propsito. Un comando para borrar una regla de una cadena puede ser muy
corto, mientras que un comando diseado para filtrar paquetes de una subred particular usando
un conjunto de parmetros especficos y opciones puede ser mucho ms largo. Al crear
comandos iptables puede ser de ayuda reconocer que algunos parmetros y opciones pueden
crear la necesidad de utilizar otros parmetros y opciones para especificar ms an la peticin de
la opcin anterior. Para construir una regla vlida, esto deber continuar hasta que todos los
parmetros y opciones que requieran otro conjunto de opciones hayan sido satisfechos.

Escriba iptables -h para ver una lista detallada de la estructura de los comandos iptables.

Opciones de comandos
Las opciones de comandos le dicen a iptables que realice una accin especfica. Solamente una
opcin de comando se permite por comando iptables. Excepto el comando de ayuda, todos los
comandos se escriben en maysculas.
Los comandos de iptables son los siguientes:
-A Aade la regla iptables al final de la cadena especificada. Este es el comando utilizado
para simplemente aadir una regla cuando el orden de las reglas en la cadena no importa.
-C Verifica una regla en particular antes de aadirla en la cadena especificada por el
usuario. Este comando puede ser de ayuda para construir reglas iptables complejas
pidindole que introduzca parmetros y opciones adicionales.

pg. 212
-D Borra una regla de una cadena en particular por nmero (como el 5 para la quinta regla
de una cadena). Puede tambin teclear la regla entera e iptables borrar la regla en la
cadena que corresponda.
-E Renombra una cadena definida por el usuario. Esto no afecta la estructura de la tabla.
-F Libera la cadena seleccionada, que borra cada regla de la cadena. Si no se especifica
ninguna cadena, este comando libera cada regla de cada cadena.
-h Proporciona una lista de estructuras de comandos, as como tambin un resumen
rpido de parmetros de comandos y opciones.
-I Inserta una regla en una cadena en un punto especificado por un valor entero definido
por el usuario. Si no se especifica ningn nmero, iptables colocar el comando en el tope
de la cadena.
-L Lista todas las reglas de la cadena especificada tras el comando. Para ver una lista de
todas las reglas en todas las cadenas en la tabla por defecto filter, no especifique ninguna
cadena o tabla. De lo contrario, la sintaxis siguiente deber utilizarse para listar las reglas en
una cadena especfica en una tabla en particular:

iptables -L <chain-name> -t <table-name>

-N Crea una nueva cadena con un nombre especificado por el usuario.


-P Configura la poltica por defecto para una cadena en particular, de tal forma que,
cuando los paquetes atraviesen la cadena completa sin cumplir ninguna regla, sern
enviados a un objetivo en particular, como puedan ser ACCEPT o DROP.
-R Reemplaza una regla en una cadena particular. El nmero de la regla debe ser
especificado despus del nombre de la cadena. La primera regla en una cadena corresponde
a la regla nmero uno.
-X Borra una cadena especificada por el usuario. No se permite borrar ninguna de las
cadenas predefinidas para cualquier tabla.
-Z Pone ceros en los contadores de byte y de paquete en todas las cadenas de una tabla
en particular.
Opciones de parmetros de iptables
Una vez que se especifiquen ciertos comandos iptables, incluyendo aquellos para aadir, anexar,
eliminar, insertar o reemplazar reglas dentro de una cadena, se requieren parmetros para
construir una regla de filtrado de paquetes.

pg. 213
-c Resetea los contadores de una regla en particular. Este parmetro acepta las
opciones PKTS y BYTES para especificar qu contador hay que resetear.
-d Configura el nombre de la mquina destino, direccin IP o red de un paquete que
coincide con la regla. Cuando se coincida una red, se soportan los siguientes formatos de
direcciones IP o mscaras de red:
N.N.N.N/M.M.M.M Donde N.N.N.N es el rango de direcciones IP y M.M.M.M es la
mscara de la red.
N.N.N.N/M Donde N.N.N.N es el rango de direcciones IP y M es la mscara de bit.
-f Aplica esta regla slo a los paquetes fragmentados.
Usando la opcin ! despus de este parmetro, nicamente se harn coincidir los paquetes
no fragmentados.
-i Configura la interfaz de red entrante, tal como eth0 o ppp0. Con iptables, este
parmetro opcional puede ser usado solamente con las cadenas INPUT y FORWARD cuando
es usado con la tabla filter y la cadena PREROUTING con las tablas nat y mangle.
Este parmetro tambin soporta las siguientes opciones especiales:
El carcter de exclamacin ! Invierte la directriz, es decir, se excluye de esta regla
cualquier interfaz especificada.
El carter de suma + Un caracter tipo comodn utilizado para coincidir todas las interfaces
con una cadena de caracteres especificada. Por ejemplo, el parmetro -i eth+aplicar esta
regla a cualquier interfaz Ethernet pero excluir cualquier otra interfaz, tal como, ppp0.
Si el parmetro -i se utiliza sin especificar ninguna interfaz, todas las interfaces estarn afectadas
por la regla.
-j Salta a un objetivo particular cuando un paquete coincide con una regla particular. Los
objetivos vlidos a usar despus de la opcin -j incluyen las opciones estndar
(ACCEPT, DROP, QUEUE y RETURN) as como tambin las opciones extendidas que estn
disponibles a travs de los mdulos cargados por defecto con el paquete RPM de Red Hat
Enterprise Linux iptables, como LOG, MARK y REJECT, entre otros. Consulte la pgina del
manual de iptables para ms informacin sobre esto y otros objetivos.
Puede tambin dirigir un paquete coincidiendo esta regla a una cadena definida por el
usuario fuera de la cadena actual, para aplicar otras reglas al paquete.
Si no especifica ningn objetivo, el paquete pasa la regla sin llevar a cabo ninguna accin.
A pesar de todo, el contador para esta regla se sigue incrementando en uno.
-o Configura la interfaz de red de salida para una regla y puede ser usada solamente con
las cadenas OUTPUT y FORWARD en la tabla de filtro y la cadena POSTROUTING en las

pg. 214
tablas nat y mangle. Estos parmetros de opciones son los mismos que aquellos de la
interfaz de entrada (-i).
-p Configura el protocolo IP para la regla, el cual puede ser icmp, tcp, udp, o all, para
coincidir todos los protocolos soportados. Adems, se puede usar cualquier protocolo
listado en /etc/protocols. Si esta opcin es omitida cuando se est creando una regla, la
opcin all es la opcin por defecto.
-s Configura la fuente para un paquete particular usando la misma sintaxis que el
parmetro (-d).
Opciones de coincidencia para iptables
Diferentes protocolos de red proporcionan opciones especializadas las cuales se pueden
configurar para coincidir un paquete particular usando ese protocolo. Sin embargo, primero se
debe especificar el protocolo en el comando iptables. Por ejemplo, -p tcp <protocol-
name> (donde <protocol-name> es el protocolo objetivo), hace disponibles las opciones para ese
protocolo especificado.

Protocolo TCP
Estas opciones de identificacin estn disponibles en el protocolo TCP (opcin -p tcp):
--dport Configura el puerto de destino para el paquete. Use bien sea un nombre de
servicio (tal como www o smtp), nmero de puerto, o el rango de nmeros de puertos para
configurar esta opcin. Para hojear los nombres y alias de los servicios de red y los nmeros
que ellos usan, visualice el archivo /etc/services. La opcin --destination-portes sinnimo
con --dport.
Para especificar un rango de nmeros de puertos, separe los dos nmeros con dos puntos
(:), tal como -p tcp --dport 3000:3200. El rango ms grande aceptable es0:65535.
Use un caracter de exclamacin (!) despus de la opcin --dport para coincidir todos los
paquetes que no utilizan el servicio de red o puerto.
--sport Configura el puerto fuente del paquete usando las mismas opciones que --dport.
La opcin --source-port es sinnimo con --sport.
--syn Provoca que todos los paquetes designados de TCP, comnmente
llamados paquetes SYN, cumplan esta regla. Cualquier paquete que est llevando un
payload de datos no ser tocado. Si se sita un punto de exclamacin (!) como bandera tras
la opcin --syn se provoca que todos los paquetes no-SYN sean seleccionados.
--tcp-flags Permite a los paquetes TCP con bits especficos o banderas, ser coincididos con
una regla. La opcin --tcp-flags acepta dos parmetros. El primer parmetro es la mscara,

pg. 215
la cual configura banderas a ser examinadas en el paquete. El segundo parmetro se refiere
a la bandera que se debe configurar para poder coincidir.
Las banderas posibles son:
ACK
FIN
PSH
RST
SYN
URG
ALL
NONE
Por ejemplo, una regla iptables que contenga -p tcp --tcp-flags ACK,FIN,SYN SYN tan slo
seleccionar los paquetes TCP que tengan la bandera SYN activo y las banderas ACK y FIN sin
activar.
Usando el caracter de exclamacin (!) despus de --tcp-flags reversa el efecto de la opcin de
coincidencia.
--tcp-option Intenta seleccionar con opciones especficas de TCP que pueden estar activas
en un paquete en particular. Esta opcin se puede revertir con el punto de exclamacin (!).
Protocolo UDP

Estas opciones de seleccin estn disponibles para el protocolo UDP (-p udp):
--dport Especifica el puerto destino del paquete UDP, usando el nombre del servicio,
nmero de puerto, o rango de nmeros de puertos. La opcin de coincidencia --destination-
port es sinnimo con --dport.
--sport Configura el puerto fuente del paquete UDP, usando el nombre de puerto, nmero
de puerto o rango de nmeros de puertos. La opcin --source-port es sinnimo con --sport.
Protocolo ICMP
Las siguientes opciones de coincidencia estn disponibles para el Protocolo de mensajes de
Internet (ICMP) (-p icmp):
--icmp-type Selecciona el nombre o el nmero del tipo ICMP que concuerde con la regla.
Se puede obtener una lista de nombres vlidos ICMP tecleando el comandoiptables -p icmp
-h.
Mdulos con opciones de coincidencias adicionales

pg. 216
Opciones adicionales de coincidencia estn disponibles a travs de los mdulos por el
comando iptables. Para usar un mdulo de opciones de coincidencia, cargue el mdulo por
nombre usando la opcin -m, tal como -m <module-name> (reemplazando <module-name> con
el nombre del mdulo).
Un gran nmero de mdulos estn disponibles por defecto. Hasta es posible crear sus mdulos
para proporcionar funcionalidades de opciones de coincidencia adicionales.
Lo siguiente, es una lista parcial de los mdulos usados ms comnmente:
limit module Permite colocar un lmite en cuntos paquetes son coincididos a una regla
particular. Esto es especialmente beneficioso cuando se usa en conjunto con el
objetivo LOG, pues puede prevenir que una inundacin de paquetes coincidentes
sobrecarguen el registro del sistema con mensajes repetitivos o usen los recursos del
sistema.
El mdulo limit habilita las opciones siguientes:
--limit Configura el nmero de coincidencias en un intervalo de tiempo, especificado con
un nmero y un modificador de tiempo ordenados en el formato<nmero>/<tiempo>. Por
ejemplo, si usamos --limit 5/hour slo dejaremos que una regla sea efectiva cinco veces a la
hora.
Si no se utiliza ningn nmero ni modificador de tiempo, se asume el siguiente valor por
defecto: 3/hour.
--limit-burst Configura un lmite en el nmero de paquetes capaces de cumplir una regla
en un determinado tiempo. Esta opcin deber ser usada junto con la opcin--limit, y acepta
un nmero para configurar el intervalo de tiempo (threshold).
Si no se especifica ningn nmero, tan slo cinco paquetes sern capaces inicialmente de
cumplir la regla.
mdulo state Habilita la coincidencia de estado.
El mdulo state tiene las siguientes opciones:
--state coincide un paquete con los siguientes estados de conexin:
ESTABLISHED El paquete seleccionado se asocia con otros paquetes en una conexin
establecida.
INVALID El paquete seleccionado no puede ser asociado a una conexin conocida.
NEW El paquete seleccionado o bien est creando una nueva conexin o bien forma parte
de una conexin de dos caminos que antes no haba sido vista.
RELATED El paquete seleccionado est iniciando una nueva conexin en algn punto de la
conexin existente.

pg. 217
Estos estados de conexin se pueden utilizar en combinacin con otros separndolos mediante
comas como en -m state --state INVALID, NEW.
mdulo mac Habilita la coincidencia de direcciones MAC de hardware.
El mdulo mac activa las opciones siguientes:
--mac-source Coincide una direccin MAC a la tarjeta de red que envi el paquete. Para
excluir una direccin MAC de la regla, coloque un smbolo de exclamacin (!) despus de la
opcin --mac-source.
Para visualizar otras opciones disponibles a travs de los mdulos, consulte la pgina del manual
de iptables.

Opciones del objetivo


Una vez que un paquete ha coincidido con una regla, la regla puede dirigir el paquete a un nmero
de objetivos diferentes que deciden su suerte y, posiblemente, toman acciones adicionales. Cada
cadena tiene un objetivo por defecto, el cual es usado si ninguna de las reglas en esa cadena
coinciden con un paquete o si ninguna de las reglas que coinciden con el paquete especifica un
objetivo.
Los siguientes son los objetivos estndar:
<user-defined-chain> Reemplace <user-defined-chain> con el nombre de una cadena
definida por el usuario dentro de la tabla. Este objetivo pasa el paquete a la cadena objetivo.
ACCEPT Permite que el paquete se mueva hacia su destino (o hacia otra cadena, si no ha
sido configurado ningn destino para seguir a esta cadena).
DROP Deja caer el paquete sin responder al solicitante. El sistema que envia el paquete
no es notificado de esta falla.
QUEUE El paquete se pone en una cola para ser manejado por una aplicacin en el espacio
de usuario.
RETURN Para la verificacin del paquete contra las reglas de la cadena actual. Si el paquete con
un destino RETURN cumple una regla de una cadena llamada desde otra cadena, el paquete es
devuelto a la primera cadena para retomar la verificacin de la regla all donde se dej. Si la
regla RETURN se utiliza en una cadena predefinida, y el paquete no puede moverse hacia la
cadena anterior, el objetivo por defecto de la cadena actual decide qu accin llevar a cabo.
Adems de estos objetivos standard, se pueden usar otros ms con extensiones
llamadas mdulos de objetivos (target modules).

pg. 218
Existen varios mdulos extendidos de objetivos, la mayora de los cuales tan slo se aplican a
tablas o situaciones especficas. Un par de estos mdulos, de los ms populares e incluidos por
defecto en Linux son:
LOG Registra todos los paquetes que coinciden esta regla. Puesto que los paquetes son
registrados por el kernel, el archivo /etc/syslog.conf determina dnde estas entradas de
registro sern escritas. Por defecto, son colocadas en el archivo /var/log/messages.
Se pueden usar varias opciones adicionales tras el objetivo LOG para especificar la manera
en la que tendr lugar el registro:
--log-level Configura el nivel de prioridad del registro de eventos. Una lista de los niveles
de prioridad se puede encontrar en la pgina del manual de syslog.conf.
--log-ip-options Cualquier opcin en la cabecera de un paquete IP se guarda en el registro.
--log-prefix Coloca una cadena de hasta 29 caracteres antes de la lnea de registro cuando
es escrita. Esto es muy til para la escritura de filtros de syslog para usarlos en conjunto con
el registro de paquetes.
--log-tcp-options Cualquier opcin colocada en la cabecera de un paquete TCP es
registrada.
--log-tcp-sequence Escribe el nmero de secuencia TCP del paquete en el registro del
sistema.
Recuerde que la administracin de Logs es vital en este tipo de administracin, por esta razn se
encuentra el archivo logrotate, que sirve para hacer una rotacin de logs, el arhivo de
configuracin se encuentra en /etc/logrotate.conf .

Los logs o ficheros de registro estn pensados para guardar la informacin de las actividades del
sistema. Estos ficheros pueden crecer hasta llenar la particin donde se encuentran y bloquear el
sistema, pero tienen muchsimos usos y son algo imprescindible, ya que con la experiencia nos
aportan una inmensa cantidad de informacin.

Opciones de listado
El comando predeterminado para listar, iptables -L, proporciona una vista muy bsica de los filtros
por defecto de las cadenas actuales de la tabla. Las opciones adicionales proporcionan ms
informacin:
-v Muestra la salida por pantalla con detalles, como el nmero de paquetes y bytes que
cada cadena ha visto, el nmero de paquetes y bytes que cada regla ha encontrado y qu
interfaces se aplican a una regla en particular.

pg. 219
-x Expande los nmeros en sus valores exactos. En un sistema ocupado, el nmero de
paquetes y bytes vistos por una cadena en concreto o por una regla puede estar abreviado
usando K (miles), M (millones), y G (billones) detrs del nmero. Esta opcin fuerza a que se
muestre el nmero completo.
-n Muestra las direcciones IP y los nmeros de puertos en formato numrico, en lugar de
utilizar el nombre del servidor y la red tal y como se hace por defecto.
--line-numbers Proporciona una lista de cada cadena junto con su orden numrico en la
cadena. Esta opcin puede ser til cuando est intentando borrar una regla especfica en
una cadena o localizar dnde insertar una regla en una cadena.
-t Especifica un nombre de tabla.
Guardar reglas iptables
Las reglas creadas con el comando iptables son almacenadas en memoria. Si el sistema es
reiniciado antes de guardar el conjunto de reglas iptables, se perdern todas las reglas. Para que
las reglas de filtrado de red persistan luego de un reinicio del sistema, estas necesitan ser
guardadas. Para hacerlo, conctese como root y escriba:

#/sbin/service iptables save

Esto ejecuta el script de inicio iptables, el cual ejecuta el programa /sbin/iptables-save y escribe
la configuracin actual de iptables a /etc/sysconfig/iptables. El a rchivo /etc/sysconfig/iptables
existente es guardado como /etc/sysconfig/iptables.save.

La prxima vez que se inicie el sistema, el script de inicio de iptables volver a aplicar las reglas
guardadas en /etc/sysconfig/iptables usando el comando /sbin/iptables-restore.

Aun cuando siempre es una buena idea probar una regla de iptables antes de confirmar los
cambios al archivo /etc/sysconfig/iptables, es posible copiar reglas iptables en este archivo
desde otra versin del sistema de este archivo. Esto proporciona una forma rpida de distribuir
conjuntos de reglas iptables a muchas mquinas.

Scripts de control de iptables

Hay dos mtodos bsicos para controlar iptables:

pg. 220
Herramienta de configuracin de nivel de seguridad (system-config-securitylevel) Una
interfaz grfica para crear, activar y guardar reglas bsicas de cortafuegos.
/sbin/service iptables <opcion> Un comando ejecutado por el usuario root capaz de
activar, desactivar y llevar a cabo otras funciones de iptables a travs de su script de inicio.
Reemplace <opcion> en el comando con alguna de las directivas siguientes:
start Si se tiene un cortafuegos o firewall (es decir, /etc/sysconfig/iptables existe), todos
los iptables en ejecucin son detenidos completamente y luego arrancados usando el
comando /sbin/iptables-restore. La directriz start slo funcionar si no se carga el mdulo
del kernel ipchains.
stop Si el cortafuegos est en ejecucin, se descartan las reglas del cortafuegos que se
encuentran en memoria y todos los mdulos iptables y ayudantes son descargados.
Si se cambia la directiva IPTABLES_SAVE_ON_STOP dentro del archivo de
configuracin /etc/sysconfig/iptables-config de su valor por defecto a yes, se guardan las
reglas actuales a /etc/sysconfig/iptables y cualquier regla existente se mover al
archivo /etc/sysconfig/iptables.save.
restart Si el cortafuegos est en ejecucin, las reglas del mismo que se encuentran en
memoria se descartan y se vuelva a iniciar el cortafuegos si est configurado
en/etc/sysconfig/iptables. La directriz restart slo funcionar si no est cargado el mdulo
del kernel ipchains.

Si la directiva IPTABLES_SAVE_ON_RESTART dentro del archivo de


configuracin /etc/sysconfig/iptables-config se cambia de su valor por defecto a yes, las
reglas actuales son guardadas a /etc/sysconfig/iptables y cualquier regla existente se
movern al archivo /etc/sysconfig/iptables.save.
status Imprime el estado del cortafuegos una lista de todas las reglas activas al indicador
de comandos. Si no se cargan o configuran reglas del cortafuegos, tambin indica este
hecho.

Una lista de las reglas activas, conteniendo direcciones IP dentro de listas de reglas a menos
que el valor por defecto para IPTABLES_STATUS_NUMERIC sea cambiado ano dentro del
archivo de configuracin /etc/sysconfig/iptables-config.
panic Descarta todas las reglas del cortafuegos. La poltica de todas las tablas
configuradas est establecida a DROP.
save Guarda las reglas del cortafuegos a /etc/sysconfig/iptables usando iptables-save.

pg. 221
Archivo de configuracin de scripts de control de iptables
El comportamiento de los scripts de inicio de iptables es controlado por el archivo de
configuracin /etc/sysconfig/iptables-config. A continuacin se presenta una lista de las
directivas contenidas dentro de este archivo:
IPTABLES_MODULES Especifica una lista separada por espacios de
mdulos iptables adicionales a cargar cuando se activa un cortafuegos. Esto puede incluir
seguimiento de conexiones y ayudantes NAT.

IPTABLES_MODULES_UNLOAD Limpia los mdulos al iniciar o detenerse. Esta directiva


acepta los valores siguientes:
yes El valor por defecto. Esta regla se debe configurar para que alcance un estado correcto
para el inicio o parada del cortafuegos.
no Esta opcin solamente debera ser configurada si hay problemas para limpiar los
mdulos de filtrado de paquetes de red.
IPTABLES_SAVE_ON_STOP Guarda las reglas del cortafuegos actuales
a /etc/sysconfig/iptables cuando se detiene el cortafuegos. Esta directiva acepta los valores
siguientes:
yes Guarda las reglas existentes a /etc/sysconfig/iptables cuande se detiene el
cortafuegos, moviendo la versin anterior al archivo/etc/sysconfig/iptables.save.
no El valor por defecto. No guarda las reglas existentes cuando se detiene el cortafuegos.
IPTABLES_SAVE_ON_RESTART Guarda las reglas actuales del cortafuegos cuando este se
reinicia. Esta directiva acepta los valores siguientes:
yes Guarda las reglas existentes a /etc/sysconfig/iptables cuando se reinicia el
cortafuegos, moviendo la versin anterior al archivo/etc/sysconfig/iptables.save.
no El valor por defecto. No guarda las reglas existentes cuando se reinicia el cortafuegos.
IPTABLES_SAVE_COUNTER Guarda y restaura todos los paquetes y contadores de bytes
en todas las cadenas y reglas. Esta directiva acepta los valores siguientes:
yes Guarda los valores del contador.
no El valor por defecto. No guarda los valores del contador.
IPTABLES_STATUS_NUMERIC Muestra direcciones IP en una salida de estado en vez de
dominios y nombres de host. Esta directiva acepta los valores siguientes:
yes El valor por defecto. Solamente devuelve direcciones IP dentro de una salida de
estado.
no Devuelve dominios o nombres de host en la salida de estado.

pg. 222
Protocolo SSH

SSH (o Secure SHell) es un protocolo que facilita las comunicaciones seguras entre dos sistemas
usando una arquitectura cliente/servidor y que permite a los usuarios conectarse a un host
remotamente. A diferencia de otros protocolos de comunicacin remota tales como FTP o Telnet,
SSH encripta la sesin de conexin, haciendo imposible que alguien pueda obtener contraseas
no encriptadas.
SSH est diseado para reemplazar los mtodos ms viejos y menos seguros para registrarse
remotamente en otro sistema a travs de la shell de comando, tales como telnet o rsh. Un
programa relacionado, el scp, reemplaza otros programas diseados para copiar archivos entre
hosts como rcp. Ya que estas aplicaciones antiguas no encriptan contraseas entre el cliente y el
servidor, evite usarlas mientras le sea posible. El uso de mtodos seguros para registrarse
remotamente a otros sistemas reduce los riesgos de seguridad tanto para el sistema cliente como
para el sistema remoto.

Seguridad e acceso a Linux


SSH trabaja de forma similar a como se hace con telnet. La diferencia principal es que SSH usa
tcnicas de cifrado que hacen que la informacin que viaja por el medio de comunicacin vaya de
manera no legible, evitando que terceras personas puedan descubrir el usuario y contrasea de
la conexin ni lo que se escribe durante toda la sesin; aunque es posible atacar este tipo de
sistemas por medio de ataques de REPLAY y manipular as la informacin entre destinos.

Historia del SSH


Al principio slo existan los r-commands, que eran los basados en el programa rlogin, el cual
funciona de una forma similar a telnet.
La primera versin del protocolo y el programa eran libres y los cre un finlands llamado Tatu
Ylnen, pero su licencia fue cambiando y termin apareciendo la compaa SSH Communications
Security, que lo ofreca gratuitamente para uso domstico y acadmico, pero exiga el pago a otras
empresas. En el ao 1997 (dos aos despus de que se creara la primera versin) se propuso
como borrador en la IETF.
A principios de 1999 se empez a escribir una versin que se convertira en la implementacin
libre por excelencia, la de OpenBSD, llamada OpenSSH.

pg. 223
Versiones de SSH
Existen 2 versiones de SSH, la versin 1 de SSH hace uso de muchos algoritmos de cifrado
patentados (sin embargo, algunas de estas patentes han expirado) y es vulnerable a un agujero
de seguridad que potencialmente permite a un intruso insertar datos en la corriente de
comunicacin. La suite OpenSSH bajo Red Hat Enterprise Linux utiliza por defecto la versin 2 de
SSH, la cual tiene un algoritmo de intercambio de claves mejorado que no es vulnerable al agujero
de seguridad en la versin 1. Sin embargo, la suite OpenSSH tambin soporta las conexiones de la
versin 1.

Caractersticas de SSH
El protocolo SSH proporciona los siguientes tipos de proteccin:
Despus de la conexin inicial, el cliente puede verificar que se est conectando al mismo
servidor al que se conect anteriormente.
El cliente transmite su informacin de autenticacin al servidor usando una encriptacin
robusta de 128 bits.
Todos los datos enviados y recibidos durante la sesin se transfieren por medio de
encriptacin de 128 bits, lo cual los hacen extremamente difcil de descifrar y leer.
El cliente tiene la posibilidad de reenviar aplicaciones X11 desde el servidor. Esta tcnica,
llamada reenvo por X11, proporciona un medio seguro para usar aplicaciones grficas sobre
una red.
Ya que el protocolo SSH encripta todo lo que enva y recibe, se puede usar para asegurar
protocolos inseguros. El servidor SSH puede convertirse en un conducto para convertir en seguros
los protocolos inseguros mediante el uso de una tcnica llamada reenvo por puerto, como por
ejemplo POP, incrementando la seguridad del sistema en general y de los datos.

Red Hat Enterprise Linux contiene el paquete general de OpenSSH (openssh) as como tambin
los paquetes del servidor OpenSSH (openssh-server) y del cliente (openssh-clients). Observe que
los paquetes OpenSSH requieren el paquete OpenSSL (openssl). OpenSSL instala varias bibliotecas
criptogrficas importantes, permitiendo que OpenSSH pueda proporcionar comunicaciones
encriptadas.

Instalacin y Configuracion:

Lo primero es instalar el servicio de ssh, esto lo realizaremos con el siguiente comando:

pg. 224
# yum y install openssh-server openssh-client
Terminara una vez que nos mande la pantalla con el mensaje de instalacin complete

Una vez realizado esto realizaremos una conexin de prueba, para esto necesitaremos descargar
un cliente de ssh de Windows, para lo cual nos dirigiremos a google y descargaremos la aplicacin
llamada putty

Una vez descargado lo ejecutaremos:

pg. 225
Pondremos la ip de nuestro servidor:

Le daremos en open y cuando la conexin sea por primera vez nos mandara una alerta de
seguridad, y le daremos que Si

pg. 226
Validaremos con un usuario y un password valido, dentro del server:

Una vez realizado esto, estaremos en la consola como si estuviramos en la terminal fsica,
pudiendo realizar cualquier tarea desde el cliente.

Con exit podremos cerrar la sesin cuando ya no sea necesaria.

pg. 227
Por qu usar SSH?
Los usuario nefarios tienen a su disposicin una variedad de herramientas que les permiten
interceptar y redirigir el trfico de la red para ganar acceso al sistema. En trminos generales,
estas amenazas se pueden catalogar del siguiente modo:
Intercepcin de la comunicacin entre dos sistemas En este escenario, existe un tercero
en algn lugar de la red entre entidades en comunicacin que hace una copia de la
informacin que pasa entre ellas. La parte interceptora puede interceptar y conservar la
informacin, o puede modificar la informacin y luego enviarla al recipiente al cual estaba
destinada.
Este ataque se puede montar a travs del uso de un paquete sniffer una utilidad de red
muy comn.
Personificacin de un determinado host Con esta estrategia, un sistema interceptor finge ser
el recipiente a quien est destinado un mensaje. Si funciona la estrategia, el sistema del usuario
no se da cuenta del engao y contina la comunicacin con el host incorrecto.

Esto se produce con tcnicas como el envenenamiento del DNS o spoofing de IP (engao de
direcciones IP).
Ambas tcnicas interceptan informacin potencialmente confidencial y si esta intercepcin se
realiza con propsitos hostiles, el resultado puede ser catastrfico.
Si se utiliza SSH para inicios de sesin de shell remota y para copiar archivos, se pueden disminuir
estas amenazas a la seguridad notablemente. Esto es porque el cliente SSH y el servidor usan
firmas digitales para verificar su identidad. Adicionalmente, toda la comunicacin entre los
sistemas cliente y servidor es encriptada. No servirn de nada los intentos de falsificar la identidad
de cualquiera de los dos lados de la comunicacin ya que cada paquete est cifrado por medio de
una llave conocida slo por el sistema local y el remoto.

Secuencia de eventos de una conexin SSH


La siguiente serie de eventos lo ayudan a proteger la integridad de la comunicacin SSH entre dos
host.
Se lleva a cabo un 'handshake' (apretn de manos) encriptado para que el cliente pueda
verificar que se est comunicando con el servidor correcto.

pg. 228
La capa de transporte de la conexin entre el cliente y la mquina remota es encriptada
mediante un cdigo simtrico.
El cliente se autentica ante el servidor.
El cliente remoto interacta con la mquina remota sobre la conexin encriptada.

SSH-Agent permite recordar mientras dure la sesin, cada una de las claves privadas del usuario,
de modo que l se encargue de realizar la autenticacin.
En cualquier ambiente informtico, donde se requiera trabajar con mltiples servidores, es
necesario contar con una comunicacin segura como SSH. Para conectarse a un servidor remoto,
basta con teclear el comando seguido del usuario y host destino, y de la contrasea del usuario
remoto en cuestin. Este proceso de login en mquinas remotas puede ser molesto en los casos
en que sea necesario realizar conexiones cada poco perodo de tiempo, debido a que hay que
ingresar la contrasea cada vez.
De igual manera, cuando se desean utilizar discos remotos, puede ser beneficioso (sobre todo
para los usuarios) que dichos discos sean montados automticamente al momento de login, y que
puedan ser utilizados transparentemente por los usuarios. Con este fin fue creado el ssh-agent.

Capa de transporte
El papel principal de la capa de transporte es facilitar una comunicacin segura entre los dos hosts
durante la autenticacin yla subsecuente comunicacin. La capa de transporte lleva esto a cabo
manejando la encriptacin y decodificacin de datos y proporcionando proteccin de integridad
de los paquetes de datos mientras son enviados y recibidos. Adems, la capa de transporte
proporciona compresin de datos, lo que acelera la transmisin de informacin.
Al contactar un cliente a un servidor por medio del protocolo SSH, se negocian varios puntos
importantes para que ambos sistemas puedan construir la capa de transporte correctamente.

Durante el intercambio se producen los siguientes pasos:


Intercambio de claves
Se determina el algoritmo de encriptacin de la clave pblica
Se determina el algoritmo de la encriptacin simtrica
Se determina el algoritmo autenticacin de mensajes
Se determina el algoritmo de hash que hay que usar

pg. 229
Durante la primera fase, el cliente y el servidor negocian qu algoritmos criptogrficos se van a
usar. Las implementaciones actuales proporcionan las siguientes opciones:

Para criptografa de clave pblica: RSA, Diffie-Hellman, DSA (Digital Signature Algorithm)
o Fortezza.
Para cifrado simtrico: RC2, RC4, IDEA (International Data Encryption Algorithm), DES (Data
Encryption Standard), Triple DES y AES (Advanced Encryption Standard).
Para este cifrado se utiliza la misma llave para encriptar y para desencriptar.
Con funciones hash: MD5 o de la familia SHA.

El servidor se identifica ante el cliente con una llave de host nica durante el intercambio de
llaves. Obviamente si este cliente nunca se haba comunicado antes con este determinado
servidor, la llave del servidor le resultar desconocida al cliente y no lo conectar. OpenSSH evita
este problema permitiendo que el cliente acepte la llave del host del servidor despus que el
usuario es notificado y verifica la aceptacin de la nueva llave del host. Para las conexiones
posteriores, la llave del host del servidor se puede verificar con la versin guardada en el cliente,
proporcionando la confianza de que el cliente se est realmente comunicando con el servidor
deseado. Si en el futuro, la llave del host ya no coincide, el usuario debe eliminar la versin
guardada antes de que una conexin pueda ocurrir.

SSH fue ideado para funcionar con casi cualquier tipo de algoritmo de clave pblica o formato de
codificacin. Despus del intercambio de claves inicial se crea un valor hash usado para el
intercambio y un valor compartido secreto, los dos sistemas empiezan inmediatamente a calcular
claves y algoritmos nuevos para proteger la autenticacin y los datos que se enviarn a travs de
la conexin en el futuro.

Despus que una cierta cantidad de datos haya sido transmitida con un determinado algoritmo y
clave (la cantidad exacta depende de la implementacin de SSH), ocurre otro intercambio de
claves, el cual genera otro conjunto de valores de hash y un nuevo valor secreto compartido. De
esta manera aunque un agresor lograse determinar los valores de hash y de secreto compartido,
esta informacin slo ser vlida por un perodo de tiempo limitado.

Autenticacin en SSH

pg. 230
Cuando la capa de transporte haya construido un tnel seguro para transmitir informacin entre
los dos sistemas, el servidor le dir al cliente de los diferentes mtodos de autenticacin
soportados, tales como el uso de firmas privadas codificadas con claves o la insercin de una
contrasea. El cliente entonces intentar autenticarse ante el servidor mediante el uso de
cualquiera de los mtodos soportados.
Los servidores y clientes SSH se pueden configurar para que permitan varios tipos de
autenticacin, lo cual le concede a cada lado la cantidad ptima de control. Luego el servidor
podr decidir qu mtodos de encriptacin soportar basado en su pauta de seguridad, y el
cliente puede elegir el orden en que intentar utilizar los mtodos de autenticacin entre las
opciones a disposicin. Gracias a la naturaleza segura de la capa de transporte de SSH, hasta
mtodos de autenticacin que parecen inseguros, como la autenticacin basada en contraseas,
son en realidad seguros para usar.

Cuando se conecta a un servidor ssh con su cliente ssh , se compara la clave pblica del servidor
a las claves almacenadas en un archivo en el equipo cliente , esta conexin se logra mediante el
archivo known_hosts.

Canales en SSH

Luego de una autenticacin exitosa sobre la capa de transporte SSH, se abren mltiples canales a
travs de la tcnica llamada multiplexar. Cada uno de estos canales manejan la conexin para
diferentes sesiones de terminal y para sesiones de reenvi X11.
Ambos clientes y servidores pueden crear un canal nuevo. Luego se le asigna un nmero diferente
a cada canal en cada punta de la conexin. Cuando el cliente intenta abrir un nuevo canal, los
clientes envan el nmero del canal junto con la peticin. Esta informacin es almacenada por el
servidor y usada para dirigir la comunicacin a ese canal. Esto es hecho para que diferentes tipos
de sesin no afecten una a la otra y as cuando una sesin termine, su canal pueda ser cerrado sin
interrumpir la conexin SSH primaria.

Los canales tambin soportan el control de flujo, el cual les permite enviar y recibir datos
ordenadamente. De esta manera, los datos no se envan a travs del canal sino hasta que el host
haya recibido un mensaje avisando que el canal est abierto y puede recibirlos.

El cliente y el servidor negocian las caractersticas de cada canal automticamente, dependiendo


del tipo de servicio que el cliente solicita y la forma en que el usuario est conectado a la red. Esto

pg. 231
otorga una gran flexibilidad en el manejo de diferentes tipos de conexiones remotas sin tener que
cambiar la infraestructura bsica del protocolo.

Servidores FTP
Red Hat Enterprise Linux se entrega con dos servidores FTP diferentes:
Acelerador de Contenidos Red Hat Un servidor Web basado en el kernel que ofrece un
servidor web y servicios FTP de alto rendimiento. Puesto que la velocidad es su objetivo
principal de diseo, su funcionalidad es limitada y solamente se ejecuta como FTP annimo.
vsftpd un demonio FTP rpido y seguro, preferido para Red Hat Enterprise Linux. El resto
de este captulo se enfoca en vsftpd.

Vsftpd
El demonio FTP vsftpd (o Very Secure FTP Daemon) est diseado desde la base para ser rpido,
estable y lo ms importante, seguro. Su habilidad para manejar grandes nmeros de conexiones
de forma eficiente y segura es lo que hace que vsftpd sea el nico FTP independiente distribuido
con Red Hat Enterprise Linux.
El modelo de seguridad utilizado por vsftpd tiene tres aspectos principales:
Clara separacin de procesos privilegiados y sin privilegios Procesos separados manejan
tareas diferentes y cada uno de estos procesos se ejecuta con los privilegios mnimos
requeridos para la tarea.
Las tareas que requieren altos privilegios son manejadas por procesos con los mnimos
privilegios necesarios Influenciando las compatibilidades encontradas en la biblioteca
libcap, las tareas que usualmente requieren privilegios de sper usuario se pueden ejecutar
de forma ms segura desde un proceso menos privilegiado.
La mayora de los procesos se ejecutan enjaulados en un ambiente chroot Siempre que
sea posible, se cambia la raz de los procesos al directorio compartido; este directorio se
considera luego como la jaula chroot. Por ejemplo, si el directorio /var/ftp/ es el directorio
compartido principal, vsftpd reasigna /var/ftp/ al nuevo directorio raz, conocido como /.
Esto previene actividades maliciosas de cualquier hacker potencial en algn directorio que
no estn por debajo del nuevo directorio root.
El uso de estas prcticas de seguridad tiene el efecto siguiente en cmo vsftpd trata con las
peticiones:

pg. 232
El proceso padre se ejecuta con el mnimo de privilegios requerido El proceso padre
calcula dinmicamente el nivel de privilegios requerido para minimizar el nivel de riesgos.
Los procesos hijo manejan la interaccin directa con los clientes FTP y se ejecutan casi sin
ningn privilegio.
Todas las operaciones que requieren altos privilegios son manejadas por un pequeo
proceso padre Similar a Servidor Apache HTTP, vsftpd lanza procesos hijos sin privilegios
para manejar las conexiones entrantes. Esto permite al proceso padre privilegiado, ser tan
pequeo como sea posible y manejar relativamente pocas tareas.
El proceso padre no confa en ninguna de las peticiones desde procesos hijos sin
privilegios Las comunicaciones con procesos hijos se reciben sobre un socket y la validez
de cualquier informacin desde un proceso hijo es verificada antes de proceder.
La mayor parte de la interaccin con clientes FTP la manejan procesos hijo sin privilegios en
una jaula chroot. Debido a que estos procesos hijo no tienen privilegios y solamente
tienen acceso al directorio que est siendo compartido, cualquier proceso fallido solamente
permitir al atacante acceder a los archivos compartidos.
Archivos instalados con vsftpd
El RPM vsftpd instala el demonio (/usr/sbin/vsftpd), su archivo de configuracin y otros archivos
relacionados, as como tambin directorios FTP en el sistema. La siguiente es una lista de los
archivos y directorios considerados ms a menudo cuando se configura vsftpd:
/etc/rc.d/init.d/vsftpd El script de inicializacin (initscript) utilizado por el
comando /sbin/service para iniciar, detener o volver a cargar vsftpd.
/etc/pam.d/vsftpd El archivo de configuracin de los Pluggable Authentication Modules
(PAM) para vsftpd. Este archivo define los requerimientos que debe cumplir un usuario para
conectarse a un servidor FTP.
/etc/vsftpd/vsftpd.conf El archivo de configuracin para vsftpd.
/etc/vsftpd.ftpusers Una lista de los usuarios que no tienen permitido conectarse
a vsftpd. Por defecto esta lista incluye a los usuarios root, bin y daemon, entre otros.
/etc/vsftpd.user_list Este archivo se puede configurar para negar o permitir el acceso a
los usuarios listados, dependiendo de si la directriz userlist_deny est configurada a YES (por
defecto) o a NO en /etc/vsftpd/vsftpd.conf. Si se utiliza /etc/vsftpd.user_list para permitir
acceso a los usuarios, los nombres de usuarios listados no deben aparecer
en /etc/vsftpd.ftpusers.

pg. 233
El directorio /var/ftp/ El directorio que contiene los archivos servidos por vsftpd. Tambin
contiene el directorio /var/ftp/pub/ para los usuarios annimos. Ambos directorios estn
disponibles para la lectura de todos, pero slo el superusuario o root puede escribir en el.

pg. 234
Iniciar y detener vsftpd

El RPM vsftpd instala el script /etc/rc.d/init.d/vsftpd, al cual se puede acceder usando el


comando /sbin/service.

Para iniciar el servidor, escriba como usuario root, lo siguiente:

# /sbin/service vsftpd start

Para detener el servidor, como root escriba:

# /sbin/service vsftpd stop

La opcin restart es un atajo para detener y volver a iniciar vsftpd. Esta es la forma ms efectiva
para que los cambios de configuracin tomen efecto luego de modificar el archivo de
configuracin para vsftpd.
Para reiniciar el servidor, escriba como root:

# /sbin/service vsftpd restart

La opcin condrestart (reinicio condicional) solamente arranca vsftpd si est ejecutndose en ese
momento. Esta opcin es muy til para scripts, puesto que no arranca el demonio si este no se
est ejecutando.
Para reiniciar el servidor de forma condicional, escriba como usuario root:

# /sbin/service vsftpd condrestart

Por defecto, el servicio vsftpd no se inicia automticamente al momento del arranque. Para
configurar el servicio vsftpd para que se inicie al momento del arranque, utilice una utilidad
initscript, tal como /sbin/chkconfig, /sbin/ntsysv o el programa Herramienta de configuracin de
servicios.

pg. 235
Intalacion y Configuracion de FTP.

Para comenzar primero instalaremos el servicio de ftp con el siguiente comando:

# yum y install vsftpd ftp


La instalacin estar completa cuando nos mande el mensaje de complete

Posterior a esto, nos dirigimos al archivo de configuracin de ftp que est en la ruta

# vi /etc/vsftpd/vsftpd.conf
Verificaremos en el archivo que este activa la regla de permitir usuarios annimos

anonymous_enable=YES
Para activarlo solo le quitamos el smbolo # para activarlo
Y la regla de enjaulamiento de usuarios locales:

chroot_local_user=YES
De igual manera lo activamos de ser necesario
Despus, la regla de habilitar usuarios locales:
Local_enable=YES
Y por ltimo la regla de escritura en server usando FTP:
write_enable=YES
Y guardamos los cambios.

pg. 236
Despues reiniciamos el servidor de Ftp:
# service vsftpd restart
Ahora nos cambiamos a la carpeta de ftp que da por defecto para los usuarios annimos
# cd /var/ftp
Y Creamos una carpeta
# mkdir /var/ftp/ejemplo
Si se tiene un firewall instalado se deshabilita
# system-config-firewall
Ahora deshabilitamos SELINUX, para que los clientes puedan utilizar el servicio
# vi /etc/sysconfig/selinux

Reiniciamos el servicio de FTP


# service vsftpd restart

pg. 237
Una vez realizado esto modificaremos el archivo de host para indicar la direccin de nuestro
servidor ftp
# vi /etc/hosts

Ejecutaremos el siguiente comando para iniciar el servicio en todos los niveles


# chkconfig vsftpd on
Una vez realizado esto agregaremos la ip a las tablas para establecer los puertos de conexin con
los siguientes comandos:
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 30300:30309 -j ACCEPT
Guadamos los cambios en las tablas:
# service iptables save
Reiniciamos el servicio:
#service iptables restart
Otro paso importante es verificar que la carpeta local no est lista para ser validad por ftp:
Esto lo revisaremos con el siguiente comando
# getsebool a | grep ftp
Esto nos desplegara una lista en la cual podremos ver que la opcin ftp_home_dir estar en off,
esto quiere decir que cualquier usuario annimo o asignado no podr navegar en la carpeta para

pg. 238
ftp, por tal la activaremos con el siguiente comando:
# setsebool P ftp_home_dir on
Esto podr tardar algunos minutos, una vez realizado esto podremos verificar con el comando
anterior y nos deber mostrar algo parecido a esto:

Ahora realizamos una prueba de conexin por FTP:


Este lo realizaremos utilizando un usuario annimo por ejemplo:
USR: ftp
Passwd: ftp
Esto lo realizaremos desde el mismo servidor con el comando siguiente:
# ftp direccin del server
Nos deber pedir el usuario y el password y colocaremos los antes mencionados:

pg. 239
Y despus tendremos acceso a este:

Y si listamos el contenido podremos ver la carpeta antes creada, lo que indica que estamos dentro
del server:

pg. 240
Otra manera de verificar que hemos conseguido el acceso es hacerlo desde el navegador de
nuestro equipo de la siguiente forma:

Abriremos el navegador de internet de nuestro equipo y pondremos en la url la direccin de la


siguiente forma:

ftp://direccion del server

Y al presionar enter podremos ver el contenido antes mencionado

pg. 241
Ahora que ya hemos logrado la conexin con un usuario annimos, realizaremos la configuracin
para realizar una conexin ms segura con un usuario asignado y que pida autenticacin, para
esto procedemos a realizar lo siguiente:

Nos cambiamos a la carpeta de configuracin de ftp y ah crearemos un usuario

# cd /etc/vsftpd

Agregamos el usuario con el siguiente comando

# adduser adminftp

Y le asignamos una contrasea

# passwd adminftp

Despus podremos realizar una prueba con autenticacin de la misma manera que el el caso
anterior por lnea de comando

pg. 242
Ponemos el password asignado

Y si listamos veremos que est vaca a diferencia de la prueba anterior

pg. 243
Para verificar la conexin por ftp con autenticacin podremos realizarlo de manera grfica
tambin de la siguiente forma:
En la Url ahora podremos validarnos pero de la siguiente manera

ftp://adminftp@direccion del servidor

Lo cual nos mandara una interface de la siguiente manera:

Validaremos con los datos que tenemos

pg. 244
Lo cual nos dar acceso y veremos que esta vaco pues en esta no tenemos archivo alguno.

De esta manera ya podramos utilizar clientes ftp para poder subir o descargar archivos al
servidor, como FileZilla y muchos otros que estn en el mercado.

Para subir o descargar archivos del servidor podramos realizar una conexin desde el explorador
de Windows:

pg. 245
pg. 246
Y de esta forma esta implementado un servidor FTP.

Puertos mltiples, modos mltiples


A diferencia de la mayora de los protocolos utilizados en Internet, FTP requiere de mltiples
puertos de red para funcionar correctamente. Cuando una aplicacin cliente FTP inicia una
conexin a un servidor FTP, abre el puerto 21 en el servidor conocido como el puerto de
comandos. Se utiliza este puerto para arrojar todos los comandos al servidor. Cualquier peticin
de datos desde el servidor se devuelve al cliente a travs del puerto de datos. El nmero de puerto
para las conexiones de datos y la forma en la que las conexiones son inicializadas vara
dependiendo de si el cliente solicita los datos en modo activo o en modo pasivo.

A continuacin se describen estos modos:

Modo activo
El modo activo es el mtodo original utilizado por el protocolo FTP para la transferencia de datos
a la aplicacin cliente. Cuando el cliente FTP inicia una transferencia de datos, el servidor abre
una conexin desde el puerto 20 en el servidor para la direccin IP y un puerto aleatorio sin
privilegios (mayor que 1024) especificado por el cliente. Este arreglo implica que la mquina
cliente debe poder aceptar conexiones en cualquier puerto superior al 1024. Con el crecimiento
de las redes inseguras, tales como Internet, es muy comn el uso de cortafuegos para proteger

pg. 247
las mquinas cliente. Debido a que estos cortafuegos en el lado del cliente normalmente rechazan
las conexiones entrantes desde servidores FTP en modo activo, se cre el modo pasivo.

Modo pasivo

La aplicacin FTP cliente es la que inicia el modo pasivo, de la misma forma que el modo activo.
El cliente FTP indica que desea acceder a los datos en modo pasivo y el servidor proporciona la
direccin IP y el puerto aleatorio, sin privilegios (mayor que 1024) en el servidor. Luego, el cliente
se conecta al puerto en el servidor y descarga la informacin requerida.

Mientras que el modo pasivo resuelve el problema de la interferencia del cortafuegos en el lado
del cliente con las conexiones de datos, tambin puede complicar la administracin del
cortafuegos del lado del servidor. Una de las formas de limitar el nmero de puertos abiertos en
el servidor y de simplificar la tarea de crear reglas para el cortafuegos del lado del servidor, es
limitando el rango de puertos sin privilegios ofrecidos para las conexiones pasivas.

pg. 248
LINUX aplicado en un entorno real

Configurar lo de redes

# yum install net-tools [Provides ifconfig utility]

Ver estatus de ip

# ip addr show

pg. 249
Para editar las tarjetas
# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
Detalles
IPADDR = [Enter your static IP here]
GATEWAY = [Enter your Default Gateway]
DNS1 = [Your Domain Name System 1]
DNS2 = [Your Domain Name System 2]

# service network restart

pg. 250
Reiniciar Servicio de redes

Checar el status de las redes

Cambiarle el nombre a tu terminal

pg. 251
# echo $HOSTNAME

Check System Hostname

# vi /etc/hostname

Set System Hostname

pg. 252
$ echo $HOSTNAME

Confirmar modificacion

Podras usar el comando hostname

$ hostname
Como hacer upgrade?

# yum update && yum upgrade

Hacer una actualizacin

pg. 253
Instalar un sistema de web browsing para CLI

# yum install links

Links: Commandline Web Browsing

Ambiente de trabajo

SSH Client : 192.168.0.12 ( Fedora 21 )


SSH Remote Host : 192.168.0.11 ( CentOS 7 )
Crear llave

[tecmint@tecmint.com ~]$ ssh-keygen -t rsa


Generating public/private rsa key pair.
Enter file in which to save the key (/home/tecmint/.ssh/id_rsa): [Press enter key]
Created directory '/home/tecmint/.ssh'.
Enter passphrase (empty for no passphrase): [Press enter key]
Enter same passphrase again: [Press enter key]
Your identification has been saved in /home/tecmint/.ssh/id_rsa.
Your public key has been saved in /home/tecmint/.ssh/id_rsa.pub.
The key fingerprint is:
5f:ad:40:00:8a:d1:9b:99:b3:b0:f8:08:99:c3:ed:d3 tecmint@tecmint.com

pg. 254
The key's randomart image is:
+--[ RSA 2048]----+
| ..oooE.++|
| o. o.o |
| .. . |
| o . . o|
| S. .+|
| . . . o|
| . o o ..|
| ++ |
| +. |
+-----------------+

Crear llave RSA

Creacin de un directorio .SSH


[tecmint@tecmint ~]$ ssh sheena@192.168.0.11 mkdir -p .ssh
The authenticity of host '192.168.0.11 (192.168.0.11)' can't be established.
RSA key fingerprint is 45:0e:28:11:d6:81:62:16:04:3f:db:38:02:la:22:4e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.11' (ECDSA) to the list of known hosts.
sheena@192.168.0.11's password: [Enter Your Password Here]

pg. 255
Subir llave publica generada
[tecmint@tecmint ~]$ cat .ssh/id_rsa.pub | ssh sheena@192.168.0.11 'cat >> .ssh/authorized_keys'
sheena@192.168.1.2's password: [Enter Your Password Here]

Cambiar permisos
[tecmint@tecmint ~]$ ssh sheena@192.168.0.11 "chmod 700 .ssh; chmod 640
.ssh/authorized_keys"
sheena@192.168.0.11's password: [Enter Your Password Here]
Instalar Apache Server

# yum install httpd

Si quieres cambiar cosas del servidor


Debes editar este archivo
/etc/httpd/conf/httpd.conf

pg. 256
Permitir http a travs del firewall
# firewall-cmd --add-service=http
Permite el puerto 3221
# firewall-cmd -permanent -add-port=3221/tcp
Recarga el firewall
# firewall-cmd --reload
Reiniciar Apache
# systemctl restart httpd.service
# systemctl start httpd.service
# systemctl enable httpd.service
Verificar con link
# links 127.0.0.1

pg. 257
Instalar PHP

# yum install php


Reiniciar Apache
# systemctl restart httpd.service
Verificar php
# echo -e "<?php\nphpinfo();\n?>" > /var/www/html/phpinfo.php

Instalar Base De Datos

# yum install mariadb-server mariadb


Configurar mariaDB
# systemctl start mariadb.service
# systemctl enable mariadb.service
Permitir el servicio por el firewall
# firewall-cmd --add-service=mysql
# /usr/bin/mysql_secure_installation

Seguridad de MariaDB

pg. 258
Instalar y Configurar SSH Server.

# SSH -V

CHECAR ssh version

Modificar la configuracin de ssh


file /etc/ssh/ssh_config.
Activar ms seguridad en el protocolo ssh
# Protocol 2,1 (Original)
Protocol 2 (Now)
Desactivamos el puerto 22, y lo cambiamos a cualquier otro.

pg. 259
Instalar GCC

# yum install gcc

Checamos la versin

# gcc --version

pg. 260
Instalar Java

# yum install java

Instalando java

Checar versin
# java -version

pg. 261
Instalar TOMCAT para HTTP Java

# yum install tomcat


# systemctl start tomcat
Versin de tomcat
# /usr/sbin/tomcat versin

Check Tomcat Version

Decirle al firewall el puerto de tomcat


# firewall-cmd --zone=public --add-port=8080/tcp --permanent
# firewall-cmd --reload
Editamos este archivo /etc/tomcat/tomcat-users.xml. Para crear un usuario y una contrasea
<tomcat-users>
....
</tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>

pg. 262
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="tecmint" password="tecmint" roles="manager-gui,manager-script,manager-
jmx,manager-status,admin-gui,admin-script"/>
</tomcat-users>

Secure Tomcat

Aqu paramos y reiniciamos el servicio


# systemctl stop tomcat
# systemctl start tomcat
# systemctl enable tomcat.service

pg. 263
Instalar NMAP

Sirve para monitorear puertos y q servicios estn en el


# yum install nmap
En una direccin q puertos estn disponibles
# nmap 127.0.01

Tambin por medio de firewalls


# firewall-cmd --list-ports

pg. 264
Configuracion de firewall

# systemctl status firewalld


OR
# firewall-cmd state

Tambin se pueden checar por zonas


# firewall-cmd --zone=work --list-all

pg. 265
Checar la zona por defecto
# firewall-cmd --get-default-zone

Cambiar a Zona de trabajo


# firewall-cmd --set-default-zone=work

pg. 266
Enlistar todas las zonas

# firewall-cmd --list-services

pg. 267
Agregar servicios temporales
# firewall-cmd --add-service=http
# firewall-cmd reload

Agregar servicios permanentes


# firewall-cmd --add-service=http --permanent
# firewall-cmd --reload

pg. 268
Remover servicios temporales
# firewall-cmd --remove-service=http
# firewall-cmd --reload

Remover servicios permanentes


# firewall-cmd --zone=work --remove-service=http --permanent

pg. 269
# firewall-cmd --reload

Remove Service Permanently

Para agregar puertos temporales


# firewall-cmd --add-port=331/tcp
# firewall-cmd reload

Para agregar puertos permanentes


# firewall-cmd --add-port=331/tcp --permanent
# firewall-cmd --reload

pg. 270
Bloquear o remover puertos temporales
# firewall-cmd --remove-port=331/tcp
# firewall-cmd --reload

Bloquear o remover puertos permanentes


# firewall-cmd --remove-port=331/tcp --permanent
# firewall-cmd reload

pg. 271
Para desactivar firewall

# systemctl stop firewalld


# systemctl disable firewalld
# firewall-cmd --state

pg. 272
Para activar firewall
# systemctl enable firewalld
# systemctl start firewalld
# firewall-cmd state

Instalar WGET

Esta herramienta sirve para descargar archivos de protocolos de internet


# yum install wget

pg. 273
TELNET

Nos permite comunicarnos a otras computadoras

# yum install telnet


# telnet google.com 80

Instalar WEBMIN

Nos sirve para configurar un sistema en lnea de gestin de Linux pudiendo manejar prcticamente
todo lo q tenemos ah por medio de una interfaz web
# wget http://prdownloads.sourceforge.net/webadmin/webmin-1.740-1.noarch.rpm

pg. 274
# rpm -ivh webmin-*.rpm

Agregar Repositorios de otras partes

Recuerden que es muy riesgoso hacer este tipo de cosas en un sistema de servidores en
produccin
# yum install epel-release

Agregar una comunidad de repositorio Linux.


# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

pg. 275
Instalar un compresor de archivos
# yum install p7zip

Instalar NTFS adaptador


# yum install ntfs-3g

pg. 276
Para instalar dispositivos
# mount -ro ntfs-3g /dev/sda5 /mnt
# cd /mnt
# ls -l

pg. 277
Instalar un servidor FTP

# yum install vsftpd

Configurar con VI
# vi /etc/vsftpd/vsftpd.conf
Dejar configurado estas caractertisticas
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
cambiar el puerto de servicio en el firewall
# firewall-cmd --add-port=21/tcp
# firewall-cmd --reload
Despus iniciar ftp
# systemctl restart vsftpd
# systemctl enable vsftpd

pg. 278
Configurar SUDO

# visudo
Abrir el siguiente archivo
/etc/sudoers

Darle todo los permisos a un usuario, a excepcin de reinicio y apagado


tecmint ALL=(ALL) ALL
volver a abrir y ahora hacer lo siguiente en el mismo archivo
cmnd_Alias nopermit = /sbin/shutdown, /sbin/reboot
despus agregar alias con operadores lgicos
cmnd_Alias nopermit = /sbin/shutdown, /sbin/reboot
darle persmisos a un grupo para correr algunos pocos comandos
cmnd_Alias permit = /usr/sbin/useradd, /usr/sbin/userdel
y al final agregar permisos al grupo deban
debian ALL=(ALL) permit

pg. 279
Instalar Rockit Hunter

# yum install rkhunter

Y veremos algo asi


# rkhunter --check

Scan for rootkits

pg. 280
RootKit Scan Results

pg. 281
CONCLUSIONES

Hoy en da los sistemas operativo sean hecho parte importante en nuestra vida como tambin
hay una gran diversidad de sistemas operativos hoy en da como Windows, Apple, y Linux es un
sistema operativo muy popular es propiamente el ncleo de un sistema operativo es decir el
conjunto de programas que controla los aspectos ms bsicos del funcionamiento pero Linux
tiene una amplia distribucin de sistemas operativos como centOS, Fedora, Debian, Mandriva
entre otros ms, pero sin el sistema operativo de la computadora solo sera un ms que un
montn de metal pero con el sistema operativo l tiene una responsabilidad se asegura de que
los programas y usuarios que estn funcionando al mismo tiempo no interfieran entre ellos
tambien conocimos su historia como fue que surgi quien es mejor sistema operativo Linux y sus
distribuciones como es la estructura de Linux con ella permitir al software conocer la ubicacin
de directorios y archivos instalados pero con lo comandos la terminal es la interfaz grfica que
permite que el usuario se comunique con el kernel de Linux se pude entrar de modo grfico hay
se puede ver los directorios crear cambiar archivos siendo el superusuario (root ) o un usuario
normal o tambien crear nuevos usuarios o instalar software que es necesario utiliza repositorios
tambien para intalar se puede utilizar el comando yum

pg. 282
CIBERGRAFIA

http://www.authorstream.com/Presentation/alandramirez-1854509-centos/
http://www.centosni.net/comandos-basicos-en-gnulinux-centos/
http://www.fing.edu.uy/inco/cursos/sistoper/recursosLaboratorio/tutorial0.pdf
http://www.debian.org/
http://asorufps.wikispaces.com/CENTOS
http://www.debian.org/doc/manuals/project-history/ch-intro.es.html
http://www.debian.org/doc/manuals/project-history/ch-detailed.es.html

pg. 283

Вам также может понравиться