Sei sulla pagina 1di 267

Certificado

Linux

Manual del participante

2014

ndice
Contenido
ndice ................................................................................................................................. 2
Formacin de la comunidad de aprendizaje. ................................................................. 7
Objetivo del curso ......................................................................................................... 8
Unidad 1 Instalacin del Sistema Operativo y Ajustes posteriores ............................. 9
Introduccin ............................................................................................................... 9
Sistema Operativo UNIX .......................................................................................... 12
Sistema Operativo Linux.......................................................................................... 13
Requerimientos de Hardware de Linux .................................................................. 15
Distribuciones de Linux ........................................................................................... 15
Organizacin de Linux ............................................................................................. 16
Sistema de Archivos en Linux.................................................................................. 19
Procesamiento de Texto........................................................................................... 23
Programacin ........................................................................................................... 25
Documentacin. ....................................................................................................... 25
Caractersticas del Sistema Linux............................................................................ 26
Software disponible en Linux .................................................................................. 26
Distribuciones Linux. .................................................................................................. 27
Estndar de Jerarqua de Sistema de Archivos. ........................................................ 31
Estructura de los directorios general ........................................................................ 32

ESTRUCTURA DE ARCHIVOS .......................................................................................... 32


Directorio /bin: ........................................................................................................ 33
Directorio /boot ....................................................................................................... 34
Directorio /dev ......................................................................................................... 34
Directorio /etc .......................................................................................................... 34
Directorio /home ..................................................................................................... 34
Directorio /lib .......................................................................................................... 34
Directorio /lost+found ............................................................................................ 34
Directorio /media .................................................................................................... 34
Directorio /misc ....................................................................................................... 34
Directorio /mnt ........................................................................................................ 34
Directorio /net .......................................................................................................... 35
Directorio/opt .......................................................................................................... 35
Directorio/proc ........................................................................................................ 35
Directorio/root......................................................................................................... 35

Directorio/sbin......................................................................................................... 35
Directorio /srv .......................................................................................................... 35
Directorio /sys .......................................................................................................... 35
Directorio /tmp ........................................................................................................ 36
Directorio /var.......................................................................................................... 36
Otros............................................................................................................................. 61
Nota: ............................................................................................................................. 61
Reloj del hardware y reloj del sistema ...................................................................... 70
Unidad 2 Administracion del Sistema de Archivos. ..................................................... 91
Ventajas........................................................................................................................ 92
Lmites de tamao.................................................................................................... 92
Niveles del journaling.............................................................................................. 93
Desventajas .................................................................................................................. 94
Mejoras ........................................................................................................................ 94
Sistema de archivos de gran tamao...................................................................... 94
Extents....................................................................................................................... 94
Compatibilidad hacia adelante y hacia atrs ......................................................... 95
Asignacin persistente de espacio en el disco....................................................... 95
Asignacin retrasada de espacio en el disco ......................................................... 95
Lmite de 32000 subdirectorios superado.............................................................. 96
Chequeo del sistema de ficheros ms rpido ........................................................ 96
Uso de e2fsck ............................................................................................................... 96
badblocks ..................................................................................................................... 97
Noatime (No tiempos de acceso)................................................................................ 97
Sintaxis Bsica:....................................................................................................... 103
A) Sobre discos duros y particiones: .................................................................... 105
B) Sobre un CD/DVD ............................................................................................. 107
C) Sobre MBR y VBS: ............................................................................................. 107
D) Otros: ................................................................................................................. 108
Unidad 3. Administracin de Sofware y servicios ...................................................... 109
RPM......................................................................................................................... 110
Gestion de Servicios .................................................................................................. 118
Nivel de ejecucin 0# ............................................................................................ 119
Nivel de ejecucin 1# ............................................................................................ 119
Nivel de ejecucin 2# ............................................................................................ 119
Nivel de ejecucin 3# ............................................................................................ 120
Nivel de ejecucin 4# ............................................................................................ 120

Nivel de ejecucin 5# ............................................................................................ 120


Nivel de ejecucin 6# ............................................................................................ 120
Secuencia de arranque.............................................................................................. 121
Arranque y parada de lo servicios ........................................................................... 124
Envo de seales a los procesos ............................................................................... 125
Unidad 4.Gestin de usuarios, grupos y privilegios ................................................ 129
Gestin de cuentas de usuario. ................................................................................ 129
Tipos de usuarios ...................................................................................................... 129
/etc/passwd ................................................................................................................ 130
/etc/shadow ............................................................................................................... 131
/etc/group .................................................................................................................. 133
/etc/login.defs ............................................................................................................ 133
Aadir usuarios con useradd ................................................................................... 134
Modificar usuarios con usermod ............................................................................. 135
Eliminar usuarios con userdel.................................................................................. 136
Cambiar contraseas con passwd ............................................................................ 137
Archivos de configuracin ........................................................................................ 138
Resumen de comandos y archivos de administracin de usuarios ....................... 139
Gestion de cuentas de grupos: ................................................................................. 141
SUDO.......................................................................................................................... 142
Visudo ........................................................................................................................ 144
Sudoers ...................................................................................................................... 145
Cmnd_Alias............................................................................................................. 146
User_Alias ............................................................................................................... 147
Runas_Alias ............................................................................................................ 148
Host_Alias ............................................................................................................... 148
Listas ....................................................................................................................... 150
Tags (etiquetas de comandos)............................................................................... 153
ARCHIVO /ETC/SUDOERS DE EJEMPLO ................................................................. 154
Sudo............................................................................................................................ 156
Uso de los Aliases...................................................................................................... 159
Unidad 5. Permisos y Atributos del Sistema de Archivos.......................................... 160
Lsattr y chattr: control de atributos de ficheros Linux ........................................... 183
lsattr ........................................................................................................................... 183
chattr .......................................................................................................................... 184
Deshabilitar la modificacin de la fecha de acceso al fichero (atime) .............. 187
Comprimir automticamente el fichero en el disco............................................ 187

Bloquear la modificacin o borrado de un archivo ............................................ 187


Permitir recuperacin de archivo aunque sea eliminado .................................. 187
Al eliminar un archivo, sobreescribir con 0 todos sus bloques ......................... 188
Escribir de forma sncrona a disco cambios en los ficheros .............................. 188
Unidad 6. Herramientas bsicas del Sistema Operativo............................................ 189
Mandatos de uso bsico, muvete por la consola. ................................................. 189
Compresin y descompresin de archivos.............................................................. 202
Gestin de procesos y trabajos. ............................................................................... 214
Ps ................................................................................................................................ 215
Pstree ......................................................................................................................... 217
Kill .............................................................................................................................. 217
Killall .......................................................................................................................... 218
Nice............................................................................................................................. 219
nohup y &................................................................................................................... 219
Jobs............................................................................................................................. 220
Top.............................................................................................................................. 221
lsof. ............................................................................................................................. 228
Introduccin a sed. ................................................................................................... 229
Introduccin a GnuPG .............................................................................................. 233
Definiendo los requerimientos en seguridad ......................................................... 233
Seleccin del tamao de la clave ............................................................................. 234
Proteccin de la clave privada ................................................................................. 235
Seleccin de las fechas de caducidad y uso de subclaves ...................................... 236
Gestin del anillo de confianza................................................................................ 238
IMPLEMENTAR Y ADMINISTRAR CUOTAS DE DISCO (DISK QUOTAS) EN LINUX
.................................................................................................................................... 241
Lmites ........................................................................................................................ 242
Donde se implementan? .......................................................................................... 242
Verificando el uso de las cuotas............................................................................... 246
Estableciendo el tiempo de gracia ........................................................................... 248
Fijar cuotas de manera global a todos los usuarios ............................................... 248
Configuracin de red. ............................................................................................... 251
Configuracin del fichero resolv.conf ..................................................................... 255
Configuracin y uso de crond. ................................................................................. 257
Iniciar cron ................................................................................................................ 257
Ejecutando Cron con mltiples usuarios, comando crontab ................................. 261
Controlando el acceso a cron................................................................................... 263

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

del Nombre, profesin, aos de experiencia como


instructor, experiencia en la imparticin del
curso, o cursos similares o relacionados.

Alineacin
expectativas:

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

Reglas de oro:

El instructor presentar a los participantes el


objetivo del curso, aclarando dudas al respecto
si las hubiese.

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.


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
expectativas

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

Objetivo del curso


Objetivo

Al final del curso el participanteobtendra las herramientas


necesarias para administrar un servidor Linux, as como
sistema de archivos, correo electrnico, navegacin en
internet.
Realizar tareas de un administrador: instalacin de software,
creacin de usuarios, establecimiento de permisos, manejo de
comandos, elaboracin de script y utilidades de redes.

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.

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.


La figura 1.1 ilustra el rol de un sistema
operativo

Progra
ma de
Usuari
o

Sistema
Operativo

Programas que
Controlan el
Hardware
de
la
Computad
ora

Los siguientes son algunos de los usos del sistema operativo:

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
Operativo

un

Sistema

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:

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.

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 de 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)
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 o contribuir a alguna parte de el.
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 actual, 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 presenta en la figura 1.2

Figura 1.2: Tux la mascota de Linux


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,
instalar y aplicaciones de alto nivel.

paquetes

fciles

de

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
Tarjeta Madre (MotherBoard)
Sistemas de bus PCI, EISA, VESA y
Memoria
64
MB(mnimo),
256
MB
recomendados
Monitor y Adaptador de Video
CGA, EGA, VGA, IBM monochrome,
Sper
Dispositivos de Puntero
Ratn
serial
estndar
como
Logitech, serie
MM Microsoft 2 botones Sistemas
Controlador de Disco Duro
IDE, EIDE, MFM \, RLL y la mayora
de los
Espacio de Disco Duro
Requiere un mnimo de 100 MB de
espacio
para una instalacin mnima de
Linux.
Para
una
instalacin
l t estndar
t d de l archivoi iISO
Unidades de CD-ROM
Sistema
Unidades de Cinta
Impresoras
Modems
Tarjetas Ethernet

9660 para
SCSI
Impresoras paralelas
Modems seriales internos y externos
Soporta
tarjetas
Ethernet
y
adaptadores
Tabla: Requerimientos de Hardware de Linux

Distribuciones de 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. 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

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 1.3

Kernel

Shell

Programas de

Figura 1.3: 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
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
Aplicaciones

En el sistema Linux existe un cierto nmero de herramientas disponibles.


Las herramientas 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. Vea la figura 1.4

Sistema de
Archivos 2

Siste
ma
de
Archi
vos 1

Siste
ma de
Archi
vos 3

Siste
ma de
Archi
vos 4

Figura 1.4 El 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
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. La figura 1.5 ilustra la vista a nivel de bloques de disco de
unidad de sistema de archivos. Los sistemas Linux tpicamente usan ms
de una unidad de sistema de archivos.
1024 bytes
Bloque

Superbloque

Bloques Inodos

d
e Arranque

Bloques
d
e Datos
Bloques
d
e Datos
Bloques
d
e Datos

Sistema de Archivos
Figura 1.5: Unidad Tpica de Sistema de Archivos
Ahora se va a entender la necesidad y uso de cada bloque en el sistema
de archivos.

Bloque de Arranque

Consiste de un bloq 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.

Superbloq
ue
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
Datos

de

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.

Particin
Disco

de

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.
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 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 de su uso. El comando man ser
discutido en detalle en la unidad 2: El Sistema Linux.

man
clea
r
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 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.
Linux es un sistema de libre distribucin por lo que
podeis 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.
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, o comprando los
CDs de las mismas, 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).
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 deberiais poder
encontrar en tiendas de informtica libreras. En el peor de los casos
siempre podeis 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 teneis 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.

Si vais a instalar el sistema por primera vez, os recomendamos que


probeis una distribucion LiveCD. Con una de ellas podreis probar Linux
sin necesidad de instalarlo.
A continuacin podeis 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/

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/

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/

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 subjerarquas 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...)

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:


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 "/":

Fig.4 Directorios de centOS Directorio /bin:


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.
Fig.5 Contenido del directorio /etc

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 /net
No se usa.

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 /selinux
Selinux es un mdulo de seguridad aadido que ofrece linux. Lo vers
ms detenidamente en el tema de seguridad.
Este directorio contiene informacin de configuracin del mdulo
selinux.

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:
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
intercambio
(Swap)

de Si se tiene menos de 1 GiB de RAM, se


debe asignar el doble del tamao del
RAM fsico; si se tiene ms de 1 GiB
RAM, se debe asignar una cantidad igual al

tamao del RAM fsico, ms 2 GiB. sta


ser siempre la ltima particin del
espacio disponible para almacenamiento y
jams se le asigna punto de montaje.
Lo 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, Fedora, Red Hat Enterprise


Linux, openSUSE y SUSE Linux Enterprise, 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 ejemplo, el sistema
cuenta con un grabador de DVD, ser

Particin

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

Particin
/var/www
/srv/www

Funcin
o Dependiendo
del
sistema
operativo
utilizado, el directorio raz del 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.

INSTALACION
CENTOS
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 .
REQUISITOS DE HARDWARE
Intel
Pentium
I/II/III/IV/Celeron/Xeon,
AMD
K6/II/III,
AMD
Duron,
Athlon/XP/MP, (Pendiente Itanium,
Athlon 64, PowerPC)

128
MB

512
MB

1.2
GB

2
GB

