Download CEC-EPN - Pcecuador.com

Document related concepts

Distribución Linux wikipedia , lookup

Núcleo Linux wikipedia , lookup

Mandriva wikipedia , lookup

Controversia por la denominación GNU/Linux wikipedia , lookup

Slackware wikipedia , lookup

Transcript
CENTRO DE EDUCACION CONTINUA
POLITECNICA NACIONAL
ADMINISTRACION DE LINUX I
Instructor
Ing. Segundo Arévalo Calderón
2013
“ADMINISTRACION
DE LINUX I”
INDICE
INDICE ................................................................................................................................................. 2
INTRODUCCION ................................................................................................................................ 5
1.
INTRODUCCION AL SISTEMA OPERATIVO LINUX .................................................... 11
1.1.
1.1.1.
Cuántos Linux Existen ........................................................................................................ 12
1.1.2.
Versiones de Linux o Cuántas versiones de Linux existen.................................................. 12
1.1.3.
Distribuciones de Linux o cuántas distribuciones de Linux existen ................................... 13
1.2.
HISTORIA DE LINUX Y EL SOFTWARE LIBRE............................................................................. 20
1.3.
VENTAJAS DEL SOFTWARE LIBRE ............................................................................................. 20
1.4.
COMPARACIÓN ENTRE SOFTWARE LIBRE Y SOFTWARE PROPIETARIO ....................................... 20
1.5.
DISTRIBUCIONES DE LINUX ...................................................................................................... 20
1.5.1.
¿Qué es una distribución GNU/Linux? .............................................................................. 20
1.5.2.
¿Qué es software libre? ...................................................................................................... 22
1.5.3.
¿Qué es software comercial?.............................................................................................. 22
1.6.
1.6.1.
1.7.
2.
TÉRMINOS RELACIONADOS CON LINUX ................................................................................... 11
EL KERNEL DE LINUX. .............................................................................................................. 25
El sistema de numeración del kernel .................................................................................. 26
DISTRIBUCIONES GNU/LINUX ................................................................................................. 29
1.7.1.
Características básicas de las distribuciones ..................................................................... 29
1.7.2.
Algunas distribuiciones de Linux/GNU .............................................................................. 33
1.7.3.
Clasificación de las distribuciones ..................................................................................... 35
1.7.4.
El árbol de directorio de Linux .......................................................................................... 44
COMANDOS BASICOS E INSTALACION DEL SISTEMA OPERATIVO..................... 55
2.1.
COMANDOS .............................................................................................................................. 55
2.1.1.
Comandos Basicos.............................................................................................................. 55
2.1.2.
Comandos para Listar archivos y directorios .................................................................... 58
2.1.3.
Comandos para crear archivos y directorios ..................................................................... 65
2.1.4.
Copiar, Mover y Borrar archivos y directorios .................................................................. 66
2.1.5.
Ver Archivos Cat ................................................................................................................ 69
2.1.6.
Comandos Usados con Pipe (|) .......................................................................................... 70
2.1.7.
Uso de Paginadores............................................................................................................ 73
2.1.8.
Editor Vi ............................................................................................................................. 75
2.1.9.
Los modos del Vi................................................................................................................. 76
2.1.10.
Insertar, borrar, editar y moverse en el texto ................................................................ 76
2.1.11.
Otros comandos para moverse en el texto ..................................................................... 79
2.1.12.
Edicion de un archivo .................................................................................................... 79
2.1.13.
Ejecución de Comandos................................................................................................. 85
2.1.14.
Otro editor ..................................................................................................................... 85
2.2.
3.
COMO REALIZAR UN CORRECTO PARTICIONAMIENTO EN LINUX............................................... 90
2.2.1.
Que es particionar un disco ................................................................................................ 90
2.2.2.
/usr................................................................................................................................. 93
2.2.3.
/var ..................................................................................................................................... 93
2.3.
INSTALACION DE CENTOS ....................................................................................................... 94
2.4.
ARRANCANDO LA MAQUINA..................................................................................................... 94
2.4.1.
GRUB .......................................................................................................................... 112
2.4.2.
RED ............................................................................................................................. 112
2.4.3.
Zona Horaria .............................................................................................................. 114
2.4.4.
Clave de root.............................................................................................................. 115
2.4.5.
Selección de Paquetes. ..................................................................................................... 115
2.4.6.
Listos para instalar ........................................................................................................... 117
2.4.7.
Arranque por primera vez ........................................................................................ 121
GESTION DE USUARIOS Y PERMISOS........................................................................... 128
3.1.
USUARIOS Y GRUPOS EN LINUX .............................................................................................. 128
3.1.1.
Proceso que se sigue para crear un usuario ............................................................. 130
3.1.2.
Comando para realizar los pasos anteriores. ............................................................ 130
3.1.3.
Como borrar usuarios .................................................................................................... 132
3.1.4.
4.
3.2.
SUBTITUTE USER (SU) ........................................................................................................... 133
3.3.
SUDO – SUPER USER DO .................................................................................................... 135
3.3.1.
Formato del archivo de sudores .................................................................................. 136
3.3.2.
Dar accerso total a usuarios específicos: .................................................................. 137
3.3.3.
Dar acceso a comandos especificos .......................................................................... 138
3.3.4.
Manejo de quotas .......................................................................................................... 139
3.3.5.
Manejo de permisos ...................................................................................................... 143
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS.154
4.1.
5.
MONTAJE Y DESMONTAJE DE SISTEMAS DE ARCHIVOS ........................................ 158
4.1.2.
SISTEMAS DE ARCHIVOS DE LINUX ........................................................................... 162
4.1.3.
SISTEMA DE ARCHIVOS ext2 ........................................................................................ 167
AUTOMATIZACION DE TAREAS..................................................................................... 172
CRONTAB ............................................................................................................................... 172
5.1.1.
El fichero /etc/crontab ...................................................................................................... 173
5.1.2.
El comando crontab.......................................................................................................... 176
5.1.3.
Los ficheros /etc/cron.allow y /etc/cron.daily ................................................................... 177
5.2.
5.2.1.
5.3.
5.3.1.
7.
UBICACIÓN DE ARCHIVOS Y DIRECTORIOS ............................................................... 154
4.1.1.
5.1.
6.
Como cambiar el Shell predeterminado ..................................................................... 132
ANACRON .............................................................................................................................. 178
El fichero /etc/anacrontab ................................................................................................ 179
AT .......................................................................................................................................... 180
Los ficheros /etc/at.allow y /etc/at.deny............................................................................ 181
GESTION DE PROCESOS ................................................................................................... 184
6.1.
EL COMANDO KILL ................................................................................................................. 184
6.2.
EL COMANDO TOP .................................................................................................................. 187
SISTEMA DE INICIO Y FINALIZACION DEL SISTEMA ............................................. 189
7.1.
NIVELES DE EJECUCIÓN DE SYSV INIT ................................................................................... 189
7.2.
NIVELES DE EJECUCIÓN .......................................................................................................... 189
INTRODUCCION
Linux es un sistema operativo gratuito y de libre distribución inspirado en el sistema
Unix, escrito por Linus Torvalds con la ayuda de miles de programadores en Internet.
Una de los primeros conceptos que aparecen al iniciarse en Linux es el concepto de
distribución.
Una distribución es un agrupamiento del núcleo del sistema operativo Linux (la parte
desarrollada por Linus Torvalds) y otra serie de aplicaciones de uso general o no tan
general. En principio las empresas que desarrollan las distribuciones de Linux están en
su derecho al cobrar una cierta cantidad por el software que ofrecen, aunque en la mayor
parte de las ocasiones se pueden conseguir estas distribuciones desde Internet, de
revistas o de amigos, siendo todas estas formas gratuitas y legales.
Las distribuciones más conocidas son CentOS, RedHat, Debian, Slackware, SuSE y
Corel Linux, todas ellas incluyen el software más reciente y empleado lo cual incluye
compiladores de C/C++, editores de texto, juegos, programas para el acceso a Internet,
así como el entorno gráfico de Linux: X Window.
Algunas pantallas de distintas distribuciones
Pantalla de Linux
Pantalla de CENTOS 5.4 (sin el fondo del escritorio)
Pantalla de Red Hat 5
Se puede apreciar que CENTOS y Red Hat son idénticos, excepto en los colores (y en el
pago por actualización, que en CENTOS es gratuito)
Como se puede apreciar en las pantallas capturadas, se recomienda instalar el sistema en
el idioma nativo del alumno (en este caso, español). Linux permite cambiar
dinámicamente el idioma, así que si más tarde desea mirar los mensajes en inglés, o
francés o cualquier otro, solo debe usar el programa system-config-language
Otro problema frecuente es la distribución del teclado. Utilice el programa systemconfig-keyboard para que configure el teclado a su exacta configuración.
Otro problema común es la resolución de pantalla. Use el programa system-configdisplay para que primero configure la tarjeta de video, reinicie el ambiente gráfico,
configure la resolución de pantalla y vuelva a reiniciar el ambiente gráfico. El ambiente
gráfico se reinicia con la combinación de teclas CONTROL-ALT-BACKSPACE (al
mismo tiempo).
Y finalmente, otro problema frecuente es la mala configuración de la zona horaria y el
reloj UTC. Use el programa system-config-time. Recuerde que Guayaquil Ecuador NO
utiliza ajuste automático de tiempo de verano (desmarque la casilla UTC), caso
contrario, su reloj se atrasará o adelantará una hora y Ud. no sabrá por qué. O peor, su
reloj estará con 5 o más horas desincronizado, porque no usó la configuración regional
adecuada.
Y si pregunta cómo se llaman estos programas en otras distribuciones, recuerde lo que
dijimos: CENTOS y Red Hat son ideales para administrar servidores, usuarios, redes.
LAS IDEAS EXPUESTAS EN ESTE TRABAJO SON DE
EXCLUSIVIDAD DEL AUTOR
I. INTRODUCCIÓN AL SISTEMA
OPERATIVO
INTRODUCCION AL SISTEMA OPERATIVO
1.
11
INTRODUCCION AL SISTEMA OPERATIVO LINUX
1.1. Términos Relacionados con Linux
En el mundo de Linux encontraremos varios términos que deben quedar claros desde el
comienzo para entender adecuadamente el funcionamiento y la filosofía de Linux. A
pesar de que Linux nació en 1991, sigue una tradición de cuatro décadas (iniciada con
Unix allá por 1970) y tiene cierta lógica.
Es importante recalcar que Linux es un sistema operativo bastante parecido a Unix,
Solaris, AIX, y más sistemas operativos terminados en X que existen por ahí, así que
mucho de lo que aprenda para Linux le servirá para otros *X incluyendo MacOSX (sí,
la X final significa Unix, confirmado).
Linux es un nombre derivado de Linus Torvalds Unix. Es un conjunto de programas
creados por Linus Torvalds y un equipo de voluntarios para que se parezcan al sistema
operativo Unix ®.
Linus Torvalds era en 1991 un estudiante de la universidad finlandesa de Helsinki,
cuando creó (él solito), la primera versión de Linux y la puso en Internet. Ahora es el
líder de un equipo de desarrollo dedicado a Linux, que se puede mirar en
www.kernel.org
Línux, núcleo Linux o kernel Linux o Linux kernel: son términos equivalentes.
Linux o el núcleo de Linux o el kernel de Linux es el conjunto de programas y archivos
que se requieren para trabajar con una distribución de Linux. Linux, por sí solo, no es de
INTRODUCCION AL SISTEMA OPERATIVO
12
gran ayuda para el usuario (ni para el técnico). Linux requiere de programas adicionales
que vienen en las “Distribuciones Linux”. Dicho de otra forma: alguien que solamente
descarga el kernel de Linux desde www.kernel.org no logrará gran cosa a menos que
tenga o vaya a instalar una distribución completa (que por supuesto, incluye al kernel de
Linux).
1.1.1. Cuántos Linux Existen
Existe un solo Linux en www.kernel.org pero existen decenas de versiones de Linux y
miles de Distribuciones de Linux.
1.1.2. Versiones de Linux o Cuántas versiones de Linux existen
La primera versión de Linux fue la 0.01 liberada el 17 de septiembre de 1991 y contenía
88 archivos, con aproximadamente 260 KB.
Fuente: Wikipedia.org
INTRODUCCION AL SISTEMA OPERATIVO
13
Las últimas versiones de Linux (el núcleo de Linux) a Marzo 2012 son estas:
Las
últimas versiones de Linux en Marzo 30 2012 según www.kernel.org
1.1.3. Distribuciones de Linux o cuántas distribuciones de Linux existen
Una distribución de Linux es un conjunto de programas que trabajan conjuntamente con
(y dsacnden de) el Kernel de Linux y se orientan a satisfacer determinadas necesidades
(servidores, estaciones, juegos, educativas, cortafuegos, recuperación, gráficos,
científico matemática, etc.). Existen miles de distribuciones. Aquí hay una lista
detallada: www.distrowatch.org
INTRODUCCION AL SISTEMA OPERATIVO
14
Unix es el nombre de un sistema operativo creado en 1970 por Bell Labs (Laboratorios
Bell) que luego se transformó en ATT y luego se dividió en varias empresas, incluyendo
bellSouth, Lucent Technologies, entre otras. Existen diversas variedades de Unix:
Unixware de Novell, Solaris de Sun Microsystems, AIX de IBM, HP/UX de HP,
XENIX de SCO (Santa Cruz Operations) entre muchas otras. Ahora la marca Unix le
pertenece a The Open Group, como se ve en www.unix.org
INTRODUCCION AL SISTEMA OPERATIVO
15
Linux a secas o GNU/Linux: Este documento se remite a www.kernel.org sitio web
liderado por el autor de Linux (Linus Torvalds). Allí NO consta GNU/Linux, por lo
tanto, este documento respetará el criterio de Linus Torvalds y lo denominará
simplemente Linux.
INTRODUCCION AL SISTEMA OPERATIVO
FSF
16
INTRODUCCION AL SISTEMA OPERATIVO
GNU
17
INTRODUCCION AL SISTEMA OPERATIVO
GPL Y LGPL
18
INTRODUCCION AL SISTEMA OPERATIVO
LGPL
Copyleft
19
INTRODUCCION AL SISTEMA OPERATIVO
20
1.2. Historia de Linux y el Software Libre
Desde Cuando existe el software Libre?
La noción de software libre es tan antigua como 1835 (sí, mil ochocientos treinta y
cinco) cuando Ada Byron, condesa de Lovelace escribió sus primeros programas de
computador para la máquina de Charles Babbagge. Es obvio que ni los patentó ni les
puso copyright ni derechos de autor.
1.3. Ventajas del software libre
Discutibles en el salón de aula
1.4. Comparación entre software libre y software propietario
Discutibles en el salón de aula
1.5. Distribuciones de Linux
1.5.1. ¿Qué es una distribución GNU/Linux?
Después de un cuidadoso estudio y búsqueda en la Internet, el personal del
departamento de laboratorios de la escuela "Mentes Libres" logró reunir suficiente
información sobre el software libre. Como resultado se obtuvo la información que se
presentó a manera de conferencia y que aparece detallada a continuación. En 1984,
Richard Stallman quería crear un sistema operativo que fuera completamente libre, es
decir que deseaba que los usuarios lo pudieran usar, estudiar, copiar, modificar y
redistribuir libremente. Quería que este sistema se basara en el sistema operativo UNIX,
ya que la arquitectura de éste era técnicamente muy estable. Para ello creó el proyecto
GNU, así como un nuevo tipo de licencia (creada en conjunto con la Free Software
Foundation): el copyleft, que a diferencia del copyright, se aseguraba de que estos
nuevos derechos de los usuarios del programa se mantuvieran intactos. El copyleft está
contenido en la Licencia General Pública de GNU (GPL).
INTRODUCCION AL SISTEMA OPERATIVO
21
El proyecto GNU desarrolló varios programas incluyendo compiladores, utilitarios,
intérpretes de comandos, pero no ha completado (hasta esta fecha, enero 2008) un
núcleo (los programas para administrar memoria, procesos, archivos, periféricos,
seguridades).
Sin embargo, en 1991, Linus Torvalds empezó a generar el núcleo Linux, núcleo que
aún no había sido creado por el grupo de trabajo del proyecto GNU. En poco tiempo se
había creado un grupo de trabajo en torno a Torvalds, que poco a poco, y mediante el
Internet, fue logrando que Linux llegara a ser un núcleo compatible con UNIX. Una vez
que fue terminado, en 1992, se combinó al núcleo Linux con los demás elementos del
sistema GNU y con ello aparecieron las distribuciones Linux, o mejor llamadas
GNU/Linux, que no son más que un grupo de los programas del grupo GNU o de
programas que utilizan copyleft, y que trabajan junto con el núcleo Linux. Una
distribución Linux (o mejor GNU/Linux) es entonces un conjunto de programas creados
por el proyecto GNU, o por otros desarrolladores que se apoyan en la licencia GPL o
LGPL, y el núcleo desarrollado por Linus Torvalds.
Desde entonces, las distribuciones GNU/Linux han incrementado su popularidad en el
mercado de servidores. Su gran flexibilidad ha permitido que sea utilizado en un rango
muy amplio de sistemas de cómputo y arquitecturas: computadoras personales,
supercomputadoras, dispositivos portátiles, etc.
Los sistemas Linux funcionan sobre más de 20 diferentes plataformas de hardware,
entre ellas las más comunes son las de los sistemas compatibles con PC, Macintosh,
procesadores PowerPC, Sparc y MIPS.
También es frecuente hallar componentes de GNU instalados en un sistema UNIX no
libre, en lugar de los programas originales para UNIX. Esto se debe a que muchos de
los programas escritos por el proyecto GNU han demostrado ser de mayor calidad que
INTRODUCCION AL SISTEMA OPERATIVO
22
sus versiones equivalentes de UNIX. A menudo, estos componentes se conocen
colectivamente como "herramientas GNU". Muchos de los programas GNU han sido
también portados a otras plataformas como Microsoft Windows y Mac OS X.
1.5.2. ¿Qué es software libre?
El Software libre es aquel que puede ser usado, copiado, estudiado, modificado y
redistribuido libremente, ya que su código fuente está abierto y, gracias a la licencia
GPL o LGPL, debe mantener esta característica; así se garantizan los derechos de
modificación y redistribución de dichas versiones modificadas del programa.. Este tipo
de software suele estar disponible gratuitamente en Internet, o puede venir incluido en
un distribución. De todas maneras hay que aclarar que no necesariamente tiene que ser
gratuito, pues aunque conserve su carácter de libre, puede ser vendido comercialmente.
Es decir que el software libre no es siempre gratuito, al igual que el software gratuito
(también conocido como freeware) no es necesariamente libre, pues puede no incluir el
código fuente.
Es decir que se puede obtener software gratuito sin tener la libertad de ver el código y a
su vez se puede usar software libre (free software) para ver su código pero pagar por su
soporte comercial, o por la distribución de las copias de software libre.
1.5.3. ¿Qué es software comercial?
El software comercial tiene algunas características que lo diferencian del software libre.
Las ventajas que tiene el software libre, es justamente lo que ha llevado a que la escuela
Mentes libres, haya decidido utilizarlo.
En el software comercial, el autor cobra un precio por el uso del software (las llamadas
licencias) y poniendo como condición que el software adquirido no pueda ser cedido ni
INTRODUCCION AL SISTEMA OPERATIVO
23
alquilado. Además, solamente la empresa creadora del software estará autorizada para
realizar modificaciones en él. Los usuarios de software libre tampoco tienen la
posibilidad de realizar ingeniería inversa para estudiar el funcionamiento del software
en cuestión.
Una vez que se vieron las ventajas que presenta el software libre frente al software
comercial, los directivos de la escuela Mentes Libres, decidieron usar Software Libre en
sus estaciones de trabajo y servidores, y, como la totalidad de los interesados ya
conocen herramientas del mundo de código comercial, surgieron las típicas preguntas de
comparación:
¿Puedo navegar desde una herramienta de software libre? ¿Cómo puedo editar textos
con herramientas de software libre? ¿Es cierto que el Software Libre sólo corre en
Linux?
Y así surgieron muchas preguntas del mismo estilo. Esto se debe a que hay algunos
mitos profundamente arraigados en el mundo de Linux y Open Source (código abierto).
Estos mitos giran en torno a la idea de que en Linux no existen las herramientas
adecuadas, que sí existen en el mundo de código cerrado.
Para despejar estas dudas, el equipo encargado del laboratorio y de esta investigación,
nos ha realizado un cuadro comparativo entre algunas herramientas de código cerrado y
sus contrapartes en Software Libre. Siempre se hizo énfasis en que tengamos en cuenta
que muchas de las herramientas en Software Libre funcionan perfectamente sobre
Microsoft Windows® y cualquier ambiente comercial.
Comercial
Software Libre
INTRODUCCION AL SISTEMA OPERATIVO
24
Internet Explorer, Opera
Firefox
Observaciones Firefox tiene más del 10% delmercado
ennavegadores
Outlook Express, Outlook Thunderbird,
Evolution, Thunderbird
chat:
msn
pidgim
es
una alpine, mutt excelente alternativa
messenger, yahoo
messenger,
aol messenger, icq
aMSN,
(antiguo gaim), PSI pidgim es un maravilloso programa que integra la mayoría
de los messengers.
Adobe Photoshop, Corel Draw
SQL
Server,
Variados
Oracle, Informix
lenguajes
de programación
GIMP
Postgresql, mysql, sqlite
C, C++, C#, Qt, GTK, PHP, perl, mono, freepascal, ada, cobol,
python, ruby, etc, etc, etc
Algunos
diseñadores
shell
scripting,
lo consideran mejor al GIMP que
a sus contrapartes comerciales. Es discutible postgresql
es
una poderosísima
herramienta al igual que mysql mono es una plataforma de .NET para Linux
Programación visual: varias herramientas
Varios tipos de antivirus
gambas, lazarus clamav
Gambas es un sistema
como visual basic Lazarus es un IDE para trabajar en pascal (como el delphi)
INTRODUCCION AL SISTEMA OPERATIVO
25
Aunque los virus no tienen futuro en Linux, nadie quita que linux pueda ser un servidor
de archivos o de correos para usuarios de windows, por eso el clamav puede ayudar.
Partition
magic/Partition manager
Microsoft Office
gparted OpenOffice Incluso existe en forma de distribución live
CD para reparticionar
Microsoft Exchange Sendmail, postfix, dovecot
Internet Information Server apache httpd, lighttpd apache es el servidor web por
excelencia en estos momentos en internet.
Project
planner
Por supuesto, hay decenas de posibles comparaciones más, y se especificó, por parte
del grupo de expositores, que no debemos esperar que todas las herramientas Open
Source sean una copia al detalle de ninguna herramienta comercial, puesto que son
aplicaciones diferentes: algunas funcionan de forma medianamente parecida, otras
requieren de cierto estudio para lograr dominarlas Es más, muchas personas prefieren
no comparar las herramientas pues algunas difieren grandemente en muchos detalles,
para bien o para mal.
1.6. El kernel de Linux.
INTRODUCCION AL SISTEMA OPERATIVO
26
Durante uno de los seminarios de presentación del nuevo sistema en la escuela, algunas
personas solicitaron precisiones sobre qué es Linux y en qué se diferencia una
distribución de Linux del kernel de Linux. ¿Acaso no es lo mismo?, preguntaban.
Se les explicó que el kernel (núcleo o corazón) de Linux es la creación original de Linus
Torvalds, más las modificaciones del grupo www.Linux.org. Ha sido ampliamente
revisado y modificado por una enorme comunidad de personas a lo largo del planeta. De
hecho la contribución en código que ha aportado Linus Torvalds es menor al 5% del
kernel. Linus comenta a veces que él se siente como si se aprovechara de las demás
personas porque él es el que líneas de código menos ha escrito y sin embargo el mérito
del kernel se centra sólo en él.
Cierto o falso, es una realidad: Linus Torvalds fue capaz de crear un kernel muy
maleable, muy modificable; además es una persona que acepta retos, sugerencias y
siempre se mantiene en constante investigación y modernización del kernel.
El kernel es la base del sistema GNU/Linux. Es, básicamente, el conjunto de programas
que permiten administrar los recursos del sistema de forma organizada y eficiente. El
kernel se encarga de manejar la memoria, el uso de CPU, el uso de disco, manejo de
espacios de memoria virtual, SWAP y otras funciones. En los últimos años se han ido
agregando al kernel otros elementos como seguridades (iptables, seLinux), nuevos
formatos de archivos (ntfs, hpfs, reiserfs) y la capacidad de reconocer una gran cantidad
de dispositivos modernos
1.6.1. El sistema de numeración del kernel
INTRODUCCION AL SISTEMA OPERATIVO
27
Otra de las preguntas que surgieron en muchas personas, luego de la investigación
realizada en la escuela Mentes Libres, estuvo relacionada a los números que
conformaban el kernel de Linux.
Para saber a qué versión del kernel no referimos, el kernel tiene un sistema de
numeración específico. Pese a que, en la actualidad, el sistema de numeración del kernel
está en proceso de cambio, de todas formas se lo ha numerado hasta el momento de la
siguiente manera:
Linux-X.Y.Z
El primer número (X) significa un cambio mayor respecto al anterior. Cuando este
número ha cambiado, posiblemente haya incompatibilidad en sus binarios y cambios en
las concepciones.
El primer kernel utilizable fué del tipo 1.Y.Z. Este kernel por ejemplo era monolítico es
decir que no permitía cargar módulos (drivers) para nuevo hardware. De esta manera, si
se quería agregar nuevo hardware había que recopilar completamente el kernel.
Posteriormente, en los años 1996-1997, apareció el kernel 2.Y.Z Este sí era modular, e
incluía ciertas características más, que hacían que esta versión fuera incompatible con el
kernel 1. En la actualidad aún se mantiene el kernel tipo 2.
El segundo número (Y) indica un cambio en la concepción del kernel, pero no en su
compatibilidad. Cuando cambia el número Y, posiblemente haya reestructuraciones en
diferentes áreas del kernel, mejoras en su rendimiento, así como habrá miles de drivers
nuevos, arquitecturas y dispositivos que antes no existían.
INTRODUCCION AL SISTEMA OPERATIVO
28
El kernel 2.0 soportaba un firewall muy rudimentario llamado ipfwadm.
El kernel 2.2, en cambio, ya soportó un firewall (ipchains) que permitía hacer proxy
transparente, e incluso se podía, con la ayuda de un módulo externo, hacer labores de
reenvío de paquetes hacia máquinas dentro de la red.
El kernel 2.4 ya soportaba un firewall mucho más poderoso llamado iptables, que es el
que hasta el momento se usa. Este firewall tiene características de manejo que lo hacen
muy fuerte y estable.
El kernel 2.6 incluyó soporte para discos SATA. Por las caracaterísticas totalmente
renovadas en el manejo de memoria y de procesos, esta versión tiene un rendimiento y
un nivel de respuesta altamente eficiente ante ambientes multitareas muy complejos. El
kernel 2.6 responde mucho más rápido que su antecesor.
Hay que tomar en cuenta que cuando el número Y es impar, se trata de un kernel de
pruebas, altamente inestable y no apto para la producción. En cambio, si el número es
par se trata de un kernel estable. Para el futuro proximo, Linus Torvald ha decidido que
este número ya no tenga ningún valor respecto a la estabilidad o no de un kernel. Es
decir que posiblemente el kernel 2.7 sea tan estable como un kernel 2.6.
El último número (Z) solamente indica un cambio cosmético con respecto al anterior
(Z-1). Los cambios que se dan en estas versiones pueden ser correcciones de seguridad,
adiciones de nuevo hardware, mejoras en drivers, etc. El cambio en un número Z,
normalmente no implica que con este kernel deje de funcionar ningún hardware ni
INTRODUCCION AL SISTEMA OPERATIVO
29
cambie ningún concepto o preconcepción respecto a otros kernels que tengan el mismo
número X.Y.
Al igual que el kernel de Linux, muchos paquetes de aplicaciones de usan la misma
numeración para sus sistemas, como por ejemplo:
•
sendmail-8.13.2
•
httpd-2.0.54
•
php-4.3.11
Pese a ello, en la numeración de estas aplicaciones no se tiene en cuenta la
características de que si el número Y es impar, se trata de una versión de prueba
inestable.
La exposición sobre los kernels y numeraciones dejaron todavía ciertas dudas, sobre
todo por qué se le llama Linux a un sistema operativo completo que contiene, no sólo el
kernel, sino también herramientas de oficina, un navegador web y miles de aplicaciones
más.. ¿Acaso eso no es Linux también?
El conferencista indicó que existe una gran diferencia entre el kernel de Linux y una
distribución de Linux, y se planificó para el siguiente día, una charla sobre las
distribuciones de Linux.
1.7. Distribuciones GNU/Linux
1.7.1. Características básicas de las distribuciones
INTRODUCCION AL SISTEMA OPERATIVO
30
La conferencia sobre las distribuciones en la escuela Mentes Libres, comenzó al
explicar que inicialmente en Linux, la totalidad de los paquetes venían en código fuente,
y había que recompilar todos y cada uno de ellos para obtener los binarios (ejecutables)
necesarios para el funcionamiento.
La labor de compilación, comentó, quizá es muy edificante para un estudiante o un
programador que no tiene compromisos con una empresa determinada, pero
definitivamente era vista como un retroceso ante otros sistemas comerciales en los
cuales se instalaba un paquete con sólo hacer doble click (piensen en Microsoft
Windows, los paquetes se instalan con sencillamente hacer doble click). Otro de los
problemas que surgieron cuando apareció Linux fue que, a la hora de desinstalar
paquetes, había muchos problemas, pues ya que no había un desinstalador, no era
cuestión de apretar un botón y desinstalar la aplicación, como se lo hace en los Sistemas
operativos comerciales. En Linux resultaba sumamente engorroso desinstalar o
actualizar una aplicación. Es por esto, indicó el conferencista, que en un principio se
dijo que Linux era para conocedores: el que no sabía compilar sus aplicaciones,
difícilmente iba a entrar al mundo de Linux.
Sin embargo, a mediados de los 90, la empresa Redhat decidió crear y distribuir sus
paquetes en formato RPM, que es el acrónimo creado de RedHat Package Manager o
Manejador de paquetes de RedHat; aunque posteriormente RedHat la renombró como:
RPM Package Manager
Los paquetes rpm han sido un paso de avance muy grande para el mundo de linux, ya
que contienen:
•
Los binarios (ejecutables) propios del paquete
INTRODUCCION AL SISTEMA OPERATIVO
31
•
Las bibliotecas (libraries) propias del paquete
•
Archivos de ayuda y documentación
•
Un ejemplo típicamente funcional de la configuración
•
Dsacndencias: esto es, qué otros paquetes rpm requiere este rpm para instalarse
De esta forma nos evitamos problemas que anteriormente ocurrían cuando se instala
un paquete que para funcionar correcta o completamente, requiere de otros.
Por ejemplo, dijo el profesor, el paquete php es un lenguaje interpretado que genera
código html y es de amplio uso en internet en estos momentos. Php tiene, entre sus
requerimientos, el que exista un servidor web (apache) instalado. Si intentáramos
instalar el rpm del paquete php sin previamente tener el paquete httpd (apache), el rpm
del php nos fallará diciendo que requiere del paquete rpm httpd para instalarse.
Entonces debemos instalar el apache primeramente que seguramente nos fallará
diciéndonos que requiere algún paquete relacionado con SSL (capa de encriptación) por
lo que deberemos instalar el mod_ssl seguramente y entonces instalar el httpd (apache)
y ahora sí: ya podemos instalar el php. php -> requiere de -> httpd -> requiere de
mod_ssl
Ahora, con los rpm no dejamos cabos sueltos. Y es una de las razones por las que ha
tenido tanta popularidad.
Pero esto no es todo: los paquetes rpm permiten además desinstalar completamente una
aplicación, pues se mantiene una lista de todos y cada uno de los ficheros de
configuración, librerías, binarios, páginas de ayuda y demás que haya instalado un
INTRODUCCION AL SISTEMA OPERATIVO
32
paquete rpm. De esta forma, al borrar un paquete rpm podemos tener la total seguridad
de que hemos eliminado todas las referencias y archivos instalados por el mismo. Esto
puede sonar natural para una persona que viene del mundo de Windows, pero un
sistema de desinstalación en linux era algo que no existía antes y que era sumamente
importante y requerido.
Al realizar la desinstalación se borran completamente TODOS Los archivos y
directorios que pertenecían al paquete y se deja, como cortesía, una copia del archivo de
configuración por si nos arrsacntimos posteriormente o queremos revisar esa
configuración. A la copia del archivo de configuración se le agrega la extensión:
.rpmsave
Otra de las ventajas de usar el manejador de paquetes es que los rpm pueden ser
actualizados:
Los rpm sobrescriben, sin ningún problema, sobre sus anteriores versiones instaladas,
sustituyendo binarios y páginas manuales, así como creando nuevos enlaces que se
requieran, pero respetando los archivos de configuración preexistentes. Esto permite
actualizar una aplicación con una versión superior sin incurrir en una tarea completa de
reconfiguración.
Sobre los rpm trabajaremos más adelante en el curso, cuando aprenderemos a
manejar rpm, recompilar paquetes, instalarlos, actualizarlos, removerlos y demás
características propias de los rpm.
INTRODUCCION AL SISTEMA OPERATIVO
33
Ante una de las preguntas del auditorio, el profesor indicó que muchas personas
lamentablemente no usan un manejador de paquetes para instalar sus aplicaciones, pues
saben cómo compilar e instalar un paquete sin tener que usar un manejador de paquetes:
sencillamente se debe obtener el ejecutable y las bibliotecas de funciones y ponerlas en
un directorio determinado y usarlas. Sin embargo, al hacer esto no caen en cuenta, dijo
el profesor, de que el proceso para actualizar o remover la aplicación será bien complejo
(quizá olvide actualizar una biblioteca y todo le falle, o quizá tenga problemas porque
los paquetes en Linux muchas veces contienen decenas, a veces cientos de archivos de
biblioteca, ejecutables, etc). Definitivamente, trabajar fuera del esquema de paquetes de
la distribución, no es recomendado.
1.7.2. Algunas distribuiciones de Linux/GNU
Como se comentó en la conferencia anterior: Linux es básicamente el kernel del sistema
operativo, la base, el que maneja todas las operaciones de entrada/salida y mantiene
saludable el manejo de memoria y asignación de recursos del procesador. Sin embargo,
debemos diferenciar bien entre el kernel de linux, y una distribución de Linux.
El profesor indicó que una distribución de linux es una colección o conjunto de
paquetes, recopilados por una empresa, normalmente con fines comerciales (vender los
CDs, vender soporte, vender cursos), en uno o varios cds o dvds. Una distribución de
GNU/Linux permite, entre otras cosas:
•
particionar el disco duro
•
definir una clave para el usuario de administrador
•
escoger los paquetes que se van instalar
INTRODUCCION AL SISTEMA OPERATIVO
•
34
instalar grupos de paquetes previamente seleccionados que sirven para funciones
de escritorio, ofimática, gráficos, multimedia, servidores, monitoreo, etc.
•
configurar elementos del sistema como es la zona horaria, el ambiente gráfico,
definir direcciones IP, etc.
Los paquetes incluidos en una distribución no son solamente del proyecto GNU, sino
que pueden ser parte de otros proyectos, con otros tipos de licenciamientos no
comerciales (licencias tipo bsd, apache, X, etc) así como paquetes comerciales (Adobe
Acrobat reader, Flash player, Real player, etc) pero que se distribuyen libremente.
Algunas personas del público preguntaron con qué objetivo se crean las distribuciones.
¿No son a la final Linux todas? ¿Por qué no una sola y basta?
El objetivo final de las empresas que realizan las distribuciones es lograr dar cierto nivel
de soporte y proveer al consumidor con actualizaciones frecuentes a su distribución.
Algunas de estas actualizaciones pueden ser gratuitas, otras pagadas.
El tiempo de vida de una distribución también puede variar; así como el soporte técnico
(que normalmente es pagado), los cursos y las certificaciones para la distribución en
cuestión.
INTRODUCCION AL SISTEMA OPERATIVO
35
Existen cientos de distribuciones, una lista de ellas puede ser observada en distroWatch,
sí: es un número increíblemente alto y que puede resultar confuso, es por eso que
debemos tomar algunas pautas para clasificar y escoger la distribución con la que
trabajaremos.
Durante la instalación de Linux en la escuela, se definió que se iba a utilizar un Linux
orientado a servidores empresariales, Linux para empresas o personas que necesitan un
servidor instalado cumpliendo seguramente las siguientes características:
•
Requerimientos de un apreciablemente alto periodo de actualizaciones, por lo
tanto, mientras más tiempo dure las actualizaciones mejor.
•
Soporte técnico
•
Estabilidad: Se necesita que todo lo que se instale sea muy estable para causar el
mínimo de tiempo caído o apagado con los consiguientes problemas para la empresa.
1.7.3. Clasificación de las distribuciones
De forma totalmente arbitraria, hemos decidido dividir las distribuciones en dos clases:
distribuciones basadas en rpm y distribuciones no basadas en rpm.
1.7.3.1. DISTRIBUCIONES BASADAS EN RPM RedHat enterprise Linux
(RHEL)
RedHat enterprise es una empresa líder en desarrollo, implementación y administración
de soluciones linux y open source para la Internet- Las aplicaciones de redhat varían
desde dispositivos embebidos hasta servidores Web seguros. RedHat fue fundado en
1994 por dos visionarios Bob Young y Marc Ewing. El código libre es la base de su
INTRODUCCION AL SISTEMA OPERATIVO
36
sistema de negocios. Redhat no sólo es el creador de la idea del rpm, para nosotros algo
fundamental que sentó bases para un rápido desarrollo del linux, sino que son los
mantenedores y hospederos de una serie de proyectos y programadores muy conocidos
para el mundo del linux. Proyectos tales como GCC (el compilador de C) y le dan
trabajo a muchos programadores como Alan Cox, uno de los desarrolladores del kernel
más importantes al momento
Al momento el producto fundamental de Redhat es el RedHat enterpise Linux. Hay tres
versiones: RHEL 2.1, RHEL3 y RHEL4 las cuales son mantenidas por un periodo de 7
años a partir de su fecha de salida al mercado. Estos periodos extendidos de soporte
(incluso se está hablando de hasta 10 años de soporte, en lugar de 7) son una de las
ventajas de usar esta distribución.
La lista de servicios de RedHat es grande, pero varios de los fuertes de ellos son:
•
Soporte técnico
•
Actualizaciones frecuentes
•
Certificaciones para trabajar en sus productos
Los productos y servicios de Redhat tienen un costo, pero el sistema operativo y los
paquetes incluidos son distribuidos con su respectivo código fuente. Redhat no permite
la utilización de su logos, marcas y de cualquier paquete comercial que hayan incluido
Una de las impresiones que podemos tener al usar una distribución de RedHat es que el
kernel que viene con esta distribución es el 2.6.9, cuando hay kernels 2.6.12 que vienen
en otras distribuciones. Es decir que técnicamente habría una diferencia de 3 números Z
entre el kernel de redhat y la última versión oficial. Sin embargo, este dato no debe
INTRODUCCION AL SISTEMA OPERATIVO
37
preocuparnos, pues redhat hace backporting, es decir que trae los arreglos y mejoras del
kernel 2.6.12 o sus predecesores, hacia su versión 2.6.9, para lograr estabilidad en
cuanto a la variación de las configuraciones y así evitar que el administrador tenga que
hacer muchas reconfiguraciones. Tomemos en cuenta que algunos administradores no
manejan 1 o 2 máquinas, sino cientos o talvez miles y, realizar cambios en una
configuración es algo sumamente penoso y que puede traer enormes pérdidas
económicas.
Los servidores de redhat enterprise linux están creados con el objetivo de ofrecer
estabilidad, y ésta es una de las maneras de lograrlas.. sin demeritar en lo absoluto que
es un sistema eficiente y actualizado.
Fedora
Fedora se convirtió desde inicios del siglo XXI en una distribución auspiciada por
redhat, un sandbox, o caja de arena, donde Redhat prueba y prepara los paquetes que
serán implementados para sus distribuciones comercialmente soportadas (RHEL).
Fedora básicamente contiene una serie de paquetes de última generación que son
planteados, propuestos en sus distribuciones para que los interesados puedan probarlos
y reportar problemas. Fedora lanza un nuevo core (así llaman a sus distribuciones,
core1, core2, core3, core4, etc) cada 10 a 12 meses luego se compromete a actualizar
solamente las dos últimas versiones. Es decir que ahora que salió Fedora core4, se han
dejado de actualizar el core2 y core1.
INTRODUCCION AL SISTEMA OPERATIVO
38
Ventajas:
•
Los paquetes son muy actualizados
•
Por el corto ciclo de vida de las distribuciones, hay nuevos paquetes
constantemente
Desventajas:
•
Son propensos a fallar inexplicablemente o a fallar con una causa conocida, ya
que muchos de ellos son experimentales y sin mucho periodo de prueba.
•
Fedora no se compromete a arreglar un paquete aunque lo intenta arreglar, de ser
posible.
•
si una empresa necesita mantenerse actualizada para prevenir ataques, deberá
cambiar constantemente de core de fedora, lo que genera tiempos en los cuales el
servidor estará apagado el servidor, surgimiento de nuevos y posiblemente
desconocidos problemas, etc.
Fedora es una muy buena distribución para las personas que requieran experimentar con
lo último del mercado y que no necesiten de mucha estabilidad, como por ejemplo
desarrolladores o estudiantes.
Existen empresas que necesitan un servicio estable, con actualizaciones por largos
periodos de tiempo y que no pueden o no quieren pagar por el servicio de
actualizaciones de Redhat. ¿Qué hacer?
INTRODUCCION AL SISTEMA OPERATIVO
39
Clones de RedHat (Centos, Mandriva,Suse)
Redhat nos da solo dos opciones: distribuye su versión empresarial pero cobra por las
actualizaciones y por usar su logo (RHEL) o lanza una versión en desarrollo para que
los usuarios experimenten con ella mientras (Fedora)
Existen empresas que necesitan un servicio estable, con actualizaciones por largos
periodos de tiempo y que no pueden o no quieren pagar por el servicio de
actualizaciones de redhat. Para ello han surgido alternativas gratuitas o menos costosas,
gracias al código GNU y otros códigos no comerciales.
Redhat, al usar código GNU, está obligado a liberar el código fuente. Pero redhat no
sólo libera el código gnu que incluye en su distribución, sino que también distribuye, en
formato src.rpm (SRPM, Source RPM o las fuentes del rpm), la forma exacta en que ha
compilado TODOS los paquetes que tienen código libre, ya sean estos GNU o no. Por
ello, cualquiera puede tomar los SRPMS que libera redhat y recopilarlos de la forma
exacta (clon) en que redhat lo hizo. De esta forma obtendrá los paquetes rpm, con los
binarios y archivos de configuración exactos que redhat entrega en su distribución.
Entre los clones de redhat, CentOS es el más activo en lo referente a su periodo de
actualizaciones, soporte por parte de sus fabricantes y por la sólida comunidad que le
rodea. Sus fabricantes no sólo copian la información Redhat, sino que crean
distribuciones para nuevas arquitecturas no soportadas por redhat.
INTRODUCCION AL SISTEMA OPERATIVO
40
Es precisamente Centos, en su versión 5 el que estudiaremos en este curso, de forma tal
de que se tenga un conocimiento completo sobre cómo funciona un servidor
RedHat Enterprise Linux y se pueda definir si se va a adquirir una licencia de uso del
RHEL o si se prefiere seguir usando el Centos. Ambas variantes son válidas para
comenzar.
Mandriva Linux (antiguamente conocido como MandrakeLinux) fue creada en 1998,
con el objetivo de lograr que cualquier persona sea capaz de usar Linux. En aquellos
momentos Linux era bien conocido como un sistema operativo poderoso y estable que
demandaba muy sólidos conocimientos técnicos y un uso extensivo de línea de
comando. Mandrake vió la oportunidad de integrar el ambiente gráfico con poderosas
utilerías de configuración y manejo del sistema. Con esta idea innovadora Mandriva
ofrece todo el poder y estabilidad de un sistema Linux, tanto a personas profesionales y
conocedoras de Linux, como a principiantes o personas sin mayores conocimientos
técnicos, pero con interés en usar Linux para realizar sus labores. Mandriva es una muy
buena distribución orientada al ambiente gráfico.
SUSE LINUX se cataloga como líder internacional y proveedor de soluciones en
sistemas operativos de código abierto. La larga experiencia de suse en Linux y además
su enorme cantidad de personas dedicadas a desarrollar en código abierto han
contribuido indudablemente en reconocer a suse como una de las soluciones de Linux
más completas disponibles al momento. SUSE LINUX fue adquirido por Novell, Inc en
Noviembre del 2003.
1.7.3.2. DISTRIBUCIONES NO BASADAS EN RPM
INTRODUCCION AL SISTEMA OPERATIVO
41
Aunque hay un gran número de distribuciones no basadas en rpm, sólo hablaremos de
las más importantes.
El proyecto Debian es una sociedad de personas que han hecho causa común para crear
un sistema operativo gratuito. Debian se caracteriza por ser totalmente gratuito, sin
organizaciones que los mantengan y con una amplia cobertura de plataformas, tanto
populares como ya obsoletas o muy nuevas.
Hay algunas dificultades que está enfrentando Debian: hay una ausencia de soporte
comercial (requerido por muchos clientes), las nuevas versiones y las actualizaciones se
liberan con mucha lentitud y además hay conflictos internos dentro del grupo de
desarrolladores.
Muchas personas adoran a Debian, lo califican como altamente adictivo, sobre todo
programadores, o investigadores, o simplemente partidarios del software totalmente
libre.
Gentoo es una distribución que tiene características interesantes: además de ser gratuita
y libre, es una distribución que puede adecuarse completamente a la máquina en que se
instala. Es decir que cuando hacemos una instalación, se pueden mandar a instalar
solamente los paquetes que requeriremos, ni más ni menos, y estos paquetes podemos
descargarlos de Internet, desde su sitio Web, y recopilarlos de acuerdo al hardware o
plataforma en que vayamos a instalar.
Gentoo además no tiene distribuciones propiamente dichas: se puede instalar desde
cualquier cd de arranque de gentoo, él mismo se encargará de bajar el código fuente de
todos los paquetes requeridos desde la Internet, y este código por supuesto será de la
última versión disponible en Internet, es decir, gentoo siempre bajará y compilará el
INTRODUCCION AL SISTEMA OPERATIVO
42
último cógido que tenga disponible en Internet, por lo que no es necesario instalar
nuevas distribuciones pasado un tiempo.
Es muy interesante para experimentadores y es una distribución muy popular entre
personas que realmente quieren comprender cómo funciona Linux y que se interesan
por su desempeño. Sin embargo, es un tanto complicado cuando ocurre una
actualización de un paquete que requiere cambios en la configuración, puede dejar de
funcionar todo o gran parte de la aplicación hasta que haya sido ajustada la
configuración.
Otra distribución popular es Ubuntu. Es una distribución que indica que es y
permanecerá libre. Está basada en Debian. Esta distribución ha salido adelante sobre
todo por los problemas de lentitud de Debian en actualizaciones de paquetes y mejoras,
que hacían que muchas personas se desmotivaran por usar Debian por lo viejo y
demorado de sus actualizaciones.
Mini distribuciones
Las minidistribuciones o minidistros, son distribuciones pequeñas, usualmente basadas
en un sólo CD, o CD de tamaño de una tarjeta de crédito.
No es nada raro encontrarnos con distribuciones que caben solamente en un floppy (sí,
en un floppy se puede montar un router que haga nat y firewall), o en dos o tres
floppies. También hay distros que caben en una memoria flash (pendrive) o cualquier
dispositivo USB.
No solamente son distribuciones educativas o proyectos para pasar el tiempo, sino que
muchas de ellas, como coyote Linux, permiten tener un efectivo firewall y servidor que
INTRODUCCION AL SISTEMA OPERATIVO
43
haga NAT, así como son pequeñas alternativas para levantar un sistema más grande en
caso de que haya fallado y trata de recuperar su información y echarlo a andar
nuevamente.
Hay decenas de distribuciones interesantes, como:
knoppix puppy Linux coyote Linux
Para mayor información se puede mirar en las páginas www.distrowatch.com o en
www.LinuxCd.org.
Distribuciones educativas
Una de las distribuciones más interesantes es Linux From Scratch, más que educativa en
el sentido general podemos indicar que es una distribución que enseña cómo realizar
una distribución desde cero. Cómo recompilar e instalar un sistema operativo
compilando paquete por paquete e instalándolos. Así que nos enseña básicamente cómo
instalar Linux sin tener que usar ninguna distribución.
Los CD Vivo o Live CD
Son CDs o DVDs que no requieren instalación. Traen conjuntos de programas
seleccionados para que funcionen al arrancar directamente desde un CD o DVD. No
tienen ni la velocidad ni toda la funcionalidad de los programas instalados en el disco
duro, pero son una excelente alternativa para probar una distribución, para
familiarizarse con Linux y para aprendizaje del sistema Linux o de sus programas.
INTRODUCCION AL SISTEMA OPERATIVO
44
Aquí hay varias docenas de CDs / DVDs que pueden ser descargados. Pero se necesitará
un ancho de banda no disponible en el CEC-EPN. Para ver una amplia lista de
esta
distribuciones se puede mirar en
http://www.frozentech.com/content/livecd.php
Además, hay miles de programas y aplicaciones para Linux (y para Windows) que están
desarrollados o que están en desarrollo. Se puede encontrar una buena cantidad en las
páginas
www.sourceforge.net
www.freshmeat.com
En conclusión:
El profesor resumió la charla indicando que como es claramente visible: Linux es una
enorme fuerza en el planeta tierra. Una fuerza que no tiene retorno. Como se puede
apreciar en los links arriba indicados, existen miles, tal vez millones de personas
trabajando de una u otra manera para mejorar Linux y agregar programas (y facilidades)
a su ya extensa lista.
Lo interesante de Linux es que se basa en la cooperación de la comunidad y no en la
competencia o el secretismo.
1.7.4. El árbol de directorio de Linux
Un tema fundamental que se necesita conocer previo a la instalación de Linux, es cómo
se estructura el directorio de Linux. El personal encargado de la instalación y
mantenimiento de la red en la escuela realizó los siguientes procedimientos:
INTRODUCCION AL SISTEMA OPERATIVO
45
Al examinar el contenido de nuestro disco duro mediante cualquiera de las utilidades
gráficas de que dispone nuestra distribución de GNU/Linux, se dieron cuenta de que
existen muchos directorios cuyo nombre no les sonó conocido en comparación con los
sistemas de Microsoft.
También observaron que los directorios utilizan el caracter / en lugar del caracter \ para
referirse a una ruta de subdirectorios anidados.
Otra de las diferencias que encontró el grupo de investigación de la escuela Mentes
Libres fue que en Linux se llama Directorio a lo que en Windows se conoce como
Carpeta o Fólder. De igual manera hay que tener en cuenta, advirtieron en su
conferencia, que Linux, en relación a Windows, diferencia las mayúsculas de las
minúsculas en los nombres de los archivos. Es decir que para Linux los archivos ABC y
abc son dos archivos diferentes, mientras que para Windows sería uno solo.
Desde el punto de vista del usuario, en GNU/Linux existen dos tipos de directorios: los
directorios del sistema, que contienen ejecutables, bibliotecas del sistema,
configuraciones, manuales, etc. y los directorios del usuario que contienen datos
específicos de cada usuario.
1.7.4.1. Directorios del Sistema
Los directorios del sistema son aquellos en los que se guardan todos los archivos que
componen nuestro sistema operativo GNU/Linux.
Comprendieron que era de capital importancia que ningún usuario que no disponga de
los permisos adecuados pueda acceder a los archivos que componen el sistema, ya que,
de lo contrario, un usuario inexperto (por ejemplo) podría modificarlos o eliminarlos y
hacer que todo el sistema se volviera inestable, o incluso inutilizable (como es el caso
de los sistemas de Microsoft, donde la mera activación de un virus por parte de un
INTRODUCCION AL SISTEMA OPERATIVO
46
usuario determinado vulnera la totalidad del sistema operativo y la seguridad y
privacidad de los datos del resto de usuarios).
Encontraron entonces los siguientes directorios del sistema, lo escribieron en forma de
árbol para poder recordarlo:
La estructura básica del sistema Linux comienza por el directorio raíz (root) que se
describe con el signo /, a diferencia de Windows donde el directorio raíz es \.
El directorio /boot contiene la información necesaria para poder arrancar nuestro
sistema GNU/Linux. Entre otros archivos, aquí se encuentran los núcleos que se pueden
iniciar (normalmente se trata de archivos con un nombre similar a vmlinuz-x.y.z).
En /etc Este directorio contiene todos los archivos de configuración de nuestro sistema
GNU/Linux (como el archivo passwd, que contiene una lista con los nombres de
usuario y contraseñas, o el archivo fstab, que contiene una lista con los puntos donde se
han montado las diferentes particiones y los sistemas de archivos que utilizan). También
podemos encontrar los archivos que almacenan los archivos que indican cómo y cuándo
debe levantarse un servicio, qué zona horaria tenemos, y muchísimos archivos de
configuración más. El directorio /etc contiene mayormente archivos de textos que
pueden ser leídos y contienen mucha explicación sobre cómo realizar cambios y la
utilidad de estos archivos.
En el directorio /bin tenemos programas ejecutables (también llamados binarios) que
forman parte del sistema operativo GNU/Linux. Estos comandos pueden ser usados por
cualquier usuario y son relativos a la consola.
El directorio /sbin contiene Contienen programas ejecutables (también llamados
binarios) que forman parte del sistema operativo GNU/Linux. Estos comandos son
relativos a los sistemas de archivos, particiones e inicio del sistema, y solo pueden ser
usados por el administrador.
INTRODUCCION AL SISTEMA OPERATIVO
47
El directorio /lib contiene las bibliotecas (o librerías) del sistema que son necesarias
durante el inicio del mismo. Estas bibliotecas son análogas a los archivos DLL de
Windows. Su ventaja reside en que no es necesario integrar su código en los programas
que las usan, ya que cuando un programa necesita alguna de sus funciones, se carga la
biblioteca en la memoria y puede ser usada por cualquier otro programa que la necesite,
sin necesidad de volver a cargarla en memoria. Un subdirectorio especial es
/lib/modules, que contiene los módulos del núcleo (normalmente se trata de
controladores de dispositivos) que se cargan únicamente en caso de que haga falta usar
un determinado dispositivo, por lo que no estarán permanentemente ocupando memoria
contiene las bibliotecas del sistema. Este directorio normalmente no debe ser tocado, no
hay mucha información extraíble de ella y no debemos tocar nada, a no ser que
realmente conozcamos lo que estamos haciendo.
/mnt Este directorio es típico de las distribuciones RedHat, aunque puede no estar
presente en otras distribuciones. Su misión consiste en agrupar en un mismo lugar los
puntos de montaje de diversas particiones externas, como por ejemplo: CD-ROM,
DVD, disqueteras, unidades ZIP, particiones de MS-Windows y de otros sistemas
operativos, etc. Este directorio contiene un subdirectorio adicional para cada una de
estas particiones (como /mnt/cdrom, /mnt/win_c, /mnt/floppy o /mnt/zip). Si accedemos
a estos subdirectorios estaremos accediendo realmente a esas particiones.
En /usr su nombre proviene de user (usuario) y, como tal, contiene una réplica de otros
directorios de nuestro sistema GNU/Linux pero orientados al usuario en lugar de al
propio sistema. Este directorio se puede compartir en una red local, pero su contenido es
estático. Aquí van las aplicaciones del usuario, digamos, los binarios que no son
requeridos para que la base del sistema funcione: servidores como el apache, sendmail,
vsftp, sistemas de análisis de logs, herramientas de firewall, sistema de ambiente
INTRODUCCION AL SISTEMA OPERATIVO
48
gráfico; en fin: cualquier aplicación que, aunque sea muy útil, no es imprescindible para
cuando tenemos una emergencia y debemos arrancar básicamente el sistema. Éste
directorio tiene una estructura similar al directorio raíz /, ya que contiene un directorio
bin/, sbin/, etc/, donde se guardan los binarios y archivos de configuración no
imprescindibles para un arranque de emergencia y que son elementos agregados por el
usuario (nosotros) a la hora de instalar el sistema operativo y durante el tiempo de vida
del sistema.
En el directorio /opt están paquetes de software adicionales, como por ejemplo los
sistemas de escritorio gráficos conocidos como KDE o GNOME. Algunas
distribuciones no hacen uso de él.
/var procede de variable, y ésa es la naturaleza de la información que contienen sus
subdirectorios y archivos. Aquí se encuentran las colas de impresión (en /var/spool/lpd),
correo electrónico que todavía no se ha recogido (en /var/spool/mail) o enviado (en
/var/spool/mqueue), o archivos de registro creados por los distintos procesos de nuestro
sistema (en /var/log). Éstos son datos que eventualmente ingresarán al sistema, pero que
pueden ser eliminados por la aplicación que los usa, o sencillamente el usuario mismo
se encargará de procesarlos.
El directorio /tmp contiene diversos archivos temporales que son usados por distintos
programas de nuestro sistema
El directorio /dev contiene archivos de dispositivos que permiten la comunicación con
los distintos elementos hardware que tengamos instalados en nuestro sistema. Entre los
distintos dispositivos que aquí podemos encontrar están los discos duros (como /dev/hda
o /dev/sda), las particiones de los discos duros (como por ejemplo /dev/hda1 o
INTRODUCCION AL SISTEMA OPERATIVO
49
/dev/sda4), las unidades de CD-ROM SCSI (como /dev/scd0) y los vínculos a cualquier
tipo de unidad de CD-ROM (como /dev/cdrom), las disqueteras (como /dev/fd0), las
impresoras (como /dev/lp0), los puertos serie (como /dev/ttyS0 o /dev/cua0), el puerto
PS/2 (/dev/psaux) y las tarjetas de sonido (como /dev/audio).
El directorio /proc contiene los archivos del sistema de archivos de proceso. No son
verdaderos archivos, sino una forma de acceder a las propiedades de los distintos
procesos que se están ejecutando en nuestro sistema. Para cada proceso en marcha
existe un subdirectorio /proc/<número de proceso con información sobre él. Contiene
información útil que nos brinda el kernel y, podemos realizar ajustes y cambios al
kernel; cambiar parámetros del protocolo tcpip, verificar el uso de la memoria y del
procesador, ver la cantidad de procesos que se están ejecutando, ver y quién ejecuta los
procesos, además de decenas de parámetros interesantes del kernel.
/root es el directorio personal del usuario root o superusuario. Contiene básicamente la
misma información que los directorios personales de los distintos usuarios del sistema,
pero orientada única y exclusivamente al usuario root.
En /home residen los directorios de los distintos usuarios del sistema, excepto el del
usuario root, que se encuentra en el directorio especial /root. Este directorio es opcional,
aunque está presente en casi todas las distribucionesse crean las carpetas de los usuarios.
Al crear un usuario, el sistema Linux asigna un directorio raíz o base para este usuario,
donde él podrá escribir y guardar su información. Estos directorios normalmente se
crean dentro de /home y tienen como nombre el nombre del usurario (/home/pedro,
/home/magda, /home/joel, etc). Para el usuario administrador del sistema (root) el
directorio base no está en /home sino en /root, como lo vimos.
1.7.4.1.1. La jerarquía /etc
INTRODUCCION AL SISTEMA OPERATIVO
50
El directorio /etc, como vimos, contiene varios distintos subdirectorios que se utilizan
para la configuración de determinados componentes de nuestro sistema: /etc/opt,
contiene los archivos de configuración para el software instalado en el directorio /opt.
Cada paquete de software tendrá su correspondiente subdirectorio dentro de /etc/opt.
/etc/X11 contiene los archivos de configuración del entorno gráfico X Window, que es la
base de los sistemas de escritorio gráficos como el KDE o GNOME. Entre otras cosas,
contiene los gestores de ventanas y de arranque de los distintos escritorios gráficos. Este
directorio es opcional.
/etc/sgml contiene los archivos de configuración para SGML y XML. Este directorio es
opcional.
1.7.4.1.2. La Jerarquía /usr
Este directorio contiene distintos subdirectorios:
/usr/bin contiene casi la totalidad de los comandos que un usuario puede necesitar.
/usr/include alberga los archivos de cabeceras (headers) usados por los programas
escritos en el lenguaje C.
/usr/lib contiene las bibliotecas de usuario.
/usr/local contiene la jerarquía local de usuario, con los subdirectorios típicos /bin,
/include, /lib, /sbin, etc. Luego la instalación de un sistema GNU/Linux, este directorio
estará vacío y se irá llenando paulatinamente a medida que se vayan instalando nuevos
paquetes.
/usr/sbin contiene los archivos binarios (ejecutables) no vitales del sistema usados por
el administrador.
/usr/share contiene archivos de datos indsacndientes de la arquitectura del sistema,
como documentación, howtos, etc. Aquí se encontrar los subdirectorios /man (que
contiene manuales de programas) y /misc (que contiene diversos datos indsacndientes
INTRODUCCION AL SISTEMA OPERATIVO
51
de la arquitectura). También se pueden encontrar los subdirectorios /dict, /doc, /games,
/info, /lócale, /smgl, zoneinfo, etc.
/usr/X11R6 incluye todos los programas que componen el entorno gráfico X Window
(binarios, bibliotecas y páginas man, por lo que encontraremos directorios como
/usr/X11R6/bin /usr/X11R6/lib y /usr/X11R6/man). Este directorio es opcional.
/usr/games contiene los archivos binarios de muchos juegos y programas educativos.
Este directorio es opcional.
/usr/src contiene el código fuente del núcleo de GNU/Linux. Este directorio es
opcional.
/usr/local: como en el resto de sistemas operativos UNIX, GNU/Linux está diseñado
para ser usado en entornos de red, por lo que es bastante frecuente que el directorio /usr
no se encuentre en el ordenador local, sino en un servidor. Por ello, el directorio
/usr/local está destinado a contener el software que se instale localmente en cada
ordenador, y contiene subdirectorios similares a los que se puede encontrar bajo /usr
(como
/usr/local/bin,
/usr/local/sbin,
/usr/local/lib,
/usr/local/man,
etc.).
Adicionalmente, encontraremos un directorio /usr/local/etc con idéntica funcionalidad
al directorio /etc. Aunque use su ordenador de forma aislada y no en un entorno de red,
este es el directorio en el que debería instalar sus programas.
1.7.4.1.3. La Jerarquía /var
Este directorio también posee una estructura típica de subdirectorios:
/var/cache contiene datos de aplicaciones en cache, como archivos del servidor web
y páginas de manual.
/var/lib tiene información de estado variable.
/var/log incluye registros creados por diversos programas y por el propio sistema
operativo.
INTRODUCCION AL SISTEMA OPERATIVO
52
/var/run contiene datos relevantes para algunos procesos que se están ejecutando.
/var/spool alberga datos que están en cola de diversas aplicaciones, como correo
electrónico del sistema y colas de impresión.
/var/tmp contiene datos temporales que deben ser preservados entre reinicios del
sistema.
1.7.4.2. Los directorios de usuario.
En un sistema GNU/Linux, cada usuario dispone de su propio directorio personal donde
puede guardar los documentos creados por él con los distintos programas. Este
directorio personal puede ser de acceso exclusivo para cada usuario, por lo que ningún
otro usuario podrá entrar en él y visualizar el contenido de los archivos que contiene
(aunque esto dsacnde del nivel de seguridad seleccionado durante la instalación del
sistema, ya que lo normal suele ser que el resto de usuarios puedan entrar en él y ver el
contenido de algunos archivos y subdirectorios, pero no modificarlos).
Los directorios personales están ubicados en /home/<nombre de usuario>. El usuario
root sí dispone de los permisos suficientes para acceder a los directorios personales del
resto de usuarios.
1.7.4.3. Otros directorios
Algunas distribuciones hacen uso de otros directorios adicionales que suelen montar en
el directorio raíz:
INTRODUCCION AL SISTEMA OPERATIVO
53
/media es un directorio análogo al estándar /mnt, y contiene los puntos de montaje de
los dispositivos extraíbles.
Con los datos que se nos han explicado aquí, el ciclo de conferencias explicativas de
Linux terminó. Ahora, el siguiente objetivo es que aprendamos el funcionamiento
básico del Sistema Operativo Linux, así como su correcta instalación. Estos puntos se
verán en los temas posteriores.
II. COMANDOS BASICOS E
INSTALACION DEL
SISTEMA OPERATIVO
LINUX
2.
COMANDOS BASICOS E INSTALACION DEL SISTEMA OPERATIVO
2.1. Comandos
2.1.1. Comandos Basicos
Ya en el shell es importante ejecutar el comando: pwd
pwd viene de Present Working Directory, indica en qué directorio se está
posicionado.
así
Al ejecutarlo solamente saldrá: /home/dsl
Esto significa que el usuario está en el directorio /home/dsl.
Éste es uno de comandos más fáciles de encontrar, pero ¿qué hacer si se quiere cambiar de
directorio?
Pues solo se debe ejecutar el comando cd, que significa Change Directory.
El comando cd puede llevar opcionalmente un parámetro, que es el directorio al que se
queremos cambiar; por ejemplo si se quiero cambiar al directorio /etc se pondría:
cd /etc
Al hacerlo es importante que el usuario verifique en que directorio está, con el comando pwd.
[dsl@sac -]$ cd /etc
[dsl@sac etc]$ [dsl@sac
etc]$ [dsl@sac etc]s pwd
/etc
[dsl@sac etc]$ [dsl@sac
etc]$ |
El shell tiene una muy útil opción que se debe usar, se trata del autocompletamiento. Con esta
opción el shell permite completar los nombres de comandos, directorios y/o archivos con tan
sólo escribir la primera parte de ellos y luego apretar TAB.
Se puede intentar un ejercicio al cambiar de directorio a /var, para ello se debe seguir estos
pasos:
1. escribir cd /v
2. apretar la tecla TAB
3. verificar que en efecto se completa el comando (se verá: cd /var)
El usuario deberá cambiar de directorio usando el comando cd y la opción de
autocompletamiento:
/var/spool/mail
/etc
/home
/etc/X11
/usr/share/doc/
Si es que el shell tuviera más de una opción no se dará el autocompletamiento a menos que se
apriete TAB dos veces, para que dé opciones, por ejemplo:
1.
cd /usr/s
2.
apretar TAB
3.
el shell no nos da ninguna respuesta
4.
apretar nuevamente TAB (es la segunda vez)
5. Aparecerán varias opciones (sbin/ share/ src/)
6. Esto ocurre porque varios archivos o directorios comienzan con s, se puede completar,
por ejemplo, escribiendo la b (/usr/sb)
[dsl@sac ~]$ cd /usr/s sbin/
share/ src/ [dsl@sac -]$ cd
/usr/sbin/[]
7. Apretar TAB de nuevo
8. Entonces sí se completará a /usr/sbin
Es necesario que se experimente con la opción de autocompletamiento hasta comprenderla. El
usuario debería dedicarse, por lo tanto, 10 minutos a probar el cambio de directorios usando
autocompletar.
Una vez que el usuario maneje sin problemas esta opción, deberá regresar al comando cd y a
algunas opciones que se presentan.
Entonces deberá ejecutar el siguiente conjunto de comandos:
•
cd /var/spool/mail
•
pwd
•
cd /usr/share/doc
•
pwd
•
cd -
•
pwd
[dsl@sac ~]$ cd /var/spool/mail/ [dsl@sac
mail]s [dsl@sac mail]S pwd
/var/spool/mail [dsl@sac mail]s
[dsl@sac mail]$ cd /usr/share/doc/
[dsl@sac doc]s
[dsl@sac doc]s pwd
/usr/share/doc
[dsl@sac doc]s
[dsl@sac doc]$ cd /var/spool/mail
[dsl@sac mail]s
[dsl@sac mail]s pwd
/var/spool/mail
[dsl@sac mail]$ |
El último comando "cd -" hizo que se regresara al directorio inmediatamente
anterior: en este ejemplo será a /var/spool/mail.
Es decir que cd - le ahorra al usuario teclear todo el camino para regresar al directorio en el
que se encontrábamos antes.
Es posible probar otra opción: cd •
ejecutar cd
Al ejecutar solamente cd, sin ninguna variable, se regresa al homedir del usuario (en el ejemplo
será a /home/dsl
[dsl@sac
[dsl@sac
[dsl@sac
'home/dsl
mail]$ cd
-]$
-]$ pwd
Siempre es recomendable que al acabar cualquier acción en el shell se ejecute cd. Se debe
hacer de forma automática, mecánica. El objetivo es que cualquier operación (bajar un archivo,
borrarlo, editarlo) se realice desde el homedir del usuario para evitar lo que suele ocurrir
cuando los usuarios bajan archivos sin saber donde están posicionados en el directorio y los
pierden.
2.1.2. Comandos para Listar archivos y directorios
El comando ls es el adecuado para listar archivos (ls=/ist o listing).
Si se teclea solamente el comando ls el shell listará los contenidos del directorio donde se está
posicionado:
•
cd /var/log
•
ls
Es decir, se cambiará a /var/log y se listarán sus contenidos, aparecerá algo así:
Como se ve, /var/log existen varios archivos (aparecen en blanco) y varios
directorios (que aparecen en color azul oscuro).
Linux es sensitivo al tamaño de letra. Para Linux, como se vio antes, no es lo mismo /var/log
que /Var/Log ni que /VAr/lOg.
Si por error se teclea /Var/log aparecería un mensaje de error. Este mensaje aparecerá siempre
que haya un error en el comando que se esté utilizando. Estos mensajes son los que ayudarán
a determinar por qué algo no funciona.
Si se quiere ver el listado de otro directorio no es necesario que primero se vaya al directorio en
cuestión con el comando cd. El comando ls permite que le indiquemos el directorio que
queremos ver. Por ejemplo, si estamos en otro directorio y queremos ver /var/log, sencillamente
ponemos:
• ls /var/log
[dsl@sac -
]
$
Is /var/log/
acpid
rpmpkgs
anaconda.log
cron
maillog
anaconda.syslog
cron.1
maillog.1
anaconda.xlog
boot.log
[dsl@sac -
wt np
Xorg.0.log
mcelog
scrollkesacr.log
Xorg.0.log.oíd
críese
messages
secure
yum.log
faillog
messages.1
secure. 1
yum.log.1
boot.log.1
btmp
rpmpkgs.1
spooler
lastlog
spooler. 1 tallylog
]* 1
Con este comando, shell listó el directorio /var/log, pero no se tuvo que cambiar de directorio.
Como regla general se sugiere tratar de cambiar de directorios lo menos posible. Siempre es
bueno trabajar con rutas absolutas (es decir, comenzar todos los directorios con /). En
resumen: siempre se debe tratar de estar en el homedir (como se explicó antes, con el
comando cd el usuario se asegura de aquello) y hacer todo desde ese directorio. Para acceder
a otros archivos o directorios se usan rutas absolutas (/etc, /var, /etc, etc)
El comando ls (al igual que otros comandos) permite usar switches, que son parámetros
adicionales que se pueden poner al comando. A continuación se verá el uso de algunos
switches:
ls -l permite realizar un listado extendido (l=long), de tal forma que se puedan apreciar las
propiedades de los archivos y directorios.
Por ejemplo:
• ls -l /var/log
Aparecerá algo así:
[dsl@sac
: ■]s
- ls
-l . fvar/log/
total 4660
-rwr- rw—
1 root root
46897 Feb
1 root root
671900 Feb
1 root root
2303B Feb
1 root root
43568 Feb
d rwx x --- 2 root root
r- rw—
1 root root
4096 Feb
- rw—
1 root root
1751 Feb
1 root utmp
2688 Feb
d rwx xr-x
rd rwx xr-x
r- rw—
2 root root
4096 Nov
2 root root
4096 Nov
1 root root
13317 Feb
- rw—
1 root root
8379 Feb
d rwx xr-x
r-rw- rr- rw—
2 IP
4096 Nov
d rwx
rd
rwx-rwrd rwx
r- rw—
- rw—
- rw—
---------
---
- rw—
-----
-----
---
- rw—
-rwr-
xr-x
sys
701 Feb
1 root root
21451 Feb
1 root root
16064 Feb
2 root root
4096 Feb
2 root root
4096 Jan
1 root root
146584 Feb
2 root root
4096 Feb
1 root root
16826 Feb
1 root root
10963 Feb
1 root root
O Feb
--- rxr-x
----- r-
7 14
:
1 13
:
1 13
:
1 13
:
1 13
:
6 13
:
2 12
:
5 17
:
11 12
:
11 12
:
£ 12
:
3 01
:
29 20
:
7 14
:
S ÍO
:
7 14
:
15 20
:
S ÍO
:
1 13
:
S 04
:
3 01
:
1 19
:
09 acpld
15 anaconda
. log
15 anaconda
.
syslog
. xlog
15 anaconda
16
57 boot.log
05 boot.log
. 1
24 btmp
01
01
01 cron
31 cron.1
36
08 críese
12 faillog
09
36
12 lastlog
04
03 maillog
33 maillog.
01 mcelog
1
Como se puede observar, el switch -l permite ver la información detallada del directorio en
cuestión. La información aparece en 9 columnas. La información que aparece en las primeras 4
se tratará posteriormente. La información que aparece en las últimas 5 columnas permite ver:
•
El tamaño.
•
La fecha y hora de la modificación del archivo o directorio
•
El nombre del archivo o directorio
Por ejemplo:
10963 Feb 3 01:33 maillog. 1
Significa que el archivo se llama maillog.1, fue modificado el 3 de febrero a la 1:33AM y tiene
un tamaño de 10963 bytes
Como se puede ver, el tamaño del archivo aparece medido en bytes, lo que dificulta la
interpretación del dato, debido a la costumbre de los usuarios de medir el tamaño de los
archivos no en bytes, sino en kbytes, mbytes o gbytes. Si se quisiera ver el tamaño en kbytes,
mbytes, gbytes se podría agregar un switch llamado -h : Human Readable (Legible por el
humano).
A continuación un ejemplo: • ls -lh
/var/log
Mostrará la siguiente información:
[dsl@sac
: ■]s
- ls
-lh
/var/log/
total 4.6M
-rw-r ..... 1 root root
46K
Feb
- rw ------ 1 root root
657K
Feb
- rw ------ 1 root root
23K
Feb
- rw ------ 1 root root
43K
Feb
d rwx r-x — 2 root root
4.0K
Feb
- rw ------ 1 root root
701
Feb
- rw ------ 1 root root
1.8K
Feb
- rw ------ 1 root utmp
2.7K
Feb
d rwx r-x
r-x
d rwx r-x
r-x
2 root root
4.QK
Nov
2 root root
4.0K
Nov
7 14
:
1 13
:
1 13
:
1 13
:
1 13
:
6 13
:
2 12
:
5 17
:
11 12
:
11 12
:
09 acpld
15 anaconda
. log
15 anaconda
.
syslog
. xlog
15 anaconda
16
57 boot.log
05 boot.log
24 btmp
01
01
. 1
- rw ------ 1 root root
14K
Feb
- rw ------ 1 root root
8.2K
Feb
d rwx r-x
2 IP
sys
r-x
- rw-r--r- 1 root root
- rw ------ 1 root root
4.0K
Nov
21K
Feb
16K
Feb
d rwx r-x
2 root root
r-x
d rwx ..... 2 root root
4.QK
Feb
4.QK
Jan
d
-
1 root root
144K
Feb
rwx r-x r 2 root root
x
rw ------ 1 root root
4.0K
Feb
17K
Feb
- rw ------ 1 root root
11K
Feb
- rw-r--r-- 1 root root
0
Feb
rw-r--r-
£ 12 01 cron
:
3 01
:
29 20
:
7 14
:
S 10
:
7 14
:
15 20
:
S 10
:
1 13
:
S 04
:
3 01
:
1 19
:
31 cron.1
36
08 críese
12 faillog
09
36
12 lastlog
04
03 maillog
33 maillog.
1
01 mcelog
La diferencia es sutil pero definitivamente es más cómodo de leer.
Otro switch de interés es -S, el cual permite ordenar los archivos de acuerdo a su tamaño, de
mayor a menor.
Ejemplo:
•
ls -lS
o
•
ls -ISh
A partir de lo anterior se obtendrá lo siguiente:
[dsl@sac
-
]$
ls
-ISh /var/log/
total
.6M
4
- rw --
1 root root
1.6M Feb
- rw
1 root root
843K Feb
- rwrrw- rw --
1 root utmp
759K Feb
—
1 root root
657K Feb
- rwr- - rw-
rr-
1 root root
144K Feb
1 root root
115K Feb
—
-—
S 14
:
3 01
:
S 14
:
1 13
:
S 10
:
6 19
:5 messages
0
26 messages.1
:4
6 wtnp
15 anaconda.log
:1 lastlog
2
:5 scrollkesacr.log
r- - rw --
—
1 root root
- rwr- - rwr- - rwr- - rw --
—
1 root root
46K Feb
rr-
1 root root
44K Feb
1 root root
44K Feb
—
1 root root
43K Feb
- rwr- - rwr- - rwr- - rw --
rrr-
1 root root
40K Feb
1 root root
40K Feb
1 root root
37K Feb
—
1 root root
23K Feb
- rwrr- - rw --
1 root root
21K Feb
1 root root
21K Feb
- rw
1 root root
17K Feb
—
1 root root
16K Feb
- rw --
1 root root
14K Feb
- rw
—
-—
1 root root
11K Feb
—
-—
- rw --
49K Feb
:
S 12
:
4
:0 secure
7
7 14
:
S 12
:
7 14
:
1 13
:
19
:
2 11
:
S 04
:
1 13
:
:0
9
:4
6
:0
7
15
acpid
:5
4
:
11
:0
3
15
yum. log.1
7 14
:
3 00
:
S 04
:
S 1G
:
£ 14
:
3 01
:
:0 dmesg
8
27 secure.1
Xorg.0.log
Xorg.0.log.oíd
anaconda.xlog
rpmpkgs.1
rpmpkgs
anaconda.syslog
:0 maillog
3
12 faillog
:0 cron
1
:3 maillog.1
3
Shell ordena los archivos y directorios por tamaño de forma descendente.
Si se quisiera ordenar de forma ascendente se agrega el switch -r (reverse order). Es
importante saber que el orden de los switches no importa. Ejemplo:
ls -lShr
Se obtendrá una pantalla similar a la del siguiente gráfico:
[dsl@sac -
-]S
is
-IShr
/var/log/
total 4.6M
- rw—
------ 1 root
root
0 Feb
1 13
05 tallylog
- rw—
------ 1 root
root
0 Feb
1 13
04 spooler.1
- rw—
------ 1 root
root
0 Feb
3 01
33 spooler
-rw- - r- 1 root
r- rw— ------ 1 root
root
0 Feb
1 19
01 mcelog
root
50 Feb
S 09
30 yum.log
- rw—
- rw—
root
701 Feb
root 1 .8 Feb
K
utmp 2 .7 Feb
K
root 4 .0 Mar
K
6 13
2 12
57 boot.log
05 boot. log.
1
24 btmp
- rw—
------ 1 root
-----------
1 root
1 root
drwxr xr-x 2 root
-
5 17
14
2007
drwxdrwxr
drwxdrwxr
drwxr
drwxdrwxr
drwxr
drwxr
drwxr
drwxr
- rw—
- rw—
3 root
root 4
xr-x 2 root
root 4
2 root
root 4
xr-x 2 root
root 4
xr-x 2 root
root 4
2 root
root 4
xr-x 2 root
root 4
xr-x 2 IP
sys
xr-x 2 root
root 4
xr-x 2 root
root 4
x —
2 root
root 4
1 root
root S
1 root
root
------
------
------
-----------
4
.0
K
.0
K
.0
K
.0
K
.0
K
.
GK
.0
K
.0
K
.0
K
.0
K
.0
K
.2
K
11
K
Feb
S 10
04
Feb
1 21
29
Mar
14
2007
Feb
5 16
41
Feb
1 13
04
Jan
15 20
36
Feb
7 14
09
Nov
29 20
36
Nov
11 12
01
Nov
11 12
01
Feb
1 13
16
Feb
3 01
31 cron.1
Feb
3 01
33 maillog.1
Aquí se ordenó de forma descendente.
Un archivo oculto es aquel que comienza con un .
De manera predeterminada el comando Is no muestra los archivos o directorios ocultos. Es por
esto que se debe usar el switch -a, si se quiere desplegar los archivos o directorios ocultos. Si
se teclea:
• ls -la
Aparecerá un listado largo (l), incluyendo los archivos ocultos (a)
[dsl@sac
-]S
is
-la
drwx ...... 3 dsl
dsl
4096 Feb
drwxr-xr-x
root
4096 Feb
£
total 36
6 root
- rw ------ 1 dsl
dsl
27 Feb
£
-rw- r- r- -rw-r--r--
1 dsl
dsl
24 Feb
s
1 dsl
dsl
176 Feb
s
-rw-r--r- - 1 dsl
dsl
124 Feb
s
drwx ------ 2 dsl
dsl
4096 Feb
s
- rw ------ 1 dsl
dsl
65 Feb
s
[dsl@sac
10
:
10
:
10
:
10
:
10
:
10
:
10
:
10
:
:21
12
:
19
12
.bash_history
12
.bashprofile
12
.bashrc
.bashlogout
:
17
:21 .xauth9K8Dgf
1
Se puede ver que shell muestra archivos que comienzan con. (si hubiera archivos sin . también
los mostraría).
En realidad el comando ls tiene muchos switches, se han visto solamente los más utilizados.
Si se quisiera obtener una pequeña ayuda del comando ls se lo podría hacer escribiendo:
• ls --help
Más adelante veremos otros sistemas de ayuda.
2.1.3. Comandos para crear archivos y directorios
El comando touch es simple. Tanta es su simpleza que a veces muchos piensan que no tiene
utilidad, sin embargo tiene dos funciones:
1. Al usar touch en un archivo que ya existe, se cambiará la fecha y hora de modificación
(se pondrán la fecha y hora de ese momento).
2. Si se usa touch en un archivo que no existe, el comando touch lo creará con un tamaño
de cero bytes (vacío) y le pondrá la fecha y hora del momento de creación.
Ejemplo:
• touch archivodeprueba
•
ls -l
[dsl@sac -]$ touch archivodeprueba [dsl@sac
-]$ [dsl@sac -]$ ls -1 total S
-rw-rw-r-- 1 dsl dsl 8 Feb
8 15:10 archivodeprueba
Este archivo no existía, y ahora aparece con 0 bytes de tamaño, y la fecha del día de creación
(8 de febrero a las 15:10).
Luego de esperar 5 minutos el usuario podría ejecutar nuevamente este comando: • touch
archivodeprueba
y verificar que en efecto la fecha fue modificada.
El comando touch, entonces, puede ser usado para crear archivos (vacíos) o para actualizar la
fecha y hora de archivos que ya existían.
Para crear directorios, en cambio, se usa el comando mkdir junto al nombre del directorio que
se quiere crear.
Por ejemplo:
•
mkdir midirectorio
Para verificar que se ha creado se va a usar:
•
ls -l
[dsl@sac -]s mkdir midirectorio [dsl(asac
-]$ ls -1 total 8
-rw-rw-r-- 1 dsl dsl
0 Feb
8 15:10 archivodeprueba
drwxr-xr-x 2 dsl dsl 4096 Feb
8 15:40 drwxrwxr-x 2 dsl dsl
4096 Feb
8 15:59
También se pueden crear directorios en otros directorios. Para ello basta escribir el comando
mkdir junto al nombre del directorio donde se quiera crear un directorio y el nombre del nuevo:
mkdir /tmp/directorio Se creará directorio en /tmp
2.1.4. Copiar, Mover y Borrar archivos y directorios
El comando cp (copy) es utilizado en Linux para copiar archivos de un lugar a otro. La sintaxis
de este comando es la siguiente:
cp /directorioorigen/archivoorigen /directoriodestino/archivodestino
De no poner uno de estos datos, el comando fallará. Es decir: El comando cp necesita siempre
estos dos parámetros: Origen y Destino
El usuario deberá crear un archivo para realizar pruebas, lo llamará prueba:
•
touch prueba Deberá verifica con ls -l que lo ha creado correctamente. Ahora deberá
copiar prueba en /tmp (sin olvidar usar TAB para autocompletar):
•
cp prueba /tmp
[dsl@sac ~]$ touch prueba
[dsl@sac ~]$
[dsl@sac ~]$ ls -l prueba
-rw-rw-r- 1 dsl dsl 0 Feb
8 15:28 prueba
[dsl@sac -]$
[dsl@sac ~]$ cp prueba /tmp/ [dsl@sac
™]$
[dsl@sac -]s ls -l /tmp/prueba
-rw-rw-r- 1 dsl dsl 0 Feb
8 15:28 /tmp/prueba
En efecto, se copió el archivo prueba hacia /tmp.
El comando cp también permite copiar directorios completos hacia otro lugar. Para ello se usa
el switc -r. Con este switch se le pide al shell que copie un directorio y todos los archivos y
directorios que se encuentren dentro de él. Por ejemplo al traer /etc hacia acá (.):
• cp -r /var/games .
Esto traerá todo games (que pertenece a /var) hacia el directorio donde el usuario esté
ubicado.
[dsl@sac -
-]$ cp -r /var/games
[dsl@sac -
-]$
[dsl@sac -
-]s ls -l
total 4
-rw-rw-r-- 1
dsl dsl
0 Feb
15 :
archivodeprueba
drwxr-xr-x 2
8
dsl dsl 4096 Feb
-rw-rw-r-- 1
dsl dsl
0 Feb
8
:
15
:
8 15
:
10
:4
0
:2 prueba
8
El comando mv (move), permite no copiar, sino mover un archivo de un directorio a
otro. También permite renombrar un archivo. Se debe utilizar la misma sintaxis que
el comando cp. El uso es el siguiente:
Si se teclea
mv prueba /tmp/test
Se eliminará el archivo prueba del directorio actual y se lo moverá hacia /tmp poniéndole el
nombre test:
[dsl@sac -]$ ls -l prueba
-rw-rw-r- 1 dsl dsl 0 Feb
8 15:28 prueba
[dsl@sac ~]$
[dsl@sac ~]$ mv prueba /tmp/test
[dsl@sac ~]$
[dsl@sac -]$ ls -l prueba
ls: prueba: No such file or directory
[dsl@sac ~]$
[dsl@sac -]$ ls -l /tmp/test
-rw-rw-r- 1 dsl dsl 0 Feb
8 15:28 /tmp/test
En la imagen consta un archivo llamado prueba, de hecho se lo puede ver al listar (ls -l prueba).
Luego, con el comando mv prueba /tmp/test se lo muevo hacia /tmp con el nuevo nombre de
test.
Al finalizar de moverlo se puede verificar con ls -l prueba y no aparecerá (claro, ha sido movido
a /tmp/). Y en efecto, cuando se use ls -l/tmp/test aparecerá.
Ahora el usuario deberá traer de vuelta ese archivo hacia el directorio actual:
• mv /tmp/test .
/tmp/test ha sido traido hacia acá (se ha usado un . al final para indicar que se quiere mover al
directorio).
Renombrar archivos es fácil. Se usa el mismo comando mv pero sin ponerle el directorio:
•
mv test prueba
Lo que se hará es cambiarle el nombre al archivo test y ponerle prueba. Dentro del mismo
directorio.
Cuando el usuario tenga más derechos (más adelante se verá cómo lograrlo), se podrá mover
directorios (en el comando mv no es necesario usar -r para realizar operaciones recursivas en
directorios ).
Para borrar archivos el comando que se utilizará es rm (remove), por ejemplo:
•
rm prueba
El usuario deberá borrar el archivo llamado prueba del directorio. Otro
ejemplo:
•
rm /tmp/test (o rm /tmp/prueba)
Se deberá borrar el archivo test (o prueba) del directorio /tmp/. El directorio se mantendrá.
Algunas versiones de Linux solicitan confirmación (¿seguro desea borrar el archivo? y/n?),
otras no, eso dsacnde del distribuidor. En el caso de CentOS Linux, al usuario administrador se
le solicitará confirmación para evitar que como administrador dañe algo de forma inadvertida.
En cambio, para borrar un directorio se sigue el siguiente proceso:
•
rm -rf midirectorio
La -r significa que se realizará un borrado recursivo (se borrará el directorio y todo lo que esté
dentro del directorio) y la -f significa: forzar (no preguntar si se desea borrar o no). Esto de
forzar es útil porque de lo contrario el sistema por protección pedirá confirmación de todos y
cada uno de los archivos y directorios que borrará (y si son muchos el usuario se cansará de
rsactir "y").
2.1.5. Ver Archivos Cat
El comando cat es muy sencillo en su aplicación. Su utilidad radica en que permite ver los
contenidos de cualquier archivo de texto que se tenga. Este comando no se ocupará de
paginar los contenidos ni de ofrecer capacidad de edición, sino que sencillamente mostrará los
contenidos de estos archivos.
Ejecutar:
•
cat /etc/passwd
Mostrará los contenidos del archivo /etc/passwd
Podría así hacerse con cualquier otro archivo, por ejemplo:
•
cat /etc/shells
•
cat /etc/inittab
En fin, a cualquier archivo de texto que se encuentre en Linux se le podrá hacer un cat.
2.1.6. Comandos Usados con Pipe (|)
El pipe (tubería) es un comando especial sumamente útil en Linux. Será de mucha ayuda
comprender su funcionamiento. El pipe combina dos comandos: pasa la salida del comando de
la izquierda como entrada al comando de la derecha.
El comando pipe se puede ubicar en un teclado en español, apretando la techa Alt Gr (el Alt de
la derecha) + la tecla que está a la izquierda del 1. En algunos teclados latinoamericanos el |
está en el número uno, en otros teclados está muy cerca del enter. Pruebe las diferentes
opciones, con o sin apretar el Alt Gr.
wc (word count) es un comando que sirve para contar palabras. Se puede usar en conjunto con
otro comando, ligando a ambos con el pipe.
Por ejemplo, el comando: cat /etc/inittab mostrará los contenidos del archivo /etc/inittab.
Ahora, el usuario podrá usar el pipe para unirlo con wc: • cat
/etc/inittab | wc -l
El comando wc (word count) junto con el switch (-l) contará las líneas de cualquier archivo. En
el ejemplo anterior se le está pididiendo que cuente las líneas de /etc/inittab. Para ello primero
se le pide al shell que muestre los contenidos del archivo /etc/inittab (el cat muestra los
contenidos), que pasan a la derecha del pipe y el wc -l se ocupará de contar las líneas de lo
que recibe (de la izquierda del pipe).
El comando wc puede utilizarse sin necesidad de pipe, prueben ejecutar:
• wc -l /etc/inittab
Como pueden ver hay una apreciable diferencia, ahora nos muestra el nombre del archivo así
como la cantidad de líneas
Tail es un comando que muestra las últimas líneas de un archivo, por ejemplo: • cat
/etc/inittab | tail
mostrará las últimas 10 líneas de un archivo (predeterminadamente son 10)
Si se quiere ver más o menos de 10 líneas se puede poner el número, por ejemplo:
•
cat /etc/inittab | tail -5
Se mostrarán las últimas 5 líneas.
El comando tail se puede usar sin necesidad de pipe:
•
tail -5 /etc/inittab
Y se obtiene el mismo resultado
Head es un comando que muestra las primeras líneas de un archivo, por ejemplo:
•
cat /etc/inittab | head
mostrará las primeras 10 líneas de un archivo (por defecto son 10)
Si se quiere ver más o menos de 10 líneas se puedeponer el número, por ejemplo:
• cat /etc/inittab | head -5
Se mostrarán las primeras 5 líneas.
El comando head también puede ser usado sin necesidad de pipe:
•
head -5 /etc/inittab y
hace lo mismo.
Incluso es posible combinar tail y head. Si se quiere ver una línea en específico, por ejemplo
se tecleará:
•
head -5 /etc/inittab | tail -1
mostrará la 5ta línea solamente.
Esto se debe a que en primer lugar se le pidió al shell que muestre las cinco primeras líneas del
archivo /etc/inittab (head -5 /etc/inittab). Al unir este comando por medio del pipe al segundo
comando (tail -1) se le piede a shell que del texto que obtuvo tras la ejecución del primer
comando (el texto serían las 5 primeras líneas del archivo) muestre solamente la última (es
decir la quinta de ese texto). Como resultado shell mostrará solamente la quinta línea del
archivo.
[sac@sac -]s head -5 /etc/inittab | tail -1
#Author:
Hiquel van Smoorenburg, <[email protected]>
[sac@sac -]s []
De esta forma se logrará obtener una línea solamente de un archivo determinado.
grep nos permite encontrar líneas que coincidan con una expresión regular (o cadena)
determinada, por ejemplo:
•
cat /etc/passwd | grep root mostrará todas las líneas de /etc/passwd que
contengan la cadena: root
Si, en cambio, se teclea:
•
A
cat /etc/passwd | grep root
Shell mostrará todas las líneas de /etc/passwd que comiencen
cadena: root.
2.1.7. Uso de Paginadores
(A
significa comiencen) con la
El usuario se habrá dado cuenta que cuando se usa el comando cat, la información del archivo
aparece súbitamente y, si es muy larga, no hay manera de que detenerse en una parte
específica del texto. Un paginador es una herramienta que toma un archivo de texto y muestra
sus contenidos de página en página.
Hay dos comandos paginadores: more (más) y less (menos).
El comando more es un paginador antiguo y conocido; le permitirá al usuario moverse de
página en página dentro del archivo, y una vez que quiera salir se hará presionando la tecla q.
Normalmente es preferible usar less para paginar los textos, pues esta opción es mucho más
versátil, ya que además de dejar mirar la información del archivo paginadamente, da algunas
opciones para trabajar dentro del archivo.
Si se quisiera paginar el archivo /etc/inittab se pondría:
less /etc/inittab
Los paginadores son muy fáciles de utilizar, a continuación se podrán ver algunos comandos
útiles dentro del paginador "less".
•
q = Sale del paginador (regresa al shell).
•
G = Va a la última línea del archivo.
•
g = Va a la primera línea del archivo.
•
5G = va a la 5ta línea. En general un número y G lleva a esa línea.
•
/cadena = busca una cadena llamada "cadena" dentro del archivo. Ej: /powe (buscará
la cadena powe dentro del archivo que se esté viendo). La búsqueda se realiza de
arriba hacia abajo.
•
/ = repite la anterior búsqueda (busca la siguiente)
•
?cadena = busca "cadena" dentro del archivo. La búsqueda la realiza de abajo a arriba.
•
? = repite la búsqueda anterior (de abajo para arriba)
•
Barra espaciadora = baja una página
•
w = sube una página
less no es un editor, sino tan sólo un paginador, pero es muy útil para ver información dentro de
un archivo.
2.1.8. Editor Vi
vi es el editor de textos por excelencia en los sistemas operativos Unix y Linuxi (se pronuncia
vi-ay).
vi significa visual. Era un editor visual muy utilizado, pero actualmente se utiliza de forma muy
general el vim: Vi IMproved, que es casi idéntico al original vi. Tanto vi, como viM tienen dos
modos de funcionamiento:
•
Modo de comando: cualquier tecla que se apriete significará un comando que se le
está emitiendo al vi.
•
Modo de edición: cualquier tecla que se escriba se representará (escribirá)
directamente en el editor.
El editor vi fue el primer editor de pantalla completo para los sistemas Unix.
Es simple, pequeño y elegante. Es muy empleado en las tareas de administración del sistema.
Vi suele ser un programa que no incluye su propio revisor ortográfico, o formateador de textos,
pero existen otros programas que realizan esta función. Con estos programas, usados dentro
del vi, se logra tener la funcionalidad que se requiera.
Se le sugiere al usuario probar varias veces todos los comandos y que dedique tiempo a esta
actividad, pues el vi es la base para editar todos los textos y archivos de configuración que se
necesiten en el futuro.
Para usar el editor con algún archivo que se desee crear o modificar se deberá teclear vi
archivo, por ejemplo:
$ vi prueba
Como se puede ver, en la pantalla aparece el cursor en la esquina superior izquierda y en la
parte inferior una columna de caracteres ~, los cuales nos indican que el usuario está en el fin
del archivo.
rooc@sac:- x sac@sac:Ríe Edlt Wew Terminal Tabs Help
Al final, en la última fila aparecerá algo así: "prueba"
[noeol] 4L, 12C
Esto indica el número de líneas y caracteres que contiene el archivo (si no estuviera vacío, en
este caso nos dice: El archivo prueba tiene 4Líneas y 12Caracteres).
2.1.9. Los modos del Vi
Como se dijimos antes, existen dos modos de uso de vi:: modo comando y modo edición.
Modo comando: cuando se arranca el editor vi, siempre se está en el modo comando. Este
modo permite que se use un determinado número de comandos (usualmente de una sola letra)
para modificar el texto. Hay que tener cuidado en este modo, ya que si se pone un comando en
mayúsculas o en minúsculas, se lograrán efectos muy diferentes. Si se intenta insertar texto en
este modo, la máquina le recordará al usuario, mediante el pito que suena cuando se oprimen
las teclas, que no puede hacerlo. Para insertar texto, se tendrá que cambiar al modo edición.
Modo edición: es aquel que permite insertar texto y modificarlo. Para pasar del modo
comando al modo edición, simplemente se teclea la letra i.
2.1.10. Insertar, borrar, editar y moverse en el texto
Se puede insertar texto en el modo de edición y en el modo de comando.
En el primero, simplemente hay que asegurarse de que se está en el modo de edición (para
acceder a él, se debe digitar la letra i). Al hacerlo, en la esquina inferior izquierda aparece INSERT-. Aquello indica que se está en el modo edición y se puede insertar y/o modificar texto.
Si se quisiera regresar al modo de comando, simplemente se debe apretar la tecla Esc
(Escape).
Ejercicio:
El usuario tecleará el siguiente texto:
Ahora es el momento para que todos hombres buenos vengan a ayudar a la fiesta.
El usuario se habrá fijado en que el texto se escribió junto al número 1 que aparece en la
esquina superior izquierda. Este número indica el número de la línea de texto. Si se da un
Enter se verá que el cursor baja a la siguiente línea, y que ésta tiene el número 2 al lado. Si en
cambio se sigue escribiendo luego del texto que se acaba de ingresar, hasta llenar la línea, se
verá que cuando se ha completado toda la extensión de la línea, el texto va a la línea siguiente,
pero no hay un cambio en el número de línea. Es decir que si se quiere escribir en la línea 2 del
texto, necesariamente se tendrá que dar un Enter, de otra manera, aunque en la pantalla se
haya escrito en más de una línea, para la máquina aún es la primera línea.
Mientras se está en modo edición se puede insertar texto en tantas líneas como se desee,
simplemente se tendrá que presionar la tecla Enter para ir la línea siguiente. Si el usuario se
quiere mover en el texto, simplemente debe usar las teclas de flechas (aunque para moverse
en el texto con las teclas de flechas no se tiene que necesariamente estar en modo de edición,
se lo puede hacer desde el modo de comando, con las mismas teclas o, si se prefiere también
se pueden usar las teclas h, j, k, l, que mueven el cursor a la izquierda, abajo, arriba y a la
derecha, respectivamente). Para borrar texto en el modo de edición, en cambio, solo se debe
usar la tecla de retroceso.
Este mismo proceso se puede realizar a través del modo de comando, para se debe poner el
comando a. Este comando inserta texto después de la posición actual del cursor.
En el texto que se acaba de escribir, el usuario puede mover el cursor hasta que quede entre
las palabras todos y hombres, luego presionar a y teclear los. Después presionar Esc para
regresar al modo comando.
Si se quisiera insertar texto en la siguiente línea, se podría usar el comando o.
Al presionar o y escribir:
Después iremos por pizza y helado.
la x borra el caracter donde está situado el cursor.
Ahora, con este método, el usuario puede borrar la palabra
Helado
y añadir refresco dietético.
Si se necesitar borrar líneas enteras desde el modo comando se podría usar el comando dd.
Para hacerlo, solamente se debe ir a la línea que se quiere borrar y presionar dos veces d.
Si hubiera una equivocación al borrar una línea con el comando dd, se podría reinsertar el texto
usando el comando p, que reinsertará la línea borrada en la línea siguiente a la que el usuario
se encuentre. Si en cambio se usa el comando en mayúscula (P), la línea borrada se insertará
Se sugiere que el usuario pruebe estos dos comandos luego de borrar la última línea.
Al igual que en los procesadores de palabras, el editor vi tiene las opciones de deshacer y
rehacer.
El comando u deshace los últimos cambios y con ctrl R se puede rehacer. El
usuario deberá probarlos en el texto.
Para borrar el caracter sobre la que esté el cursor (es decir, borrar como se lo hace en un
procesador de palabras con la tecla del) se debe usar el comando dw.
El usuario deberá colocar el cursor al principio de la palabra dietético y bórrala.
Si se quiere sobrescribir un texto comenzando a partir de donde está el cursor, se deberá usar
el comando R. Se deberá colocar el cursor en la primera letra de pizza, presionar R y teclear
hamburguesas y papas. Se podrá observar que se queda en modo edición, por lo que para
regresar a modo comando se deberá teclear Esc.
El comando r también sirve para sobrescribir, la diferencia es que reemplaza un sólo carácter,
aquel sobre el que se encuentra el cursor, y luego no se quedará en modo de inserción (como
ocurre con R).
.El comando ~ (en un teclado en español se debe presionar AltGr 4 ) cambia de minúscula a
mayúscula o viceversa la letra sobre la que está el cursor.
Para ejercitarse el usuario deberá cambia la palabra hamburguesas a mayúsculas.
Siempre es importante regresar al modo de comando.
2.1.11. Otros comandos para moverse en el texto
El comando w se usa para mover el cursor a la siguiente palabra; b mueve al principio de la
palabra actual o de la palabra anterior si ya estaba al principio de una palabra.
El comando 0 (cero) mueve el cursor al principio de la línea actual, y el comando $ lo mueve al
final.
Para mover una pantalla hacia adelante o hacia atrás en el archivo, se debe presionar CTRL F
y CTRL B, respectivamente.
Con el comando CTRLG se puede mover el cursor al final del archivo. También se puede
mover a una línea específica si primero se da el número de línea y luego el comando, por
ejemplo, 10G, moverá el cursor a la línea 10 en el archivo.
Al pulsar / seguido de una cadena y Enter se logra pasar al principio de un archivo. Usando ?
se hace hacia atrás.
Se pueden combinar comandos de movimiento con otros comandos, tales como borrado. Por
ejemplo, el comando d$ borrará todo aquello que se encuentre entre el cursor y el final de la
línea. Mientras que dG borra todo desde el cursor hasta el final del archivo.
2.1.12. Edicion de un archivo
Para editar otro archivo, se debe usar el comando :e por ejemplo, para terminar de editar al
actual archivo y comenzar a editar otro nuevo ponemos
:e nombredeotroarchivo
Vean el gráfico este, estamos en el archivo prueba:
sacre/ '¡ f?
flle Edlt View Terminal Tabs Help
CEC-EPN
Tema 2
estoy editando un archivo
e ot roí]
Al escribir :e otro me aparecerá el otro archivo, ya no el prueba
81
Tema 2
CEC-EPN
sac@sac:~
Ríe Edlt Wew Terminal Tabs Help
rooc@sac: x sac@sac:
82
CEC-EPN
Tema 2
este es otro archivo
'Otro" 1L.
Z1C
Se pueden incluir otros archivos en el archivo actual usando el comando :r. Por ejemplo si se
tiene creado un archivo llamado otro y se está editando en el archivo prueba se puede teclear
:r otro
De esa manera se insertará el contenido del archivo otro, a partir de la línea actual del presente
archivo (prueba).
Veamos, estoy en el archivo prueba:
Ríe Edit View Terminal Tabs Help
root@sacre2i~
83
Tema 2
CEC-EPN
estoy editando un archivo
: r otro[|
Aquí escribo :r otro y me inserta los contenidos de otro en prueba
sac@sac: ~
Ble £drt y.iew Jemnlnal Tafcs htelp
root(S>sac:
x
sac@sac-
84
CEC-EPN
Tema 2
estoy editando un archivo 05te es otro archivo
"otro" 1L. 21C
2.1.13. Ejecución de Comandos
El comando :! permite poner el nombre de un comando de shell, el cual es ejecutado dentro del
vi.
Por ejemplo, al teclear:! ls -l
lo que se hará es ejecutar el comando ls -l y se regresará inmediatamente al vi. 2.5.6.Guardar
archivos y salir de vi
Por ejemplo, para salir un archivo que está siendo editado, se usa el comando :q este comando
sale solamente si no se han realizado cambios. Si se han realizado, se niega a salir.
El comando :wq escribe y sale del vi (el comando ZZ es el equivalente).
Para salir del vi sin guardar los cambios en el archivo se de e usar el comando :q!
2.1.14. Otro editor
85
Tema 2
CEC-EPN
Otro editor de textos muy cómodo de utilizar es el nano, viene incorporado en la mayoría de los
Linux modernos; tiene un estilo de trabajo como el antiquísimo programa de DOS llamado
wordstar (era un editor de textos).
En el wordstar se trabaja siempre en modo de edición (lo que se escribe se representa en la
A
A
pantalla). Los comandos se ejecutan con la tecla CONTROL ( ); G por ejemplo muestra la
ayuda.
Para editar un archivo con nano se ejecuta en el shell:
nano nombredearchivo
por ejemplo:
• nano prueba
Se editará el archivo prueba, y si no existe se mostrará un archivo vacío listo para ser llenado.
aqui estoy escribiendo textos normalmente.
Cuando ya requiera salir, puedo ver las líneas de abajo, una de ellas me
indicará que
CTROL+x me dejará salir (exit).
salucos
Get
Read File Hel Prev Page
Where Is
p Next Paae
Exi
t
WriteOut Justif
86
CEC-EPN
Tema 2
[ Read 8 lines ]
Yl
Cut Text UnCut Text
Cur Pos To Snell
87
CEC-EPN
Tema 2
Comandos útiles del NANO
•
Ax : sale del editor, si es necesario solicitará el nombre del archivo a grabar y solicitará
confirmación para grabar o no los cambios.
•
Ar : importa (agrega) los contenidos de otro archivo.
•
Ac : indica la posición (línea y columna) donde está el cursor.
•
Ag : obtiene ayuda sobre comandos.
•
AW
: busca una cadena.
•
A_
(guión bajo): va a una línea (se pone el número de línea y se presiona enter).
En este curso se prefiere vi porque está presente en todas las distribuciones Linux y en
TODOS los sistemas unix que puedan existir. Así que conociendo el vi se puede editar textos
en cualquier sistema Unix
Apagar y salir
El comando para apagar la máquina originalmente se llama shutdown, pero es un tanto
complejo de utilizar, es por esto que prefiero usar comandos alternativos que son más fáciles
de comprender, estos son:
Poweroff, que apagará todos los servicios, eliminará el ambiente gráfico y le indicará al BIOS
que proceda a eliminar el flujo de energía, de esta forma se apaga completamente la máquina.
Es el que más se usa cuando se quiere que un servidor o PC deje de trabajar y consumir
energía.
Halt apagará todos los servicios, eliminará el ambiente gráfico. No le indica nada al BIOS, por
lo que sigue encendido el hardware pero sin funcionar. Actualmente tiene poco uso (¿quién
desea apagar un sistema operativo y dejar encendido el hardware?).
Es similar a aquellas versiones de windows 95/98 que al apagar anunciaban: Ahora sí puede
apagar su máquina (fondo negro con letras naranjas). El comando halt hace algo así parecido.
El comando reboot es muy útil. Se utiliza para apagar todos los servicios e indicarle al BIOS
que reinicie la máquina y comience de nuevo el proceso de arranque. Se utiliza mucho cuando
se quiere cargar un nuevo kernel (para cargar un nuevo kernel hay que reiniciar la máquina).
A propósito de estos comandos: Linux es un sistema operativo muy estable, casi nunca hay
que reiniciarlo (reboot) o apagarlo por problemas ocurridos dentro de él. Se podría decir que se
apaga la máquina por las noches para ahorrar corriente, más no porque se ponga lenta.
88
Tema 2
CEC-EPN
Hay servidores que actualmente llevan corriendo muchos meses sin tenerlos que reiniciar o
apagar. El comando uptime indica cuánto tiempo lleva encendida la máquina.
Puede verse
en alguno de los servidores de producción de
www.ecuadorinteligente.com:
[root@srvl -]# uptime 16:22:23 up 137 days,
5:27 [root@srvl -]# |
[root@srv2 root]# uptime
16:21:29 up 73 days P 2:08 [root@srv2 root]# []
[root@srv4 -]# uptime
16:16:2Q up 63 days, 17:37, [root@srv4 -]# []
[root@srv9 -]# uptime
16:09:52 up 133 days, 5:53, [root@srv9 ~]# Q
89
CEC-EPN
Tema 2
Como se puede observar algunos servidores tienen más de 4 meses sin reiniciarse o apagarse,
otros poco más de 2. Pero en todo caso son valores altos que son logrados con facilidad dada
la estabilidad del sistema operativo Linux
Para el caso del DSL Linux, el usuario utilizado para trabajar no es privilegiado (no es
administrador o root), por lo que se permitirá reiniciar o apagar la máquina desde él. Cuando se
instale CentOS se lo podrá probar.
De momento para apagar el DSL se lo puede hacer mediante el ambiente gráfico (hay una
opción que dice Exit Options en el ambiente gráfico).
2.2. Como realizar un correcto particionamiento en Linux
El particionamiento es un tema esencial a la hora de instalar Linux y aquí se indicarán algunos
factores que habrá que tomar en cuenta a la hora de particionar.
Siempre deben tenerse en cuenta las características propias de la instalación que se está
haciendo y lo que requerirá la empresa o lugar donde se esté instalando.
2.2.1. Que es particionar un disco
Una partición de disco es el nombre que se le da a cualquier división de un disco duro.
Cuando se divide el disco en dos particiones, por ejemplo, Linux reconocerá al disco físico (que
sigue siendo uno) como si fueran dos discos indsacndientes. Es decir, vería dos discos, pues
son dos particiones.
Por ejemplo: si se divide un disco duro de 80GB en dos particiones de igual tamaño (40GB y
40GB) entonces Linux verá dos discos lógicos de 40GB cada uno.
Así se podría tener varias particiones, cada una con su propio formato y tamaño.
El particionamiento es útil por diversas razones, por ejemplo:
1. Permite controlar que un disco no se llene por completo; si por casualidad un proceso
del sistema comienza a escribir descontroladamente a disco, solamente podrá llenar la
90
Tema 2
CEC-EPN
partición hacia donde escribe, mas no podrá llenar el disco completo. A propósito, la
partición raíz (/) requiere tener siempre espacio disponible, si no se particionara
correctamente se podría llenar / y por lo tanto dejar el sistema sin funcionar.
2. Si un pedazo del disco se dañara, muy posiblemente el resto podría ser todavía
utilizado y recuperado. Por supuesto un disco dañado requiere de una migración
inmediata hacia otro disco. Pero no es lo mismo perder la única partición que se tenga
que perder sólo una de las varias disponibles.
3. Posteriormente se estudiarán seguridades del sistema concebidas para trabajar con
particiones. Sin un correcto particionamiento no se podría implementar estas
seguridades.
En el caso de Microsoft Windows las particiones se montan como letras (Unidad C:, Unidad D:,
etc., etc., etc.) en el caso de Linux, las particiones se montan dentro del árbol del directorio al
que anteriormente se hizo referencia.
Por ejemplo, si se desea tener una partición para el directorio raíz(/), todo directorio dentro de
la raíz quedará dentro de ésta partición, a continuación el esquema:
hdal
/
•
/etc /
home
/ mnt
Ahora por ejemplo, si tengo dos particiones, puedo asignar una partición para / y otra para
/home, veamos:
91
CEC-EPN
Tema 2
Igual, si lo que tenemos son dos discos (particionados cada uno en hdal y hdbl por ejemplo),
podríamos usar un disco (hdal) para la partición / y otro disco (hdbl) para la partición /home:
Se prefiere particionar el disco en al menos 6 áreas que serán usadas para montar los
directorios:
•
/boot
•
/usr
•
/home
•
/var
•
/
•
SWAP
Aquí se detallarán los porqués de cada tamaño según su punto de montaje: 2.8.2.
/boot:
92
CEC-EPN
Tema 2
Es en la partición /boot donde el sistema operativo Linux guarda todos los kernels instalados en
el sistema. En efecto, cada máquina puede tener varios kernels para bootear, la razón más
común es que son kernels viejos que Linux deja como copias de seguridad.
La arquitectura para PC sólo permite bootear un sistema operativo cuyo kernel esté localizado
dentro de los primeros 1024 cilindros, y es por esto que el lugar donde esté el kernel debe estar
localizado lo más próximo al inicio del disco, para que siempre caiga en los primeros 1024
cilindros.
Seguramente los usuarios se habrán preguntado alguna vez por qué Windows funcionaba
normalmente y en determinado momento no arranca.
Una de las razones más frecuentes (pero poco conocidas) es que posiblemente el kernel de
Windows fue actualizado "ayer" (actualizaciones de Windows) pero este nuevo kernel por
alguna razón quedó ubicado después de los 1024 cilindros, lo que hace que al siguiente día, al
encender encendamos la máquina, ésta se niegue a arrancar el sistema operativo.
Es una razón muy común y definitivamente por esta razón se le debemos asignar a /boot la
primera partición posible, y el tamaño recomendado para RHEL4 es de 100MB, con esto
bastará para guardar al menos unos 30 kernels diferentes. La realidad es que el kernel de
Linux se actualiza pocas veces en el año, y a medida que se estabiliza el sistema se actualiza
menos, por lo que sobrará espacio.
En resumen: /boot debe ser forzada a ser primaria y debe tener 100MB.
2.2.2.
/usr
Es un área del sistema donde se almacenan gran cantidad de binarios que se instalan con el
tiempo, aplicaciones de todo tipo, ayudas, etc. Por lo tanto debe tener un tamaño considerable
de acuerdo a las instalaciones que se harán. Es recomendable asignarle al menos 2GB, pero
de ser posible se asigno mucho más espacio (10GB o más).
En resumen: /usr debe tener al menos 2GB, de preferencia 10GB o más. Dsacndiendo del
tamaño del disco.
2.2.3. /var
93
Tema 2
CEC-EPN
Es el directorio donde se almacenan los logs y la caché de algunos programas. Pero sobre todo
es donde se almacenan los INBOX de todos los usuarios.
2.3. Instalacion de CentOs
Luego de toda la práctica con DSL y de la explicación teórica sobre las particiones, el personal
del laboratorio de la escuela Mentes Libres por fin se consideró con suficiente confianza como
para poder instalar Linux.
Para ello comprenden que:
1. En efecto la instalación de Linux es sólo un paso para poder usarlo.
2. Que una vez instalado es que comienza el verdadero proceso de uso y aprendizaje del
sistema.
3. Hay que leer los mensajes que aparezcan en la pantalla para poder comprender los
errores.
4. Linux no es solo cuestión de apretar Next, sino que se debe comprender qué se está
instalando, qué se está preguntando.
Para ello bajaron una copia de CentOS-5 del sitio de centos: http://mirror.centos.org/centos5/5.1/isos/
En el caso del laboratorio, tenían máquinas de 32bits, por lo que decidieron bajar la versión de
DVD de 32bits (i386).
La versión de 64bits (x86_64) no les conviene, pues no tienen al momento máquinas de 64bits.
El archivo que bajaron fue:
y
CentOS-5.1-i386-bin-DVD.iso
24-Nov-2007 20:31 3.6G que es un archivo que servirá
para quemar el DVD. Este ISO tiene 3.6GB de tamaño.
Este archivo con extensión iso se quema desde el Nero de Windows, con la opción "Quemar
desde imagen", tal como lo hicimos con DSL.
2.4. Arrancando la maquina
94
Tema 2
CEC-EPN
Una vez quemado el DVD lo pusieron en una máquina de prueba que tenía 512MB de RAM y
un disco duro del cual iban a disponer completamente. Ordenaron al BIOS que la máquina
arrancara desde el CD. Se les presentó la siguiente imagen:
CentOS
-
5
To instaM or upgrade in graphical mode, press the <EMTER> key. To ¡nstatl
or upgrade in text mode, type: linux text <EMTER>. Use tlie funetion keys
listed belou for more information,
[Fl-Main] [F2-Gptionsl [F3-General] [F4-Kernel] [F5-RescueJ
boot:
Leyeron cuidadosamente la pantalla y se dieron cuenta de que existía cierta ayuda apretando
las teclas de F1 a F5.
Como resumen anotaron que:
•
Para arrancar el instalador se espera un minuto sin tocar nada, o se presiona ENTER,
el instalador gráfico comenzará.
•
Si la memoria de la máquina es inferior a 512MB, es mejor instalar el modo texto (sin
ambiente gráfico), para ello se escribe: "linux text" (sin las comillas) y se comienza la
instalación en modo texto.
•
Si se quisiera verificar la memoria física (RAM) de la PC se puede escribir "memtest"
(sin las comillas) y se verifica la RAM sin realizarse ninguna instalación.
•
Notaron que hay una opción llamada "de rescate" (rescue) que aparentemente sirve
para recuperarse ante daños ocurridos en el arranque de Linux. Posteriormente
acordaron conocer cómo usar esta opción pues parece muy importante.
95
Tema 2
CEC-EPN
Es decir, este DVD sirve para
•
verificar la RAM
•
instalar Linux
•
recuperar Linux en caso de que ocurra un evento que no le deje bootear.
En el caso de ellos, tomaron la vía típica, que fue apretar ENTER y arrancar el modo gráfico.
Pocos momentos después les salió un mensaje que indicaba si deseaban probar el DVD/CD
contra defectos al quemar. Dedujeron algo lógico: siempre es saludable verificar el medio
(disco) para evitar que por un defecto no se instale posteriormente Linux.
el come to CentOS
---------------- 1 CD Found | -------------To begin testing the CD media before insta
1 lation press Olí.
Choose Skip to skip the media test and start
the insta 1lation.
96
Tema 2
CEC-EPN
<Tab>/<Alt-Tab> betueen elements
!
<Space> selects
!
<F12> next screen
Esta pantalla todavía aparece en modo texto, pues ni siquiera se ha cargado el ambiente
gráfico. Sirve realmente para encontrar cualquier error que exista en el disco.
Apretaron en OK y se comenzó a probar el disco:
Al finalizar el chequeo en efecto surgió la siguiente pantalla, que indicaba claramente (PASS)
que todo había pasado satisfactoriamente:
I
~-—~
97
Tema 2
CEC-EPN
<Tab>/<Alt-Tab> betueen elements
!
<Space> selects
!
<F12> next screen
Tras lo cual aceptaron (ok) y procedieron a continuar con la instalación.
Entonces por fin surgió la primera pantalla gráfica, que no es más que es una
ventana de bienvenida:
98
CEC-EPN
Tema 2
En esta pantalla, que parecía, se dedicaron a revisar las diferentes opciones y botones que
había:
•
Un botón de Release Notes que muestra la información de último momento sobre el
sistema. Se abren las notas en una ventana aparte, la cerraron posteriormente.
•
La pantalla tiene una imagen informativa en el medio. El logo de CentOS-5 aparece
arriba.
•
Abajo a la derecha tiene un botón de continuar y otro de regresar (que por ser la
primera pantalla, está desactivado).
Continuaron y apareció la siguiente pantalla:
99
Tema 2
CEC-EPN
QEMU
CentOS 5
En esta se solicita escoger el idioma en el cual se va a realizar el proceso de instalación.
Escogieron inglés, pues es el idioma nativo en que se hace CentOS y por lo tanto sabían que
habría menos errores de interpretación. Por supuesto que también podrían haber escogido
Spanish (Español) y seguir el proceso de instalación.
Luego apretaron continuar y se les solicitó escoger el tipo de teclado que tenían:
100
Tema 2
CEC-EPN
QEMU
CentOS 5
En esta se solicita escoger el idioma en el cual se va a realizar el proceso de instalación.
Escogieron inglés, pues es el idioma nativo en que se hace CentOS y por lo tanto sabían que
habría menos errores de interpretación. Por supuesto que también podrían haber escogido
Spanish (Español) y seguir el proceso de instalación.
Luego apretaron continuar y se les solicitó escoger el tipo de teclado que tenían:
101
CEC-EPN
Tema 2
El teclado que típicamente se usa en Latinoamérica se llama Spanish (Español), así que
escogieron este teclado.
Este teclado se caracteriza por tener el signo de arroba (@) en la tecla correspondiente al
número 2.
Si el signo de @ estuviera en la Q, entonces sería un teclado latinoamericano y se escogería la
opción latinamerican.
Si el teclado no tuviera ñ entonces sería seguramente un teclado en inglés y se escogería la
opción: US International (para que permitiera escribir los acentos).
Al continuar, les apareció la siguiente pantalla
102
CEC-EPN
Tema 2
En esta pantalla se advirtió que el disco duro no estaba inicializado (era nuevo) y se preguntó si
querían continuar, escogieron que sí.
Notaron que cuando un disco ya estaba usado (formateado) no salía esta información. En todo
caso, se dieron cuenta de que se podía dar continuar (yes) sin riesgo de perder la información.
Les salió entonces una pantalla solicitándoles escoger la forma en que iban a formatear el
disco:
103
CEC-EPN
Tema 2
Hay varias opciones posibles:
•
Dejar las particiones de otros sistemas, y solamente borrar las particiones existentes
de Linux.
•
Borrar TODAS las particiones existentes.
•
Usar el espacio disponible (Free Space).
•
Hacer un particionamiento manual (custom layout)
Como ya ellos sabían cómo particionar el disco escogieron ésta última, llamada Custom Layout
y procedieron a continuar a la siguiente pantalla:
104
Tema 2
CEC-EPN
QEMU/KVM
□
Este es el ejemplo de cómo quedó el disco. Los administradores del laboratorio escogieron
usar una máquina que no tenía información importante y borraron todas las particiones que
tenía anteriormente.
Para borrar las particiones que no deseaban hacían clic sobre la partición y después apretaban
el botón Delete, para borrar la partición.
Se fijaron que en la parte superior de la pantalla aparecía un rectángulo representando al disco,
en este ejemplo era un disco de 10GB. Y se cercioraron de que tuviera todo el espacio libre
(Free).
Apretando el botón New, se abrió una ventana que les permitió escoger:
105
CEC-EPN
Tema 2
En el mount point (punto de montaje), donde se hallará la partición que se creará,
pudieron escoger simplemente con el mouse el punto de montaje. En cuanto al tipo de
filesystem, como es lógico, escogiero ext3, que es el filesystem por defecto de Linux. El
tamaño (size) de esta partición.
Entonces, comenzaron a crear sus propias particiones:
106
CEC-EPN
Tema 2
La primera fue en el punto de montaje: /boot, midió solamente 100MB y eso sí, no se olvidaron
de marcar, sólo para esta partición, la opción que decía: Force to be a primary partition.
Posteriormente crearon las siguientes particiones, /, /home, /usr, /var, /tmp, a cada una de ellas
le asignaron el espacio adecuado según los cálculos que anteriormente habían estudiado:
• la partición raíz (/):
107
CEC-EPN
Tema 2
108
CEC-EPN
Tema 2
109
La partición /var
CEC-EPN
Tema 2
La partición /usr
110
La partición /tmp
CEC-EPN
Tema 2
SWAP: para este caso se necesita escoger solamente el tipo de partición, poniendo: swap
111
CEC-EPN
Tema 2
Al finalizar, verificaron que todas las particiones estuvieran bien creadas, y entonces sí
apretaron continuar.
2.4.1.
GRUB
La siguiente pantalla en aparecer les permitió escoger el sistema operativo que arrancará por
defecto, como sólo tenían uno, ya apareció marcado por defecto. Además notaron que la
pantalla hablaba de algo llamado GRUB, lo cual quedaron en estudiar luego.
Entonces, habiéndose cerciorado de cuál era el sistema operativo que arrancaría por defecto,
continuaron a la siguiente pantalla:
2.4.2.
RED
112
CEC-EPN
Tema 2
En esta ventana se puede escoger el nombre de la máquina (hostname):
•
Asignar manualmente: se le puede poner el nombre directamente en el recuadro.
•
Automáticamente: si se tiene un servidor de d.C..
Misceláneas:
Gateway: puerta por defecto que tienen definida en la red. DNS
primario: DNS asignados por los administradores de la red.
• DNS secundario: DNS asignados por los administradores de la red.
Además notaron que en la parte superior había un botón de EDIT que les permite editar las
propiedades de todas las tarjetas de red que tenga el servidor.
Se veía así:
113
CEC-EPN
Tema 2
En esta ventana en efecto podían asignar una dirección IP estática o dinámica, ya sea en el
protocolo IPv4 o IPv6. Como no tienen implementado todavía el protocolo IPv6, lo desactivaron.
Al continuar, apareció la siguiente ventana:
2.4.3.
Zona Horaria
Aunque buscaron a Quito como zona horaria no apareció, por lo que escogieron Guayaquil.
Aquí se presentó una tremenda discusión: ¿por qué no aparecía Quito como una zona horaria?
Después de cierta investigación contactaron al Ing. Segundo Arevalo, el cual les explicó que las
zonas horarias se definen según la ciudad dónde está el reloj de la zona, para el caso del
Ecuador, el reloj que mantiene la hora del país está en el INOCAR, en la Base Naval Sur, y es
por eso que América/Guayaquil es la opción que se muestra.
Para el caso de otros países o las Galápagos, se escogería otra zona.
Existe un botón que indica que el reloj del sistema usa UTC, lo desmarcaron, pues este botón
asume que la hora del BIOS está en UTC (GMT) y puede desfasar la hora del sistema.
114
CEC-EPN
Tema 2
Al apretar continuar apareció:
2.4.4.
Clave de root
En esta pantalla había que asignar la clave de administrador, el usuario conocido como root en
el mundo de Linux. De más estaba definir que esta clave debía ser lo suficientemente compleja,
quizá debe contener números y letras en combinación.
Ellos definieron su propia clave de root y la guardaron en secreto para que no pudiera entrar
ningún atacante.
Al apretar Continuar salió:
2.4.5. Selección de Paquetes.
115
Tema 2
CEC-EPN
The default installation of CentOS includes a set of software applicable for general internet usage.
What additional tasks would you like your system to include support for?
□
Desktop - Gnome
□
Desktop - KDE
Um
_c__ . __ cil ___________________________________________________________
Please select any additional repositories that you want to use for software installatlon.
□
Packages from CentOS E/tras
^ Add additional software reposltories
You can further customize the software selection now, or after ¡nstall via the software
management application.
© Customize fater
Q Customize now
Ahora habían llegado a una pantalla muy interesante, donde se podía definir qué grupos de
paquetes podían ser instalados, entre ellos encontraron:
•
Desktop Gnome: instalaría el escritorio Gnome, marcaron en esta opción.
•
Desktop KDE: instalaría el escritorio KDE, es otro escritorio popular, pero no lo
instalaron, pues querían usar GNOME.
•
Server: diversos servicios como el servidor Web, mail, samba, dns, etc.
Definitivamente había que marcarlo, por lo tanto escogieron esta opción.
•
Development: herramientas de desarrollo, como iban a compilar algunas aplicaciones
en el futuro, escogieron instalar estas herramientas.
•
Virtualization: encontraron en Internet que este era un tema interesante; sin embargo,
no lo iban a utilizar ahora, por lo que no lo marcaron.
Al marcar el Radio Button que decía "Customize Now" notaron que en continuar se les daba la
opción de escoger más al detalle qué paquetes instalar y qué paquetes no.|Como no se quería
escoger paquetes al detalle, continuaron:
116
CEC-EPN
Tema 2
2.4.6. Listos para instalar
117
CEC-EPN
Tema 2
CentOS mostró una pantalla que indicaba que estaba a punto de comenzar a instalar el
sistema, advirtiéndo que a partir de ahora, se implementarían todos los cambios anteriormente
señalados y se realizaría el proceso de instalación. Apretaron continuar y comenzó el proceso
de instalación:
Este proceso tomó varios minutos, de 15 a 30, al finalizar la instalación se mostró la pantalla
final:
118
119
________________________________________________
120
Al apretar el botón de reiniciar (Reboot) no se olvidaron de extraer el DVD, para que la máquina
arrancara.
Como conclusiones anotaron que:
•
El instalador lo pregunta todo al inicio. No les molesta con continuas preguntas en
medio de la instalación.
•
En general, como habían comprendido cómo se particionaba el sistema, pudieron
instalarlo fácilmente.
2.4.7.
Arranque por primera vez
Una vez finalizada la instalación, cuando reiniciaron la máquina, notaron que aparecía una
pantalla que indicaba que si no se apretaba ninguna tecla en los 5 segundos siguientes, iba a
arrancar el CentOS Linux
Esta pantalla les di la bienvenida y les comunicó que a continuación podrían hacer aquellos
ajustes luego de apretar el botón Forward. Las opciones que se pueden ajustar son:
Activar o no el firewall: escogieron que iban a deshabilitar (disabled) el firewall, ya
que en el futuro instalarán otro tipo de firewall.
121
Activar o no el SELinux: escogieron que iban a desactivar (disabled) el SELinux, que es un
sistema muy avanzado que permite implementar restricciones adicionales de seguridad.
Muchas personas reportan que al tenerlo activado el sistema se comporta de una forma poco
usual y que tiende a confundir. Una vez que se selecciona esa acción aparece un cuadro de
diálogo que advierte que para hacer efectiva la desactivación del SELinux se necesitará
reiniciar Linux para que los ajustes hagan efecto. En ese cuadro de diálogo se seleccionará sí
(yes).
122
123
Ajustar hora y fecha, se ajustarán la hora y fecha locales.
Crear usuarios adicionales al usuario root: da la opción de crear usuarios
adicionales al root. Aquí se decidió crear usuarios más tarde, no ahora. Se
confirmamos la decisión apretando el botón Continue (continuar) en el cuadro de
diálogo que aparece.
Ajustar y verificar el sonido: este cuadro buscará y probará el sistema de sonido en la
máquina en la cual se está instalando
124
Instalar CD Adicionales: no tenían CD adicionales, por lo que se ignoró este paso.
125
126
III. GESTION DE USUARIOS Y
PERMISOS
127
3.
GESTION DE USUARIOS Y PERMISOS
• Implementa una política para administración de usuarios: grupos, usuarios,
permisos.
• Configura el sistema buscando mantener privacidad y hacer más fácil la
adaptación de usuarios nuevos.
3.1. Usuarios y grupos en Linux
Una de las preguntas que surgieron en la capacitación fue ¿dónde se guardan los
usuarios en Linux? Esta fue una pregunta que los asistentes al curso se hacían
continuamente.
En resumen, se determinó lo siguiente:
•
En el archivo /etc/passwd se guarda la lista de usuarios del sistema.
•
En el archivo /etc/shadow se guardan las claves encriptadas de cada usuario
que exista en /etc/passwd.
•
En el archivo /etc/group se guarda una lista de grupos y los usuarios de
/etc/passwd que pertenecen a esos grupos.
Viéndolo con más calma, se analizaron poco a poco todos los archivos:
En Linux los usuarios se almacenan en el archivo /etc/passwd, donde no se almacenan
las claves, aunque por su nombre lo parezca. Ésta información es
La información que se guarda de cada usuario en /etc/passwd es la siguiente (se ha
marcado en colores cada parte):
1. username,
2. passwd (ya no se usa)
3. UID, o identificador de usuario. Es un número entre 1 y 65535, típicamente es
único para cada usuario del sistema. El UID 0 se utiliza para el usuario
administrador (root). Cualquier usuario que tenga UID 0 tendrá derechos de root.
Los UID de 1 a 499 se utiliza por el sistema para usuarios creados
automáticamente al instalarse paquetes. Del UID 500 en adelante se crean los
usuarios propios de nuestro sistema. Esta asignación de UID es automática.
4. |GID, o grupo primario de usuario. Típicamente un número entre 0 y 65535. El
GID 0 indica que el usuario pertenece al grupo root (un grupo con muchos
derechos)
5. nombre del usuario (campo informativo)
6. directorio base (home dir)
7. shell que se ejecutará
Se puede verificar cada uno de los datos al ejecutar el comando tail /etc/passwd, como
en el siguiente cuadro:
tail /etc/passwd
ntp:x:38:38::/etc/ntp:/sbin/nologin haldaemon:x:68:68:HAL
daemon:/:/sbin/nologin
rpm:x:37:37::/var/lib/rpm:/sbin/nologin
hsqldb:x:96:96::/var/lib/hsqldb:/sbin/nologin xfs:x:43:43:X
Font Server:/etc/X11/fs:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin
named:x:25:25:Named:/var/named:/sbin/nologin
sac:x:500:500:segundo arevalo :/home/sac:/bin/bash
Por otro lado, la información de cada usuario que se guarda en /etc/shadow es la
siguiente:
1. username
2. clave encriptada
3. día en que la clave fue cambiada por ultima vez
4. días durante los que la clave no puede ser cambiada
5. días a partir de los cuales la clave tiene que ser cambiada
6. días de advertencia en los cuales la clave debe cambiarse
7. días después de los cuales la clave expira y se deshabilita la cuenta
8. día en que se deshabilitó la clave
Si se ejecuta el comando tail /etc/shadow se conseguirá un cuadro igual al
siguiente:
tail /etc/shadow
ntp:!!:13910:0:99999:7:::
haldaemon:!!:13910:0:99999:7:::
rpm:!!:13910:0:99999:7:::
hsqldb:!!:13910:0:99999:7:::
xfs:!!:13910:0:99999:7:::
gdm:!!:13910:0:99999:7:::
named:!!:13911::::::
sac:$1$a7WFGL6z$88Uzb7eI4C9b89JJxT3Yv.:13911:0:99999:7:::
De todos estos campos, los más interesantes son el primero y segundo, ya que
permiten manejar la clave del usuario (se ha marcado en colores cada campo).
3.1.1. Proceso que se sigue para crear un usuario
El proceso completo para la creación de un usuario es el siguiente:
1. Se lee /etc/defaults/useradd donde se encuentra la información sobre el shell
por defecto a asignar a los usuarios nuevos (/bin/bash). Nosotros podemos ver
/etc/defaults/useradd con el comando cat, para enterarnos de qué dice.
2. Se crea un nuevo grupo en /etc/group, con el nombre del usuario que se está
creando; este GID será el que se asignará en /etc/passwd.
3. Se agrega una línea en /etc/passwd, donde se almacenará el identificador de
usuario (UID), el grupo primario del usuario (GID), el directorio raíz, el shell que
se ejecutará para el usuario.
4. Luego se crea una línea en /etc/shadow donde se indicará el username y la
clave en formato deshabilitado (!!), así como opcionalmente los tiempos de
expiración de las claves, etc.
5. A continuación se sigue con el directorio raíz del usuario (usualmente
/home/username).
6. Posteriormente se debe proceder a cambiar la clave del usuario por una válida,
y se actualiza /etc/shadow con la nueva clave. Estas claves son encriptadas en
una vía, por lo tanto no se pueden obtener las claves intentando desencriptarlas.
3.1.2. Comando para realizar los pasos anteriores.
El comando para agregar usuarios es useradd, este comando no le asigna clave a un
usuario, sólo lo crea. Desde el shell pongamos:
useradd sac
Este comando realizará todas las acciones anteriormente explicadas: Agregará el
usuario sac con el primer UID disponible mayor o igual que 500. Le crea un directorio
raíz (/home/sac) y le asigna el shell que esté listado en /etc/default/useradd.
Luego de agregarlo se debe poner una clave con el comando passwd:
passwd sac
Tema 3
CEC-EPN
t oobgsac:
File Edit View Terminal Tabs Help
[root@sac -]# passwc sac
Changing password for user sac. New UNIX
password: Retype new UNIX password: |
`
El sistema verificará que la clave no sea fácil de descubrir y le asignará esta clave al
usuario para operar en todo el sistema.
El comando passwd se puede usar también para cambiar la clave de cualquier
usuario cuando este está como usuario root
passwd usuario
Changing password for user sac.
New UNIX password:
El mismo comando sirve para que cualquier usuario pueda cambiar su propia clave
ejecutándo desde su shell de usuario:
passwd
3.1.3. Como borrar usuarios
Para hacerlo se debe ejecutar el comando:
userdel -r usuario
El switch -r indicará que no solo se borrará al usuario, sino que además se borrará el
directorio de usuario, de lo contrario no lo borraría y el FileSystem se quedaría con
información inútil.
3.1.4. Como cambiar el Shell predeterminado
La mayoría de los usuarios que se crean en un sistema Linux se usan solo como
servidor de mensajería, es decir que los usuarios no acceden directamente al shell del
sistema, sino que usan sus contraseñas para leer los correos y/o enviarlos, así como
para potencialmente hacer otras tareas como acceder via ftp.
Entre los usuarios que se tendrá (nivel gerencial, secretarias, ingenieros de otras
áreas, etc.) casi nadie conoce el uso del shell, por lo tanto no es necesario que lo
tengan. De esta forma hay un potencial ahorro de problemas a la hora de un ataque,
pues muchos hacen lo que se conoce como un ataque de diccionario, mediante el cual
intentan adivinar las claves de los usuarios de un sistema para poder entrar por esa
vía. Una vez dentro intentarán otros métodos (que se explicarán en cursos más
avanzados) mediante los cuales pueden obtener privilegios de root.
132
CEC-EPN
Tema 3
Por lo tanto, para leer correos y usar ftp no es necesario que un usuario tenga
asignado un shell como bash, pues ello más bien sería un potencial problema. Por eso
es recomendable que siempre que se cree este tipo de usuarios se haga con un shell
no válido o un shell que no deje entrar al usuario. Por ejemplo, se puede cambiar,
usando vi /bin/bash por /bin/false
Ahora, cambiar en /etc/passwd unos 10 usuarios es algo posible, a diferencia de
hacerlo con unos 50 ó 100, y en la escuela Mentes Libres se tendrían que crear
muchos usuarios. Por eso es mejor crear todos los usuarios con un shell que no sea
/bin/bash.
Esto se puede lograr editando /etc/defaults/useradd. Se debe cambiar la línea que dice:
SHELL=/bin/bash
por
SHELL=/bin/false
De esta forma cualquier usuario que se cree a partir de ahora será creado con el shell
/bin/false.
Para verificarlo, se creará un usuario nuevo con el nombre sac (el nombre del director
de la escuela), hay que poner atención en que, una vez creado el usuario sac sea
/bin/false su shell por defecto en /etc/passwd (verificar con cat /etc/passwd).
Si el usuario usa /bin/bash puede entrar a nuestro sistema, por ejemplo desde la primera
consola de texto (aprieta CTRL ALT F1). Si quieres regresar al ambiente gráfico puedes apretar
ALT F7
3.2. Subtitute user (su)
su permite cambiar rápidamente de un usuario a otro.
su requiere de un parámetro opcional:
•
su - usuario: permite cambiar a "usuario"
•
su - : permite cambiar a "root"
133
Tema 3
CEC-EPN
Por ejemplo, supongamos que estamos en un shell (por ejemplo en la
primera consola de texto) con el usuario sac, y queremos cambiar de sac a
prueba.
Primero se debe verificar qué usuario se está utilizando. Para ello se usará el
comando whoami (who am I?, es decir, ¿quién soy?).
Así se ha verificado la entrada como usuario sac:
whoami
sac
Entonces se escribe: su prueba Password:
(La clave que se debe poner es la del usuario al que se va a convertir, en este ejemplo
será: prueba, por favor verificar que tengamos creado ese usuario previo a hacer su prueba)
Y en efecto, al escribir la clave y dar enter, el usuario se habrá convertido en prueba.
Se puede verificar:
whoami prueba
Si quisiera cerrar la sesión del usuario prueba debería apretar control d, para regresar
automáticamente al usuario sac, y salir del shell.
A continuación el usuario debería verificar esto apretando control d.
Ahora el usuario se convertirá de sac en root:
Hay que verificar que el nombre de usario sea sac:
whoami
sac
Para convertirse en root no es necesario poner el nombre, es suficiente escribir: su Password:
Es necesario recordar que la clave que se debe escribir es la clave de root.
134
Tema 3
CEC-EPN
Es importante recordar que para salir del shell se escribes: control d y esto te regresará
al usuario anterior (sac en este caso es el usuario anterior)
Si se quiere cambiar desde el usuario root hacia otro usuario se lo puede
hacer sin tener que conocer la clave del segundo, por ejemplo, entremos
como el usuario root y pongamos:
whoami root
su - sac
$
En efecto, no hizo falta poner la clave de sac.
En resumen:
•
El usuario root se puede convertir en cualquier otro usuario sin necesidad de
clave.
•
Cada vez que ejecute el comando su, como un usuario no privilegiado, se
solicitará la clave del usuario al que se quiera convertir.
•
Al cambiar de usuario no se pierde el usuario anterior, sino que el nuevo se
sobrepone al anterior, hasta salir, apretando control-d.
3.3. Sudo – Super USer DO
El comando su es muy interesante, solo que es necesario conocer la clave de cada
usuario en el que el usuario original se quiera convertir.
Por ejemplo: para convertirse en root el usuario necesita conocer su clave.
Sin embargo, hay ocasiones en que se precisa que un usuario no privilegiado (como el
usuario que creado sac) realice labores como super usuario, pero no se quiere que
conozca la clave de root, como en el caso de una persona que ayude en la
administración de un laboratorio y que deba realizar ciertas labores sin tener que
conocer la clave de root.
En estos casos esa persona podrá utilizar el comando sudo, ya que es un comando
que permite que usuarios autorizados ejecuten ciertas (o todas) tareas que pueda
135
CEC-EPN
Tema 3
hacer el usuario root, sin la necesidad de saber la clave de éste. La clave que el sudo
pedirá será la del usuario y no la de root.
El sudo también lleva un registro histórico de qué comandos ejecutó un usuario como
root y a qué hora.
Para poder usar el comando sudo se debe editar el archivo donde se guardan los
permisos de sudo, que se llama /etc/sudoers. Para editar el archivo sudoers se usará el
comando visudo
Visudo
3.3.1. Formato del archivo de sudores
El archivo sudoers tiene el siguiente formato:
La estructura es muy simple (se ha marcado en colores cada parte):
<usernames|group> <server=[ALL]|IP>[(usuario que ejecutará)] <comando>
Hay algunas consideraciones que se deben tener:
En la primera columna (usernames/groups) se pondrá el nombre de los usuarios a
quienes se les permitirá usar el comando sudo. Para añadirlos, solamente hay que
escribirlos tal y como aparecen en /etc/passwd. Si se va a incluir a más de un
usuario, se lo puede hacer escribiendo los nombres separados por por coma, por
ejemplo: sac,btapia.
Cuando se quiera añadir grupos de usuarios se debe indicar su nombre
anteponiéndole un %. Por ejemplo, el grupo users se representa como %users.
La segunda columna <server=[ALL]|IP> se usa para especificar desde qué servidor
podrán utilizar el sudo los usuarios a los asignados. El comando sudo permite que
se ejecute entre servidores. Normalmente sudo se usa desde el mismo servidor,
por lo que siempre utilizaremos la palabra clave ALL en la segunda columna. Esta
palabra clave puede ser usada en las tres últimas columnas. Significa todos o
cualquiera, sean estos usuarios, servidores o comandos (según la columna donde
se la ponga).
La tercera columna indicará en qué usuarios podemos convertirnos. Típicamente
se especifica ALL para indicar que nos podemos convertir en cualquier usuario
(root es el objetivo que normalmente nos interesa).
136
Tema 3
CEC-EPN
En la cuarta columna (comandos) se pueden especificar mútiples comandos,
separándolos por coma, o todos los comandos, utilizando la palabra clave ALL.
Para especificar algunos comandos se debe indicar la ruta completa de acceso,
por ejemplo: /bin/cat.
• Delante de los comandos a ejecutar se puede agregar la palabra:
NOPASSWD: (es importante fijarse en el signo de : al final) de forma tal que
cuando el usuario necesite utilizar el sudo, no se le pedirá ninguna clave.
o Ejemplo, se le dará al usuario sac derecho a todos los comandos, sin
necesidad de clave:
sac ALL=(ALL) NOPASSWD: ALL
Ejemplos:
Con el usuario no privilegiado creado, el usuario deberá probar los siguientes ejemplos
3.3.2. Dar accerso total a usuarios específicos:
3.3.2. Dar acceso total a usuarios específicos:
Con visudo se pueden intentar los siguientes comandos. Visudo requiere que el
usuario sea root, por lo tanto se debe abrir dos consolas (dos shells), en una
trabajaremos como root para dar el permiso y en la otra como el usuario no privilegiado
para realizar las pruebas:
En la consola que estamos como root se editará el archivo sudoers (visudo) y
asignaremos a nuestro usuario sac todos los derechos:
sac ALL=(ALL) ALL
El usuario sac podrá ejecutar como superusuario cualquier comando (es el último ALL
el que especifica cualquier comando).
Desde la consola del usuario sac, se ejecutará: cat
/etc/shadow
cat: /etc/shadow: Permission denied
Como se puede observar en el mensaje de error, el usuario sac no puede ver el
137
Tema 3
CEC-EPN
archivo /etc/shadow (pues solo root tiene permiso para verlo).
Usando sudo se debe recordar que si se pidiera clave, sería la clave de usuario sudo cat
/etc/shadow
root:$1$hXrruiLl$4p38ASaYPDEdQEnQuDVl70:13910:0:99999:7:::
bin:*:13910:0:99999:7:::
daemon:*:13910:0:99999:7:::
adm:*:13910:0:99999:7:::
lp:*:13910:0:99999:7:::
sync:*:13910:0:99999:7:::
Como se puede observar, al ejecutar el comando cat a través de sudo el usuario se ha
convertido en root, es por eso se puede ver el archivo /etc/shadow que solo root puede
ver.
3.3.3. Dar acceso a comandos especificos
Con visudo se puede editar los permisos del usuario sac, le ponemos así: sac
ALL=(ALL) /bin/cat,/sbin/
El usuario sac podrá ejecutar como super usuario el comando /bin/cat y/o cualquier
comando que esté dentro de /sbin/.
3.3.4.
logs:
Supervisar las acciones de los los usuarios a través de los
Se pueden mirar dentro de /var/log/secure las acciones que los usuarios han realizado a
través de sudo. Por ejemplo las líneas finales del log sac dicen: Feb 23 12:37:05 sac
sudo: sac : TTY=pts/0 ; PWD=/home/sac ; USER=root ; COMMAND=/bin/cat
/etc/sudoers
Feb 23 12:51:24 sac sudo: sac : TTY=pts/0 ; PWD=/home/sac ; USER=root ;
COMMAND=/bin/cat /etc/shadow
Feb 23 13:00:05 sac sudo: sac : TTY=pts/0 ; PWD=/home/sac ; USER=root ;
COMMAND=/bin/su Feb 23 13:00:05 sac su: pam_unix(su-l:session): session opened for user root by
sac(uid=0)
Como se puede analizar en los logs, el usuario sac, el día 23 de febrero a las
138
CEC-EPN
Tema 3
12:37:05, ejecutó con sudo el comando /bin/cat /etc/sudoers
A las 12:51:24 ejectó /bin/cat /etc/shadow
A las 13:00:05 ejecutó con sudo el comando su Éste último comando es interesante, lo se hizo fue obtener el shell de root (con su -)
pero sin conocer la clave de root sino mediante la del usuario específico. Así que hay
que tener mucho cuidado con especificar ALL en la columna de los comandos, pues
también se incluye el comando su.
3.3.4. Manejo de quotas
Las cuotas es una de las características más interesantes y fundamentales de Linux.
Mediante este sistema podemos manejar un correcto y adecuado uso del disco por
parte de nuestros usuarios.
Una de las mayores utilidades de las cuotas (y no la única) es para controlar la
cantidad de espacio en disco que ocupan los correos de los usuarios. También se
pueden usar en caso de que estemos manejando linux como servidor de archivos de
windows (samba) para asignarle espacio a los directorios de usuario.
Las cuotas se manejan basadas en particiones, por lo que debemos definir en qué
particiones las activaremos.
Por ejemplo, para los usuarios que hacen POP3, podríamos activar las cuotas para la
partición /var, pues es en /var/spool/mail donde se almacenan los correos de estos.
Otra definición importante de las cuotas es determinar qué espacio asignaremos a
cada usuario, por ejemplo, siempre sugerimos al menos asignar 20mb de espacio en
disco para cada usuario de correo que tengamos, por lo tanto si tenemos 500
usuarios, debemos preveer que podemos tener un máximo de 500*20=10000MB o lo
que es lo mismo un disco de 10GB de tamaño. Por supuesto es un caso bien raro el
que las cuotas de TODOS los usuarios se llenen a la vez, pero puede suceder.
Las cuotas se pueden manejar de dos formas en linux:
1. Cantidad de inodos por usuario
2. Cantidad de Bloques por usuario
La cantidad de inodos es en efecto eso, la cantidad máxima de ficheros que podrá
crear un usuario bajo su control, bajo su propiedad. Es muy útil porque hay usuarios
139
CEC-EPN
Tema 3
que por error crean programas que comienzan a generar millones de pequeños
archivos (posiblemente de 0bytes) que van consumiendo todos los inodos del sistema.
No es un hecho intencionado, pero nos puede dar un buen trabajo determinar quién
está consumiendo todos los inodos del sistema.
Ahora en estos momentos, pocos usuarios son los que acceden directamente al shell
a ejecutar sus "propios" programas, por lo que poner control en los inodos no es algo
muy ventajoso. Las cuotas siempre se manejan para controlar el espacio en disco que
consume el buzón de correo de los usuarios.. y el buzón consta de un sólo inodo ya
que se usa el formato mbox que consiste en un sólo archivo donde se almacenan
secuencialmente todos los mensajes.
Es por esto que no haremos mucho énfasis en los inodos, pero sí en la segunda forma
de controlar las cuotas por bloques, o espacio en disco.
Esta es una forma que todo el mundo comprende, sencillamente podemos decir que
un usuario no puede consumir más de 5mb o 20mb en disco y listo, si intentara
consumir más espacio en disco, el sistema no le dejará. Así de simple.
Las cuotas además tienen dos límites o techos:
• soft quotas
• hard quotas
La hard quota es mucho más fácil de entender y es sencillamente las que todos
usamos, este es un valor que cuando el usuario alcance, el sistema no le dejará
escribir más en el disco.
La soft quota es una cuota que puede ser sobrepasada durante un determinado
tiempo (llamado grace period y se mide en días), por ejemplo:
Un usuario tiene una soft quota de 20 megas y una hard quota de 40 megas:
El usuario puede usar en un determinado instante 25 megas, esto es, se ha pasado de
la soft quota, el sistema activará instantáneamente un contador donde irá descontando
el periodo de gracia que le da al usuario para respetar la soft quota.
Este periodo de gracia es por defecto 7 días, es decir, este usuario durante 7 días
podrá excederse de 20 megas (pero nunca sobrepasar los 40 de la hard quota), si
durante algún momento de estos 7 días , el usuario baja a menos de 20 megas, el
sistema resetea el contador y no ha pasado nada. Si el usuario alcanza los 7 días
140
Tema 3
CEC-EPN
sobrepasado de cuota, el sistema no le dejará escribir nada más hasta que no baje su
uso de disco a menos de lo establecido en la soft quota.
Las softquotas es un sistema bonito e interesante, para manejar ciertos picos
esporádicos que puedan suceder. Sin embargo, es muy difícil de explicarle a un
usuario no conocedor, esto es, cómo decirle a un gerente o al contador de la empresa
que sí pudo escribir la semana pasada, pero ahora tiene que bajar a 20 megas de los
35 que está usando porque la soft quota o la hard quota, etc, etc.. ellos no lo
comprenderán muy bien y podemos buscarnos más problemas que soluciones.
Por lo tanto, sugerimos que la soft quota siempre sea igual o muy parecido a la hard
quota, esto es, al alcanzarse un valor predeterminado sencillamente el sistema no
dejará escribir al usuario y listo, no hay que explicarles más, ellos sí entienden de las
cuotas duras (hard quotas).
3.3.4.1. Activando las cuotas
Activar las cuotas es un proceso bastante simple, pero antes hablemos de un archivo
muy importante en nuestro sistema llamado /etc/fstab
fstab contiene todas las particiones que son montadas en nuestro sistema, de la
forma:
partición
punto montaje tipo de fs
opciones del fs dump/check
por ejemplo hagamos: cat /etc/fstab y veremos varias lineas parecidas a esta:
LABEL=/var /var ext3 default 1 2
esto le pedirá a Linux que monte la partición llamada (etiquedata): "/var" en /var que
tiene un formato ext3, que lo monte con las opciones por defecto (lectura, escritura:
r/w) y que chequee (numero 2) en caso de caerse intempestivamente el sistema
(dump, la penúltima columna, no se usa).
Para activar las cuotas, debemos poner dos opciones más al filesystem que debemos
activar. Esto se hace agregando una opción que le indicará al kernel que active las
cuotas de usuario y grupo al filesystem. Por ejemplo: LABEL=/var /var ext3
default,usrquota,grpquota 1 2
Entonces debemos reiniciar el sistema para que las cuotas queden activadas.
141
CEC-EPN
Tema 3
Al reiniciar el sistema este procederá a revisar el sistema y activar el archivo donde se
guardan las cuotas.
3.3.4.2. Verificando las quotas
El comando para verificar las quotas de los usuarios es:
quota usuario nos indicaría algo así: Disk quotas for user sac
(uid 500): Filesystem blocks quota limit grace files quota limit
grace /dev/hdd2 28 32000 32000 7 0 0
estamos usando 28 bloques (28kb) de un total de 32000 kb permitidos (32megas)
Por supuesto los usuarios que hayamos creado y no les hayamos asignado las cuotas
nos indicarán que la cuota es ilimitada. Por ejemplo, el usuario root NUNCA debe tener
cuotas, pues maneja diferentes archivos de sistema: [root@sac ~]# quota root Disk
quotas for user root (uid 0): none Otro comando para revisar las quotas de los usuarios
es: repquota -a
El cual nos dará un reporte de las quotas de TODOS y cada uno de los usuarios del
sistema, mostramos una breve página: *** Report for user quotas on device /dev/hda7
Block grace time: 7days; Inode grace time: 7days Block limits File limits
User used soft hard grace used soft hard grace
root -- 8485596 0 0 44422 0 0 SITE154logs -- 3808 0 0 1 0 0 SITE227-logs -4904 0 0 721 0 0 acomercial2 -- 64 20480
21504 13 0 0 sistemas -- 9756 20480
21504 44 0 0
Por ejemplo el usuario sistemas tiene consumidas 9756KB (bloques) de los 20480 kb
(bloques) permitidos en suave, 21504 bloques (duros). Tiene 44 archivos utilizados
pero no tiene límites (0) suaves ni duros.
3.3.4.3. Como hacemos para editar las coutas
Cada usuario que creemos nuevo viene sin cuotas predefinidas (uso ilimitado), por lo
tanto debemos definirle estas para que comiencen a funcionar.
El comando edquota nos permite manejar las cuotas de usuarios:
edquota -u sac
142
CEC-EPN
Tema 3
Nos mostrará en el vi, un resumen de las cuotas, de ahi podemos cambiar el valor que
aparece debajo de soft y debajo de hard, y poner un valor en KB, correspondiente a
las cuotas, por ejemplo, pongamos:
20000 en cada uno de ellos, esto sería una cuota de 20megas al usuario.
Aprovechemos la oportunidad para comentar que los valores no tienen que quedar
precisamente ajustados debajo de la cuota (suave o dura), una vez salvado el sistema
ajustará las posiciones.
Al finalizar salvamos los cambios y listo, la cuota está preparada.
Podemos hacer un su - a este usuario (su - sac, en mi caso) y tratar de copiar algunos
archivos desde /usr ( cp -a /usr . ) y veremos que cuando se cumpla el espacio de
cuota asignado por nosotros, esta fallará con un error descriptivo.
3.3.4.4. Ajustando las coutas en masa
Si tuviéramos muchos usuarios a los que quisiéramos editar las cuotas, podemos usar
este pequeño script que por defecto cambiará las cuotas de todos los usuarios por las
cuotas que tenga asignado el usuario sac (cambiar por el usuario tipo, o plantilla de
uds):
edquota -p sac "awk -F: '$3 > 499 {print $1}' /etc/passwd" esto
significa algo así:
edita las cuotas de todos los usuarios que existen en /etc/passwd, cuyos uid sea
mayor a 499, y toma como plantilla las cuotas del usuario sac. Por supuesto, primero
tendremos que haber habilitado algún usuario con sus cuotas (sac en mi caso) para
tomar a ese usuario de base para replicar los valores en el resto de usuarios.
3.3.5. Manejo de permisos
Días atrás, al ejecutar el comando ls -l (listado extendido), se vio que las primeras
columnas de ese listado decían algo así:
-rw-rw-r-- 1 sac sac 2748 Feb 22 19:01 nuestroserver.png
drwxr-xr-x 3 sac sac 4096 Mar 4 14:15 Desktop
Al leer esto con atención se podrían deducir algunos datos (se ha marcado en colores
cada caso):
1. nombre del archivo
2. hora
3. día y mes
143
CEC-EPN
Tema 3
4. tamaño (en bytes)
Pero las otras columnas ¿qué significan?, ¿por qué en el ejemplo aparece sac sac?
Después de leer un manual sobre permisos y usuarios se lograró resumir el proceso en
las siguientes consideraciones:
Los nombres que aparecen son el usuario y el grupo de propietarios del archivo o
directorio, respectivamente.
Por ejemplo ll
/home/ total 32
drwx ..... 5 dsl dsl 4096 Feb 8 19:40 dsl
drwx ..... 60 sac sac 4096 Mar 5 21:36 sac
drwx ..... 2 root root 16384 Feb 1 12:58 lost+found
drwxr-xr-x 20 root root 4096 Feb 1 21:39 mnt
drwx--x—x 4 prueba prueba 4096 Feb 29 21:38 prueba
Se puede deducir que el dueño del directorio dsl es el usuario dsl, y el grupo dsl (se ha
marcado en colores cada caso).
En RedHat/CentOS cada usuario tiene su propio grupo, es por eso que cada archivo o
directorio tiene un usuario y grupo con el mismo nombre.
Ahora, los primeros diez caracteres (en amarillo en la tabla anterior) son los tipos de
archivos y permisos:
•
El primer caracter puede ser una - , que significa que es un archivo, o una d si
fuera un directorio, también puede ser una l, que indicaría que es un link
(enlace directo).
•
Los siguientes nueve caracteres se dividen en 3 grupos de tres e indican
o Los tres primeros: permisos para el usuario dueño (user).
o El segundo grupo de tres: permisos para el grupo dueño (group).
o El tercer grupo de tres: permisos para los otros (other).
Por ejemplo:
-rw-rw-r-- 1 sac sac 177341 Feb 22 20:17 bienvenidos-nuestroserver.mp3 drwxrwxr-x 2
sac sac 4096 Mar 6 08:04 bin
144
GESTION DE USUARIOS Y PERMISOS
145
• En el primer caso, el archivo se llama bienvenidos-nuestroserver.mp3 y tiene 177341kb
de tamaño, el usuario dueño
Es un es: sac, el grupo dueño es: sac porque el primer caracter es un
o
o Los permisos para el usuario dueño son rwo Los permisos para el grupo dueño son: rwo Los permisos para los demás (otros) usuarios son: r--
•
En el segundo caso, el directorio se llama bin, y tiene 4k de tamaño, el
usuario dueño es: sac, el grupo dueño es: sac.
o Es un directorio porque el primer caracter es una d.
o Los permisos para el usuario dueño son rwx.
o Los permisos para el grupo dueño son: rwx.
o Los permisos para los demás (otros) usuarios son: r-x.
Pero ¿qué significan esas letras?
•
r: permiso de lectura.
•
w: permiso de escritura.
•
x: permiso de ejecución (si es un directorio, el permiso indica que se puede
entrar al directorio).
•
La inexistencia de uno de los permisos (leer, escribir o ejectuar) se representa
con un -.
Ahora el usuario deberá reconocer, con esta notación, qué tipo de permisos habría en
los siguientes ejemplos:
1. rwxrwxr-2. rwxrw-r-3. rw-r --1. El usuario dueño y el grupo tienen todos los permisos, los otros solo pueden
leer.
2. El usuario dueño tiene todos los permisos, el grupo puede leer y escribir, mas
no ejecutar, y los otros solo pueden leer.
3. El dueño puede leer y escribir, el grupo sólo puede leer y los otros no pueden
hacer nada.
145
GESTION DE USUARIOS Y PERMISOS
146
Como se ve, aquellas letras que parecían tan complicadas solamente explican qué tipo
de permisos tienen los archivos en cuestión.
3.5.1. Otra forma de referirse a los permisos
Alguien que había recibido hace muchos años un curso de Unix, insistía en indicar que
el profesor de aquel curso usaba números en vez de las letras antes mencionadas, por
ejemplo, este permiso:
•
rwxrw-r-- él insistía en que se decía: 764
Así que le pidieron explicara un poco más el proceso de numeración que reemplazaba
a las 9 letras.
Cada grupo de permisos constaba de 3 letras que totalizaban 9 caracteres, y al dividir
el permiso anterior se ve lo siguiente:
•
rwx
•
rw-
•
r-Al asignar en notación binaria el valor de 1 cuando las letras están activas y el
valor de 0 cuando no lo están (-)? quedaría lo siguiente:
•
rwx quedaría como: 111 (las tres letras están activas)
•
rw- quedaría como 110
•
r-- quedaría como 100
Ahora, al convertir estos números binarios a decimales, estas son las posibles
Caracteres
rwx
rwr-x
r--
Binario
111
110
101
100
000
Decimal
7
6
5
4
0
—
Según la tabla
anterior:
variantes:
146
GESTION DE USUARIOS Y PERMISOS
•
147
rwxrw-r-- se leería como: 764 (rwx es igual a 111, que es igual a 7; rw- es igual
a 110, que a su vez es igual a 6; r—es igual a 100 y a su vez igual a 4).
Ejercicios:
•
rw -----
•
r ------
•
rw-rw-rw-
• r--r--r-•
rwxr--r-Respuestas:
•
600
•
400
•
666
•
444
•
744
Es un poco complicado de usar, pero increíblemente hay muchas personas que
prefieren este formato, pues es más conciso para expresar un permiso.
3.3.5.1. Comandos para cambio de permisos y usuarios.
Cambio de usuario propietario
El comando chown (change owner o cambiar propietario) sirve para cambiar al
propietario de un archivo o directorio.
Para utilizar este comando primero se crea un archivo llamado prueba. Desde el
usuario root se utilizará el ya conocido comando touch:
[root@sac ~]# touch prueba [root@sac ~]# ls -l
prueba -rw-r--r--1 root root 0 Mar 9 21:01 prueba
Resultó un archivo llamado prueba, con el dueño root y el grupo dueño root. Los
permisos eran 644.
Para cambiar el dueño de un archivo se utilizará el comando chown con la sintaxis
como se explica a continuación:
147
GESTION DE USUARIOS Y PERMISOS
148
chown nuevousuario nombredearchivo
por ejemplo:
[root@sac ~]# chown sac prueba
[root@sac ~]# ll prueba
-rw-r--r--1 sac root 0 Mar 9 21:01 prueba
El comando chown hizo que el usuario sac sea el dueño del archivo prueba. No alteró
los permisos, que se mantienen como 644.
Cambio de grupo propietario
Si se quiere cambiar de grupo de usuarios propietarios hay dos opciones:
a. El comando chgrp (change group), que cambia el grupo propietario Tiene la siguiente
sintaxis:
chgrp nuevogrupo nombredearchivo
permite cambiar solamente el grupo, por ejemplo:
[root@sac ~]# ll prueba
-rw-r--r--1 sac root 0 Mar 9 21:01 prueba
[root@sac ~]# chgrp sac prueba
[root@sac ~]# ll prueba
-rw-r--r--1 sac sac 0 Mar 9 21:01 prueba
En efecto, el archivo inicialmente pertenecía al grupo root y después de ejecutar el
comando CHange GRouP este pasó a pertenecer al usuario sac.
b. El comando chown, con otra sintaxis, que cambia el grupo propietario y el usuario
propietario a la vez.
El formato para utilizar el comando chgrp con esta función es:
chown nuevousuario.nuevogrupo nombredearchivo
Por ejemplo, para ponerle a este archivo el usuario root y el grupo root, ambos en un
solo comando, se usaría:
148
GESTION DE USUARIOS Y PERMISOS
149
[root@sac ~]# ll prueba
-rw-r--r--1 sac sac 0 Mar 9 21:01 prueba
[root@sac ~]# chown root.root prueba
[root@sac ~]# ll prueba
-rw-r--r--1 root root 0 Mar 9 21:01 prueba
Además del signo de punto (.) se puede usar el signo dos puntos (:) para separar
usuario de grupo en caso de que el nombre de los usuarios y/o grupos contuvieran un
punto (.) . Por ejemplo, con un usuario o grupo llamado: e.perez, si se usara el signo
de . no se podría determinar bien dónde acababa el nombre del usuario y dónde
comenzaba el del grupo. Es por esto que muchas personas prefieren usar los dos
puntos siempre.
En consecuencia, el siguiente comando es equivalente.
[root@sac ~]# ll prueba
-rw-r--r--1 sac sac 0 Mar 9 21:01 prueba
[root@sac ~]# chown root:root prueba
[root@sac ~]# ll prueba
-rw-r--r--1 root root 0 Mar 9 21:01 prueba
Cambio de permisos
El comando chmod permite cambiar los permisos para cada grupo de usuario. Tiene
dos formas:
1. Mediante los números convertidos de binario (755, 600, etc).
2. Mediante el uso de caracteres identificando a los usuarios/grupos y a los
permisos.
1- Números binarios:
Para cambiar los permisos se pueden utilizar los números convertidos en binarios
con el siguiente formato:
chmod nuevopermiso nombredearchivo
Por ejemplo:
[root@sac ~]# ll prueba
-rw-r--r--1 root root 0 Mar 9 21:01 prueba
149
GESTION DE USUARIOS Y PERMISOS
150
[root@sac ~]# chmod 400 prueba
[root@sac ~]# ll prueba
-r- ------ 1 root root 0 Mar 9 21:01 prueba
El archivo inicialmente tenía de permisos rw-r--r-- (644) y al ejecutar el chmod 400
prueba, se cambiaron a r ----- (400).
2- Uso de caracteres para identificar usuarios/grupos y permisos.
Esta forma en cambio es muy cómoda porque permite identificar precisamente lo que
se realiza. El formato es muy parecido:
chmod nuevopermiso nombredearchivo
La parte de nuevopermiso está formada a su vez por 3 partes:
•
A quien se le asignará el permiso: usuario (u), grupo (g), otros (o) y/o todos
(a)
•
El permiso se quitará (-); pondrá (+); o se ignorará los permisos previos (=)
•
¿Sobre qué permiso se trabajará?: Lectura (r), Escritura (w), y/o ejecución (x)
Por ejemplo, si quisiera dar el permiso de lectura para todos, podría poner: [root@sac
~]# ll prueba
-r ........ 1 root root 0 Mar 9 21:01 prueba
[root@sac ~]# chmod a+r prueba
[root@sac ~]# ll prueba
-r--r--r-- 1 root root 0 Mar 9 21:01 prueba
En efecto, al poner a+r (Todos, darle, lectura), el archivo prueba se cambió a r--r--r-(666)
Otra manera de hacer la misma acción es poniendo:
chmod ugo+r prueba
En la primera parte, en la que se señaló a quién se le darán los permisos, se puede
poner más de una opción, como en el caso anterior: a (todos) es equivalente a ugo
(usuarios, grupos y otros).
150
GESTION DE USUARIOS Y PERMISOS
151
De igual manera, en la parte en la que se específicó qué permisos se están
modificando, se tiene más de una opción.
Por ejemplo, si se busca dar derecho de escritura y ejecución al usuario dueño y al
grupo, debería ponerse:
[root@sac ~]# ll prueba
-r--r--r-- 1 root root 0 Mar 9 21:01 prueba
[root@sac ~]# chmod ug+wx prueba
[root@sac ~]# ll prueba
-rwxrwxr-- 1 root root 0 Mar 9 21:01 prueba
El signo = sirve para ignorar los permisos previos y cambiar los permisos a los
solicitados.
Por ejemplo, darles a todos solamente permisos de lectura:
[root@sac ~]# ll prueba
-rwxrwxr-- 1 root root 0 Mar 9 21:01 prueba
[root@sac ~]# chmod ugo=r prueba
[root@sac ~]# ll prueba
-r--r--r-- 1 root root 0 Mar 9 21:01 prueba
Al poner ugo=r se indica: a los usuarios, grupo y otros,(u g o) ponerles (=) permisos de
lectura (r). Se ignoran los permisos que había antes y se modifican los permisos.
Cambiar permisos a los directorios:
Cualquiera de los comandos antes mencionados puede utilizarse para cambiar los
permisos o dueños de un directorio. Si se quiere cambiar los permisos recursivamente
se utilizará el ya conocido switch -R para que se cambien los permisos al directorio y a
todos los archivos y directorios que están dentro de él.
Por ejemplo, al crear un directorio llamado: test que contenga un directorio llamado
uno y otro llamado dos
[root@sac ~]# mkdir test
[root@sac ~]# mkdir test/uno
[root@sac ~]# mkdir test/dos
[root@sac ~]# ll test/
151
GESTION DE USUARIOS Y PERMISOS
152
total 8
drwxr-xr-x 2 root root 4096 Mar 9 21:28 dos
drwxr-xr-x 2 root root 4096 Mar 9 21:28 uno
[root@sac ~]# ll
drwxr-xr-x 4 root root 4096 Mar 9 21:28 test
Estos directorios eran propiedad de root y el grupo root.
Para cambiarles el dueño y el grupo a sac se haría:
[root@sac ~]# chown -R sac.sac test [root@sac ~]# ll
drwxr-xr-x 4 sac sac 4096 Mar 9 21:28 test
[root@sac ~]# ll test/
drwxr-xr-x 2 sac sac 4096 Mar 9 21:28 dos drwxr-xr-x 2 sac
sac 4096 Mar 9 21:28 uno
El switch -R cambió el dueño y grupo al directorio y a todos los directorios y archivos
que estaban dentro de ese directorio.
Este mismo switch puede ser utilizado con chmod y chgrp.
152
IV. GESTION DE UNIDADES DE
ALMACENAMIENTO Y SISTEMAS
DE ARCHIVOS
153
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS
4.
154
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE
ARCHIVOS.
4.1. UBICACIÓN DE ARCHIVOS Y DIRECTORIOS
Los directorios y archivos de un sistema Linux tiene una estructura estándar, algunos de
los directorios son:
/boot
Mantiene el kernel e información indispensable para el arranque del sistema.
/bin
Mantiene unos pocos programas que estarán disponibles incluso en los modos de
ejecución más restringidos (e.g. bash, cat, ls, login, ps).
/sbin
Mantiene programas disponibles sólo para el administrador incluso en los modos
de ejecución más restringidos (e.g fsck, getty, halt).
/usr
Programas accequibles a usuarios finales y datos de estos programas que no
requieren ser modificados (datos de sólo lectura). Algunos de sus subdirectorios
son:
bin, games
Programas disponibles para todos los usuarios.
154
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS
155
sbin
Herramientas para el administrador.
dict
Diccionarios --usados por ejemplo por ispell y look.
share
Datos de diversos programas, entre sus subdirectorios están: doc, man y info que
contienen documentación; locale, i18n que mantiene información sobre
internacionalización (locale); zoneinfo que mantiene información sobre zonas
horarias.
doc, info, man
Enlaces o complementos a la documentación disponible en /usr/share/doc,
/usr/share/info y /usr/share/man.
lib
Librerías de funciones comunes a varios programas (algunas como libc
indispensables para todos).
include, src
Encabezados de algunos componentes del sistema y fuentes de algunos
programas.
155
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS
156
X11R6
Programas y datos de X-Window.
local
Otros programas y datos compilados por el administrador i.e no provienen de
paquetes Debian. En algunos sistemas otros programas se ubican en /opt.
/floppy, /cdrom, /mnt
Directorios para montar disquettes, CD-ROMs y otros sistemas de archivos o
dispositivos.
/proc
Diversos canales de comunicación con algunos programas (por ejemplo con el
kernel).
/lib
Librerías indispensables y módulos (especialmente requeridas durante el
arranque del sistema).
/etc
Archivos de configuración de diversos programas.
/dev
156
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS
157
Abstracciones a los dispositivos conectados (o que podrían conectarse) al
computador.
/home
Mantiene información de los usuarios del sistema.
/root
Mantiene información del administrador del sistema.
/tmp
Archivos temporales creados por algunos programas, que serán borrados por el
sistema operativo durante el arranque.
/var
En este directorio los programas que lo requieran pueden mantener archivos que
deban modificarse frecuentemente. Algunos de sus subdirectorios son: mail
donde se mantienen colas de correo de cada usuario, log que mantiene bitácoras,
run con archivos que mantienen los números de los procesos iniciados al
arrancar el sistema, spool colas de impresión y de otros programas, tmp archivos
temporales (más persistente que /tmp).
/proc
Este directorio es "virtual", no está presente en el disco, es creado por el sistema
para intercambiar información con más facilidad.
157
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS
158
El rigor de esta jerarquía hace que memorizandola sea fácil emplear diversos sistemas
Unix, aunque puede no ser la más apropiada en algunas circunstancias. Para simular
jerarquías diferentes cada proceso iniciado por el usuario root puede tener un directorio
raíz diferente al directorio raíz real del sistema. Para establecerlo se emplea el programa
chroot, que recibe como primer parámetro el nuevo directorio raíz y como segundo
parámetro el programa por ejecutar. La ruta del programa se especifica con respecto al
nuevo directorio raíz y para que el programa pueda ejecutarse, deben ubicarse las
ibrerías que este requiera en la "nueva" jerarquía (por ejemplo en el nuevo directorio
/lib).
Esta jerarquía de directorios en Linux no necesariamente está en un disco, sino sólo en
memoria RAM, por eso pueden tenerse directorios como /proc y pueden montarse
diversos sistemas de archivos sobre la misma jerarquía como se presenta en la siguiente
sección.
4.1.1. MONTAJE Y DESMONTAJE DE SISTEMAS DE ARCHIVOS
Un sistema de archivos es información almacenada en un dispositivo de
almacenamiento organizada siguiendo una convención, la cual permite al sistema
operativo manejar la información cuando el usuario lo requiere, es decir, leer, escribir,
consultar directorios, etc. Hay diversos tipos (o convenciones) de sistemas de archivos,
Linux cuenta con controladores para varios tipos creados específicamente para Linux
(e.g ext2, ReiserFS) así como controladores para tipos de sistemas de archivos creados
para otros sistemas operativos (e.g affs, hpfs, ntfs, msdos). Los tipos que pueden
emplearse con Linux están incluidos en el kernel o son módulos en el subdirectorio fs
158
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS
159
del directorio con módulos de su sistema (es decir, el directorio de módulos es de la
forma /lib/modules/2.2.x/fs/ remplazando x por la versión de su kernel).
Los que puede usar dsacnden de la forma como se haya compilado el kernel y de los
módulos que estén cargados. Puede examinar los tipos que soporta su sistema viendo el
contenido de /proc/filesystems y puede emplear otros tipos de sistemas de archivos
cargando los módulos apropiados ---mientras sean soportados
Aunque toda la estructura de directorios presentada en la sección anterior podría estar
en un sólo sistema de archivos, es posible distribuirla en varios. Para poder emplear un
sistema de archivos primero debe montarse en algún directorio con el comando mount
o debe configurarse el sistema para que lo monte automáticamente durante el arranque
(el primer directorio que debe montarse es la raíz / ). Para desmontar un sistema de
archivos de un directorio se emplea el comando umount.
El programa mount sin argumentos presenta los sistemas de archivos que están
montados, de cada uno presenta el dispositivo en el que reside, el directorio en el que
está montado, el tipo de sistema de archivos y algunos parámetros del montaje, por
ejemplo:
/dev/hda1 on / type ext2 (rw,errors=remount-ro,errors=remount-ro)
proc on /proc type proc (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda2 on /var type ext2 (rw)
/dev/hda3 on /home type ext2 (rw)
159
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS
160
En el ejemplo se muestran 5 sistemas de archivos montados en los directorios /, /proc,
/dev/pts, /var y /home. 3 de ellos son de tipo ext2 y residen en tres particiones de un
disco duro (/dev/hda1, /dev/hda2 y /dev/hda3), los otros dos son virtuales, es decir, no
residen en dispositivo de almacenamiento alguno (son creados por el kernel). Las
opciones de montaje de todos indican que pueden leerse y escribirse rw, el sistema
montado en la raíz en caso de fallas será montado con permiso de sólo lectura
(errors=remount-ro) y el sistema montado en /dev/pts tendrá todos sus archivos como
pertenencientes al grupo 5 (tty) y permisos de escritura y lectura para el usuario y sólo
de escritura para el grupo (modo 620).
Para montar un sistema de archivos se emplea:
mount -t tipo -o opciones dispositivo directorio
Donde dispositivo es el nombre del dispositivo que contiene el sistema de archivos (e.g
/dev/hda1 o /dev/fl0), tipo es el tipo del sistema de archivos y directorio es la ruta donde
se quiere acceder la raíz del sistema montado (si el directorio donde se monta contiene
datos, estos serán escondidos mientras el nuevo sistema de archivos permanezca
montado).
La información sobre un sistema de archivos, su directorio de montaje y opciones
pueden especificarse en el archivo /etc/fstab. De hacerlo puede emplear
mount directorio
para montar el sistema de archivos en el directorio especificado (el resto de información
debe estar en /etc/fstab). Además, por defecto, los sistemas de archivos especificados en
160
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS
161
ese archivo serán montados automáticamente durante el arranque del sistema. Un
ejemplo complementario al ejemplo anterior es:
/dev/hda1 /
/dev/hda4 none
proc
/dev/fd0
ext2
defaults,errors=remount-ro 0 1
swap
sw
/proc proc defaults
/floppy auto
0 0
0 0
defaults,user,noauto
0 0
/dev/cdrom /cdrom iso9660 defaults,ro,user,noauto
/dev/hda2 /var
ext2
/dev/hda3 /home ext2
rw
rw
0 0
0 2
0 2
Cada línea específica un sistema de archivos con: dispositivo, directorio donde se debe
montar, tipo del sistema de archivos, opciones de montaje separadas por comas, la
frecuencia de volcado (típicamente 0) y un númeo para controlar el chequeo durante el
arranque con fsck. Además de los tipos soportados por su sistema puede emplear swap
para especificar particiones que servirán como zona de intercambio Algunas opciones
(comunes a todo sistema de archivos) son: ro para montar en modo de sólo lectura, user
que indica que un usuario puede montar el sistema de archivos (por defecto sólo el
administrador puede hacerlo), rw para montar en modo lectura y escritura, ro modo de
sólo lectura, noauto para indicar que el sistema no debe montarse durante el arranque --note que los directorios /floppy y cdrom no son montados automáticamente durante el
arranque. El número que controla el chequeo con fsck indica el orden en el cual hacer
chequeos, 0 indica que no se debe chequear el sistema, otros números positivos
especifian una prioridad (los menores son más prioritarios y los números con el mismo
161
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS
162
número de ser posible son chequeados en paralelo). Es conveniente emplear 1 con el
sistema de archivos montado en la raíz y 2 para los demás que requieran chequeo.
4.1.2. SISTEMAS DE ARCHIVOS DE LINUX
Aunque cada tipo de sistema de archivos tiene características propias, Linux puede
manejar varios representándolos en un módelo de sistema de archivos propio del kernel
(virtual file system). Por ejemplo los tipos vfat y msdos no permiten manejar permisos
ni propietarios, pero al montarlos el kernel suple la carencia con valores por defecto .
El sistema de archivos del kernel se organiza a partir del árbol de directorios, en este
árbol se encuentran nombres de archivos y directorios. Junto con cada nombre hay un
número que identifica de forma única la información y que permite ubicarla en algún
dispositivo de almacenamiento ---estos números pueden examinarse con ls -i. Por este
diseño pueden montarse y desmontarse diversos sistemas de archivos sobre el mismo
arbol de directorios, cada proceso puede tener su propio directorio raíz (chroot) y puede
haber directorios y archivos que no corresponden a información almacenada en
dispositivo alguno e.g el directorio /proc.
Cada entrada del árbol de directorios es de uno de los siguientes tipos:
regular
Se trata de infomación que está almacenada fisicamente en algún dipositivo
montado, es decir programas o datos.
enlace simbólico
162
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS
163
Vinculo al nombre de otro archivo en el arbol de directorios (este es un enlace
suave, a diferencia de un enlace duro que referencia el nodo-i). Se crean con el
programa ln y la opción -s. La desventaja de los enlaces suaves es que hacen el
acceso a la información un poco más ineficiente que los enlaces duros, entre sus
ventajas están: si se borra el archivo enlazado el enlace simbólico ya no
funciona, pueden hacerse enlaces simbólicos a directorios (no pueden hacerse
enlaces duros a directorios).
directorio
Subdirectorio. Se manejan con mkdir, rm -f. Cada proceso tiene un directorio
de trabajo que puede administrarse con pwd y cd.
Dispositivo por caracteres
No es información almacenada en dispositivo alguno, representa un dispositivo
físico que se controla enviando de a un caracter (e.g una línea serial, un modem,
una terminal). Se crean con
mknod [-m modo] nombre
num_mayor num_menor
Donde el modo puede especificarse con números o letras al igual que con
chmod , num_mayor y num_menor son números que en Linux identifican de
forma única el dispositivo. Algunos números de dispositivos se presenta en el
siguiente capítulo, la lista completa está en las fuentes del kernel en
include/linux/major.h y están documentados en Documentation/devices.txt o en
163
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS
164
Internet la documentación más reciente (que corresponde al kernel más nuevo)
en: http://www.kernel.org/pub/linux/docs/device-list/devices.txt. Por ejemplo
allí se documenta que el dispositivo de caracteres con número mayor 4 es un
dispositivo tty (por ejemplo una de las consolas virtuales), el número menor
indica de que consola virtual se trata (si es un entero entre 1 y 63), para crear una
entrada en el directorio de trabajo que se refiera a la primera consola virtual con
el nombre cons1:
mknod cons1 c 4 1
Dispositivo por bloques
Representa un dispositivo al que se le pueden enviar bloques de información (e.g
tarjeta de video, disco duro). Para crearlo se usa mknod de la forma como se
presentó para dispositivos de caracteres pero con b después del nombre en lugar
de c.
Pipes y sockets
No es información almacenada en dispositivo alguno, son canales de
comunicación entre programas. Desde el intérprete de comandos pueden crearse
pipes con mkfifo o con mknod seguido del nombre del pipe y la letra 'p'.
Además de los permisos presentados en la sección para usuarios en Linux pueden
especificarse los siguientes:
164
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS
•
165
setuid bit: empleado con archivos ejecutables cambia la identificación del
usuario por la del dueño del archivo. Con chmod se modifica empleando u y s.
por ejemplo:
•
chmod u+s cvs
indica que cuando el programa cvs se ejecute, debe cambiarse la identificación
por la del dueño de ese programa.
Este permiso puede ser útil para que usuarios normales ejecuten programas que
requieren ser ejecutados por root y por lo mismo debe usarse con precaución.
•
setgid bit: tambíen empleado con archivos ejecutables, indica que cuando se
ejecute el programa debe cambiarse al grupo del archivo. Se establece con g y s.
•
sticky bit: se establece con t, no tiene efecto sobre archivos, con un directorio
evita que un usuario que no sea el dueño del directorio pero que tenga permiso
de escritura, pueda borrar o renombrar archivos que no le pertenecen.
•
Ejecución condicionada: se establece con X en el caso de directorios es
equivalente a x, en el caso de archivos también es equivalente a x sólo si el
archivo al que se modifica el permiso ya tenía permiso de ejecución para algún
usuario. Es útil por ejemplo:
•
chmod a+X *
que da permiso de ejecución a todos los usuarios a los archivos ejecutables y a
los directorios.
165
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS
166
El administrador puede cambiar los permisos de todos los archivos del sistema y puede
fijar una política inicial para la mascara de permisos que todos los usuarios tendrán.
Además de chmod se emplean los siguientes programas para realizar estas labores:
chgrp grupo archivos
Cambia el grupo de el o los archivos especificados. Por ejemplo
chgrp profesores notas* quiz*
cambiará todos los archivos con prefijos "notas" y "quiz" al grupo profesores.
Cómo opción puede recibir -R para aplicar el cambio recursivamente en un
directorio (es decir a subdirectorios también). Este programa puede ser usado
por cualquier usuario para cambiar el grupo de sus archivos a otro grupo al que
el mismo usuario pertenezca.
chown usuario[:grupo] archivos
Cambia el usuario (y opcionalmente el grupo) de los archivos especificados. Al
igual que chgrp con la opción -R efectua el cambio recursivamente en
subdirectorios. Por ejemplo
chown -R paz:administra nomina/
Pondrá al usuario paz como dueño de todos los archivos y subdirectorios del
directorio nomina, todos quedarán con el grupo administra. También puede
usarse para cambiar el grupo de un archivo (si no se especifica el nombre del
usuario).
166
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS
167
umask
Este es un comando del intérprete de comandos
[86]
, para establecer permisos
por defecto en archivos nuevos. En bash pueden especificarse los permisos
como con chmod por ejemplo:
umask u=rw,g=,o=
hará que por defecto grupo y otros usuarios no tengan permiso de lectura ni
escritura, sólo el propietario del archivo los tiene . Los permisos de un archivo
recién creado se establecen de acuerdo al programa que lo crea y a la máscara.
Puede esperar que los programas no restrinjan seguridad y creen nuevos
archivos y directorios con permisos de lectura y escritura para propietario, grupo
y usuarios; este comportamiento hace que umask sea una buena alternativa.
4.1.3. SISTEMA DE ARCHIVOS ext2
ext2 es un sistema de archivos desarrollado para y junto con Linux. Permite todas las
características que el sistema de archivos virtual de Linux soporta: directorios y
archivos como inodos (con permisos, dueños y tipos especiales e.g dispositivos),
enlaces duros y suaves. Entre sus límites se cuentan: nombres de archivos de máximo
255 caracteres, archivos de máximo 2GB, sistema de archivos de máximo 4TB. Aunque
ext2 procura evitar fragmentación, en el momento de este escrito no hay una
herramienta para defragmentar.
Además de los atributos de archivo presentados en la sección anterior, un sistema ext2
tiene otros que pueden administrarse con los siguientes programas:
167
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS
168
lsattr archivos
Lista los atributos especiales de los archivos especificados. Entre sus opciones R lista recursivamente atributos de subdirectorios y su contenido, -a lista
también archivos de configuración.
chattr modo archivos
Permite modificar los atributos especiales de un sistema de archivos ext2. Como
modo se especifican los cambios a los permisos, cada permiso se especifica con
un caracter: A - no actualizar tiempos de acceso, S - actualización sincrona (es
decir escribe directamente sin emplear caches), a - permite abrir el archivo sólo
para agregar datos, c - el archivo es mantenido comprimido en disco (sus datos
son descomprimidos automáticamente por el kernel), d - al emplear el program
dump el archivo es copiado, i - el archivo no puede ser modificado o
renombrado, j - llevar bitácora de datos, s - el archivo debe sobreescribirse con
ceros si es eliminado, u - en caso de ser borrado por el usuario una copia es
salvada para su posible recuperación. Los permisos se especifican como primer
parámetro de chattr, precediendo uno o más atributos con '+' para activar, '-'
para desactivar o '=' para dejar igual.
En el disco la información se organiza en bloques (de 1024, 2048 o 4096 bytes), estos
bloques se juntan en grupos (cada uno de máximo 32768 bloques), algunos de los
bloques se reservan para el administrador (para que pueda operar si los usuarios llegan a
llenar el sistema de archivos). Cada grupo tiene algunos bloques de control y otros de
datos, entre los bloques de control está una copia del superbloque (bloque que describe
168
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS
169
el sistema de archivos completo) y una tabla de los nodos-i cuyos datos están en el
bloque. Un nodo-i mantiene información sobre un archivo es decir: atributos (modo,
uid, gid, fecha de acceso, fecha de creación, fecha de modificación, fecha de
eliminación), cantidad de enlaces y lista de los bloques del grupo en donde se encuentra
la información del archivo.
Algunas herramientas para emplear sistemas de archivos ext2 son:
mke2fs dispositivo
También llamado mkfs.ext2, permite crear un sistema ext2 en un dispositivo de
almacenamiento. Recibe el nombre del dispositivo, y de no recibir opciones
prepara el sistema de archivos calculando los parámetros a partir del tamaño
disponible. Como opciones pueden especificarse: -c para chequear bloques con
errores antes de crear sistema de archivos, opcionalmente pueden pasarse los
bloques erróneos ---reportados por el programa badblocks--- en un archivo con l arc_blerr); -L etiqueta para poner una etiqueta; puede especificar el número de
nodos-i bien con -N num_nodos o con -i bytes_por_inodo ---tenga en cuenta que
no puede cambiarse la cantidad especificada después de que el sistema de
archivos ha sido creado; el tamaño en bytes de cada bloque puede ser 1024,
2048 o 4096 y se especifica con la opción -b tamaño; el porcentaje de bloques
para el administrador puede especificarse con -m porcentaje ---por defecto 5%.
debugfs dispositivo
Permite examinar y modificar a bajo nivel un sistema de archivos ext2.
169
GESTION DE UNIDADES DE ALMACENAMIENTO Y SISTEMAS DE ARCHIVOS
170
badblocks dispositivo
Localiza bloques con errores en un dispositivo y genera un reporte en un
archivo.
e2fsck dispositivo
Verifica un sistema de archivos ext2. Este programa es llamado por fsck cuando se
chequea
un
sistema
con
ext2.
170
V. AUTOMATIZACION DE
TAREAS
171
AUTOMATIZACION DE TAREAS
5.
172
AUTOMATIZACION DE TAREAS
5.1. Crontab
En un tema anterior, comprobabamos la necesidad de automatizar diversas tareas como
el rotado de logs con logrotate. El programa logrotate realiza la rotación de los logs
definidos en su fichero de configuración, pero es necesario llamar a ese programa para
que realice las tareas cada cierto tiempo. Como este programa, existen varias tareas en
Linux que es necesario automatizar, de modo que se ejecuten diaria, semanal o
mensualmente. Para ello se utiliza el programa crontab.
El programa crontab permite programar tareas, como la ejecución de comandos o
scripts, de modo que se ejecuten cada cierto tiempo, según indique su fichero de
configuración /etc/crontab. Este programa se encuentra preinstalado por defecto en
nuestro SO y, normalmente, se encuentra en los scripts de arranque del sistema.
Podemos comprobar que se encuentra corriendo con una sencilla consulta:
root@desktop:/etc/init.d# ps -ef | grep cron
root
787
1 0 00:54 ?
00:00:00 cron
root
2044 1583 0 11:52 pts/0
00:00:00 grep --color=auto cron
root@desktop:/etc/init.d#
Como vemos en la consulta anterior, cron se está ejecutando en segundo plano. El
funcionamiento de este programa es sencillo; realiza una consulta cada minuto en los
ficheros de configuración y, si la hora de ejecución coincide con la hora actual, ejecuta
las tareas programadas.
172
AUTOMATIZACION DE TAREAS
173
5.1.1. El fichero /etc/crontab
El fichero de configuración crontab tiene una apariencia semejante a la siguiente:
En este fichero podemos comprobar la definición de la variable PATH. Esta variable es
importante, ya que es posible que llamemos a algún programa sin definir la ruta
completa de éste. También es posible definir la variable MAILTO, que envía un correo
con los resultados de cron a la dirección indicada en la variable.
Si observamos las líneas en las que indicamos a cron cúales son las tareas que debe
ejecutar, siguen el mismo patrón:
17 *
* * * root cd / && run-parts --report /etc/cron.hourly
Los primeros cinco campos definen los minutos, horas y días que cron debe ejecutar el
comando especificado:
Definición de horarios en /etc/crontab
Campo
Descripción
173
AUTOMATIZACION DE TAREAS
Minuto
Indicados de 0 a 59 minutos
Hora
Entre 0 y 23 horas
Día del Mes
Día del mes que debe ejecutarse. Entre 1 y 31.
Mes
Especifica el mes, de 1 (Enero) a 12 (Diciembre).
Día
de
174
la
Indicando de 0 (Domingo) a 7 (Domingo)
semana
*
Corresponde a todos los valores posibles
-
Especifica un rango . 7-9 en las horas se ejecutará a las 7, 8 y 9.
Especifica una lista. 7,9,23 en las horas se ejecutará a las horas
,
indicadas.
En el caso de la primera línea de nuestro ejemplo, se ejecutará todos los días del año, en
el minuto 17 de todas las horas del día.
El siguiente campo de la definición de crontab es el usuario con el que se va a ejecutar
el comando o script programado (en este caso, root) y, por último, el comando a ejecutar
(cd / && run-parts --report /etc/cron.hourly). Es muy habitual en estos casos
encontrarnos varios comandos o acciones encadenadas que actuarán de una forma u
otra, dsacndiendo del valor que devuelva la acción anterior. Las posibilidades son las
siguientes:
174
AUTOMATIZACION DE TAREAS
•
175
|| → Ejecuta las órdenes secuencialmente, siempre y cuando el valor de la acción
anterior sea 1 (error).
•
&& → ' Ejecuta las órdenes secuencialmente, siempre y cuando el valor de la
acción anterior sea 0 (acción ejecutada correctamente).
•
; → Las órdenes se ejecutan secuencialmente, indsacndientemente del resultado
del comando o acción anterior.
De esta forma podemos programar nuestras tareas cron comprobando mediante
encadenamiento de distintas órdenes si es necesario o no ejecutar una tarea concreta.
Si observamos el fichero de configuración, podemos ver que se hace alusión a cuatro
directorios
que
debemos
tener
en
cuenta;
/etc/cron.hourly,
/etc/cron.daily,
/etc/cron.weekly y /etc/cron.monthly. En dichos directorios se encuentran las tareas que
se deben realizar cada hora, día, semana y mes. Si nos ubicamos en la ruta
/etc/cron.daily, por ejemplo, podemos ver distintos ficheros que contienen los scrips que
el programa cron ejecutará diariamente:
175
AUTOMATIZACION DE TAREAS
176
5.1.2. El comando crontab
El comando crontab nos permite crear tareas cron a nivel de usuario, de forma que un
usuario con acceso al programa podrá programar tareas adicionales al sistema para
automatizar sus propias tareas. Esta utilidad recibe una serie de parámetros:
•
u → Especifica el usuario que ejecuta la tarea cron. En caso de que no se
indique, se presupone el usuario actual.
•
e → Abre un editor para modificar la tarea del usuario indicado. En el siguiente
ejemplo nos muestra tres posibles editores con los que trabajar:
root@desktop:/etc# crontab -u prueba -e
no crontab for prueba - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/ed
176
AUTOMATIZACION DE TAREAS
2. /bin/nano
177
<---- easiest
3. /usr/bin/vim.tiny
Choose 1-3 [2]: 3
•
l→ Muestra la tarea cron actual.
•
r→ Elimina el cron actual.
Otra posibilidad si queremos configurar una tarea cron es pasar como parámetro a
crontab el nombre del fichero donde hemos programado nuestra tarea, de la siguiente
forma:
root@desktop:/etc# crontab -u prueba mycron
root@desktop:/etc#
Los distintos ficheros cron de los usuarios se almacenan en /var/spool/cron/ o en
/var/spool/crontabs y reciben el nombre del usuario que los creó.
5.1.3. Los ficheros /etc/cron.allow y /etc/cron.daily
Como hemos comentado anteriormente, además del fichero /etc/crontab donde se
especifican tareas del sistema, los usuarios pueden crear sus propios cron con el
comando crontab. Esto puede ser un problema de seguridad si no ponemos especial
interés en restringir el acceso del cron a usuarios que no deban tenerlo. Para ello
podemos modificar los permisos de crontab y cron (de modo que solo tengan acceso a
su ejecución los usuarios que realmente lo necesiten) y configurar los ficheros
177
AUTOMATIZACION DE TAREAS
178
/etc/cron.allow y /etc/cron.deny, utilizados para permitir o denegar el acceso a los
usuarios.
•
Fichero /etc/cron.allow → Este fichero lista los usuarios permitidos al acceso
de cron. Solo los usuarios que se encuentren indicados en este fichero tendrán
acceso, denegando al resto.
•
Fichero /etc/cron.deny → Especifica los usuarios que tiene restringido el uso
de cron, permitiendo su uso a aquellos que no se encuentren en él.
Como ejemplo, incluímos al usuario prueba en el fichero /etc/cron.deny. Una vez
incluido y cambiando a la sesión de dicho usuario intentamos ejecutar el comando
crontab, con la siguiente salida de error:
5.2. Anacron
Es común que un servidor se mantenga encendido las 24 horas del día, por lo que el
programa cron anterior es totalmente adecuado para automatizar tareas que, en la
mayoría de los casos, se ejecutan en horas de poco uso del sistema. Pero es necesario
tener en cuenta que también existen equipos que, a ciertas horas, se encuentran
apagados, por lo que las tareas que se encuentren definidas en el fichero /etc/crontab, no
se ejecutarán. Para estos casos disponemos de la utilidad anacron.
178
AUTOMATIZACION DE TAREAS
179
Una de las principales diferencias entre cron y anacron es que anacron no es demonio,
por lo que no se encuentra permanentemente corriendo en segundo plano. Es necesario
ejecutarlo a través de un script de inicio del sistema o mediante cron. Otra diferencia es
que anacron solo permite programar tareas por días, al contrario que cron, que
especifica minutos y horas a lo largo del día.
El funcionamiento de anacron es semejante a cron; sus tareas se definen en el fichero
/etc/anacrontab. Cuando se ejecuta, comprueba las tareas e intervalos definidos y, en
caso de que en dicho intervalo no se haya ejecutado aún el comando indicado, lo inicia.
5.2.1. El fichero /etc/anacrontab
A continuación se muestra como ejemplo el fichero anacrontab configurado por defecto
en nuestro Sistema Operativo:
La sintaxis del fichero de configuración anacrontab sigue siempre una serie de pautas,
pudiendo encontrarnos además con líneas que comienzan por #, lo que denota un
comentario y no se tendrá en cuenta, o con declaración de variables, como pueden ser
PATH, HOME o SHELL:
Sintaxis de /etc/anacrontab
179
AUTOMATIZACION DE TAREAS
180
Campo
Descripción
Frecuencia
Especificada en días.
Retardo
Periodo que transcurre entre el inicio de anacron y su ejecución.
Identificador El identificador debe ser único.
Comando
Comando que anacrontab ejecutará.
Hay que tener en cuenta el retardo, ya que si anacron debe ejecutar varios comandos es
posible que el sistema se sobrecargue. De este modo podemos indicar la ejecución de
forma más gradual.
5.3. At
Hay ocasiones en la que es necesario programar una tarea futura que no sea frecuente,
por lo que las utilidades cron y anacron no son necesarias. Para estos casos podemos
utilizar el comando at. Este comando recibe como parámetro la hora, día o momento en
el que queremos que se ejecute:
Sintaxis del comando at
Campo
Descripción
Now
Especifica el futuro inmediato (ahora).
Indica dentro de cuanto queremos que se ejecute con + y una
+
hora.Por ejemplo, +6 (dentro de 6 horas).
180
AUTOMATIZACION DE TAREAS
181
Especifica una hora dentro del día. Podemos indicar AM ó PM
HH:MM
(por ejemplo 03:00 PM)
Indica una fecha concreta. Podemos indicar anteriormente la hora
MM/DD/AAAA
del día (por ejemplo 15:00 15/10/2011).
noon,midnight
y noon (mediodia),midnight (medianoche) y teatime (hora del té:
teatime
16:00)
tomorrow
mañana
El funcionamiento es sencillo. Indicamos at en la consola y la hora/día en el que
queremos programar la tarea. Una vez que pulsemos Intro nos aparecerá en el prompt
at> para comenzar a introducir los comandos que queremos ejecutar. También es
posible indicar con la opción -f el fichero que queremos que ejecute.
Otros comandos importantes de at son atq, que nos muestra las tareas pendientes de at
y atrm, que elimina una tarea de la cola.
5.3.1. Los ficheros /etc/at.allow y /etc/at.deny
Al igual que el programa cron, at permite restringir o permitir el acceso de los usuarios
mediante los ficheros /etc/at.allow y /etc/at.deny. Podemos incluir los usuarios en
dichos ficheros y, debemos tener en cuenta, que su comportamiento en algunas
situaciones, es distinto que en los ficheros de cron:
181
AUTOMATIZACION DE TAREAS
•
182
En caso de que no exista ninguno de los dos ficheros, solo root tendrá acceso al
programa at
•
En caso de que se encuentre creado el fichero /etc/at.allow solo tendrán acceso
al programa los usuarios listados en dicho fichero.
•
En caso de que se encuentre creado el fichero /etc/at.deny, tendrán acceso al
programa todos los usuarios excepto los especificados en dicho fichero.
.
182
VI. GESTION DE PROCESOS
183
6.
GESTION DE PROCESOS
Un proceso es cualquier instrucción o programa que en ese momento se está ejecutando
en nuestro sistema. Todo proceso tiene un PID (Process IDentifier), es decir, un número
que le identifica y le diferencia de todos los demás. Una característa importante es que
todo proceso tiene un estado: corriendo, durmiendo, zombie o parado.
6.1. El comando kill
El comando kill nos permite interactuar con cualquier proceso mandando señales
(signal). Cuando ejecutamos kill pid lo que hacemos es mandar la señal de
TERM(terminar) con lo cual se termina ese proceso. Podemos usar cualquier otro tipo
de señal, para ello utilizamos kill signal pid. Podemos conseguir una lista de señales
usando kill -l. Una señal útil para alunas ocasiones es -9, esta señal fuerza a terminar
cualquier proceso. Como su nombre indica, estamos matando el proceso.
También podemos utilizar el comando killall con el que podemos mandar señales a un
proceso utilizando el nombre, en vez del PID.
Entre los procesos diferenciamos los que se están ejecuntando en 1er o 2o plano. Los
que se ejecutan en primer plano son los que interactúan con el usuario en ese momento,
mientras que los procesos en segundo plano se ejecutan pero están ocultos, y muy
posiblemente el usuario no tenga constancia de que se esté ejecutando. Sólo puede haber
un proceso en primer plano por consola. Eso nos deja las manos atadas si no estamos en
el entorno gráfico. Para poder ejecutar varios comandos, lo que podemos hacer es
ejecutar los comandos en segundo plano. Para ello solo tenemos que añadir & al final
del comando. Vamos a poner un ejemplo:
$ls -R / > /dev/null &
184
En el anterior ejemplo listamos todos los ficheros de todos los directorios del sistema.
Enviamos la salida a /dev/null para que su salida no nos moleste. El carácter & manda el
proceso a segundo plano. El comando jobs nos muestra los procesos que se están
ejecutando en segundo plano:
$ls
[1]+ Running ls –color -R / >/dev/null &
Aquí estamos ejecutando el comando anterior. El elemento [1] nos indica el número del
proceso que se están ejecutando en segundo plano y cuál es su estado. En este caso
Running(corriendo). Seguidamente nos muestra cuál es el proceso Podemos utilizar
también el comando fg para mandar un proceso al primer plano y el comando bg para
mandar el proceso al segundo plano.
$fg
ls –color -R / >/dev/null
fg manda el proceso al primer plano y nos muestra el programa que ha mandado. Si
tenemos varios procesos en segundo plano añadimos el número del proceso.
El comando bg se utiliza cuando tenemos, por ejemplo, procesos suspendidos. Estos
procesos son programas que están parados, es decir, no consumen ni CPU ni memoria, y
que podemos volver a poner en archa en cualquier momento. Para suspender un proceso
utilizamos la combinación de teclas Ctrl-z, al igual que para interrumpir un proceso
utilizamos Ctrl-c.
$jobs
[1]+ Stopped ls –color -R / >/dev/null
185
Esta tarea está parada(Stopped).
El comando ps
El comando ps permite mostrar todos los procesos que están corriendo en nuestro
sistema. Veamos una parte de una salida del comando ps:
$ps
-aux
faraox@menut:~/doc/glup_0.6-1.1-html-1.1$
ps
xau
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root
1
0.0
0.2
1272
436
?
root
2
0.0
0.0
0
0
?
root
3
0.0
0.0
0
0
?
S
16:00
0:04
SW
16:00
0:01
SW
16:00
0:00
init
[2]
[keventd]
[kapmd]
faraox 1363 0.0 0.8 2740 1564 pts/2 S 18:57 0:00 -bash
Los parámetros xau nos permiten ver todos los procesos que se están ejecutando. El
parámetro a muestra lo que se está ejecutando en las tty conocidas, el parámetro x añade
los procesos que no se conece la tty en la que se están ejecutando y u muestra los
usuarios que están ejecutando esos procesos.
Algunas partes de la salida le serán conocidas. La columna USER nos dice que usuario
está ejecutando el proceso,PID es su número de proceso, %CPU es el porcentaje de
CPU que está utilizando al igual que %MEM es el porcentaje de memoria. También
incluye la cantidad de memoria en kylobytes que ha utilizado dicho proceso, se muestra
en la columan RSS.La columna TTY muestra la consola desde la que se está ejecutando.
STAT nos muestra el estado del proceso:S(drmiendo), R(corriendo), T(parado),
Z(zombie). Las opciones W y N son especiales para procesos del kernel. La columna
START muestra la hora a la que empezó el proceso, y la columna TIME muestra el
186
tiempo de CPU que ha usado el proceso desde que se inició y COMMAND muestra el
nombre del comando que se está ejecutando.
6.2. El comando top
El comando top es una utilidad que permite la monitorización de los procesos de la
CPU. También muestra el estado de la memoria. Es una mezcla del comando uptime,
free y ps.
20:07:54
60
up
4:07,
processes:
58
CPU
states:
0.4%
Mem:
182900K
5
users,
sleeping,
user,
total,
load
1
0.6%
172404K
average:
running,
0
system,
0.0%
used,
10496K
0.07,
zombie,
nice,
free,
0.05,
1
0.05
stopped
99.0%
35064K
idle
buffers
Swap: 96352K total, 14284K used, 82068K free, 43228K cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
1565
faraox
14
0
1040
1040
820
R
0.5
0.5
0:00
top
300 root 9 -10 24736 9.9M 1524 S
187
VI. SISTEMA DE INICIO Y
FINALIZACION DEL SISTEMA
188
SISTEMA DE INICIO Y FINALIZACION DEL SISTEMA
7.
189
SISTEMA DE INICIO Y FINALIZACION DEL SISTEMA
7.1. Niveles de ejecución de SysV Init
El sistema de niveles de ejecución SysV init provee un proceso estándar para controlar
cuáles programas initlanza o detiene cuando se inicializa un nivel de ejecución. SysV
init fué escogido porque es más fácil de usar y es más flexible que el proceso tradicional
init estilo BSD.
Los archivos de configuración para SysV init están en el directorio /etc/rc.d/. Dentro de
este directorio, se encuentran los scripts rc, rc.local, rc.sysinit y, opcionalmente, los
scripts rc.serial así como los siguientes directorios:
init.d/ rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/
El directorio init.d/contiene los scripts que el comando /sbin/init utiliza cuando controla
servicios. Cada uno de los directorios numerados representan los seis niveles de
ejecución configurados por defecto bajo Fedora.
7.2. Niveles de ejecución
La idea detrás de los niveles de ejecución de SysV init gira alrededor del hecho de que
sistemas diferentes se pueden usar de maneras diferentes. Por ejemplo, un servidor corre
de forma más eficiente sin el consumo de recursos del sistema excesivo creado por el
sistema X. Otras veces, el administrador del sistema puede necesitar operar el sistema
en un nivel más bajo de ejecución para realizar tareas de diagnóstico, como reparar la
corrupción del disco duro en el nivel de ejecución 1.
Las características de un nivel de ejecución dado determinan qué servicios init
detenienen o inicia. Por ejemplo, el nivel de ejecución 1 (modo usuario único) detiene
189
SISTEMA DE INICIO Y FINALIZACION DEL SISTEMA
190
cualquier servicio de red, mientras que el nivel 3 arranca estos servicios. Asignando
servicios específicos a ser detenidos o iniciados en un nivel dado, init puede fácilmente
cambiar el modo de la máquina sin que el usuario tenga que arrancar o detener servicios
manualmente.
Los siguientes niveles de ejecución se encuentran definidos por defecto bajo Fedora:
0 — Apagar
1 — Modo texto usuario único
2 — No se utiliza (definible por el usuario)
3 — Modo texto multiusuario completo
4 — Sin usar (definible por el usuario)
5 — Modo gráfico multiusuario completo (con una pantalla de inicio de sesión
basada en X)
6 — Rearrancar
En general, los usuarios operan Fedora en un nivel de ejecución 3 o nivel de ejecución 5
— ambos modos multi-usuarios. Los usuarios a veces personalizan los niveles de
ejecución 2 y 4 para adaptarlos a sus necesidades especificas ya que no se utilizan.
El nivel de ejecución por defecto para el sistema está enumerado en /etc/inittab. Para
saber el nivel de ejecución por defecto de un sistema, busque por la línea similar a la
que se muestra abajo cerca del final del archivo /etc/inittab:
id:5:initdefault:
190
SISTEMA DE INICIO Y FINALIZACION DEL SISTEMA
191
El nivel de ejecución predeterminado en este ejemplo es cinco, como indica el número
después del punto y coma. Para cambiarlo, modifique /etc/inittab como usuario root.
191
192