INTRODUCCION
Bienvenidos a la versin 6.5 de CentOS, una Distribucin Linux de Rango
Empresarial obtenida a partir de los fuentes puestos a libre disposicin
del pblico por nuestro Proveedor de OS (Upstream OS Provider , UOP).
CentOS se adapta completamente a la poltica de redistribucin de
nuestro proveedor y aspira a ser 100% compatible con sus binarios
(CentOS principalmente modifica los paquetes para eliminar la marca y
el diseo grfico original).
Hemos decidido no imitar la utilizacin que hace el UOP de los Cdigos
de Instalacin. Todos los canales estn a disposicin del administrador
del sistema en el momento de la instalacin.
Siguiendo la prctica del proveedor original de los fuentes, no hay
soporte para actualizar la instalacin desde una versin principal
anterior de CentOS (en estos momentos CentOS 5 o CentOS 4) a una
versin posterior. Esto no es una limitacin impuesta por CentOS, sino
que refleja la postura del proveedor en esta cuestin. Quienes se sientan
aventureros y quieran experimentar, que no olviden hacer y comprobar
previamente una copia de respaldo. Como aviso para aquellos que
intenten la actualizacin a pesar de esta advertencia, por ejemplo
mediante la no soportada opcin upgreadeany utilizando la lnea de
comandos del medio de instalacin, por favor, tengan en cuenta que
necesitarn recuperar manualmente el paquete centos-release actual,
hacer manualmente un rpm -e nodeps para eliminar el paquete centosrelease anterior, y entonces instalar manualmente el paquete centosrelease de CentOS 6, pues de lo contrario yum no tendra ninguna
posibilidad de funcionar correctamente.
PROCEDIMIENTO

-Al hacer boot se nos dan 2 opciones para instalar, la primera el sistema
detectara la tarjeta de vdeo y entrara en modo grfico (lo cual a veces
falla) por lo tanto recomiendo elegir la segunda opcin; la cual carga un
driver bsico de vdeo que dira que todos los equipos reconocen sin
problemas. PresionamosEnter

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


lo hicimos o estamos seguros, damos Enter en Skip

Entorno grafico:

1. Vamos a iniciar la instalacin del sistema operativo, damos


clic en next

2. Seleccionamos el idioma

2. Seleccionamos la distribucin del teclado

4. Damos en la opcin Basic que aparece por defecto

5. Damos en la opcin no conservar datos, puesto que tenemos


un espacio ya designado en el disco para la instalacin

6. Le asignamos el nombre a nuestro servidor (Dominio)

7. Verificamos que el DHCP este marcada la casilla conectar


automtico

8. Seleccionamos el rea o regin para los usos horarios

9. Asignamos una contrasea para nuestro administrador root

Usar todo el espacio eliminar cualquier particin de


cualquier otro sistema operativo presente y crear de forma
automtica las particiones necesarias.
Reemplazar
sistema(s)
Linux
existente(s)
slo
eliminar todas las particiones Linux existentes y crear de
forma automtica las particiones necesarias.

Achicar el sistema actual cambiar el tamao de las


particiones existentes de otros sistemas operativos como
Windows, haciendo el espacio necesario para poder instalar un
diseo predeterminado de particiones Linux.
Usar espacio libre crear de forma automtica las
particiones necesarias en el espacio disponible, basndose
sobre un diseo predeterminado.
Crear un diseo personalizado permitir elegir las
particiones estndar o volmenes lgicos, que uno requiera.

10. Seleccionamos crear un diseo personalizado,


para
asignarle los porcentajes a las carpetas del sistema
manualmente

11. En esta imagen muestra que tenemos 50 GB de espacio


disponible, lo distribuiremos de la siguiente forma: el 50% lo
dividimos para las carpetas (/) y (home). Y el 50% restante lo
dividimos en 6 para las dems carpetas, EJEMPLO

Seleccionamos crear particin estndar y le asignamos el


porcentaje

Le damos en formatear

Siguiente
12. Elegimos la opcin que necesitemos, en este caso servidor
bsico y seleccionamos la opcin personalizar ahora para
seleccionar los paquetes a instalar

Esperamos que carguen los archivos dela instalacin

Reiniciamos
Felicidades Tu
satisfactoria.

Servidor

ha

sido

instalado

de

manera

Hay que recordar la importancia de tener en cuenta


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

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 opciones como centrado 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
Ej
lo cual editar el archivo prueba. Deberas ver algo como esto:
~
~
~
~
~
~
"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

M od o de entrad a d e tex to (a adi r, in sertar)

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
B orrando y camb ian do tex to

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.
Desh aci end o cam b io s

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.
Guardan do camb io s y perm anecien do 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

A ba nd on and o 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
C om and os a dic ion ales para po sicio n am iento d el c urso r

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 va 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
B sq ued a

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 ?
B orr ar 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)).
Qu itar y po ne r

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
R esum e n y algo m s

El presente editor consta de diferentes comandos, los cuales se dan a

conocer en el siguiente resumen:


vi [archivo].

M ov imien to s b sico s:

h => 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.
C on trol de desp liegu e:

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.

C om and os p ara agrega r tex to s:

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.
C om and os p ara elim in ar y camb iar tex to:

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.
C om and os 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.
C om and os d e b sq ueda:

/ => Bsqueda hacia adelante.


? => bsqueda hacia
atrs. n => Siguiente
ocurrencia.
N
=>
Posterior ocurrencia.
:set nu => mostrar nmeros de lnea
C om and os d e edic i n av anz ada:

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.
C om and os d e co ntro l:

: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
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
~
~
~
~
~
~
-INSERTUna 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 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
~
~
~
~
-INSERTEscriba 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
~
-INSERTAhora 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


~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
~
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
~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

Preciones: 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
~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 mas
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.

Localizacion

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

Plymouth:

Plymouth es un programa de arranque de sistema en modo grfico que


despliega una animacin mientras la computadora se inicia.
Plymouth ha sido desarrollado como reemplazo de RHGB (Red Hat
Graphical Boot) y escrito como un nuevo programa con el fin de lograr
que "La experiencia de arranque sea sin parpadeos, sutil y brillante".
Plymouth se ejecuta muy pronto en el proceso de arranque (incluso
antes de que el sistema de archivos raz est montado) Luego muestra
una animacin mientras el proceso de arranque de sistema sucede en el
fondo, antes y despus de que Xcomienza hasta la ejecucin de la
entrada de usuario. La idea es que Plymouth est configurado de forma
nativa para el arranque utilizado por el sistema operativo. El objetivo
final es deshacerse de todos los parpadeos durante el inicio.
Para deshabilitar el Plymouth en Centos y poder mostrar los mensajes de
lo que se carga y los servicion en el sistema hay que desabilitarlo en el
archivo que esta en la siguiente ruta:
vi /boot/grub/menu.lst
y se desabilita simplemente eliminando rhgb y el espacio sobrante
del archive que se esta editando en la linea:
latin1 crashkernel=auto rhgb quiet
se guarda el archive con :wq y listo.

Zona Horaria
Reloj del hardware y reloj del sistema
Un ordenador tiene dos relojes que deben tenerse en cuenta: el reloj del
hardware/ordenador y el reloj del sistema/software.
El reloj del hardware (tambin conocido como el Reloj en Tiempo
Real (RTC) o reloj CMOS) guarda los valores de: ao, mes, da, hora,
minuto y segundos. No tiene la capacidad de guardar el horario estndar
(localtime o UTC), ni si DST (horario de verano) se utiliza.
El reloj del sistema (tambin conocido como reloj del software)
realiza un seguimiento de: Hora, Zona horaria y DTS (el horario de
verano, si procede). Ello es calculado por el kernel de Linux por el
nmero de segundos transcurridos desde la medianoche del 1 de enero
1970, UTC. El valor inicial del reloj del sistema se establece a partir del

reloj del hardware, en funcin de lo establecido en el


archivo /etc/adjtime. Una vez completado el arranque, el reloj del
sistema se configura independientemente del reloj del hardware. El
kernel de Linux sigue los ajustes del reloj del sistema para integrar las
interrupciones del temporizador.
Para realizar la correccion del la zona horarioa hay que verificar y/o
editar en caso de que sea necesario el archivo que esta en la siguiente
ruta:

vi /etc/sysconfig/clock
Asumiendo que nos encontramos en la ciudad de Mxico tendramos que
verificar o cambiar segn sea el caso por
ZONE="America/Mexico_City"
Y realizaremos un remplazo de un archivo con el siguiente comando:
cp /usr/share/zoneinfo/America/Mexico_City /etc/localtime
Para poder garantizar que la hora tanto local como on line estn
sincronizados tambin instalaremos el archivo ntp
yum -y install ntp
Con este mtodo garantizaramos la sincronizacin de la hora tanto de
manera local con en lnea, siempre y cuando exista una conexin a
internet.
La manera de ver la hora seria pulsando el comando.
# date o date s

Control Alt Supr


En el principio cre Dios los cielos y la Tierra. Y la tierra estaba
desordenada vaca, y las tinieblas estaban sobre la faz del abismo y
como Dios vio que esto era malo dijo: Sea CTRL+ALT+SUPR una
secuencia de teclas que me permita salirme de un programa que ha

dejado de ser ejecutado, o para reiniciar el Universo! As fue pues, como


Dios, reinicio el universo y le cre de nuevo a la galaxia, y por
consiguiente nuestro planeta, que despus de todo, le salio bien bonito.
100 millones de aos despus, el famoso evangelista y experto en
electrnica: Bill Gates, decidi crear un sistema operativo para
computadores personales, de manera que pudiese llevar esta
herramienta a todos los hogares del planeta y cristianizar a todo el
mundo. Sin embargo, el sistema operativo de Gates tenia muchos fallos,
los cuales obligaban al usuario a desconectar a la mquina de la toma de
corriente, nada pareca solventar los problemas del software y todo
pareca perdido para Bill, pero mientras lea la Biblia se percato de la
solucin, y el resto es historia.
Desactivar esta conbinacion de teclas:
Hay que editar el siguiente archivo
vi /etc/init/control-alt-delete.conf
y lo nico que hay que hacer es comentar con un #, la lnea:
exec /sbin/shutdown -r now "Control-Alt-Delete pressed"
y automaticamente quedara desabilitada dicha funcin.

Planificadores de entrada / salida.


Planificacin de E/S (entrada/salida) es el trmino utilizado para
describir el mtodo mediante el cual los sistemas operativos deciden una
cosa el orden por el cual se van a enviar las peticiones de lectura y
escritura
al
subsistema
de disco.
A
veces
se
le
llama
tambin planificacin de disco.
Existen varias razones por las que puede ser deseable aplicar mtodos de
planificacin de E/S:

Minimizar el tiempo de bsqueda (seek time) en el disco.


Dar prioridad a las peticiones de E/S de ciertos procesos.
Dar una porcin del ancho de banda de lectura del disco a cada
proceso.

Garantizar que ciertas peticiones se atendern antes de un tiempo


determinado: la conocida como deadline (lnea de la muerte en
ingls).

Los planificadores de E/S normalmente tienen que trabajar con discos


que comparten la propiedad de tardar bastante tiempo en acceder a una
posicin que est muy alejada de la posicin actual del cabezal (lo que se
conoce como un tiempo de bsqueda o seek time elevado). Para minizar
el efecto que esto tiene sobre el rendimiento del sistema de E/S, muchos
planificadores implementan variantes del algoritmo del ascensor, que lo
que hace es reordenar las peticiones aleatorias siguiendo el orden en
que el cabezal se ir encontrando las posiciones demandadas.
Planificadores de I/O disponibles en linux

Completely Fair Queuing (cfq): CFQ es la predeterminada en muchas


distribuciones de Linux. CFQ coloca solicitudes sincrnicas
presentados por los procesos en un nmero de colas por proceso y
luego asigna intervalos de tiempo para cada una de las colas para
acceder al disco. La longitud de la porcin de tiempo y el nmero de
peticiones de una cola se le permite presentar depende de la
prioridad de E/S del proceso dado. Peticiones asncronas para todos
los procesos se procesan por lotes juntos en un menor nmero de
colas, una para cada mbito prioritario.
NOOP (noop): NOOP es el programador ms sencilla de E/S para el
kernel de Linux basada en el concepto de cola FIFO. Las inserciones
NOOP planificador todas las solicitudes de E/S en una cola FIFO
simple y solicitud implementos fusin. El planificador asume E /
optimizacin del rendimiento E se tratar en otra capa de la jerarqua
de E/S.
Anticipatory (anticipatory): Es un algoritmo para programar el disco
duro E/S. Su objetivo es aumentar la eficiencia de la utilizacin del
disco de Previsin operaciones de lectura sincrnica.
Deadline (deadline): El objetivo de Deadline es garantizar un tiempo
de servicio de inicio de la peticin. Para ello, se establece un plazo de
todas las operaciones de E/S para evitar colisin de las solicitudes.

Diferencia entre estos:


CFQ: Configuracion que esta definida por default y recomendada si
desconoce el uso de los planificadores.

ANTICIPATORY: Planificador diseado para servidores HTTP o


sistemas con hw SCSI-1 o IDE/serial ATA, diseada para equipos antiguos
la cual presta rendimiento superior al minimo.
DEADLINE: Su funcionamiento es basado al funcionamiento en tiempo
real, funciona a la par de la escritura y distribucion del ancho de banda
con respecto al dispositivo, recomendado para servers con dispositivos
de tipo PATA, SATA, SCSI-2.
NOOP: El mas comn de todos, su funcionamiento esta basado en un
algoritmo FIFO, recomendado para servidores con unidades de tipo
flash, NAND, SDRAM, unidades controladas por tarjetas inteligentes
como RAID y sistemas basados en MV.
La manera de ver que planificador tenemos en funcionamiento es
realizando el siguiente mandato:
# cat /sys/block/sdc/queue/scheduler
noop anticipatory deadline [cfq]
# cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
para realizar la modificacin de este se debe editar el archivo men.lst
que se encuentra en la ruta
vi /boot/grub/men.lst
y
hay
que
agregar
el
cdigo
elevator=cfq/anticipatory/noop/deadline segn sea el caso en el
cdigo:
kernel /vmlinuz-2.6.32-279.el6.i686 ro root=UUID=09c6dc39-a62b409e-83065344640cd104 rd_LVM_LV=Swap/LogVol00 rd_NO_LUKS rd_NO_MD rd_
NO_DM LANG=es_MX.UTF-8 SYSFONT=latarcyrhebsun16 KEYBOARDTYPE=pc KEYTABLE=lalatin1 crashkernel=auto rhgb quiet elevator=noop
initrd /initramfs-2.6.32-279.el6.i686.img

Una vez realizado el cambio reiniciar para guardar los cambios de


manera definitiva.

Uso de disco de rescate en CentOS 6.5


Esta tarea es el equivalente a tener algun problema con el arranque del
sistema o con el server en comun, por lo cual recurriremos a meter el
DVD en la disquetera y bootear desde esta para realizar las tareas de
reparacion o de mantenimiento segun sea el caso
Una vez que booteemos con el DVD nos aparecera la misma interfaz de
inicio cuano realizamos la instalacion la primera vez.

Aqui cambiaremos el IDE secundario maestro y pondermos la imagen

Una vez seleccionado se aceptan los cambios y se inicia la instalacin

En esta hay que mover el cursor con las flechas para detener el contador
automatic que corre con un total de 60 segundos, antes de que se realize
la seleccion de manera automatica.

Ahora seleccionaremos la opcion numero 3, que indica Rescue installed


System, con lo cual accesaremos a las opciones de rescate de sistema.

Una vez que se realice la deteccion de la media realizara una carga y nos
pedira el idioma con el cual trabajaremos, seleccionaremos espaol.

A continuacion elegiremos el idioma del teclado, el cual es importante


para manipulacion de la consola con la que trabajaremos.

A continuacin nos pide que alijamos si vamos a necesitar la


configuracion de la tarjeta de red.

Automaticamente nos detectara la tarjeta o tarjetas de red conectadas al


servidor.

De ser necesarias se realizan las configuracion con las direcciones


necesarias para lograr las conexiones y poder realizar los respaldos.

Una vez realizada la configuracion nos desplegara las siguientes


opciones que nos indican lo siguiente.

CONTINUAR >> El entorno de rescate intentar encontrar una


instalacin de GNU/Linux en el disco duro e intentar montar todas
las particiones en el rbol que corresponde, debajo del directorio
/mnt/sysimage. De este modo se podr acceder en modo lectura y
escritura al sistema de archivos y as poder realizar los cambios o
modificaciones que requiera.
MODO LECTURA >> Similar a la opcin anterior, pero todo el
sistema de archivos se montar en modo de slo lectura.
OMITIR >> Se omitir el montado del sistema de archivos del disco
duro. Esta opcin es idnea para realizar reparaciones del sistema de
archivos de las particiones, utilizando fsck o bien para realizar
operaciones que requieren que las particiones estn sin montar.
AVANZADO >> Permitir hacer uso de dispositivos especiales de
almacenamiento, como Redes de rea de Almacenamiento (SAN), es
decir FCoE, iSCSI y zFCP.
De este modo seleccionaremos continuar lo cual realizara una deteccion
de los dispositivos, y se realizara el montaje de los directories en el fhs
de /mnt/sysimage

Y seleccionaremos continuar:

Una vez realizada esta tarea nos enviara a una nueva interfaz con 3
opciones distintas:

SHELL
START SHELL >> Iniciar el intrprete de mandatos,
desde el cual podr trabajar de modo similar al nivel de ejecucin
1 (mono usuario) y tendr acceso a un conjunto bsico de
herramientas de diagnstico y reparacin.
FAKD RUN DIAGNOSTIC >> Ejecutar FirstAidKit, una
herramienta que realiza verificacin y reparacin, automtica de
algunos problemas comnes.
REBOOT REBOOT >>. Reiniciar el sistema.

Seleccionaremos la opcion de Start Shell

Esto nos dejara en la consola de administracion con permisos de Root


La opcin de Fakd realizara una tarea de diagnostic y reparacion si es
necesaria.
Con la opcin reboot se realizara un reincio de sistema.
Una vez realizadas last areas realizaremos el apagado de la maquina y
reconfiguraremos el disco a su estado normal para reiniciar.

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:

En este punto seleccionaremos la letra p para poder introducer el


password del grub que se ingreso en la instalacion inicial:

Se pone el password:

A continuacion presionaremos la tecla e para realizar la edicion del


commando de booteo:

Seleccionamos la linea que es distinta del kernel de inicio:

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:

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.

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:
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).
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.
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:
Convertir las direcciones lgicas emitidas por los procesos en

direcciones fsicas.
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.
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 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:
Si se tiene menos de 1Gb de memria ram, se asigna el doble de la
cantidad de memoria.
Si se tienen mas de 1Gb de memoria ram, se asigna la cantidad de
memoria ram mas 2.

Unidad 2 Administracion del Sistema de Archivos.


Ext3

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.
Crecimiento en lnea.

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
bloque

del Tamao mximo


los archivos

de Tamao
mximo
sistema de ficheros

1 KiB

16 GiB

2 TiB

2 KiB

256 GiB

8 TiB

4 KiB

2 TiB

16 TiB

del

8 KiBlmites 1

2 TiB

32 TiB

Niveles del journaling


Hay tres niveles posibles de journaling (registro por diario)
Diario (riesgo bajo)
Los metadatos y los ficheros de contenido son copiados al diario
antes de ser llevados al sistema de archivos principal. Como el
diario est en el disco continuamente puede mejorar el
rendimiento en ciertas ocasiones. En otras ocasiones el
rendimiento es peor porque los datos deben ser escritos dos veces,
una al diario y otra a la parte principal del sistema de archivos.
Pedido (riesgo medio)
Solo los metadatos son registrados en el diario, los contenidos no,
pero est asegurado que el contenido del archivo es escrito en el
disco antes de que el metadato asociado se marque como
transcrito en el diario. Es el sistema por defecto en la mayora de
las distribuciones de Linux. Si hay un bajn de tensin o kernel
Panic cuando el fichero se est escribiendo o est empezando, el
diario indicar que el nuevo archivo o el intento no ha sido
pasado, por lo que ser purgado por el proceso de limpiado.
Reescritura (riesgo alto)
Solo los metadatos son registrados en el diario, el contenido de los
archivos no. Los contenidos pueden estar escritos antes o despus
de que el diario se actualice. Como resultado, los archivos
modificados correctamente antes de una ruptura pueden volverse
corruptos. Por ejemplo, un archivo pendiente de ser marcado en el
diario como mayor de lo que actualmente es, convirtiendo en
basura al final de la comprobacin. Las versiones antiguas de los
archivos pueden aparecer inesperadamente despus de una
recuperacin de diario. La carencia de sincronizacin entre los
datos y el diario es rpidamente subsanada en muchos casos. JFS
usa este nivel de journaling, pero se asegura de que cualquier
basura es borrada al reiniciar

Desventajas
Como ext3 est hecho para ser compatible con ext2, la mayora de las
estructuras del archivacin son similares a las del ext2. Por ello, ext3
carece de muchas caractersticas de los diseos ms recientes como las
extensiones, la localizacin dinmica de los inodos, y la sublocalizacin
de los bloques. Hay un lmite de 31998 subdirectorios por cada
directorio, que se derivan de su lmite de 32000 links por inodo. Ext3,
como la mayora de los sistemas de archivos actuales de Linux, no puede
ser chequeado por el fsck mientras el sistema de archivos est montado
para la escritura. Si se intenta chequear un sistema de ficheros que est
montado puede detectar falsos errores donde los datos no han sido
volcados al disco todava, y corromper el sistema de archivos al intentar
arreglar esos errores.
Ext4
ext4 (fourth extended filesystem o 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.

Mejoras
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
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 Allocateon-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 e2fscksaltrselos
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.
Uso de e2fsck
Permite escanear el sistema de archivos de particiones ext2/ext3/ext4
verificando que no existan errores. Es muy importante aplicar el
comando e2fsck slo a particiones que no estn montadas. Adems,
antes de comenzar, es necesario que tengas claro cules son tus
particiones, para ello puedes ejecutar el comando fdisk de la siguiente
forma: fdisk -l o ejecuta el comando cfdisk sin parmetros.
De igual manera puede ver las particiones dando df y especificar la
paricin a demontar y realizar el ejercicio:
Ejemplo
e2fsck
-pc
/dev/sda1 comprueba
el
sistema
de
ficheros /dev/sda1 revisando los sectores defectuosos (-c esta
opcin usa la herramienta badblocks, en caso de usar dos veces esta
opcin el escaneo de sectores daados se har usando un test no
destructivo de lectura/escritura.) permitiendo que la lista de sectores

daados pueda actualizarse y se repararn automticamente todos los


problemas que sea seguro arreglar (-p).
e2fsck -E fragcheck /dev/sda3 se imprimir en pantalla un reporte
de aquellos archivos que presenten bloques discontinuos en el
sistema de archivos /dev/sda3
e2fsck f D /dev/sda1 la D realiza la optimizacion de los directories,
y la f realiza la tarea de manera forzada para la verificacion de las
particiones.
badblocks
Este programa lo nico que hace es comprobar los sectores y mostrar los
que son defectuosos, por lo que es preferible que se emplee integrado
con un programa encargado de comprobar la coherencia del sistema de
ficheros si lo que se quiere es "repararlo". Si lo nico que se buscas es
ver el estado de la superficie del disco, sin importarte la informacin que
contenga, por ejemplo para saber si debes o no tirar el disco se puede
ejecutar:
badblocks
-ns
/dev/sda comprueba
los
dispositivo /dev/sda en modo solo lectura (-n)

sectores

del

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
memria 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 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
01

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 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
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
12

Fsck

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-specificoptions]
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-92d7cdb694a42122, LABEL=home). Si no se especifica, por
defecto se analizaran los definidos en el fichero /etc/fstab
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
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 mas bsica para el uso del comando dd, seria esta:
Sudo dd if=origen of=destino
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] [
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 ) :
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:
$ 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.
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
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
of=~/home/imagen_disco_con_errores-iso

if=/dev/hda

|pv|dd

= Crear un archivo vaco de 1 Mb:


$ sudo dd
count=1024

if=/dev/zero

|pv|dd

of=archivo_nuevo_vacio

bs=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:
# dd if=/dev/urandom of=/dev/sda

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 obsoleto 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.
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 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 especifico 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
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.424release.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 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
(opcionrecomendada):
# rpm -Uvh paquete.rpm
Para confirmar si esta instalado o no:

el

caso

ver

el

progreso

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

Uso de YUM.
Yellow
dog
Updater,
Modified (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 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.
Ejercicio:
# yum list available | more > Lista todo los paquetes
onibles
# 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:
# 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(cupspdf)
# 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
paquete(cups)

nombre-paquete

>

Actualiza

un

solo

# 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:
# 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
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
De esta manera estaremos automatizando las actualizaciones del sistema,
mandando un registro de actualizaciones.
Gestion 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.
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.
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
Con 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
configuracin

ejecutando
de

el programa init.
init
es

El

archivo de
/etc/inittab.

La entrada initdefault determina el nivel de ejecucin inicial del sistema.

1) Edita el fichero /etc/inittab, localiza la entrada initdefault, y


determina en que nivel de ejecucin est trabajando el sistema.
2) Tambin puedes obtener el nivel de ejecucin actual ejecutando la

instruccin runlevel.

2) 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:

o
o
o
o
o
o
o
o
o
o
o
o
o
o

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
HOSTNAME,...
Arranca la swap
Arranca fsck automtico, si hace falta.
Activa quotas.
Chequea los argumentos pasados al kernel.
Chequea los filesystems
Inicializa los puertos serie.
Puertos USB.

entorno:PATH,

1) Lista los ficheros que se encuentran en el directorio /etc/rc.d


2) Comprueba que son enlaces simblicos a los scripts que se encuentran
en el directorio /etc/init.d
3) 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/rc n 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/rc n .d
o Para ( con el argumento stop ) aquellos procesos que comienzan
por K ( kill )
o Lanza ( con el argumento start ) los que comienzan por S ( start ).
o Despus de la letra S o K hay dos dgitos numricos que indican el
orden de ejecucin. El orden es ASCII.
o Todos los ficheros K o S son enlaces simblicos a los scrips de cada
servicio que estn en el directorio /etc/init.d
1) Visualiza los ficheros de los distintos directorios /etc/rc n .d.
2) Comprueba los ficheros de ejecucin del nivel de ejecucin que se
ejecuta
por
defecto
en
Debian.
3) 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.

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.

4) Qu hacer para eliminar un servicio en un determinado nivel?


o Borrar el vnculo simblico en /etc/rcn.d/
o Renombrarlo con algo que no empiece con S o K y dejarlo por si
queremos luego activarlo.
o 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.
5) Pregunta: Para qu podramos utilizar la configuracin de distintos
niveles de ejecucin?

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.

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

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

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 UNIXlike), 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
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

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

/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::
La informacin de cada usuario est dividida en 9 campos delimitados
cada uno por ':' dos puntos.
/etc/shadow
Campo
1
Campo
2
Campo
3
Campo
4
Campo
5

Nombre de la cuenta del usuario.


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

Campo
6
Campo
7
Campo
8
Campo
Reservado.
9

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

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

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

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

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:
#> 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.
passwd 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:
$> 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.
Resumen
usuarios

de

comandos

archivos

de

administracin

de

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 te presento 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
chage
chpasswd
id
gpasswd
groupadd
groupdel
groupmod
groups
newusers
pwconv
pwunconv
useradd
userdel
usermod

Ver useradd
Permite cambiar o establecer parmetros de las fechas de
control de la contrasea.
Actualiza o establece contraseas en modo batch,
mltiples usuarios a la vez. (se usa junto con newusers)
Muestra la identidad del usuario (UID) y los grupos a los
que pertence.
Administra las contraseas de grupos (/etc/group y
/etc/gshadow).
Aade grupos al sistema (/etc/group).
Elimina grupos del sistema.
Modifica grupos del sistema.
Muestra los grupos a los que pertence el usuario.
Actualiza o crea usuarios en modo batch, mltiples
usuarios a la vez. (se usa junto chpasswd)
Establece la proteccin shadow (/etc/shadow) al archivo
/etc/passwd.
Elimina la proteccin shadow (/etc/shadow) al archivo
/etc/passwd.
Aade usuarios al sistema (/etc/passwd).
Elimina usuarios del sistema.
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.
Variables que controlan los aspectos de la creacin de
/etc/login.defs
usuarios.
/etc/passwd
Usuarios del sistema.
Contraseas encriptadas y control de fechas de usuarios
/etc/shadow
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 nuevonombre] 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
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
colaboracin de Chris Jepeway y Aaron Spangler.

Miller

con

la

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.

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

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.

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

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


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 = OPERACION
Una regala formada solo por alias. En el alias de usuario
'SUPERVISORES' los usuarios que esten indicados 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. 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,

NOEXEC Y EXEC
Este es un tag muy importante a considerar cuando sobre se otorgan
permisos sobre programas que permiten escapes a shell (shell escape),
como en el editor 'vi' que mediante el uso de '!' es posible ejecutar un
comando en el shell sin salir de 'vi'. Con el tag NOEXEC se logra que esto
no suceda, aunque no hay que tomarlo como un hecho, ya que siempre
existe la posibilidad de vulnerabilidades no conocidas en los mltiples
programas que utilizan escapes a shell. Al igual que los tags anteriores,
el tag se hereda y se deshabilita con su tag contrario (EXEC), en caso de
que en la lista de comandos hubiera varios comandos.
valeria ALL = NOEXEC: /usr/bin/vi

ARCHIVO /ETC/SUDOERS DE EJEMPLO


Para concluir este manual, veamos un pequeo ejemplo de un archivo
/etc/sudoers:
# ***********************
# LinuxTotal.com.mx, ejemplo de un archivo sudoers
# sergio.gonzalez.duran@gmail.com
# ***********************
# ***********************
# DEFINCION DE ALIAS
# ***********************
# administradores con todos los privilegios
User_Alias ADMINS = sergio, ana
# administradores de red - network operators
User_Alias NETOPS = marcela, andrea
# webmasters User_Alias WEBMAS = cristina, juan
# supervisores de produccin (todos los del grupo de sistema
supervisores)
User_Alias SUPPRO = samuel, %supervisores
# usuarios que pueden conectarse desde Internet
User_Alias INETUS = NETOPS, ADMINS, samuel
# servidores web
Host_Alias WEBSERVERS = 10.0.1.100, 10.0.1.101
# servidores de aplicaciones
Host_Alias APLICACIONES
mailserver

WEBSERVERS,

10.0.1.102,

10.0.1.103,

# comandos de red permitidos


Cmnd_Alias REDCMDS = /sbin/ifconfig, /sbin/iptables
# comandos de apache
Cmnd_Alias APACHECMDS = /usr/sbin/apachectl, /sbin/service httpd *

# ***********************
# DEFINCION DE OPCIONES
# ***********************
# Los usuarios administradores,
contrasea de 'root'
Defaults>ADMINS rootpw

requieren

autentificarse

con

la

# Para todos los usuarios, tienen hasta dos intentos para ingresar su
contrasea y 3 minuto para que esta expire
Defaults passwd_tries = 4, passwd_timeout = 1
# Los usuarios que se conectan desde Internet, solo tienen una
oportunidad y cero timeout lo que implica
# que cada comando que usen a travs de sudo requerira siempre de
autentificacin.
Defaults:INETUS passwd_tries = 1, passwd_timeout = 0
# Mscara de directorios y archivos por default, para los que ejecuten
sudo en los servidores web
Defaults@WEBSERVERS umask = 022
# ***********************
# DEFINCION DE REGLAS
# ***********************
# administradores todo se les permite en cualquier equipo (cuidado
con esto en la vida real!!!!!
ADMINS ALL = (ALL) ALL
# administradores de red, en todos los equipos, los comandos de red
NETOPS ALL = REDCMDS
# webmasters, en los servidores web con los comandos indicados en
apachecmds y adems sin necesidad
# de contrasea acceder a las btacoras de apache y reiniciar los
servidores.
WEBMAS WEBSERVERS = APACHECMDS, NOPASSWD: /var/log/apache/,
/sbin/reboot
# supervisores, pueden ejecutar los comandos indicados en los equipos
indicados en el alias

# aplicaciones y adems son ejecutados bajo el usuario apps.


SUPPRO APLICACIONES = NOEXEC: (apps) /usr/local/facturacion.exe,
/usr/local/ventas.exe, /usr/local/nomina.exe
# no definidos por alias previos, sino directamente
# regina es de recursos humanos y puede cambiar contraseas de
cualquier usuario menos de root
regina ALL = /usr/bin/passwd *, !/usr/bin/passwd root
# david, puede apagar los equipos de aplicaciones
david APLICACIONES = /sbin/shutdown, /sbin/halt
# El equipo firewall de la red puede ser reiniciado (no apagado) por
fernanda que es asistente de redes
fernanda firewall = /sbin/shutdown -r now

Sudo
sudo (SUperuser DO) lo ejecuta un usuario normal, al que se supone
tiene permisos para ejecutar cierto comando. Entonces, sudo requiere
que los usuarios se autentifiquen a si mismos a travs de su contrasea
para permitirles la ejecucin del comando. Veamos un ejemplo:
$ sudo /sbin/ifconfig
Password:
eth0
Link encap:Ethernet HWaddr 4C:00:10:60:5F:21
inet addr:200.13.110.62 Bcast:200.13.110.255 Mask:255.255.255.0
inet6 addr: fe80::4e00:10ff:fe60:5f21/64 Scope:Link
...
Como se podr observar se usa el comando sudo seguido del comando
(con toda su ruta si es que este no esta en el PATH del usuario) al que se
tiene permiso. sudo pregunta por la contrasea del usuario que ejecuta
el comando y listo.
Por defecto, despus de hacer lo anterior tendrs 5 minutos para volver a
usar el mismo comando u otros a los que tuvieras derecho, sin necesidad
de ingresar la contrasea de nuevo. Si se quiere extender el tiempo por
otros 5 minutos usa la opcin sudo -v (validate). Por el contario, si ya

terminaste lo que tenas que hacer, puedes usar sudo -k (kill) para
terminar con el tiempo de gracia de validacin.
Ahora bien, Qu comandos son los que puedo utilizar?, pues la opcin l es la indicada para eso:
$ sudo -l
User sergio may run the following commands on this host:
(root) /sbin/ifconfig
(root) /sbin/lspci
En el caso anterior se ejecut un comando de root, pero no tiene que ser
asi, tambin es posible ejecutar comandos de otros usuarios del sistema
indicando la opcin -u:
$ sudo -u ana /comando/de/ana
Una de las opciones ms interesantes es la que permite editar archivos
de texto de root (claro, con el permiso otorgado en 'sudoers' como se
ver ms adelante), y esto se logra con la opcin -e, esta opcin esta
ligada a otro comando de sudo llamado sudoedit que invoca al editor por
defecto del usuario, que generalmente es 'vi'.
$ sudo -e /etc/inittab
(Permitira modificar el archivo indicado como si se fuera root)
Cuando se configura sudo se tienen mltiples opciones que se pueden
establecer, ests se consultan a travs de la opcin L
$> sudo -L
Available options in a sudoers ``Defaults'' line:
syslog: Syslog facility if syslog is being used for logging
syslog_goodpri: Syslog priority to use when user authenticates
successfully
syslog_badpri: Syslog priority to use when user authenticates
unsuccessfully
long_otp_prompt: Put OTP prompt on its own line
ignore_dot: Ignore '.' in $PATH
mail_always: Always send mail when sudo is run
mail_badpass: Send mail if user authentication fails
mail_no_user: Send mail if the user is not in sudoers
mail_no_host: Send mail if the user is not in sudoers for this host

mail_no_perms: Send mail if the user is not allowed to run a command


tty_tickets: Use a separate timestamp for each user/tty combo
lecture: Lecture user the first time they run sudo
lecture_file: File containing the sudo lecture
authenticate: Require users to authenticate by default
root_sudo: Root may run sudo
...
varias opciones ms
Bastante til, ya que nos muestra las opciones y una pequea
descripcin, ests opciones se establecen en el archivo de configuracin
'sudoers'.
Una de las opciones ms importantes de consulta es -V, que permite
listar las opciones (defaults) establecidas por defecto para sudo todos los
usuarios, comandos, equipos, etc. Ms adelante en este tutorial,
aprenderemos como establecer opciones especficas para ciertos
usuarios, comandos o equipos. NOTA: tienes que ser 'root' para usar esta
opcin.
# sudo -V
Sudo version 1.6.9p5
Sudoers path: /etc/sudoers
Authentication methods: 'pam'
Syslog facility if syslog is being used for logging: local2
Syslog priority to use when user authenticates successfully: notice
Syslog priority to use when user authenticates unsuccessfully: alert
Send mail if the user is not in sudoers
Lecture user the first time they run sudo
Require users to authenticate by default
Root may run sudo
Log the hostname in the (non-syslog) log file
Allow some information gathering to give useful error messages
Visudo will honor the EDITOR environment variable
Set the LOGNAME and USER environment variables
Reset the environment to a default set of variables
Length at which to wrap log file lines (0 for no wrap): 80
Authentication timestamp timeout: 5 minutes
Password prompt timeout: 5 minutes
Number of tries to enter a password: 3
Umask to use or 0777 to use user's: 022
Path to log file: /var/log/sudo.log

...
varias opciones ms listadas
La configuracin predeterminada en distribuciones basadas sobre
CentOS utiliza lo siguiente:
%wheel ALL = (ALL) ALL
Con lo anterior slo los usuarios miembros del grupo wheel podrn
hacer uso de sudo. Se recomienda cambiar esta configuracin para
hacerla un poco ms restrictiva, como se muestra en los ejemplos citados
algunos prrafos arriba.
Si se quiere permitir a un usuario ejecutar sudo lo lo que sea, desde
cualquier anfitrin, utilizando cualquier identidad de usuario del sistema
y sin necesidad de autenticar, se puede definir algo como lo siguiente:
usuario ALL = (ALL) NOPASSWD: ALL
Evite utilizar esta ltima configuracin salvo que sea estrictamente
necesario.
Uso de los Aliases
Bash (Bourne again shell) es un programa informtico cuya funcin
consiste en interpretar rdenes.
Est basado en la shell de Unix y es compatible con POSIX.
Fue escrito para el proyecto GNU y es el intrprete de comandos por
defecto en la mayora de las distribuciones de GNU con Linux. Su nombre
es unacrnimo de Bourne-Again Shell (otro shell bourne) haciendo un
juego de palabras (born-again significa renacimiento) sobre el Bourne
shell (sh), que fue uno de los primeros intrpretes importantes de Unix.
Hacia 1978 Bourne era el intrprete distribuido con la versin del
sistema operativo Unix Versin 7. Stephen Bourne, por entonces
investigador de losLaboratorios Bell, escribi la versin original de
Bourne. Brian Fox escribi Bash en 1987. En 1990, Chet Ramey se
convirti en su principal desarrollador. Bash es el intrprete
predeterminado en la mayora de sistemas GNU/Linux, adems de Mac
OS X Tiger, y puede ejecutarse en la mayora de los sistemas
operativos tipo Unix. Tambin se ha llevado aMicrosoft Windows por
el proyecto Cygwin.

Usar los bash aliases acelera tareas usando la terminal..ya que cmo
todos sabemos, la usamos bastante seguido para ahorrarnos
tiempo...bueno con lo siguiente vamos a poder ahorrar an mas tiempo
escribiendo
Ubicamos un archivo de texto comn y corriente llamado .bashrc, tiene
que
estar
en
nuestro
home
(ej:
/home/usuario/)
Luego lo abrimos con cualquier editor de texto y empezamos a crear
nuestros
alias....
Los alias pueden ser creados simplemente asignando un valor o nombre
a
otra
orden,
por
ejemplo:

alias instalar="sudo
apt-get
install"
alias remover="sudo
apt-get
remove"
alias actualizar="sudo apt-get update && sudo apt-get upgrade"
Guardamos los cambios, salimos del sistema, nos logueamos nuevamente
y listo.

Unidad 5.
Archivos

Permisos

Atributos

del

Sistema

de

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. Po
r
ello se hace necesario un sistema mucho ms directo.
A cada ficheros se le asocia un nmero para poder localizarlo
directamente. Dicho nmero se llama inodo. Los nmeros de inodos son
el ndice del sistema plano de ficheros, tambin llamado por ello tabla de
inodos Cada fichero de cada sistema de ficheros tiene un inodo distinto
salvo que se trate de un enlace rgido (hard link). Sin embargo hay inodo
s
que no se corresponden con ningn fichero.

Un fichero en sentido estricto indica capacidad de contener una secuenci


a
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 direct
a
a un fichero y a grandes rasgos tiene asociadas funciones que permiten
manejar y construir la estructura de rbol del sistema de ficheros.
Tipos de ficheros
Regular. Son meros almacenes de informacin. Algunos contiene
cdigo ejecutable.
Directorios Son una tabla con nmeros de inodos y nombres de
ficheros.

Ficheros especiales. Pueden ser dispositivo tipo carcter o


dispositivo de bloques. El manejo de estos ficheros depende del
dispositivo en particular.
Fifo son pipes con nombre. Son propios de System V y en BSD no
existen pero en Linux si estn disponibles.
Enlaces simblicos (symbolic links). Son ficheros que contiene un
puntero a otro fichero que podra perfectamente estar en un
sistema de ficheros distinto.

El Soket es un fichero especial de 4.3 BSD y se utiliza para


comunicar procesos que pueden estar en mquinas distintas.

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
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
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 a
ceptar

operaciones de apertura, cierre, lectura y escritura de forma similar. Por


ello se puede redirigir una entrada y una salida a diferentes tipos de
ficheros. Parte de la enorme 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 aunque sea realizado por 'root'. No tiene se
ntido
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 interna
mente
como el nmero de segundos transcurridos desde el '1 de Enero de 1970'
.
Una de ellas indica el tiempo del ltimo acceso realizado sob
re ese
fichero. La otra indica la fecha de creacin (en realidad es la fecha del
ltimo 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
ltima modificacin.

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


permisos o el propietario se modificarn las fechas de creacin y del
ltimo acceso. Por eso la fecha que hemos denominado de creacin pued
e
ser posterior 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 a
l
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

ver 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 qu
e
dichas operaciones se consideran como si fueran escrituras en el fichero
especial de tipo directorio. Un directorio es al fin y al cabo 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(1)

Permisos de ficheros
Usaremos el trmino fichero en su sentido ms amplio. Es decir que el
tema de permisos es 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 kkkkk
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 individua
l le

asocibamos un nmero de tres dgitos formado por dos ceros y un terce


r
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 pued
e
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)
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 porque
nos saldramos del tema 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 un
a
umask de 022 obtendremos un fichero 644.
664 110 110 100
022 000 010 010
----------------644 110 100 100

Valor
octal

Valor
simblico

Descripcin

rwx

Lectura, escritura y acceso a

Valor
octal

Valor
simblico

Descripcin
directorios

rw-

Lectura y escritura

r-x

Lectura y acceso a directorios

r--

Slo lectura

-wx

Escritura y acceso a directorios

-w-

Slo escritura

--x

Slo acceso a directorios

---

Nada

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


po 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 carec
er 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 ejecuci
n.
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 Existe
dos formas de usarlo. Una indicando el tipo de acceso y a qu
ien lo
queremos conceder o eliminar. Existen una serie de atributos q
ue 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. Co
mo de
costumbre el manual resulta imprescindible a la hora de recor
dar 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
$ ##################################
$ 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 .... .... ......
$ ##################################
$ 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:


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 alguno
s
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 others rwx son los adecuados.


NOTA el comando rm permite borrar cualquier fichero sea cual sean los
permisos cuando el proceso tiene un EUID coincidente con el propietario
del fichero. nicamente ocurre que si el fichero esta protegido contra
escritura suele pedir (dependiendo de la configuracin) confirma
cin
antes de borrarlo. El permiso para borrar un fichero no se guarda como
atributo del fichero. Esto se hace a nivel de directorio y pasa
mos a explicarlo inmediatamente.
Significado de los permisos en directorios
Para entender como funcionan los permisos aplicados a un directorio ha
y
que imaginar que un directorio es un fichero normal que solo contiene u
na
tabla en la que se relacionan los ficheros presentes en ese directorio. En
todos los directorios existen siempre un par de entradas obligadas que s
on
'.' y '..' para el directorio actual y para el directorio padre respectivament
e.
Vamos a explicarlo sobre la marcha a la vez que hacemos el ejercicio.
Recuerde usar un usuario normal (distinto de root) para realiz
ar 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 pa
ra 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
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 archive
$ 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
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
$ 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

Uso de las ACLs

Una vez que hemos compilado el kernel con soporte para ACLs y que
hemos compilado las herramientas necesarias para poder trabajar con
ellas (adems de parchear aquellas utilidades de gestin de ficheros y
sistemas de ficheros para que reconozcan las ACLs y las respeten y sepan
interpretarlas), podemos ya dedicarnos a la gestin de las propias ACLs
en si.
Para ello disponemos de dos utilidades principalmente:

getfacl: que nos permite consultar las ACLs de un fichero dado.


setfacl: que nos permite modificar las ACLs de un fichero dado.

Ambas utilidades se hayan perfectamente documentadas en sus


respectivas pginas del manual (setfacl(1) y getfacl(1)), y podemos
encontrar una pequea introduccin en la pgina del manual de acl(5),
vamos a ver aqu algunos ejemplos sencillos que ilustrarn el uso bsico
de estas utilidades.

Creacin de una ACL bsica.

Existen casos en los cuales el tradicional juego de pemisos UGO (User,


Group, Others) no es suficiente. Casos en los que desearamos que ms
de un usuario o ms de un grupo pudiese tener acceso a un fichero, pero
con permisos diferenciados. Con el modelo UGO esto no es posible,
puesto que slo tenemos sitio para los permisos de un nico Usuario o
un nico Grupo. Todo lo dems cae en el Other (el resto). Con las ACLs
esto es sencillo.
Vamos a presuponer que tenemos un directorio que contiene una serie
de ficheros y dos subdirectorios (a su vez con ficheros) como se indica en
la siguiente figura:
Tenemos asimismo los siguiente tipos de usuarios diferenciados:
1. Los usuarios del grupo de sistemas de informacin, que deben
tener acceso completo a todos los directorios y ficheros, para su
mantenimiento. Llamaremos a este grupo sistemas.
2. Los usuarios del grupo de desarrollo (llamaremos a este grupo
desarrollo), que deben tener acceso de lectura y escritura (y
ejecucin en su caso) en el primer subdirectorio y todos sus

ficheros y subdirectorios. En este directorio es donde se


desarrollan las nuevas versiones del software que usa el tercer
grupo.
Asi mismo debe tener acceso de lectura/escritura al segundo de los
subdirectorios para implantar las nuevas versiones estables del
software.
3. Los usuarios de explotacin. Este grupo debe tener acceso en modo
lectura (y eventualmente ejecucion) sobre los ficheros de la
aplicacion. Llamaremos a este grupo explotacion.
4. El resto de usuarios del sistema no deben tener ningn tipo de
acceso a ninguno de los ficheros o subdirectorios.
Con las condiciones anteriores es imposible usar el modelo de permisos
tradicional UGO, puesto que tenemos tres grupos de usuarios diferentes,
sin contar el resto de usuarios del sistema. Eso significa que con un slo
grupo de usuarios con permisos asignados por directorio o fichero no es
posible acomodar los permisos para los tres grupos.
Utilizando ACLs es fcil resolver el problema, puesto que podemos
asignar un juego de permisos diferente para cada grupo de usuarios.
Para ello debemos crear las ACLs necesarias para cada grupo de usuarios
y directorio o fichero.
1. Tenemos que dar permisos completos al grupo de sistemas sobre
todos los ficheros y directorios implicados. Para ello usamos
setfacl de la siguiente forma:

setfacl -b -k -R dir_raiz
setfacl -R -m g:sistemas:rw
Vayamos por partes con la sintaxis de setfacl:
o

En el primer caso usamos la opcion -b para borrar la ACL


que ya pudiera tener el directorio raz. Usamos tambin la
opcin -k para borrar la ACL por defecto que pudiera tener
el directorio raz (ms sobre esto despus), y por ltimo
usamos la opcin -R para aplicar los cambios de forma
recursiva a todo lo que cuelga del directorio raz. Con esto
conseguimos tener todo limpio y listo para empezar.

Tericamente la primere vez no hace falta limpiar la ACL


puesto que an no hemos asignado ninguna ACE, pero de
paso aprovechamos para mostrar como se hace :)
o

En el segundo caso indicamos de nuevo que queremos


aplicar de forma recursiva los cambios (opcin -R) pero esta
vez le decimos que queremos modificar (-m) la ACL del
objeto en cuestin. En este caso es necesario adems indicar
el valor de la ACE que deseamos aadir o modificar. setfacl
distingue entre asignar una ACL (opcin -s) en la cual se
eliminan las ACEs existentes y se aade la ACE especificada
en la orden, y modificar una ACL (opcin -m) en la cual
podemos modificar o aadir una ACE.
En este caso queremos aadir una nueva ACE. Para ello
debemos escribimos la ACE que nos interesa:

g:sistemas:rw
Todas las ACEs tienen tres componentes separadas por ':' (en
el caso de las operaciones de borrado de ACEs el tercer
componente es opcional). El primero de los componentes
indica si se trata de un ACE de usuario (valor u) o de grupo
(valor g). Incluso es posible asignar ACEs al grupo de
usuarios resto (other), pero esto no suele ser habitual, as
que omitiremos la sintaxis (se pueden encontrar ms detalles
en la pgina del manual de setfacl(1)).
El segundo de los componentes es el nombre de usuario o
grupo al que se le aplica la ACE. Se puede dar el nombre
simblico o el valor numrico del uid o gid correspondiente.
El tercer componente es el valor del permiso asociado a esta
ACE, y puede ser una combinacin cualquiera de las letras r,
w, x y -, o un valor numrico octal (como en chmod).
Por tanto, en nuestro caso tenemos que es una ACE de grupo
(g), que se aplica al grupo de sistemas y que le estamo dando
los permisos de lectura y escritura (rw).
2. A continuacion tenemos que dar permisos al grupo de desarrollo
tanto en el directorio subdir_1 y todo su contenido, como en el
directorio subdir_2 y todo su contenido. Sin embargo no tenemos

que dar acceso a los ficheros que cuelgan directamente de dir_raiz.


Para ello usamos setfacl con la sintaxis explicada en el punto
anterior:

setfacl -R -m g:desarrollo:rw dir_raiz/subdir_1


setfacl -R -m g:desarrollo:rw dir_raiz/subdir_2
3. Por ltimo tenemos que dar permisos al grupo de explotacin en el
directorio subdir_2 y todo su contenido:

setfacl -R -m g:explotacion:rx dir_raiz/subdir_2


Lo normal en este punto es comprobar cuales son los permisos reales
que tienen cada uno de los ficheros y directorios existentes, para ver si
efectivamente se ajustan a los requisitos planteados.
Para ello podemos usar getfacl para ver cuales son las ACL de cada uno
de los directorios o ficheros implicados. La sintaxis es sencilla:

getfacl fichero ...


Si lo usamos para ver el resultado de las rdenes anteriores tenemos:

# getfacl dir_raiz
# file: dir_raiz
# owner: root
# group: root
user::rwx
group::r-x
group:sistemas:rwmask::rwx
other::r-x
El listado de permisos que obtenemos al ejecutar getfacl se compone de
entradas de tipo user y group, adems de las entradas para mask y other.
En el caso de las entradas user y group, tendremos siempre una entrada
para el propietario del fichero y el grupo del fichero (son las lneas que
no indican un usuario o grupo concreto) y tantas lneas adicionales como

ACEs de ese tipo hayamos asginado al fichero o directorio. La entrada


other es la entrada del permiso tradicional other del modelo UGO.
La entrada mask es especial. Esa entrada, que se puede manipular con
setfacl permite especificar el mximo de permisos que se pueden asignar
en dicho fichero con las ACEs de usuario y grupo.
Veamos ahora las ACL del resto de ficheros y directorios:

# file: dir_raiz/fich_1
# owner: root
# group: root
user::rwgroup::r-group:sistemas:rwmask::rwother::r-# file: dir_raiz/fich_2
# owner: root
# group: root
user::rwgroup::r-group:sistemas:rwmask::rwother::r--

# file: dir_raiz/dir_1/fich_4
# owner: root
# group: root
user::rwgroup::r-group:sistemas:rwgroup:desarrollo:rwmask::rwother::r--

# getfacl dir_raiz/dir_2
# file: dir_raiz/dir_2
# owner: root
# group: root
user::rwx
group::r-x
group:sistemas:rwgroup:desarrollo:rw# getfacl dir_raiz/dir_1
group:explotacion:r-x
# file: dir_raiz/dir_1
mask::rwx
# owner: root
other::r-x
# group: root
user::rwx
# getfacl dir_raiz/dir_2/fich*
group::r-x
# file: dir_raiz/dir_2/fich_5
group:sistemas:rw# owner: root
group:desarrollo:rw# group: root
mask::rwx
user::rwother::r-x
group::r-group:sistemas:rw# getfacl dir_raiz/dir_1/fich*
group:desarrollo:rw# file: dir_raiz/dir_1/fich_3
group:explotacion:r-x
# owner: root
mask::rw# group: root
other::r--

user::rwgroup::r-group:sistemas:rwgroup:desarrollo:rwmask::rwother::r--

# file: dir_raiz/dir_2/fich_6
# owner: root
# group: root
user::rwgroup::r-group:sistemas:rwgroup:desarrollo:rwgroup:explotacion:r-x
mask::rwother::r--

ACLs por defecto

Todo lo anterior est muy bien, pero tiene un problema: los ficheros y
directorios nuevos que se creen no van a tener todas esas ACLs con los
valores adecuados, y por tanto tendremos que estar cada dos por tres
ajustando los valores de las ACLs con las rdenes anteriores.
Evidentemente eso no es operativo en absoluto. En nuestra ayuda llegan
las ACLs por defecto (en realidad habra que hablar de ACEs por defecto,
pero la documentacin habla de ACLs por defecto, as que
mantendremos la misma terminologa para no crear ms confusin).
Las ACLs por defecto nos permiten indicar cul es el juego de ACEs que
queremos que se apliquen automticamente a los nuevos ficheros y
directorios que se creen dentro de un directorio dado. Se dice en estos
casos que los permisos se heredan desde el directorio padre.
La sintaxis es idntica a la de una ACE normal, con la diferencia de que
debemos usar adems la opcin -d:

setfacl -d -m g:sistemas:rw dir_raiz


setfacl -d -m g:desarrollo:rw dir_raiz/dir_1
setfacl -d -m g:desarrollo:rw dir_raiz/dir_2
setfacl -d -m g:explotacion:rw dir_raiz/dir_2
Si usamos getfacl para ver la ACL del directorio raz por ejemplo,
tenemos lo siguiente:

# getfacl dir_raiz
# file: dir_raiz

# owner: root
# group: root
user::rwx
group::r-x
group:sistemas:rwmask::rwx
other::r-x
default:user::rwx
default:group:sistemas:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
Es decir, se aaden una serie de ACEs especiales, de tipo default que
contienen la informacin a utilizar para los nuevos ficheros y directorios
que se creen dentro de ste.

Ejercicio:
Para poder realizar el ejercicio y poder ver el tema funcionando es
necesario realizar la instalacin de las acl, para lo cual es necesario
ejecutar lo siguiente:
# yum -y install acl

Una vez habilitado el soporte para listas de control de acceso en los


sistemas de archivos se pueden utilizar lo siguiente:
Getfacl: Definido para determinar los permisos establecidos en
las listas de control de acceso de un archivo o directorio dado.
Setfacl: Definido para cambiar los permisos en las listas de
control de acceso de un archivo o directorio dado.
Siempre se podr realizar la consulta de ayuda y opciones ejecutando
cualquiera de los dos con man.

Para obtener una descripcin completa del formato de las listas de


control de acceso se puede realizar la misma consulta pero con el
comando acl.
Para realizar el ejercicio daremos de alta un usuario nuevo;
# useradd userget
Y le asignaremos un password
# passwd userget
Para obtener los atributos de las acl de un archivo o directorio
particular, se ejecuta getfacl de la siguiente forma:
getfacl /home/userget
Lo anterior devolvera una salida similar la siguiente:
getfacl: Eliminando '/' inicial en nombres de ruta absolutos
# file: home/userget
# owner: userget
# group: userget
user::rwx
group::--other::--Lo anterior muestra que slo el propietario del directorio tiene permisos
de lectura, escritura y acceso.
Para poder demostrar el uso de las acl, daremos de alta otro usuario mas
para dar el acceso de uno a otro creando las listas de acceso, para tal
caso crearemos un usuario nuevo;
# useradd userset
Y le asignaremos un password
# passwd userset
Para asignar el permiso de acceso a la carpeta del usuario ejecuta
setfacl, con la opcin -m para modificar la lista de control de acceso,

[u,g,o]:[usuario,grupo]:[r,w,x] y la ruta del directorio como argumentos.


Ejemplo:
# setfacl -m u:userset:rX /home/userget
En el ejemplo anterior se utiliz X mayscula para indicar que slo se
aplicar el bit de acceso de a directorios evitando aplicar el bit de
ejecucin a los archivos.
Lo anterior establece que se aaden permisos de lectura y acceso al
directorio /home/userget para el usuario userset.
Para verificar, ejecute de nuevo getfacl con la ruta del directorio
modificado como argumento:
# getfacl /home/userget
Para demostrar como se pueden hacer crecer o mejorar estas listas
asignaremos permisos a otro usuario, el cual primero crearemos
# useradd usergetset
Y le asignaremos un password
# passwd usergetset

De igual forma es posible asignarse permisos diferentes para otros


usuarios. Ejemplo:
# setfacl -m u:usergetset:rwX /home/userget
Lo anterior establece que se aaden permisos de lectura, escritura y
acceso al directorio /home/userget para el usuario usergetset.
Y validamos nuevamente el cambio:
# getfacl /home/userget
Con la opcin -x eliminaremos los permisos asignados;

# setfacl -x perengano /home/userget


Con la opcin k eliminara los permisos predeterminados en la lista de
control de acceso, tambin deberemos poner la ruta del directorio como
argumento;
# setfacl -k /home/userget
Usando la opcin -b eliminara todos los permisos de la acl, dejando
todo como en el punto inicial :
# setfacl -b /home/userget
Con el siguiente comando podramos realizar una copia la acl a aplicarla
a otro usuario y la manera de aserlo es la siguiente;
# getfacl respaldo1 | setfacl --set-file=- respaldo2

Lsattr y chattr: control de atributos de ficheros Linux

El primer comando, lsattr permite listar los atributos asignados a los


ficheros de un sistema de ficheros Linux, mientras que chattr permite
modificar dichos atributos, los cuales que utilizamos como complemento
al sistema de ACLs (chmod, chown,setfacl) permitiendo un control ms
frreo sobre los archivos del filesystem.
lsattr
El uso de lsattr no tiene demasiado misterio ya que nicamente nos
servir para listar atributos de ficheros y directorios, ejemplo:
$ lsattr -a
------------- ./..
------------- ./.bash_history
------------- ./.
------------- ./prueba.txt
------------- ./.bashrc
------------- ./.bash_profile
------------- ./.ssh

------------- ./.bash_logout
Algunos parmetros del comando que conviene conocer son, por
ejemplo, -a utilizado en el ejemplo anterior que muestra todos los
archivos del directorio, incluidos los ocultos. Si queremos visualizar los
atributos de forma recursiva utilizamos -R:
$ lsattr -Ra | more
-----------------e- ./.ike
./.ike:
-----------------e- ./.ike/.
-----------------e- ./.ike/sites
./.ike/sites:
-----------------e- ./.ike/sites/.
-----------------e- ./.ike/sites/..
-----------------e- ./.ike/..
-----------------e- ./.ike/certs
./.ike/certs:
-----------------e- ./.ike/certs/.
-----------------e- ./.ike/certs/..

-----------------e- ./.cisco_mds9000
./.cisco_mds9000:
-----------------e- ./.cisco_mds9000/.
-----------------e- ./.cisco_mds9000/install.log
-----------------e- ./.cisco_mds9000/..
chattr
Hoy toca hablar de chattr, una utilidad para nuestra terminal que sirve
para asignar diferentes atributos a nuestros archivos en Linux. Uno de
los objetivos principales de esta herramienta es el de proteger nuestros
archivos de cambios involuntarios o borrados accidentales y lo mejor de
todo, te proteger incluso aunque ejecutes comandos de borrado o
modificacin siendo superusuario (root).

Los atributos de los que vamos a hablar hoy son soportados por los
sistemas de archivos de Linux nativos como ext2, ext3, ext4, btrfs, etc...
Uno no podr eliminar ni modificar los archivos con los atributos que
usemos, aunque tenga todos los permisos para hacerlo.
Cuando es necesario proteger algunos archivos y/o carpetas para que no
puedan ser borrados. Puede ser el caso de pcs compartidas o de sistemas
donde se necesite mejorar un poco la seguridad en caso de posibles
penetraciones.
El comando que nos ayudara con la tarea sera chattr (change attribute).
Este se utiliza para cambiar varios atributos de archivos y puede usarse
en carpetas de manera recursiva.
El comando es parte del paquete que viene instalado de base en todas las
distros de linux.
Se usa asi:
chattr [opciones][operadores][atributos]
En
opciones
tenemos

por

ejemplo:

-R: Que es para cambios recursivos. Se usa con carpetas


En
los
operadores
tenemos
por

ejemplo:

+: Para aadir atributos


-: Para quitar atributos
Y
en
los
atributos

ejemplo:

podemos

poner

por

a: Establece que el fichero solo se puede abrir en modo de adjuntar para


escritura
s: Los bloques utilizados en el disco duro son escritos con ceros, de
modo que los datos no se puedan recuperar por medio alguno. Es la
forma ms segura de eliminar datos.
u: Sus contenidos son guardados permitiendo recuperar el fichero con
herramientas para tal fin.
Se pueden encontrar mas de todo eso en la pagina man de chattr pero
en concreto a nosotros nos interesa el atributo i que hace que el archivo
no pueda ser renombrado, ni eliminado, ni escribir datos en el. O sea
que
lo
pone
en
modo
de
solo
lectura.

Atrubutos;

A Establece que la fecha del ltimo acceso (atime) no se


modifica.
a Establece que el archivo slo se puede abrir en modo de
adjuntar para escritura.
c Establece que el archivo es comprimido automticamente
en el disco por el ncleo del sistema operativo. Al realizar lectura
de este archivo, se descomprimen los datos. La escritura de dicho
archivo comprime los datos antes de almacenarlos en el disco.
D Cuando se trata de un directorio, establece que los datos se
escriben de forma sincrnica en el disco. Es decir, los datos
se escriben inmediatamente en lugar de esperar la operacin
correspondiente del sistema operativo.
d Establece que el archivo no sea candidato para respaldo al
utilizar la herramienta dump.
e Indica que el archivo o directorio utiliza extensiones
(extents) para la cartografa de bloques en la unidad de
almacenamiento, particularmente de sistemas de archivos Ext4.
Cabe sealar que chattr es incapaz de eliminar este atributo.
i Establece que el archivo ser inmutable. Es decir, se impide
que el archivo sea eliminado, renombrado, que se pueden apuntar
enlaces simblicos hacia ste o escribir datos en el archivo.
j En los sistemas de archivos ext3 y ext4, cuando se montan con
las opciones data=ordered o data=writeback, se establece que el
archivo ser escrito en el registro por diario (Journal). Si el
sistema de archivos se monta con la opcin data=journal (opcin
predeterminada), todo el sistema de archivos se escribe en el
registro por diario y por lo tanto el atributo no tiene efecto.
s Cuando un archivo tiene este atributo, los bloques utilizados
en el disco duro son escritos con ceros, de modo que los
datos no se puedan recuperar por medio alguno. Es la forma ms
segura de eliminar datos.
S Cuando el archivo tiene este atributo, sus cambios son
escritos de forma sincrnica en el disco duro. Es decir, los
datos se escriben inmediatamente en lugar de esperar la operacin
correspondiente del sistema operativo.
u Cuando un archivo con este atributo es eliminado, sus
contenidos son guardados permitiendo recuperar el
archivo con herramientas para tal fin.

Pruebas;
Creamos un archivo para realizar las siguientes pruebas;
# touch prueba.txt
Deshabilitar la modificacin de la fecha de acceso al fichero
(atime)
Con la asignacin del atributo A conseguimos que cuando se acceda al
fichero no se modifique el registro atime. De este modo no quedarn
registrada la fecha del ltimo acceso al fichero:
# chattr +A prueba.txt
# lsattr prueba.txt
-------A----- prueba.txt
Comprimir automticamente el fichero en el disco
Si asignamos el atributo c activamos que el fichero se comprima
automticamente en el disco por el kernel. Cuando se lea el fichero se
servir descomprimido:
# chattr +c prueba.txt
# lsattr prueba.txt
--------c---- prueba.txt
Bloquear la modificacin o borrado de un archivo
Como veamos en la entrada que citaba al principio del post sobre evitar
que un archivo pueda ser modificado o borrado (incluso por root). Al
asignamos el atributo i activamos la flag para que el fichero no pueda
ser modificado, borrado o renombrado:
# chattr +i prueba.txt
# lsattr prueba.txt
----i-------- prueba.txt
Permitir recuperacin de archivo aunque sea eliminado
Asignamos el atributo u para que cuando el fichero se borre, sus datos
permanezcan guardados y permitan al usuario su recuperacin:
# chattr +u prueba.txt

# lsattr prueba.txt
-u----------- prueba.txt
Al eliminar un archivo, sobreescribir con 0 todos sus bloques
Al contrario que con el atributo u, el atributo s implica que cuando
un archivo sea borrado, automticamente los bloques utilizados por el
mismo sean sobreescritos con ceros (zeroed):
# chattr +e prueba.txt
# lsattr prueba.txt
-----------------e- prueba.txt
Escribir de forma sncrona a disco cambios en los ficheros
El parmetro S implica que cuando un fichero es modificado, los
cambios se aplican a disco de forma sncrona y directa. Es lo mismo que
tener la flag sync en el punto de montaje del filesystem.
# chattr +S prueba.txt
# lsattr prueba.txt
--S---------------- prueba.txt
Y as podramos seguir con una gran cantidad de distintos atributos.
Como siempre, podis revisarlos en la pgina man de chattr. Por
supuesto, los atributos se pueden asignar a la vez:
# chattr +uiAc prueba.txt
# lsattr prueba.txt
-u--i--Ac---- prueba.txt
# man chattr

Ejercicio para proteger un archive;


Generamos un segundo archivo;
# touch prueba2.txt
Como super usuario o root, ejecutamos:
# chattr +i prueba2.txt
Y ya no podran borrarlo con un

# rm prueba2.txt
Ni siquiera con un sudo su rm prueba.txt
Y si fuera un directorio la que queremos proteger de ser borrada, seria
asi:
Creamos un directorio
# mkdir MiDirectorio
Le asignamos los atributos:
# sudo chattr -R +i MiDirectorio
Podemos comprobar que el atributo ha sido agregado usando lsattr en la
carpeta que contiene esa otra carpeta o el archivo:
# lsattr a
Y al igual que el archivo quedara protegido para no ser eliminado
accidentalmente.
Y cuando deseemos poder eliminar ese archivo o directorio usaremos;
# chattr -i prueba2.txt
Y despus un rm.

Unidad 6. Herramientas bsicas del Sistema Operativo


Mandatos de uso bsico, muvete por la consola.
Pa realizar el siguiente ejercicio iniciaremos instalando los siguientes
paquetes que complememtaran elementos necesarios para poder realizar
las tareas en la consola y podr 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 de el 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
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
Ejeccutamos 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
usuario regular usuarioconsola

para regresar como

Exit
Ejecutando el siguiente comando nos mostrara la informacion del
sistema:
$ uname a
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:
$ 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 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:
$ 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:
$ ls tla
Ejecutando el siguiente ser lo mismo pero en orden inverso:
$ ls -tlar
Ejecutando el siguiente nos mostrara los 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
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]
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 numero 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/
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:
$ 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;
$ 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 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 cuanta 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 archivopaquete y comprimirlo a continuacin te muestro un resumen de las ms
comunes, de acuerdo a la extensin que comunmente se acostumbra
ponerles.

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.

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

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

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

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 practica, 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;

Para poder llevar acabo 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 .
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
$ 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
TAR
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
TAR GZIP
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:
$ 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'
BZ2
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'
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/
Para extraer los archivos de manera selectiva, tendramos que ejecutarlo
de la siguiente manera:
$ tar Jxvf comprimido.tar.xz -C ~/archivosXZ/ --wildcards
'*.png'

Reapaldos 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 informacio 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.
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 numero 1;


#
-g

tar

xpf
/var/respaldos/incremental-1.tar
/var/respaldos/registro.snar
-C

\
/

Con el siguiente recuperaremos el incremental numero 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 rstaurandolo
#
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
/usr/share/pixmaps

-M

-L

4194304

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;
#
tar
xpf
/media/DISCO/respaldo01.tar
/media/DISCO/registro.snar
-M
-C

-g
/

#
tar
xpf
/media/DISCO/respaldo02.tar
/media/DISCO/registro.snar
-M
-C

-g
/

#
tar
xpf
/media/DISCO/respaldo03.tar
/media/DISCO/registro.snar
-M
-C

-g
/

#
tar
xpf
/media/DISCO/respaldo04.tar
/media/DISCO/registro.snar -M -L -C /

-g

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.

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

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
0

(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 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
#> 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
[2]+ Stopped
#> fg %1
#> jobs
[1]+ Running
[2]- Stopped

yes >/dev/null &


ls --color=tty -laR / >archivos.txt &

yes >/dev/null &


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
COMMAND
26156 sergon
1 root
15
2 root
RT
3 root
34
4 root
RT
5 root
RT
...

PR

NI

VIRT

RES

SHR S %CPU %MEM

TIME+

15 0 2160 1016 784 R 1 0.2 0:00.93 top


0 2012 616 584 S 0 0.1 0:00.98 init
0 0 0 0 S 0 0.0 0:00.29 migration/0
19 0 0 0 S 0 0.0 0:00.00 ksoftirqd/0
0 0 0 0 S 0 0.0 0:00.00 watchdog/0
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.
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
[2]+ Ejecutando

sleep 600 &


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

Introduccin a sed.

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

Ejercicio;
Utilizando el editor vi crearemos el archivo pruebased.txt:
# vi pruebased.txt
Ingrese lo siguiente:
Hector
Calle
Aldama
Colonia
Centro
Ciudad de Mexico, C.P. 123456

Rodriguez
1234
Aldama

Guardamos el archivo y salimos de vi.


Ejecutando el coamando cat podremos visualizar el contenido del
archivo:
# cat pruebased.txt
Ejecutando lo siguiente podremos convertir a doble espacio la salida del
archivo:
# sed G pruebased.txt
Ejecutando lo siguiente para guardar esta salida en el archivo
pruebased2.txt:
# sed G pruebased.txt > pruebased2.txt

Ejecutando lo siguiente podremos convertir a doble espacio la salida del


archivo:
# sed 'G;G' pruebased.txt
Ejecute lo siguiente para guardar esta salida en el archivo usuario2.txt:
# sed 'G;G' pruebased.txt > pruebased3.txt
Lo anterior mostrar que el contenido de pruebased3.txt con un triple
espacio entre lneas.
Ejecutando lo siguiente podremos convertir un archivo a doble espacio,
pero sin que exista ms de una lnea vaca entre cada lnea con datos:
# sed '/^$/d;G' pruebased3.txt
Ejecutando el comando de la siguiente forma
doble espacio del archivo pruebased2.txt:

podremos eliminar el

# sed 'n;d' pruebased2.txt


Ejecutando el comando de la siguiente forma agregaremos una lnea en
blanco arriba de toda lnea que contenga la expresin regular ama:
# sed '/dama/{x;p;x;}' pruebased.txt
Ejecutando lo siguiente podremos agregar una lnea en blanco debajo de
toda lnea que contenga la expresin regular 3:
# sed '/3/G' pruebased.txt
Ejecutando el comando de la siguiente forma podremos agregar una
lnea en blanco arriba y debajo de toda lnea que contenga la expresin
regular 1:
# sed '/1/{x;p;x;G;}' pruebased.txt
Para realizar un reenplazo de texto se utiliza el modelo
's/textoantiguo/nuevo-texto/' donde textonuevo puede ser tambin una
expresin regular. En el siguiente ejemplo se reemplazarn las
incidencias del nmero por el nmero 9:

# sed 's/1/6/g' pruebased.txt


De la siguiente forma se reemplazaran los espacios por tabuladores a
todo lo largo de todos los renglones:
# sed 's/\ /\t/g' pruebased.txt
En la siguiente ejecucion se reemplazar slo el primer espacio de cada
lnea por un tabulador:
# sed 's/\ /\t/' pruebased.txt
Ejecutandolo de la siguienteforma podremos aadir 5 espacios al inicio
de cada renglon:
# sed 's/^/

/' pruebased.txt

Ejecutando el comando de la siguiente mostrara en pantalla slo la


primera lnea del archivo:
# sed q pruebased.txt
Ejecutando lo siguiente mostrara en pantalla slo las primeras tres lneas
del archivo:
# sed 3q pruebased.txt
Ejecutando el comando de la siguiente forma, mostrara en pantalla slo
las ltimas tres lneas del archivo:
# sed -e :a -e '$q;N;4,$D;ba' pruebased.txt
Ejecutando lo siguiente mostrara slo las lneas que incluyen 2;
# sed '/2/!d' pruebased.txt
Ejecutando lo siguiente mostrara slo las lneas que no contengan el
numero 3;
# sed '/3/d' pruebased.txt

Ejecutando el comando de la siguiente forma mostrara la lnea que est


inmediatamente despus de la expresin Hector pero excluyendo la lnea
que incluye Hector:
# sed -n '/Hector/{n;p;}' pruebased.txt
Ejecutando el comando de la siguiente forma, mostrara la lnea que est
inmediatamente antes de la expresin Calle, pero excluyendo la lnea que
incluye esta misma;
# sed -n '/Calle/{g;1!p;};h' pruebased.txt
Esto nos mostrara otra expression, de esta forma se concluye el ejercicio
de sed.

Introduccin a GnuPG.
GnuPG es una compleja herramienta que no est exenta de polmica
tcnica, social y legal. En el plano tcnico, ha sido diseada para su uso
en situaciones con diversos requerimientos de seguridad. Esto complica
la gestin de claves. En el plano social, el uso de GnuPG no es
estricatamente una decisin de tipo personal. Para que su uso tenga
efectividad, GnuPG requiere que todas las partes en una comunicacin
sean usuarios del programa. En el plano legal, desde 1.999, las leyes que
contemplan el uso de productos informticos criptolgicos, y en
particular si el uso de GnuPG es legal, son diferentes segn los pases y
estn siendo actualmente debatidas por muchos gobiernos.
Este captulo tratar sobre estos temas. Se intentar dar consejos
prcticos sobre el uso de GnuPG de cara a los requerimientos de
seguridad del usuario. Tambin se sugerirn vas para promocionar el
uso de GnuPG con vistas a la comunicacin segura entre el usuario y las
personas con las que ste se comunique, aun cuando stos no sean
usuarios de GnuPG. Finalmente, se resaltar el estado legal de GnuPG
conforme con el estado actual de las leyes sobre criptologa y cifrado en
el mundo.

Definiendo los requerimientos en seguridad


GnuPG es una herramienta que utiliza el usuario para proteger su
privacidad. La proteccin existe slo si el usuario puede comunicarse con
otros sin escuchas que puedan leer los mensajes.

El modo en que se deba usar GnuPG depender de la determinacin y de


los recursos de aqullos que intenten, o puedan intentar, leer los
mensajes cifrados del usuario. Un escucha podra ser un administrador
de sistemas sin escrpulos, que se encuentre, por casualidad,
escaneando el correo del usuario, o podra ser un espa industrial que
intentara acceder a los secretos de una compaa, o incluso podra ser un
organismo legal que quisiera llevarnos a juicio. El uso de GnuPG para
protegernos contra intromisiones casuales, ser diferente de su uso
para protegernos contra un adversario determinado. Nuestro fin ltimo
debe ser el de que el conseguir los datos no cifrados resulte ms caro
que el valor de los datos en s.
La personalizacin del uso de GnuPG se basa en los siguientes aspectos:

la eleccin del tamao del par de claves pblico y privado.


la proteccin de la clave privada,
la seleccin de la fecha de caducidad y el uso de subclaves, y la
gestin del anillo de confianza.

Seleccin del tamao de la clave


La seleccin del tamao de la clave depende de la clave en s. En
OpenPGP, un par de claves pblica y privada contienen generaralmente
claves mltiples. Como mnimo tiene una clave de firmado maestra, y
probablemente una o ms subclaves de cifrado adicionales. Si usamos
para la generacin de claves los parmetros por defecto en GnuPG, la
clave maestra ser una clave DSA, y las subclaves sern claves ElGamal.
DSA nos permite un tamao de clave de hasta 1024 bits. Dada la
tecnologa de factorizacin de hoy en da, esto no es demasiado bueno,
pero es lo que especifica el estndar. Sin duda alguna, debemos usar
claves DSA de 1024 bits.
Por otra parte, las claves ElGamal pueden ser de cualquier tamao. Ya
que GnuPG es un sistema de clave pblica hbrido, la clave pblica se usa
para cifrar una clave de sesin de 128 bits, y la clave privada se usa para
descifrarla. Sin embargo el tamao de la clave afecta a la velocidad del
cifrado y descifrado, ya que el valor de estos algoritmos lleva como
exponente el tamao de la clave. Una clave de mayor tamao tambin
tarda ms en ser generada, y ocupa ms espacio. Adems, cuanto mayor
tamao tenga una clave, la seguridad extra que nos ofrece, aumenta pero
con una marcha decreciente. Tambin hay que tener en cuenta que un

escucha que se encuentre con una clave lo suficientemente grande


como para resistir un ataque de fuerza bruta, se limitar a cambiar de
mtodo para poder obtener los datos no cifrados. Por lo tanto, 1024 bits
es el tamao de clave recomendado. Si nuestros requerimientos de
seguridad fueran tan grandes como para necesitar claves de gran
tamao, entonces deberamos consultar a un experto en seguridad de
datos.
Proteccin de la clave privada
La proteccin de la clave privada es la parte ms importante en el uso de
GnuPG. Si alguien obtuviera nuestra clave privada, todos los datos que
hubieran sido cifrados para esa clave podran ser descifrados y se podra
firmar documentos bajo nuestro nombre. Si perdiramos la clave
privada, ya no podramos descifrar los documentos cifrados que nos
hubieran enviado o que nos enviaran en un futuro, y no podramos
firmar los documentos. La prdida de posesin de nuestra clave privada
podra ser una catstofre.
Sea cual fuere el uso que hagamos de GnuPG, deberamos guardar
siempre un certificado de revocacin de nuestras claves pblicas, y una
copia de seguridad de nuestra clave privada en un disco protegido contra
la escritura, y en un lugar seguro. Por ejemplo, podramos grabarlo en
un CD-ROM y guardar ste en un cofre de depsito de un banco, dentro
de un sobre sellado. Alternativamente, podramos guardarlo en un
disquete y esconderlo en nuestra casa. Hagamos lo que hagamos, los
certificados de revocacin de las claves pblicas y las copias de
seguridad de la clave privada deberamos tenerlos guardados en un
medio lo suficientemente seguro, mucho ms que la clave privada que
utilizamos a diario.
Como medida de seguridad, GnuPG no guarda nuestra clave privada en
bruto en el disco duro, sino que la cifra mediante un algoritmo de
cifrado simtrico. Por esta razn, para acceder a nuestra clave,
necesitamos una contrasea. Por lo tanto, existen dos barreras que un
atacante debe cruzar para poder acceder a nuestra clave privada: (1)
debe conseguir la clave; (2) debe ser capaz de descifrarla.
Esconder nuestra clave privada en un sitio seguro es importante, pero
todo tiene un precio. Lo ideal sera que guardramos la clave en un disco
que fuera porttil y que tuviera proteccin contra la escritura, como un
disquete, y que slo lo usramos en una mquina con un solo usuario
que no estuviera conectada a una red. Esto puede que no sea convenient

o posible para nosotros. Por ejemplo, es posible que no tengamos


nuestra propia mquina, y que debamos usar la de la universidad o la de
la oficina, o puede significar que para ello tengamos que desconectar el
modem cada vez que queramos usar GnuPG.
Esto no quiere decir que no podamos o no debamos usar GnuPG. Tan
slo significa que debemos decidir si los datos que estamos protegiendo
son lo suficientemente importantes para cifrarlos, pero no tan
importantes como para tomar medidas extra de seguridad. La eleccin es
nuestra.
Una buena contrasea es absolutamente crtica para el uso de GnuPG.
Cualquier atacante que logre acceder a nuestra clave privada, deber
sobrepasar el cifrado de nuestra clave privada. En lugar de usar un
ataque de fuerza bruta, es casi seguro que un atacante intentar adivinar
la contrasea.
El motivo por el que intentara adivinarla, es que la mayora de personas
escogen contraseas que son ms fciles de adivinar que de sobrepasar
una clave aleatoria de 128 bits. Si la contrasea es una palabra
("password"), es mucho ms fcil probar con todas las palabras
existentes en los diccionarios de todas las lenguas del mundo. Aun
cuando la palabra sea permutada, v.g. k3wldood, ser ms fcil probar
palabras de diccionario con un catlogo de permutaciones. Lo mismo
ocurre con las citas. Aunque sea una contrasea formada por frases
("passphrase"), si sta tiene como base un lenguaje natural, ser una
contrasea dbil, ya que existir poca aleatoriedad y muchas
redundancias. Si es posible, debemos evitar contraseas basadas en
lenguajes naturales.
Una buena contrasea es aqulla que podemos recordar, pero que es
difcli que otro pueda adivinar. Debera incluir todos los carcteres
imprimibles de nuestro teclado posibles. Esto incluye carcteres
alfabticos en maysculas y minsculas, nmeros, y carcteres especiales
como } o . Debemos ser creativos y perder un poco de tiempo
inventando una contrasea; una buena eleccin es importante para
asegurar nuestra privacidad.
Seleccin de las fechas de caducidad y uso de subclaves
Por defecto, una clave de firmado maestra DSA y una subclave de cifrado
ElGamal son generadas al crear un nuevo par de claves. Esto es
conveniente porque cada clave juega un papel diferente, y por lo tanto es

posible que necesitemos que las claves tengan fechas de caducidad


diferentes. La clave de firmado maestra se usa para las firmas digitales, y
tambin recolectan las firmas de otras personas que hayan confirmado
nuestra identidad. La clave de cifrado se usa slo para descifrar los
documentos cifrados que nos hayan enviado. Por lo general, una firma
digital tiene una larga vida, v.g., para siempre, y tampoco queremos
perder las firmas que tanto nos ha costado recolectar en nuestra clave.
Por otra parte, la subclave de cifrado puede cambiar peridicamente por
cuestiones de seguridad, ya que si una clave de cifrado es descifrada, el
atacante puede leer todos los documentos que sean cifrados para esa
clave.
Suele ocurrir que no queramos que nuestra clave maestra caduque.
Existen dos razones por las que debamos escoger una fecha de
caducidad. La primera es que tengamos la intencin de que la clave tenga
una vida limitada. Por ejemplo, si la usamos para una campaa poltica y
no nos ser til una vez pasada la campaa. La segunda es que si
perdemos el control de la clave, y no tenemos un certificado de
revocacin con el que revocarla, una fecha de caducidad sobre la clave
maestra asegura que la clave caer finalmente en desuso.
Cambiar las subclaves de cifrado puede ser sencillo, pero puede que no
sea del todo conveniente. Si generamos un nuevo par de claves con una
fecha de caducidad en la subclave, sta caducar en su momento. Poco
antes de la caducidad aadiremos una nueva subclave y publicaremos
nuestra clave pblica actualizada. Una vez que la subclave haya
caducado, aquellos que deseen comunicarse con nosotros debern
encontrar antes la clave actualizada, pues ya no podrn enviar datos
cifrados para esa clave. El inconveniente depende de cmo distribuyamos
la clave. Por fortuna, no es necesario firmas extras ya que la nueva clave
habr sido firmada con con nuestra clave de firmado maestra, la cual ya
haba sido validada por nuestros corresponsales.
Todo depende de que queramos o no tener una seguridad extra. Al igual
que nosotros, un atacante todava podr leer todos los documentos que
hayan sido cifrados para una clave caducada. Cambiar las subclaves slo
protege los futuros documentos. Para poder leer documentos cifrados
para la nueva subclave, el atacante necesitara organizar un nuevo
ataque, usando cualquier tcnica que hubiera usado la primera vez.
Al final slo tiene sentido tener una sola subclave de cifrado en un anillo
de claves. No hay se gana seguridad adicional teniendo dos o ms
subclaves activas. Por supuesto, puede existir cualquier nmero de

claves caducadas en un anillo de claves, para que los datos que hubieran
sido cifrados en el pasado puedan todava ser descifrados, pero slo es
necesario activar una sola subclave en un momento dado.
Gestin del anillo de confianza
Al igual que con la proteccin de nuestra clave privada, la gestin de
nuestro anillo de confianza es otro aspecto del uso de GnuPG que
requiere equilibrar la seguridad y la facilidad de uso. Si estamos usando
GnuPG para protegernos contra la posibilidad de una simple
interceptacin casual o de una falsificacin, entonces nos podemos
permitir ser algo confiados con las firmas de otros. Si, por el contrario,
nos preocupa que pueda haber un atacante determinado interesado en
invadir nuestra privacidad, entonces deberamos confiar mucho menos
en otras firmas, e invertir ms tiempo en verificarlas.
Aparte de nuestras propias necesidades de seguridad, deberamos
tener siempre cuidado al firmar las claves de otras personas. Firmar una
clave sin el suficiente grado de confianza en la validez de la clave, slo
para satisfacer nuestras propias necesidades de seguridad, es una actitud
egosta. Otros, con otras necesidades de seguridad ms grandes, podran
fiarse de una clave que llevara nuestra firma. Si no pueden confiar en
nosotros, entonces se debilita el anillo de confianza y se hace ms difcil
la comunicacin para todos los usuarios de GnuPG. As pues, debemos
poner el mismo cuidado al firmar una clave que el que nos gustara que
pusieran otras personas cuando dependamos de sus firmas.
En la prctica, la gestin de nuestro anillo de claves evita el tener que
ajustar las opciones --marginals-needed y --completes-needed. Cualquier
clave que firmemos personalmente ser considerada vlida, pero con la
excepcin de grupos reducidos, no es prctico firmar la clave de cada
persona con la que nos comuniquemos. Por lo tanto, tendremos que
dejar que otros asignen el nivel de confianza.
Es aconsejable ser precisos cuando asignemos el nivel de confianza y
cuando usemos las opciones para configurar el cuidado con que GnuPG
debe ir con la validacin de claves. Por ejemplo, es posible que tengamos
plena confianza con unos pocos amigos ntimos, que sabemos que sern
lo suficientemente cuidadosos cuando firmen una clave, y que
otorguemos un nivel de confianza marginal al resto en nuestro anillo de
claves.
Desde
esta
perspectiva,
podemos
tener --completesneeded como 1 y --marginals-needed como 2. Si estuviramos ms
preocupados por la seguridad, podramos escoger valores de 1 y 3,

o 2 y3 respectivamente. Pero si no estamos tan preocupados por los


posibles ataques sobre la privacidad, y simplemente queremos una
fiabilidad razonable sobre la validez, escogeremos los valores 1 y 1. Por
regla general, los nmeros ms altos para estas opciones suponen que
sera necesario que hubiera ms gente conspirando contra nosotros para
poder validar una clave que no pertenezca a la persona que nosotros
creemos.

Ejercicio;
Para empezar iniciaremos instalando el paquete necesario para poder
realizar el ejercicio, ejecutando el comando de la siguiente forma;
# yum -y install gnupg

Iniciaremos generando el par de llaves desde el intrprete de mandatos,


ejecutando el comando de la siguiente forma.
# gpg --gen-key

Lo anterior solicitar:

Un tipo de llave. Predeterminado y recomendado es RSA y


RSA.
Tamao de la llave. Predeterminado es 2048 bits. Se
recomienda 4096 bits para produccin. Seleccione 1024 slo
para pruebas.
Caducidad de la llave. Predeterminado es sin caducidad.
Confirmacin de la caducidad.
Nombre y apellidos.
Direccin de correo electrnico primaria.
Comentario descriptivo para e par de llaves.
Confirmacin de los datos del usuario.
Contrasea y frase de acceso con confirmacin.

El proceso puede demorar varios minutos incluso horas dependiendo


del tamao de la firma.
Ejecutando el siguiente comando podra ver la lista de llaves.
# gpg --list-keys
Es conveniente generar un certificado de revocacin en caso de extraviar
la frase de acceso o que la seguridad de las llaves se haya visto
comprometida. En el siguiente ejemplo se crea el certificado de
revocacin para la llave con identidad F08846B8.
# gpg --output revocacion.asc --gen-revoke F08846B8
Esta llave se debe enviar a todos los involucrados en caso de requerirse
revocar la llave original.
Ejecutando lo siguiente comando exportaremos la firma en formato
binario:
# gpg --output fulano.gpg --export F08846B8
Ejecutandolo de la siguiente forma podremos exportar la firma en
formato legible:

# gpg --output fulano.asc --armor --export F08846B8

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 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:
HARD: (Duro) Cuando se establece (para bloques o inodos), es el lmite
absoluto. El usuario no podr exceder este lmite.
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.
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 /
/dev/sda1 /boot
/dev/sda3 /home
....

ext3
ext3
ext3

noatime
noatime
noatime

1
1
1

1
2
2

(Aadimos en la cuarta columna el tipo de cuotas que deseamos)


/dev/sda2 /
ext3
noatime
1
1
/dev/sda1 /boot
ext3
noatime
1
2
/dev/sda3 /home
ext3
noatime,usrquota,grpquota
1
...

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


directorio
quotacheck: Cannot stat old group quota file: No existe el
directorio
quotacheck: Cannot stat old user quota file: No existe el
directorio
quotacheck: Cannot stat old group quota file: No existe el
directorio
quotacheck: Checked 2539 directories and 35556 files
quotacheck: Old file not found.
quotacheck: Old file not found.

fichero o el
fichero o el
fichero o el
fichero o el

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 ejecutarquotacheck peridicamente para que
verifique inconsistencias y se corrijan a tiempo. En cuanto a las opciones
estas indican lo siguiente:

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
/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.
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.
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.
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
/dev/sda3
68
300
400
:wq
Veamos el reporte de cuotas con repquota:

inodes soft hard


17
0
0

[root@segolap ~]# 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
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`
(importante: nota 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)
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.
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.
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
BROADCAST
RX
packets:0
TX
packets:0
collisions:0
RX
bytes:0
Interrupt:19

encap:Ethernet
HWaddr
00:11:25:29:XX:XX
MULTICAST
MTU:1500
Metric:1
errors:0
dropped:0
overruns:0
frame:0
errors:0
dropped:0
overruns:0
carrier:0
txqueuelen:1000
(0.0
b)
TX
bytes:0
(0.0
b)

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
Cambiando eth0 por el nombre de la interfaz que necesitamos. Si
queremos deshabilitar una interfaz ejecutamos:
# ifconfigu eth0 down
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 sera:
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
Nota: No olvides hacer un backup del archivo en caso de falla antes de
hacer cualquier cambio con:
#
cp
eth0.backup

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

/root/ifcfg-

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
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
nameserver 10.50.50.131

10.50.50.130

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
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 el 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.
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.
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.
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.
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:
#> 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:
#> 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
Controla el minuto de la hora en que el comando ser ejecutado,
Minuto
este valor debe de estar entre 0 y 59.
Controla la hora en que el comando ser ejecutado, se especifica
Hora
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
Mes
indicara 20, para ejecutar el comando el da 20 del mes.
Mes en que el comando se ejecutar, puede ser indicado
Mes
numricamente (1-12), o por el nombre del mes en ingls, solo las
tres primeras letras.
Da en la semana en que se ejecutar el comando, puede ser
Da de la
numrico (0-7) o por el nombre del da en ingls, solo las tres
semana
primeras letras. (0 y 7 = domingo)
Usuario
Usuario que ejecuta el comando.
Comando, script o programa que se desea ejecutar. Este campo
Comando
puede contener mltiples palabras y espacios.

Un asterisco * como valor en los primeros cinco campos, indicar iniciofin 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
01 * * * *
15 8 * * *
15 20 * * *
00 5 * * 0
* 5 * * Sun
45 19 1 * *
01 * 20 7 *
10 1 * 12 1
00 12 16 *
Wen
30 9 20 7 4
30 9 20 7 *
20 * * * 6
20 * * 1 6

Descripcin
Se ejecuta al minuto 1 de cada hora de todos los das
A las 8:15 a.m. de cada da
A las 8:15 p.m. de cada da
A las 5 a.m. todos los domingos
Cada minuto de 5:00a.m. a 5:59a.m. todos los domingos
A las 7:45 p.m. del primero de cada mes
Al minuto 1 de cada hora del 20 de julio
A la 1:10 a.m. todos los lunes de diciembre
Al medioda de los das 16 de cada mes y que sea Mircoles
A las 9:30 a.m. del dia 20 de julio y que sea jueves
A las 9:30 a.m. del dia 20 de julio sin importar el da de la semana
Al minuto 20 de cada hora de los sbados
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.
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
$> crontab 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


este artculo encontrars ms informacin.

servicios,

en

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.
Por ltimo y no menos importante:
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

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

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

Potrebbero piacerti anche