0% encontró este documento útil (0 votos)
12 vistas

Manual Curso Linux Basico

Cargado por

master.javi
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
12 vistas

Manual Curso Linux Basico

Cargado por

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

Curso de Linux Básico

2013
[CURSO DE LINUX BÁSICO] www.palosanto.com

ÍNDICE GENERAL
Capítulo 1 [INTRODUCCIÓN A LINUX]
1.1 Qué es Linux? ............................................... 2
1.2 UNIX ..................................................... 2
1.3 Breve historia de Linux ......................................... 3
1.4 Versiones del kernel de Linux .................................... 5
1.5 Linux vs otros sistemas operativos ................................. 6
1.6 Distribuciones de Linux......................................... 6
1.7 Asuntos Legales.............................................. 7
1.8 Requerimientos de hardware..................................... 9
1.8.1 Requerimientos de CPU.................................... 10
1.8.2 Requerimientos de memoria................................. 10
1.8.3 Requerimientos de controladora de disco duro..................... 10
1.9 Fuentes de información de Linux.................................. 11

Capítulo 2 [CONOCIENDO LINUX]


2.1 Archivos y directorios.......................................... 14
2.1.1 Archivos............................................... 14
2.1.2 El camino, ruta o path...................................... 15
2.2 Jerarquía de directorios en Linux.................................. 15
2.3 Comandos de Linux........................................... 17
2.3.1 Determinar el directorio actual (pwd)........................... 18
2.3.2 Cambiar de directorio (cd)................................... 19
2.3.3 Listar archivos y directorios (ls)................................ 19
2.3.4 Limpiar la ventana de terminal (clear)........................... 20
2.3.5 Crear directorios (mkdir).................................... 20
2.3.6 Crear archivos (touch)..................................... 20
2.3.7 Copiar archivos y directorios (cp).............................. 21
2.3.8 Mover archivos y directorios (mv).............................. 21
2.3.9 Borrar archivos y directorios (rm) .............................. 22
2.3.10 Visualizar la ayuda de un comando (man)........................ 22
2.3.11 Visualizar el tamaño de archivos y directorios (du).................. 23
2.3.12 Visualizar el contenido de archivos............................ 23
2.3.13 Visualizar el historial de comandos (history)...................... 25
2.3.14 Visualizar información del kernel (úname)....................... 25
2.3.15 Configuración de fecha y hora (date)........................... 26
2.3.16 Configuración de zona horaria............................... 26
2.3.17 Verificar el hardware (lspci)................................. 26

Capítulo 3 [ADMINISTRACIÓN DEL SISTEMA DE ARCHIVOS]


3.1 Acerca de discos duros......................................... 30
3.2 Conceptos sobre particiones..................................... 30
3.3 Particiones en Linux y comparación con Microsoft Windows................ 31
3.4 Tipos de sistemas de archivos en Linux.............................. 33
INDICE | i
www.palosanto.com [CURSO DE LINUX BÁSICO]

3.5 La partición swap............................................. 33


3.6 Verificar particiones y sistemas de archivos........................... 34
3.6.1 Verificar particiones....................................... 34
3.6.2 Verificar sistemas de archivos................................ 35
3.7 Montar dispositivos........................................... 35
Laboratorio 1.................................................. 38

Capítulo 4 [ADMINISTRACIÓN DEL PROCESO DE ARRANQUE]


4.1 El proceso de arranque......................................... 40
4.1.1 Resumen del proceso de arranque............................. 41
4.2 El gestor de arranque GRUB..................................... 42
4.3 Ejecutar servicios y programas al arranque............................ 42
4.3.1 El sistema de runlevels o System V............................. 42
4.3.2 Determinar el runlevel actual................................. 44
4.3.3 Configuración del runlevel por defecto.......................... 44
4.3.4 El comando init.......................................... 44
4.4 El archivo /etc/rc.local......................................... 45
Laboratorio 2.................................................. 46

Capítulo 5 [PROCESAMIENTO EN LINUX]


5.1 Intérpretes de comandos o shell.................................. 48
5.2 Caracteres Comodín (Wildcards) ................................. 48
5.3 Entrada estándar, salida estándar, error estándar....................... 50
5.3.1 Entrada estándar......................................... 50
5.3.2 Salida estándar.......................................... 51
5.3.3 Error estándar........................................... 51
5.4 Uso de tuberías y redirectores.................................... 51
5.4.1 Tubería |.............................................. 51
5.4.2 Redirectores ><.......................................... 52
5.5 Procesos y tareas............................................ 53
5.5.1 Procesos.............................................. 53
5.5.2 Tareas................................................ 54
5.6 Consolas virtuales............................................ 54
5.7 El editor VI................................................. 55
5.7.1 Conceptos............................................. 56
5.7.2 Comenzar con VI......................................... 56
5.7.3 Insertar texto........................................... 56
5.7.4 Borrar texto............................................ 57
5.7.5 Modificar texto.......................................... 57
5.7.6 Órdenes de movimiento.................................... 57
5.7.7 Buscar texto en VI........................................ 58
5.7.8 Guardar archivos y salir de VI................................. 58
5.8 Empaquetar y comprimir archivos................................. 58
5.8.1 Utilizar TAR............................................. 58
5.8.2 Utilizar GZIP y GUNZIP..................................... 59
5.9 Automatización de tareas....................................... 60
5.9.1 Programar tareas con CRON................................. 60
ii | INDICE
[CURSO DE LINUX BÁSICO] www.palosanto.com

5.10 Administración de los historiales del sistema......................... 61


5.10.1 El directorio /var/log/..................................... 61
5.10.2 Revisar los historiales..................................... 62
5.10.3 Monitorear los historiales.................................. 63

Capítulo 6 [ADMINISTRACIÓN DE USUARIOS]


6.1 Gestión de usuarios.......................................... 66
6.2 La cuenta root.............................................. 66
6.3 Usuarios.................................................. 67
6.4 Grupos................................................... 68
6.5 Comandos de gestión de usuarios................................. 69
6.5.1 useradd / adduser........................................ 69
6.5.2 passwd............................................... 69
6.5.3 userdel............................................... 70
6.5.4 groupadd.............................................. 70
6.5.5 gpasswd............................................... 70
6.5.6 groupdel.............................................. 70
6.5.7 su................................................... 70
6.6 Permisos de archivos.......................................... 71
6.6.1 Conceptos de permisos de archivos............................. 71
6.6.2 Interpretar los permisos de archivos............................ 72
6.6.3 Dependencias........................................... 73
6.6.4 Representación octal...................................... 73
6.6.5 Cambiando permisos...................................... 74
6.6.6 Cambiar de dueño y grupo a archivos........................... 75
6.6.6.1 chown............................................ 75
6.6.6.2 chgrp............................................. 75
Laboratorio 3................................................. 76
Laboratorio 4................................................. 77

Capítulo 7 [CONFIGURACIÓN DE RED]


7.1 Terminología............................................... 79
7.2 Redes con TCP/IP............................................. 79
7.3 Configuración de TCP/IP........................................ 80
7.3.1 Dirección IP............................................ 80
7.3.2 Máscara de red o netmask.................................. 80
7.3.3 Dirección de red......................................... 81
7.3.4 Dirección de broadcast..................................... 81
7.3.5 Puerta de enlace o default gateway............................ 81
7.3.6 Servidor de nombres de dominio o DNS......................... 82
7.4 Archivos de configuración de red.................................. 82
7.4.1 /etc/sysconfig/network..................................... 82
7.4.2 /etc/sysconfig/network-scripts/............................... 81
7.4.3 /etc/hosts............................................. 81
7.4.4 /etc/resolv.conf.......................................... 84
7.5 Comandos básicos para conectividad TCP/IP........................... 84
7.5.1 ifconfig............................................... 84
INDICE | iii
www.palosanto.com [CURSO DE LINUX BÁSICO]

7.5.2 mii-tool............................................... 84
7.5.3 ping.................................................. 85
7.5.4 traceroute............................................. 85
7.5.5 route................................................. 85
7.5.6 netstat................................................ 86
7.6 Utilidades TCP/IP............................................. 86
7.6.1 Telnet................................................ 86
7.6.2 SSH.................................................. 87
Laboratorio 5.................................................. 89

Capítulo 8 [EL SISTEMA X-WINDOWS]


8.1 Concepto.................................................. 94
8.2 X-Server................................................... 94
8.2.1 Servidor X-Free86......................................... 95
8.3 X-Clients.................................................. 95
8.4 Escritorios o ambientes gráficos................................... 95

Capítulo 9 [INSTALACIÓN DE SOFTWARE]


9.1 Formato .tar.gz.............................................. 97
9.1.1 Instalación de software..................................... 97
9.1.2 Desinstalación de software.................................. 98
9.2 Formato RPM............................................... 98
9.2.1 Objetivos de diseño de RPM................................. 98
9.2.2 Convención de un paquete RPM............................... 99
9.2.3 Usando RPM para el manejo de software......................... 100
9.3 YUM (Yellowdog Updater Modified)................................ 100
9.3.1 Paquetes.............................................. 100
9.3.2 Repositorios............................................ 101
9.3.3 Dependencias........................................... 101
9.3.4 Administración de software con YUM........................... 101
9.3.4.1 Actualizar el sistema completo............................ 101
9.3.4.2 Búsquedas......................................... 102
9.3.4.3 Consulta de información................................ 102
9.3.4.4 Instalación de paquetes................................ 102
9.3.4.5 Desinstalación de paquetes.............................. 102
9.3.4.6 Listado de paquetes................................... 103
9.3.4.7 Limpieza del sistema................................... 103
Laboratorio 6.................................................. 104
Laboratorio 7.................................................. 105

Apéndice A [GNU GENERAL PUBLIC LICENSE]


GNU General Public License........................................ 108

iv | INDICE
Capítulo 1
[INTRODUCCIÓN A LINUX]

CONTENIDO
1.1 Qué es Linux?
1.2 UNIX
1.3 Breve historia de Linux
1.4 Linux vs otros sistemas operativos
1.5 Distribuciones de Linux
1.6 Asuntos legales
1.7 Requerimientos de hardware
1.8 Fuentes de información de Linux
www.palosanto.com [CURSO DE LINUX BÁSICO]

1.1 Qué es Linux?


Linux es probablemente el acontecimiento más importante del software libre y
uno de los productos más magníficos de Internet. Se ha convertido en el sistema
operativo para los negocios, educación y provecho personal. Linux ya no es sólo
para gurús informáticos que se sientan durante horas frente a la resplandeciente
consola (aunque le aseguramos que un gran número de usuarios pertenece a esta
categoría).

El término Linux en sí hace referencia al núcleo o kernel del sistema operativo


denominado Linux, el cual es un clónico del sistema operativo UNIX que fue
desarrollado desde cero heredando sus características fundamentales de sistema
operativo de red.

Linux se ejecuta mayormente en procesadores Intel (y su clónico AMD) además de


otras plataformas de procesamiento como PowerPC, Sparc, ARM, etc. Soporta un
amplio rango de software. Es una implementación de UNIX versátil, distribuida
gratuitamente en los términos de la licencia GNU GPL (vea el Apéndice A al final
de este documento).

Linux puede convertir cualquier PC en una estación de trabajo. Le pondrá todo el


poder de UNIX en la punta de sus dedos. En los negocios ya se instala Linux en
redes enteras, usando el sistema operativo para manejar registros financieros y
de hospitales, un entorno de usuarios distribuido, telecomunicaciones, etc.

Universidades de todo el mundo usan Linux para dar cursos de programación y


diseño de sistemas operativos. Y, por supuesto, entusiastas de los computadores
de todo el mundo están usando Linux en casa, para programar, entretenerse y
conocerlo a fondo.

Lo que hace a Linux tan diferente es que es una implementación gratuita de UNIX.
Fue y aún sigue siendo desarrollado por un grupo de voluntarios, principalmente
en Internet, intercambiando código, comentando fallos y arreglando los
problemas en un entorno abierto. Cualquiera es bienvenido a sumarse al esfuerzo
de desarrollo de Linux, todo lo que se pide es interés en producir un clónico
gratuito de UNIX y algunos conocimientos de programación.

1.2 UNIX
En el año 1962, se emprendió un proyecto faraónico en lo que a informática se
refiere. La idea era crear un centro de cómputo mundial, ubicado en Boston
(EE.UU.), para lo cual habría que desarrollar un sistema operativo capaz de
controlar semejante emprendimiento. Así nació MULTICS.

2 | INTRODUCCIÓN A LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

MULTICS llegó a funcionar, aunque fue demasiado ambicioso para la época. De él


se rescataron muchas ideas que luego serían adoptadas por otros sistemas
operativos.

Un empleado de Bell Labs, Ken Thompson, desarrolló un sistema que se llamó


“UNICS”, por su enorme contraste con el enorme MULTICS. UNIX nace en el año
1970, de la mano de Ken Thompson y Dennis Ritchie, quienes trabajaban para los
laboratorios Bell de AT&T. En un principio, UNIX estaba escrito en lenguaje
Assembler, pero no pasó mucho tiempo para que Dennis Ritchie, el inventor del
lenguaje de programación C, reescribiera completamente el código de UNIX en
este nuevo lenguaje.

Éste fue el primer gran salto de UNIX, porque gracias a estar escrito en C y a que
AT&T otorgara licencia a varios colegios y universidades, se logró la portabilidad
del sistema operativo, uno de los principales paradigmas de UNIX.

Una de las universidades más influyentes en el desarrollo de UNIX fue la


Universidad de California, en Berkeley. En sus laboratorios y centros de cómputo
se implementaron muchas de las mejoras de UNIX. Lamentablemente, eso
también originó una fractura en las filas de los seguidores del sistema; AT&T, por
su parte, continuó con el desarrollo, y los sistemas divergieron y se formaron dos
corrientes para UNIX. Hoy en día, se está realizando un gran esfuerzo para
subsanar estas dificultades, por lo que se habla de sistemas “convergidos”, en los
que la convergencia se refiere a tratar de corregir las diferencias entre el planteo
de UNIX que hace la empresa AT&T y el enfoque de la Universidad de Berkeley.

1.3 Breve historia de Linux


Linux hace su aparición a principio de la década de los noventa. Originalmente,
comenzó como un proyecto de Linus Torvalds, quien siendo estudiante de la
Universidad de Helsinki, en Finlandia, trabajó sobre una versión de Minix escrita
por Andy Tenembaum para lograr un sistema capaz de correr en computadoras
con microprocesadores de la familia Intel x86. Fue desarrollado con la ayuda de
muchos programadores y expertos de UNIX a lo largo y ancho del mundo, gracias
a la presencia de Internet.

El núcleo de Linux no utiliza ni una sola línea del código de AT&T o de cualquier
otra fuente de propiedad comercial, y buena parte del software para Linux se
desarrolla bajo las reglas del proyecto GNU de la Free Software Foundation.

Las primeras discusiones sobre LINUX surgieron en el grupo de noticias


comp.os.minix. Estas discusiones giraban en torno al desarrollo de un
pequeño sistema UNIX de carácter académico dirigido a aquellos usuarios de
Minix que querían algo más.

INTRODUCCIÓN A LINUX| 3
www.palosanto.com [CURSO DE LINUX BÁSICO]

El desarrollo inicial de Linux ya aprovechaba las características de conmutación de


tareas en modo protegido del 386, y se escribió todo en Assembler. Linus dijo:

“Comencé a utilizar el C tras escribir algunos drivers, y ciertamente se aceleró el


desarrollo. En este punto sentí que mi idea de hacer un ‘Minix mejor que Minix’ se
hacía más seria. Esperaba que algún día pudiese recompilar el GCC bajo Linux …”

“Dos meses de trabajo, hasta que tuve un driver de discos (con numerosos bugs,
pero que parecía funcionar en mi PC) y un pequeño sistema de ficheros. Aquí tenía
ya la versión 0.01 [al final de Agosto de 1991], no era muy agradable de usar sin el
driver de disquetes, y no hacía gran cosa. No pensé que alguien compilaría esa
versión”.

No se anunció nada sobre esa versión, puesto que las fuentes del 0.01 jamás
fueron ejecutables; contenían solo rudimentos de lo que sería el núcleo, y se
asumía que se tenía acceso a Minix para poderlo compilar y jugar con él.

El 5 de Octubre de 1991, Linus anunció la primera versión “oficial” de Linux, la


0.02. Ya podía ejecutar Bash (el Shell de GNU) y GCC (el compilador de C de GNU),
pero no hacía mucho más. La intención era ser un juguete para hackers. No había
nada sobre soporte a usuarios, distribuciones, documentación ni nada parecido.
Hoy, la comunidad de Linux aún trata estos asuntos de forma secundaria. Lo
primero sigue siendo el desarrollo del kernel (núcleo).

Linus escribía en comp.os.minix:

“Si suspiras al recordar aquellos días, cuando los hombres eran hombres y
escribían sus propios drivers. ¿Te sientes sin ningún proyecto interesante y te
gustaría tener un verdadero sistema operativo que pudieras modificar a placer?
¿Te resulta frustrante contar únicamente con Minix? Entonces este artículo es
para vos. Como dije hace un mes, estoy trabajando en una versión gratuita de algo
así como Minix para computadores AT 386. He alcanzado la etapa en la que puede
ser utilizable y voy a poner las fuentes para su distribución. Es solo la versión 0.02
pero he conseguido ejecutar en él bash, gcc, gnu-make, gnu-sed, compress, etc.”

Tras la versión 0.03, Linus saltó a la versión 0.10, al tiempo que más gente
empezaba a participar en su desarrollo. Tras numerosas revisiones, se alcanzó la
versión 0.95, reflejando la esperanza de tener lista muy pronto una versión
“oficial”. (Generalmente, la versión 1.0 de los programas corresponde con la
primera teóricamente completa y sin errores). Esto sucedía en Marzo de 1992.

Año y medio después, en Diciembre de 1993, el núcleo estaba en la revisión


0.99.pl14, en una aproximación asintótica al 1.0. Actualmente, el núcleo se
encuentra en la versión 3.8

4 | INTRODUCCIÓN A LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

Hoy, Linux ya es un clónico de UNIX completo, capaz de ejecutar X-Window,


TCP/IP, etc. Mucho software de libre distribución ha sido ya portado a Linux, y
están empezando a aparecer aplicaciones comerciales. El hardware soportado es
mucho mayor que en las primeras versiones del núcleo.

¿Quién iba a imaginar que este “pequeño” clónico de UNIX iba a convertirse en un
estándar mundial para los computadores personales y empresariales?

1.4 Versiones del kernel de Linux


Debido a que existen numerosas revisiones y versiones del kernel de Linux y otras
nuevas se desarrollan a intervalos frecuentes, es importante contar con un
sistema para identificarlos claramente.

Un kernel es un programa que constituye el núcleo central de un sistema


operativo y que tiene el control total sobre todo lo que ocurre en el sistema. El
kernel de Linux fue desarrollado originalmente por Linus Torvalds, quien se basó
en (pero no lo hizo copia de) UNIX y MINIX (un clon de código abierto de Unix).

El primer esquema se utilizó en el período previo a "1.0". La primera versión del


núcleo fue de 0.01. Esto fue seguido por 0.02, 0.03, 0.10, 0.11, 0.12 (la primera
versión GPL), 0.95, 0.96, 0.97, 0.98, 0.99 y 1.0 a continuación. A partir de 0.95 en
adelante había lanzamientos de parches entre las versiones.

Después de la versión 1.0 y anteriores a la versión 2.6, el número se compone de


"A.B.C", donde el número A denota la versión del núcleo, el número B denota la
revisión principal y el número C indica la revisión menor o fallos de programación
del kernel. La versión se cambió sólo cuando se produjeron cambios importantes
en el código y el concepto del núcleo, dos veces en la historia del núcleo: en 1994
(versión 1.0) y en 1996 (versión 2.0). La versión 3.0 fue lanzada en 2011, pero no
fue un cambio importante en el concepto de núcleo.

En 2004, después de que la versión 2.6.0 fue lanzada, los desarrolladores del
kernel mantuvieron varios debates sobre el esquema de lanzamientos y versiones
y, finalmente, Linus Torvalds y otros decidieron que un ciclo de lanzamiento
mucho más corto sería beneficioso. Durante cerca de siete años, los dos primeros
números se mantuvieron " 2.6", y el tercer número se incrementa con cada nueva
versión, que se puso en marcha después de dos o tres meses. Un cuarto número
se agrega a veces para dar cuenta de errores y parches de seguridad a la versión
del kernel.

El 29 de mayo de 2011, Linus Torvalds anunció que la versión del kernel se dispara
a 3.0 para la liberación inmediata posterior de 2.6.39, para conmemorar el 20avo
aniversario de Linux. Se continuó con la práctica de liberación basada en el tiempo
introducida con 2.6.0, pero utilizando el segundo número - es decir 3.1 seguiría
INTRODUCCIÓN A LINUX| 5
www.palosanto.com [CURSO DE LINUX BÁSICO]

3.0 al cabo de unos meses. Un número adicional (en la actualidad el tercer


número) se añadiría en caso necesario para designar correcciones de seguridad y
errores, como por ejemplo, con 3.0.18.

El sitio http://www.kernel.org/ contiene el listado de los núcleos de desarrollo y


producción disponibles para su descarga.

1.5 Linux vs otros sistemas operativos


Han surgido y aún siguen surgiendo un gran número de sistemas operativos
avanzados. Concretamente OS/2 de IBM, Mac OS de Apple, y Windows de
Microsoft gozan de gran popularidad.

Todos son sistemas operativos completamente multitarea, muy parecidos a Linux,


son bastante similares: soportan aproximadamente las mismas características en
términos de interfaz de usuario, redes, seguridad y demás. Sin embargo, la
diferencia real entre Linux y los otros es el hecho de que Linux es un clónico de
UNIX, y por ello se beneficia de las contribuciones de la comunidad UNIX en pleno.

¿Qué hace a UNIX tan importante? No sólo es el sistema operativo más popular
para máquinas multiusuario, también es la base de la mayoría del mundo del
software de libre distribución. Si tiene acceso a Internet, casi todo el software de
libre distribución disponible está específicamente escrito para sistemas UNIX.
Internet en sí está profundamente basado en UNIX.

Hay muchas implementaciones de UNIX, de muchos vendedores, y ni una sola


organización es responsable de su distribución. Por otro lado, OS/2, Mac OS y
Windows son sistemas propietarios. La interface y diseño están controlados por
una sola corporación. Sin embargo, el interface de UNIX está constantemente
desarrollándose y cambiando.

1.6 Distribuciones de Linux


Una distribución o comúnmente llamada ‘distro’ es un conjunto de software que
incluye un sistema operativo, el cual ya está compilado y configurado. En el caso
de Linux, todas las distribuciones comparten el mismo núcleo o kernel. Por lo
general las distribuciones están compuestas, total o mayoritariamente, de
software libre, aunque a menudo incorporan aplicaciones o drivers propietarios.

Una distribución además es un modo de facilitar la instalación, configuración y


mantenimiento de un sistema Linux. Al principio, las distribuciones se limitaban a
recopilar software libre, empaquetarlo en CD-ROM y redistribuirlo o venderlo.

6 | INTRODUCCIÓN A LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

Actualmente las grandes distribuciones son potentes empresas que compiten


entre sí por incluir el último software. Hay distribuciones para todos los gustos,
algunas de ellas son las que figuran en este listado:

• Debian: La distribución de Linux más libre disponible hoy en día,


mantenida por un gran grupo de voluntarios.
http://www.debian.org

• Red Hat: La primera distribución de Linux en dirigirse seriamente a los


usuarios finales y empresas.
http://www.redhat.com

• SuSE: Distribución alemana de gran popularidad en el continente europeo


de propiedad de Novell.
http://www.suse.com

• CentOS: Distribución muy popular hoy en día enfocada al ámbito


empresarial, se basa en Red Hat.
http://www.centos.org

• Ubuntu: Distribución netamente orientada para usuario final, se basa en


Debian.
http://www.ubuntu.com

En una distribución hay todo el software necesario para instalar completamente


un computador personal o servidor y aplicaciones de correo, ofimática, fax,
navegación, seguridad, etc.

1.7 Asuntos legales


Linux está regido por lo que se conoce como la Licencia Pública General de GNU, o
GPL, General Public License. La GPL fue desarrollada para el proyecto GNU por la
Free Software Foundation.

La licencia hace una serie de previsiones sobre la distribución y modificación del


software gratuito (free software). La palabra free, en este sentido se refiere a la
libertad, y no solo costo. La GPL puede ser interpretada de distintas formas, y
esperamos que este resumen le ayude a entenderla y cómo afecta a Linux. Se
incluye una copia completa de la licencia al final de este documento, en el
Apéndice A.

Originalmente, Linus Torvalds lanzó Linux bajo una licencia más restrictiva que la
GPL, que permitía que el software fuera libremente distribuido y modificado, pero
prohibía su uso para ganar dinero. Sin embargo, la GPL autoriza que la gente

INTRODUCCIÓN A LINUX| 7
www.palosanto.com [CURSO DE LINUX BÁSICO]

venda su software, aunque no le permite restringir el derecho que su comprador


tiene a copiarlo y venderlo a su vez. En primer lugar, hay que aclarar que el
“software gratis” de la GPL no es software de dominio público. El software de
dominio público carece de Copyright y pertenece literalmente al público.

El software regido por la GPL sí tiene el Copyright de su autor o autores. Esto


significa que está protegido por las leyes internacionales del Copyright y que el
autor del software está declarado legalmente. No solo porque un software sea de
libre distribución puede considerársele del dominio público.

El software regido por la GPL tampoco es "shareware". Por lo general, el


"shareware" es propiedad del autor, y exige a los usuarios que le paguen cierta
cantidad por utilizarlo después de la distribución. Sin embargo, el software que se
rige por la GPL puede ser distribuido y usado sin pagar a nadie.

La GPL permite a los usuarios modificar el software y redistribuirlo. Sin embargo,


cualquier trabajo derivado de un programa GPL se regirá también por la GPL. En
otras palabras, una compañía nunca puede tomar Linux, modificarlo y venderlo
bajo una licencia restringida. Si un software se deriva de Linux, éste deberá regirse
por la GPL también.

La GPL permite distribuir y usar el software sin cargo alguno. Sin embargo,
también permite que una persona u organización gane dinero distribuyendo el
software. Sin embargo, cuando se venden programas GPL, el distribuidor no
puede poner ninguna restricción a la redistribución. Esto es, si usted compra un
programa GPL, puede a su vez redistribuirlo gratis o cobrando una cantidad. Esto
puede parecer contradictorio.

¿Por qué vender software cuando la GPL especifica que puede obtenerse gratis?
Por ejemplo, supongamos que una empresa decide reunir una gran cantidad de
programas GPL en un CD-ROM y venderlo. La empresa necesitará cobrar por el
hecho de haber producido el CD, y así mismo querrá ganar dinero. Esto está
permitido por la GPL.

Las organizaciones que vendan el software regido por la GPL deben tener en
cuenta algunas restricciones. En primer lugar, no pueden restringir ningún
derecho al comprador del programa. Esto significa que si usted compra un CD-
ROM con programas GPL, podrá copiar ese CD y revenderlo sin ninguna
restricción. En segundo lugar, los distribuidores deben hacer saber que el
software se rige por la GPL. En tercer lugar, el vendedor debe proporcionar, sin
coste adicional, el código fuente del software a distribuir. Esto permite a
cualquiera comprar el software y modificarlo a placer.

Permitir a una empresa distribuir y vender programas que son gratis es bueno.

No todo el mundo tiene acceso a Internet para llevarse los programas, como
Linux, gratis. La GPL permite a las empresas vender y distribuir programas a esas
personas que no pueden acceder al software con un coste bajo. Por ejemplo,

8 | INTRODUCCIÓN A LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

muchas empresas venden Linux en disquetes o CD-ROM por correo, y hacen


negocio de esas ventas. Los desarrolladores de Linux pueden no tener constancia
de estos negocios. Por ejemplo, Linus Torvalds sabe que ciertas compañías
venden Linux, y él no va a cobrar nada por esas ventas.

En el mundo de los programas gratis, lo importante no es el dinero. El objetivo es


emitir, desarrollar y distribuir software excelente asequible a cualquiera.

1.8 Requerimientos de hardware


Como todo sistema operativo, Linux tiene exigencias en el hardware donde se
ejecutará, es por eso que antes de instalar el software, tiene que asegurarse de
estos requerimientos y limitaciones de hardware para Linux.

Tenga en cuenta que Linux fue desarrollado por sus usuarios. Esto significa, en la
mayoría de las ocasiones, que el hardware soportado por Linux es únicamente
aquel al que usuarios y desarrolladores tienen realmente acceso.

Otro inconveniente en el soporte de hardware bajo Linux es que muchas


compañías han decidido conservar las especificaciones del interfaz de su
hardware como propietario. Como consecuencia de esto, los desarrolladores
voluntarios de Linux simplemente no pueden escribir controladores (drivers) para
esos periféricos (y si pudieran, tales controladores serían propiedad de la
compañía dueña del interfaz, lo cual violaría el GPL). Las compañías que
mantienen interfaces propietarios, escriben sus propios controladores para
sistemas operativos como Microsoft Windows; el usuario final (es decir, Usted) no
necesita saber nada del interfaz. Desafortunadamente, esto impide a los
desarrolladores de Linux escribir controladores para esos periféricos.

En las siguientes secciones, trataremos de resumir los requerimientos de


hardware para Linux.

Generalmente cada empresa distribuidora de Linux ofrece la lista completa del


hardware que ellos soportan, un ejemplo es la distribución Red Hat y ya que el
curso es basado en CentOS que es un clónico de Red Hat, usted podrá chequear si
el hardware que posee es soportado por estas distribuciones en la siguiente
dirección:

http://hardware.redhat.com

INTRODUCCIÓN A LINUX| 9
www.palosanto.com [CURSO DE LINUX BÁSICO]

1.8.1 Requerimientos de CPU


Actualmente, Linux soporta sistemas con las siguientes arquitecturas de
procesamiento:

• Intel x86, Pentium, Core Duo, Xeon y todas sus variantes en 32 y 64 bits.
Los clónicos como AMD también son soportados.
• PowerPC
• SPARC
• ARM
• Etc.

1.8.2 Requerimientos de Memoria


Linux, comparado con otros sistemas operativos avanzados, necesita muy poca
memoria para funcionar. Cuanta más memoria disponga en su sistema más rápido
y mejor funcionará.

Linux soporta el rango completo de direcciones de 32 y 64 bits.

Obviamente no espere montar un sistema de mensajería para una red de 1,000


usuarios ni tampoco una estación de diseño gráfico con algunos megabytes en
RAM, en estas situaciones, el requerimiento de memoria crece de manera
matemática.

La mayoría de los usuarios de Linux, reservan una parte del disco duro para
espacio de intercambio (swapping) que se usa como RAM virtual. Incluso si
dispone de bastante memoria RAM física en su máquina, puede que quiera utilizar
un área de swap. El área de swap no puede reemplazar a una memoria física RAM
real, pero puede permitir a su sistema ejecutar aplicaciones más grandes
guardando en disco duro aquellas partes de código que están inactivas. La
cantidad de espacio de intercambio a reservar depende de diversos factores.

La memoria swap es una partición en el disco duro y es recomendado que al


momento de instalación se cree dicha partición, aunque es posible asignar una
partición swap una vez instalado el sistema operativo.

1.8.3 Requerimientos de controladora de disco duro


No necesita un disco duro para ejecutar Linux; puede ejecutar un sistema mínimo
completamente desde un disco CD/DVD o dispositivos de almacenamiento
portables. Sin embargo, resulta lento y muy limitado, y de todas formas, muchos
usuarios tienen acceso a almacenamiento en disco duro.

10 | INTRODUCCIÓN A LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

Debe tener una controladora AT-estándar (16-bit). El núcleo soporta


controladoras XT-estándar (8 bit); aunque la mayoría de las controladoras usadas
hoy son AT-estándar. Linux debería soportar todas las controladoras MFM, RLL,
IDE, SATA, SCSI, SAS, etc.

La regla general para controladoras que no sean SCSI/SAS, es que si puede


acceder a las unidades (disco y/o disquete) desde Microsoft Windows u otro
sistema operativo, debería poder hacerlo desde Linux. El soporte de SCSI/SAS es
más limitado a causa de la gran cantidad de estándares que existen para la
interfaz de la controladora.

1.9 Fuentes de información de Linux


Como podrá imaginar, además de este manual, hay muchas otras fuentes de
información sobre Linux.

Concretamente, hay numerosos libros sobre UNIX en general, que recomendamos


a aquellos lectores que no tengan experiencia previa con UNIX. Si somos nuevos
en UNIX, lo más indicado es leer uno de estos libros antes de meternos en la
"peligrosa selva" de Linux.

Casi todas las fuentes de información sobre Linux están disponibles


principalmente de forma electrónica. Esto es, deberá tener acceso a Internet con
el fin de obtener la documentación. Caso contrario, siempre puede encontrar la
forma de obtener copias impresas, en discos CD/DVD de los libros.

Entonces, a continuación enumeraremos algunas fuentes de información:

• Libros para temas específicos

• En la Internet:
o Licencia GNU/GPL
http://www.gnu.org
o Kernel de Linux
http://www.kernel.org
o Interfaz Gráfica
http://www.xfree86.org
o Distribuciones de Linux
http://www.debian.org
http://www.redhat.com
http://www.centos.org
http://www.suse.com
httpd://www.ubuntu.com

INTRODUCCIÓN A LINUX| 11
www.palosanto.com [CURSO DE LINUX BÁSICO]

o The Linux Documentation Project


http://www.tldp.org
http://es.tldp.org

• Ayuda con el manual del comando


• Etc.

12 | INTRODUCCIÓN A LINUX
Capítulo 2
[CONOCIENDO LINUX]

CONTENIDO
2.1 Archivos y directorios
2.2 Jerarquía de directorios en Linux
2.3 Comandos de Linux
www.palosanto.com [CURSO DE LINUX BÁSICO]

2.1 Archivos y directorios


2.1.1 Archivos
La base del sistema de archivos de Linux es un archivo, que no es otra cosa que la
estructura empleada por el sistema operativo para almacenar información en un
dispositivo físico como un disco duro, un disquete, un CD-ROM o un DVD.

El sistema de archivos es la estructura que permite que Linux maneje los archivos
que contiene.

Como es natural un archivo puede contener cualquier tipo de información, desde


una imagen en formato PNG o JPEG a un texto o una página WEB en formato
HTML, etc.

Todos los archivos de Linux tienen un nombre, el cual debe cumplir ciertas reglas:

• Un nombre de archivo puede tener entre 1 y 255 caracteres

• Se puede utilizar cualquier carácter excepto la barra inclinada / y no es


recomendable emplear los caracteres con significado especial en Linux,
que son los siguientes: = ^ ~ ' " ` * ; - ? [ ] ( ) ! & ~ < >. Para emplear
ficheros con estos caracteres o espacios hay que introducir el nombre del
fichero entre comillas

• Se pueden utilizar números exclusivamente si así se desea. Las letras


mayúsculas y minúsculas se consideran diferentes, y por lo tanto no es lo
mismo carta.txt que Carta.txt ó carta.Txt

• Como en Microsoft Windows, se puede emplear un cierto criterio de


"tipo" o "extensión" para marcar las distintas clases de archivos
empleando una serie de caracteres al final del nombre que indiquen el
tipo de archivo del que se trata. Así, los archivos de texto, HTML, las
imágenes PNG o JPEG tienen extensiones .txt, .htm (o .html), .png y .jpg (o
.jpeg) respectivamente. Cabe recalcar que la extensión otorgada a un
archivo en Linux es simplemente una extensión de su nombre

Pese a esto Linux sólo distingue tres tipos de archivos:

• Archivos o ficheros ordinarios, son los mencionados anteriormente.


• Directorios (o carpetas), es un archivo especial que agrupa otros archivos
de una forma estructurada.
• Archivos especiales, son la base sobre la que se asienta Linux, puesto que
representan los dispositivos conectados a un computador, como puede
ser una impresora. De esta forma introducir información en ese archivo
equivale a enviar información a la impresora. Para el usuario estos
dispositivos tienen el mismo aspecto y uso que los archivos ordinarios.

14 | CONOCIENDO LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

2.1.2 El camino, ruta o path


En cualquier sistema operativo moderno, la estructura de archivos es jerárquica y
depende de los directorios. En general, la estructura del sistema de archivos se
asemeja a una estructura de árbol, estando compuesto cada nodo por un
directorio o carpeta, que contiene otros directorios o archivos.

En Microsoft Windows, cada unidad de disco se identifica como una carpeta


básica que sirve de raíz a otras, y cuyo nombre es especial A:, C:, D:, etc. En los
sistemas UNIX, y por lo tanto en Linux, existe una única raíz llamada / de la que
cuelgan todos los ficheros y directorios, y que es independiente de qué
dispositivos estén conectados al computador.

El camino, ruta o path de un archivo o directorio es la secuencia de directorios


que se ha de recorrer para acceder a un determinado archivo separados por /.

Existen dos formas del path o camino:

• El camino absoluto que muestra toda la ruta a un fichero. Ejemplo:


/home/admin/Carta.txt
• El camino relativo a un determinado directorio. Por ejemplo, si nos
encontramos en el directorio /home, el path relativo al fichero
Carta.txt es admin/Carta.txt

2.2 Jerarquía de directorios en Linux


El sistema de archivos es la colección de archivos y la jerarquía de directorios de
su sistema. Le prometimos acompañarle por el sistema de archivos, y ha llegado el
momento.

Echemos un vistazo a cada uno de estos directorios en la gráfica y tabla a


continuación:

CONOCIENDO LINUX| 15
www.palosanto.com [CURSO DE LINUX BÁSICO]

Directorio Descripción
/bin /bin es la abreviación de binaries, o ejecutables. Es donde residen la
mayoría de los programas o comandos esenciales del sistema y que
pueden ser ejecutados por cualquier usuario.

/boot En este directorio se almacenan los archivos que tienen que ver con el
arranque del sistema operativo como el kernel de Linux y los archivos de
configuración del gestor de arranque llamado GRUB.

/dev Los archivos en /dev son conocidos como controladores de dispositivo


(device drivers). Son usados para acceder a los dispositivos del sistema y
recursos, como discos duros, mouse, memoria, etc.

/etc Contiene una serie de ficheros de configuración esenciales del sistema.

/home Contiene los directorios home de los usuarios donde almacenan sus
archivos y directorios. En un sistema recién instalado, no habrá ningún
usuario en este directorio.

/lib Contiene las imágenes de las librerías compartidas. Estos archivos


contienen código que compartirán muchos programas. En lugar de que
cada programa contenga una copia propia de las rutinas compartidas,
estas son guardadas en un lugar común, en /lib. Esto hace que los
programas ejecutables sean menores y reduce el espacio usado en disco.

16 | CONOCIENDO LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

/media Este directorio es similar a /mnt pero para dispositivos removibles como
memorias flash o pendrive.

/mnt Este directorio es típico en distribuciones Red Hat, aunque puede no estar
presente en otras distribuciones. Permite agrupar en un solo lugar los
puntos de montaje o acceso de dispositivos como particiones de disco
duro, unidades CD/DVD, etc.

/opt Algunas aplicaciones hacen uso de este directorio para almacenar


paquetes de software adicionales. Normalmente este directorio está
vacío.

/proc Es un "sistema de archivos virtual". Los ficheros que contiene realmente


residen en memoria, no en un disco. Hacen referencia a varios procesos
que corren en el sistema, y le permiten obtener información acerca de
que programas y procesos están corriendo en un momento dado.

/root Este es el directorio personal del usuario administrador, llamado root en


Linux.

/sbin Se usa para almacenar programas o comandos esenciales del sistema,


que son de uso exclusivo del administrador del sistema.

/tmp Muchos programas tienen la necesidad de generar cierta información


temporal y guardarla en un archivo temporal. El lugar habitual para esos
archivos es en /tmp.

/usr Su nombre proviene de user (usuario), como tal, contiene una réplica de
otros directorios de nuestro sistema Linux orientados al usuario en lugar
de al propio sistema.

/var Su nombre proviene de variable, y esa es la naturaleza de la información


que contienen sus subdirectorios y archivos. Contiene directorios que a
menudo cambian su tamaño o tienden a crecer.

2.3 Comandos de Linux


La línea de comandos (CLI, command line interface) es un método de interactuar
con el computador que implica digitar comandos (esto es, palabras y frases que
tienen significado para el computador) para que ejecute determinadas acciones.

La interfaz de línea de comandos sustituyó a las tarjetas perforadas en la década


de 1950 y posteriormente sirvieron para el nacimiento de la interfaz gráfica o
GUI.

CONOCIENDO LINUX| 17
www.palosanto.com [CURSO DE LINUX BÁSICO]

Hoy en día, los tres mayores sistemas operativos -Microsoft Windows, Mac OS X,
y Linux- tienen interfaces de línea de comandos en conjunto con sus interfaces
gráficas, aunque Linux tiende a confiar más en la línea de comandos que los otros
dos.

En el presente curso nos enfocaremos netamente al uso de la interfaz de línea de


comandos.

En Linux, los comandos son case sensitive, es decir, se diferencia entre


mayúsculas y minúsculas. Generalmente, se ejecutan desde cualquier directorio.

Para ejecutar un comando o archivo ejecutable que no se encuentre en los


directorios por defecto como /bin, /sbin, etc. se antepone ./ (punto + barra
inclinada), por ejemplo:

./comando

2.3.1 Determinar el directorio actual (pwd)

Una vez que empiece a ver directorios, es fácil perderse u olvidar el nombre de su
directorio actual. Por defecto, la consola de comandos para el sistema Linux
muestra el directorio actual, en vez de todo el recorrido.

Para determinar la ubicación exacta de su directorio actual, escriba el siguiente


comando:

~]# pwd

Verá algo como lo siguiente:

/root

Este ejemplo le indica que está ubicado en el directorio /root, que pertenece al
usuario administrador o root.

El comando pwd proviene de print working directory, (mostrar el directorio


actual). Al escribir pwd, le está diciendo a su sistema Linux que le muestre su
ubicación actual. El sistema le responde mostrando la ruta completa del
directorio actual en la consola a través del monitor.

18 | CONOCIENDO LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

2.3.2 Cambiar de directorio (cd)

Cambiar de directorios es fácil siempre que esté seguro del lugar donde se
encuentra y la relación que éste tiene con el lugar donde desea ir.

Para cambiar de directorios, utilice el comando cd. Escribiendo este comando


sólo, lo devolverá a su directorio principal; el traslado a cualquier otro directorio
requiere un nombre de recorrido o nombre de ruta.

La sintaxis del comando cd es la siguiente:

cd [directorio]

Ejemplos:

~]# cd /

~]# cd /opt

~]# cd /var/log

2.3.3 Listar archivos y directorios (ls)

Ahora que ya sabe cómo cambiar de directorios, ha llegado el momento de echar


un vistazo al contenido de los directorios con el comando ls.

Hay muchas opciones disponibles con el comando ls. Por sí solo, ls no le


mostrará todos los archivos de su directorio. Algunos archivos están ocultos,
también conocidos como archivos dot, cuyo nombre empieza por un punto (.) y
sólo se pueden ver con una opción adicional del comando ls.

A continuación le ofrecemos una lista de algunas de las opciones más populares


de ls. Recuerde, puede ver la lista completa leyendo las páginas de manual de
ls:

• -a Lista todos los archivos en el directorio, incluyendo los archivos


ocultos.
• -l Lista los detalles sobre el contenido, incluyendo los permisos, el
propietario, el grupo, el tamaño, la fecha de creación, etc.
• -r Lista los contenidos del directorio desde el final hasta el inicio, en
orden inverso de la ejecución normal del comando.
• -R Lista recursivamente los contenidos de todos los directorios (bajo el
directorio actual).

CONOCIENDO LINUX| 19
www.palosanto.com [CURSO DE LINUX BÁSICO]

2.3.4 Limpiar la ventana de terminal (clear)

Por ejemplo, luego de la ejecución del comando ls en la terminal de comandos,


la ventana le parecerá demasiado llena. Siempre puede salir de la ventana
terminal y abrir una nueva, pero existe un modo más rápido de limpiarla.

Escriba el comando clear en la terminal de comandos. Este comando hace


exactamente lo que usted imagina, despeja o limpia la ventana de terminal.

2.3.5 Crear directorios (mkdir)

Para crear un directorio mediante la interfaz de comandos, ejecutamos el


comando mkdir. El directorio creado se encuentra vacío.

La sintaxis del comando mkdir es la siguiente:

mkdir [directorio]

Ejemplos:

~]# mkdir dir1

~]# mkdir /dir2

~]# mkdir /opt/dir3

2.3.6 Crear archivos (touch)

Para crear un archivo vacío que podrá ser usado para agregar texto, ejecutamos
el comando touch.

La sintaxis del comando touch es la siguiente:

touch [archivo]

Ejemplos:

~]# touch archivo1

~]# touch /archivo2

~]# touch /tmp/archivo3

20 | CONOCIENDO LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

2.3.7 Copiar archivos y directorios (cp)

Para copiar un archivo, ejecutamos el comando cp, cuya sintaxis es la siguiente:

cp [origen] [destino]

Donde [origen] es el nombre del archivo que quiere copiar y [destino] es


el nombre del directorio a donde desee copiar el archivo.

Ejemplos:

~]# cp archivo.txt dir

~]# cp /root/carta.txt /var/log

Para copiar un directorio, ejecutamos el comando cp con la opción –r, que


significa recursivo y lo que hace es ingresar al directorio y copiar toda la
información contenida en él. La sintaxis es:

cp –r [origen] [destino]

Ejemplos:

~]# cp –r dir1 /root

~]# cp –r /etc/sysconfig /var/spool

2.3.8 Mover archivos y directorios (mv)

Para mover (cortar) archivos o directorios, ejecutamos el comando mv, cuya


sintaxis es la siguiente:

mv [origen] [destino]

Ejemplos:

~]# mv archivo1 /root

~]# mv /etc/dir1 /var/spool

Tenga mucho cuidado al mover un archivo o directorio, ya que el sistema no dará


advertencia alguna si se encuentra moviendo por ejemplo archivos esenciales del
sistema, lo que pudiera causar un mal funcionamiento del sistema.

CONOCIENDO LINUX| 21
www.palosanto.com [CURSO DE LINUX BÁSICO]

2.3.9 Borrar archivos y directorios (rm)

Para borrar un archivo, ejecutamos el comando rm, cuya sintaxis es la siguiente:

rm [archivo]

Ejemplos:

~]# rm archivo.txt

~]# rm /root/carta.txt

Para borrar un directorio, ejecutamos el comando rm con las opciones –rf, que
significa recursivo y lo que hace es ingresar al directorio y copiar toda la
información contenida en él, además de borrar dicho contenido sin consultarle
previamente. La sintaxis es:

rm –rf [directorio]

Ejemplos:

~]# rm –rf dir1

~]# rm –rf /etc/dir2

Tenga mucho cuidado al borrar un archivo o directorio, ya que el sistema no dará


advertencia alguna si se encuentra moviendo por ejemplo archivos esenciales del
sistema, lo que pudiera causar un mal funcionamiento del sistema.

Una vez que ha eliminado un archivo o directorio no se puede recuperar.

2.3.10 Visualizar la ayuda de un comando (man)

El comando man sirve para mostrar en pantalla las páginas de manual de un


comando en particular, que muestran ayuda acerca de cómo usar un comando y
sus opciones. Su sintaxis es la siguiente:

man [comando]

Ejemplos:

~]# man ls

~]# man cp

Una vez que ha ingresado a la página de manual, presione la tecla q para salir del
mismo.

22 | CONOCIENDO LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

2.3.11 Visualizar el tamaño de archivos y directorios (du)

El comando du sirve para mostrar en pantalla la cantidad de espacio de


almacenamiento usado por archivos o directorios especificados. Posee varias
opciones. Su sintaxis es la siguiente:

du [opciones] [archivo]

Donde, las opciones más significativas son:

• -s Muestra únicamente los tamaños de los archivos especificados en la


línea de comandos
• -h Muestra los tamaños de archivo en un formato más legible, en forma
humana por decirlo así
• -c Muestra en pantalla el espacio total ocupado por los archivos
especificados

Ejemplos:

~]# du –csh /etc/hosts

~]# du –csh /var

2.3.12 Visualizar el contenido de archivos


Para visualizar el contenido de un archivo, podemos utilizar varios comandos, los
cuales mencionamos a continuación:

• El comando more permite ver el contenido de un archivo y visualizarlo


por páginas. Este comando sólo permite la navegación hacia adelante. Al
pulsar la tecla Enter avanza una línea, mas si presionamos la barra
espaciadora podemos avanzar una página entera. La sintaxis del comando
es:

more [archivo]

Ejemplos:

~]# more archivo.txt

~]# more /etc/sysconfig/network

• El comando less permite ver el contenido de un archivo al igual que


more, la diferencia está en que less permite ir hacia adelante y
retroceder usando las flechas direccionales. Una vez que ha terminado de
visualizar el contenido de un archivo con el comando less, presione la
tecla q para salir.

CONOCIENDO LINUX| 23
www.palosanto.com [CURSO DE LINUX BÁSICO]

less [archivo]

Ejemplos:

~]# less archivo.txt

~]# less /etc/sysconfig/network

• El comando cat, diminutivo de concatenate que significa combinar o


concatenar, permite visualizar todo el contenido de un archivo de una
sola vez. Si el archivo es bastante largo, se desplazará rápidamente y por
completo por la pantalla. Su sintaxis es:

cat [archivo]

Ejemplos:

~]# cat archivo.txt

~]# cat /etc/sysconfig/network

• El comando tail permite visualizar las diez últimas líneas del contenido
de un archivo por defecto. Esto puede ser muy útil para ver las últimas
líneas de un archivo de registro o log y así visualizar los mensajes
importantes del sistema.

tail [archivo]

Ejemplos:

~]# tail archivo.txt

~]# tail /var/log/messages

También puede usar el comando tail para vigilar cómo se actualizan los
archivos de registro o log. Usando la opción –f se mostrarán
automáticamente los nuevos mensajes desde un archivo abierto a la
pantalla en tiempo real. Así, por ejemplo para vigilar activamente el
archivo de logs del sistema ejecute el comando:

~]# tail –f /var/log/messages

Y pudiera realizar lo mismo para los demás archivos de log ubicados en el


directorio /var u otro directorio.

• El comando grep es útil porque permite encontrar un carácter o cadena


de caracteres dentro del contenido de un archivo. Su sintaxis es:

grep [patrón] [archivo]

Donde [patrón]es el patrón de búsqueda o cadena de caracteres que


se desea encontrar y [archivo]es el lugar dónde lo buscará.
24 | CONOCIENDO LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

Por ejemplo, si desea encontrar cada referencia que se haya hecho a la


palabra ‘shutdown’ en el archivo /etc/inittab, ejecute el comando:

~]# grep shutdown /etc/inittab

2.3.13 Visualizar el historial de comandos (history)

El comando history permite visualizar un listado de los comandos ejecutados


recientemente. Simplemente escriba el comando en la consola para ver dicho
listado.

Para limpiar el historial de comandos, ejecute el siguiente comando:

~]# history –c

2.3.14 Visualizar información del kernel (uname)

El comando uname permite visualizar información sobre el sistema operativo y el


equipo donde está instalado nuestro sistema Linux. . Su sintaxis es la siguiente:

uname [opciones]

Donde, las opciones más significativas son:

• -a Muestra toda la información del sistema operativo y el equipo donde


está instalado
• -r Muestra la versión del kernel o núcleo de nuestro sistema operativo
• -v Muestra la fecha de publicación del kernel o núcleo de nuestro
sistema operativo
• -n Muestra el nombre del equipo, el que asignamos al instalar el sistema
operativo
• -m Muestra la arquitectura del procesador donde está instalado nuestro
sistema
• -s Muestra el nombre del kernel o núcleo
• -o Muestra el nombre del sistema operativo

Ejemplos:

~]# uname -a

Linux srv1.example.com 2.6.32-220.el6.x86_64 #1 SMP Tue


Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux

CONOCIENDO LINUX| 25
www.palosanto.com [CURSO DE LINUX BÁSICO]

2.3.15 Configuración de fecha y hora (date)

El comando date tiene dos funciones, una es la de mostrar en pantalla la fecha y


hora del sistema, la otra es la función de configurar la fecha y hora del sistema,
pero para que esto se cumpla, se debe ejecutar el comando desde una sesión
como usuario root.

Para visualizar la fecha y hora del sistema, simplemente ejecute el comando


date.

Para cambiar la hora del sistema usaremos el mismo comando date, pero hemos
de tener en cuenta que al reiniciar el computador, éste tomará la hora de la BIOS
y nos volverá a colocar la hora anterior. Para evitar esto, cambiaremos también la
hora de la BIOS con el comando hwclock como se detalla a continuación:

Por ejemplo, suponiendo que queremos configurar la fecha en 27/Mayo/2013 y


la hora en 17h27, ejecutamos el comando:

~]# date --set "2013-05-27 17:27"

Ahora, realizaremos el mismo cambio para actualizar la fecha en la BIOS con el


siguiente comando:

~]# hwclock --set --date="2013-05-27 17:27"

Para verificar que los cambios se han efectuado correctamente ejecutamos los
comandos date y hwclock.

2.3.16 Configuración de zona horaria


Para configurar la zona horaria en nuestro sistema mediante la línea de
comandos, buscamos el archivo correspondiente a nuestra zona horaria en la ruta
/usr/share/zoneinfo y sustituimos el archivo /etc/localtime.

Por ejemplo, si deseamos cambiar nuestra zona horaria a América/Guayaquil


(GMT -5), ejecutamos el siguiente comando:

~]# cp /usr/share/zoneinfo/America/Guayaquil /etc/localtime

2.3.17 Verificar el hardware (lspci)

El comando lspci muestra información detallada sobre todos los buses PCI y
dispositivos del sistema como: tarjetas de red, tarjetas de sonido, tarjetas de
video, etc.

26 | CONOCIENDO LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

Al ejecutar el comando lspci, veremos algo como esto:

00:00.0 Host bridge: Intel Corporation E7520 Memory Controller Hub (rev 0c)

00:02.0 PCI bridge: Intel Corporation E7525/E7520/E7320 PCI Express Port A


(rev 0c)

00:06.0 PCI bridge: Intel Corporation E7520 PCI Express Port C (rev 0c)

00:1d.0 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI


Controller #1 (rev 02)

00:1d.1 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI


Controller #2 (rev 02)

00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev c2)

00:1f.0 ISA bridge: Intel Corporation 82801EB/ER (ICH5/ICH5R) LPC Interface


Bridge (rev 02)

00:1f.1 IDE interface: Intel Corporation 82801EB/ER (ICH5/ICH5R) IDE


Controller (rev 02)

01:03.0 VGA compatible controller: ATI Technologies Inc Rage XL (rev 27)

01:04.0 System peripheral: Compaq Computer Corporation Integrated Lights Out


Controller (rev 01)

01:04.2 System peripheral: Compaq Computer Corporation Integrated Lights Out


Processor (rev 01)

02:00.0 PCI bridge: Intel Corporation 6700PXH PCI Express-to-PCI Bridge A


(rev 09)

03:01.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5704 Gigabit


Ethernet (rev 10)

04:03.0 RAID bus controller: Compaq Computer Corporation Smart Array 64xx
(rev 01)

05:00.0 PCI bridge: Intel Corporation 6700PXH PCI Express-to-PCI Bridge A


(rev 09)

CONOCIENDO LINUX| 27
www.palosanto.com [CURSO DE LINUX BÁSICO]

28 | CONOCIENDO LINUX
Capítulo 3
[ADMINISTRACIÓN DEL
SISTEMA DE ARCHIVOS]

CONTENIDO
3.1 Acerca de discos duros
3.2 Conceptos sobre particiones
3.3 Particiones en Linux y comparación con Microsoft
Windows
3.4 Tipos de sistemas de archivos
3.5 La partición swap
3.6 Verificar particiones y sistemas de archivos
3.7 Montar dispositivos
www.palosanto.com [CURSO DE LINUX BÁSICO]

3.1 Acerca de discos duros


Los discos duros son dispositivos de almacenamiento en masa que residen en el
computador y son los que contienen la información propiamente dicha. Para que
la información sea accedida por el sistema operativo, lo discos duros deben ser
configurados para trabajar de “cierta forma”, esta “cierta forma” de manejo de
archivos son los llamados filesystems o sistemas de archivos en español.

Un disco duro puede contener más de un sólo sistema de archivos, esto se hace
para ordenar de mejor manera la información que reside en el disco, así también
como su seguridad. De esto se hablará más adelante. Lo que hay que puntualizar
es que para que un disco duro tenga más de un sólo sistema de archivos, debe
estar “particionado”. En la siguiente sección se profundizará en el tema.

3.2 Conceptos sobre particiones


Particionar un disco duro consiste en dividir su capacidad en varias partes o
secciones llamadas particiones. Donde cada partición puede corresponder a un
sistema operativo.

Algunas ventajas de particionar un disco duro son:

• Permite organizar mejor la información. Por ejemplo, sistema operativo


en una partición y los datos de los usuarios en otra partición.
• Permite tener instalados varios sistemas operativos en un computador, lo
cual es muy útil. Por ejemplo, en un disco duro se pueden tener varias
particiones con varios sistemas operativos, una dedicada a Microsoft
Windows y otra a Linux.
• Permite actualizar un sistema operativo sin necesidad de perder
información, la cual está almacenada en una partición diferente.

Generalmente, los sistemas Microsoft Windows utilizan una única partición que
ocupa todo el disco. Para Microsoft Windows, esta partición es accedida como la
unidad (C:). Si tiene más de una partición en su disco duro, Microsoft Windows
las llamará (D:), (E:), y así sucesivamente, de modo que cada partición actúa
como si fuera un disco duro independiente.

En el primer sector del disco está el registro de arranque maestro o también


llamado MBR (Master Boot Record) junto a la tabla de particiones. El registro de
arranque (como su nombre indica) se usa para arrancar el sistema. La tabla de
particiones contiene información acerca del lugar y el tamaño de cada partición.

30 | ADMINISTRACIÓN DEL SISTEMA DE ARCHIVOS


[CURSO DE LINUX BÁSICO] www.palosanto.com

Existen tres clases de particiones: primarias,


primarias, extendidas, y lógicas. De éstas, las
más usadas son las primarias. Sin embargo, debido al límite del tamaño de la tabla
de particiones, sólo pueden tenerse hasta cuatro particiones primarias en un
disco.

La forma de superar este límite de cuatro particiones


particiones es usar particiones
extendidas. Una partición extendida no tiene datos ella misma; en su lugar, actúa
como "soporte" de particiones lógicas. Por lo tanto, se puede crear una partición
extendida que ocupe todo el disco, y dentro crear cualquier número de
particiones lógicas. Sin embargo, sólo puede tenerse una partición extendida por
disco.

3.3 Particiones
es en Linux y comparación con
Microsoft Windows
Muchas distribuciones de Linux necesitan que se creen a mano las particiones
p
utilizando la herramienta
herram fdisk. Otras pueden crearlas automáticamente. En
cualquier caso, usted debe conocer lo siguiente acerca de los nombres para los
dispositivos y las particiones en Linux.

Bajo Linux, los dispositivos y las particiones tienen nombres muy distintos a los
utilizados en otros sistemas operativos. Bajo Microsoft Windows, las disqueteras
se identifican como (A:) y (B:),, mientras que las particiones del disco duro se
identifican como (C:), (D:), etc. En n Linux, la denominación es algo diferente.

Los manejadores de dispositivos, que se encuentran en el directorio /dev, se


usan para comunicar con los dispositivos de su sistema (como discos duros o
ratones). Por ejemplo, si usted tiene un ratón en su sistema, lo puede acceder a
través del manejador /dev/mouse

TEMA DE ARCHIVOS | 31
ADMINISTRACIÓN DEL SISTEMA
www.palosanto.com [CURSO DE LINUX BÁSICO]

Si usted tiene ya otro software instalado en su sistema, puede necesitar cambiar


el tamaño de sus particiones con el fin de reservar espacio para Linux.

Las unidades de discos duros y particiones tienen cada uno un manejador propio.
No se preocupe acerca de la interfaz del manejador por ahora; solo es importante
entender cómo son nombrados los dispositivos con el fin de poderlos usar.

La tabla siguiente, lista los nombres de diversos manejadores:

Dispositivo Nombre
Primera disquetera (A:) /dev/fd0
Segunda disquetera (B:) /dev/fd1
Primer disco duro (todo el disco) /dev/hda
Primer disco duro, partición primaria 1 /dev/hda1
Primer disco duro, partición primaria 2 /dev/hda2
Primer disco duro, partición primaria 3 /dev/hda3
Primer disco duro, partición extendida /dev/hda4
Primer disco duro, partición lógica 1 /dev/hda5
Primer disco duro, partición lógica 2 /dev/hda6
.. ..
. .
Segundo disco duro (todo el disco) /dev/hdb
Segundo disco duro, partición primaria 1 /dev/hdb1
.. ..
. .
Primer disco duro SCSI (todo el disco) /dev/sda
Primer disco duro SCSI, partición primaria /dev/sda1
.. ..
. .
Segundo disco duro SCSI (todo el disco) /dev/sdb
Segundo disco duro SCSI, partición primaria 1 /dev/sdb1
..
.

Algunas notas acerca de esta tabla. Observe que /dev/fd0 corresponde a la


primera disquetera (A:) bajo Microsoft Windows y que /dev/fd1 corresponde
a la segunda o (B:).

Además, los discos duros SCSI, SATA, SAS o aquellos basados en memoria flash, se
nombran de manera diferente a otros discos.

Los dispositivos IDE se acceden a través de los manejadores /dev/hda,


/dev/hdb, etc. Las particiones de /dev/hda son /dev/hda1, /dev/hda2,
etc. Sin embargo, los dispositivos SCSI, SATA, SAS o aquellos basados en memoria
flash se nombran como /dev/sda, /dev/sdb, etc., y las particiones con
/dev/sda1, /dev/sda2, etc.

Tenga en cuenta que la correcta nomenclatura de una partición en Linux conlleva


el directorio /dev. Así por ejemplo, para referirnos a la primera partición del
segundo disco de tipo SATA sería /dev/sdb1.

32 | ADMINISTRACIÓN DEL SISTEMA DE ARCHIVOS


[CURSO DE LINUX BÁSICO] www.palosanto.com

3.4 Tipos de sistemas de archivos en Linux


Un sistema de archivos o filesystem son los métodos y estructuras de datos que
un sistema operativo utiliza para realizar un seguimiento a los archivos en un
disco o partición, es decir, la forma en que se organizan los archivos en disco.

Antes de que una partición en un disco pueda ser utilizada como un sistema de
archivos, tiene que ser inicializado. Esto es a lo que llamamos dar formato o
formatear una partición.

Linux soporta varios tipos de sistemas de archivos. Los más importantes son:

ext2 El sistema de archivos nativo de Linux con gran riqueza de


características. Ya no se usa a menudo.
ext3 Tiene todas las características de ext2. La diferencia es que la
característica de journaling ha sido agregada. Esto incrementa el
rendimiento y el tiempo de recuperación en caso de desastres. Se ha
hecho más popular que ext2.
ext4 Sistema de archivos transaccional (journaling). Es una mejora de ext3.
reiserfs Un sistema de archivos más robusto. Usa journaling, lo que hace que
la pérdida de datos sea menos probable.

Además, existe soporte para varios sistemas de archivos externos para facilitar el
intercambio de archivos con otros sistemas operativos. Estos sistemas de archivos
funcionan como los nativos, excepto que pueden fallar en algunas de las
características habituales de UNIX, o tienen ciertas limitaciones. Estos son:

vfat Es una extensión del sistema de archivos FAT conocida como FAT32.
ntfs Es el sistema de archivos transaccional más avanzado de Microsoft
que proporciona acceso más rápido a los archivos y estabilidad en
comparación con otros sistemas anteriores de Microsoft.
nfs Un sistema de archivos en red que permite compartir un sistema de
archivos entre varios computadores para permitir el fácil acceso a los
archivos entre todos ellos.
smbfs Un sistema de archivos de red que permite compartir un sistema de
archivos con equipos Microsoft Windows.
iso9660 El sistema de archivos estándar para CD-ROM.

3.5 La partición swap


Otra cuestión a considerar cuando se decide cómo particionar un disco duro, es el
espacio de intercambio o swap. Este espacio de intercambio ayuda a la memoria
RAM a pasar datos temporalmente al disco duro para poder realizar operaciones
que se necesitan en ese momento.

ADMINISTRACIÓN DEL SISTEMA DE ARCHIVOS | 33


www.palosanto.com [CURSO DE LINUX BÁSICO]

Si se desea usar espacio de intercambio en Linux, puede crear una partición de


intercambio, es decir, una partición reservada exclusivamente como espacio de
swap.

Actualmente, los administradores usan una partición para el intercambio en lugar


de un fichero, por motivos de eficiencia. Se recomienda que la partición de
intercambio sea de un máximo de 4 gigabytes. Si se desea tener más de 4
gigabytes de swap, se pueden crear varias particiones swap, con un máximo de
ocho por disco duro.

Por lo general, al momento de instalar Linux se crearán dos particiones: una para
ser usada como sistema de ficheros raíz, y la otra como espacio de intercambio o
swap. Por supuesto, hay otras opciones pero ésta es la opción mínima. El espacio
de swap no es obligatorio en Linux, pero está muy recomendado si posee una
cantidad limitada de memoria física.

El tamaño de sus particiones swap depende de la RAM virtual que necesite. Lo


típico es crear una partición de intercambio del doble de espacio de su RAM física;
por ejemplo, si tiene 1024 megabytes de RAM, una partición de 2048 megabytes
suele bastar. Por supuesto, esto es solo una idea. La cantidad de espacio de swap
que requiera dependerá del software que quiera ejecutar. Si usted tiene una gran
cantidad de memoria física (digamos, 8 o 16 gigabytes o más) puede que al final
no necesite espacio de swap.

Existe una limitante con respecto al número de particiones swap por disco en el
sistema operativo Linux. Usted no debe tener más de 8 particiones swap por disco
en su sistema. Si sobrepasa este límite, las demás particiones swap quedarán sin
uso, y por lo tanto habrá un desperdicio de espacio de disco.

3.6 Verificar particiones y sistemas de archivos


3.6.1 Verificar particiones
Para verificar las particiones en el sistema Linux, ejecutamos el comando fdisk,
el cual originalmente permite particionar un disco duro, pero al usarlo con la
opción –l, muestra todos los dispositivos de disco duro o almacenamiento que
están disponibles en el sistema.

Una salida de la ejecución de este comando sería como la siguiente:

34 | ADMINISTRACIÓN DEL SISTEMA DE ARCHIVOS


[CURSO DE LINUX BÁSICO] www.palosanto.com

~]# fdisk –l

Disco /dev/hda: 160.0 GB, 160041885696 bytes

255 heads, 63 sectors/track, 19457 cylinders

Unidades = cilindros de 16065 * 512 = 8225280 bytes

Disposit. Inicio Comienzo Fin Bloques Id Sistema

/dev/hda1 1 243 1951866 82 Linux swap

/dev/hda2 244 1459 9767520 83 Linux

/dev/hda3 * 1460 2734 10241437+ 7 HPFS/NTFS

/dev/hda4 18849 19457 4891792+ 5 Extendida

/dev/hda5 18850 19457 4883760 83 Linux

3.6.2 Verificar sistemas de archivos


Para visualizar los sistemas de archivos existentes o montados en el sistema, se
utiliza el comando df, al cual le agregamos la opción –h para observarlo de una
forma más legible. Puede ser muy útil en caso de que un sistema de archivos se
haya montado automáticamente. Una salida del comando sería:

~]# df -h

S.ficheros Tamaño Usado Disp Uso% Montado en

/dev/sda2 38G 3,3G 33G 9% /

/dev/sda1 244M 16M 216M 7% /boot

tmpfs 1014M 0 1014M 0% /dev/shm

/dev/sda3 24G 221M 23G 1% /home

/dev/sda7 67G 7,1G 57G 12% /var

3.7 Montar dispositivos


Este es quizás uno de los puntos de más utilidad y más importantes en los
sistemas Linux.

Es posible almacenar datos en diferentes dispositivos físicos de almacenamiento,


como los disquetes, CD-ROM y unidades de disco duro. Los discos duros se
dividen en diferentes particiones con diferentes sistemas de archivos.

Si usted está migrándose a Linux desde Microsoft Windows, es probable que esté
acostumbrado a acceder a todos los sistemas de archivos muy fácilmente: solo
tiene que encender el computador, ir a Mi PC y encontrar allí todas sus

ADMINISTRACIÓN DEL SISTEMA DE ARCHIVOS | 35


www.palosanto.com [CURSO DE LINUX BÁSICO]

particiones Windows inmediatamente. Por ejemplo, si tiene un segundo disco


duro (o una segunda partición de Windows), ésta aparece automáticamente en
D:\ y se puede acceder inmediatamente. Lo mismo ocurre con los disquetes, CD-
ROMs, cámaras digitales y otros dispositivos de almacenamiento; basta
conectarlos, y usted será capaz de accederlos inmediatamente. Sin embargo, este
no es el caso en Linux.

En Linux, para utilizar un dispositivo como por ejemplo: CD/DVD, cámara digital,
pendrive, alguna partición, o alguna unidad de red compartida, éstos deben estar
asociados a un directorio existente en el sistema antes de poder acceder a ellos.
Esta asociación se llama montaje y el directorio en el que está conectado el
dispositivo se llama punto de montaje. El directorio a utilizar como punto de
montaje debe ser un directorio vacío y puede estar ubicado en cualquier lugar del
sistema de archivos en Linux.

Una vez montado el dispositivo, puede acceder a los archivos en el dispositivo


mediante el acceso al directorio en el que está conectado el dispositivo. Cuando
haya terminado y desea eliminar el disquete o CD u otro dispositivo, es necesario
separarlo o desmontarlo antes de retirarlo.

Antes de empezar a montar, hemos de saber donde están físicamente los


dispositivos, generalmente están ubicados en el directorio /dev, y sus nombres
como por ejemplo: /dev/hda1, /dev/sd1, /dev/cdrom, etc., aunque éste
no sería el caso si quisiéramos montar unidades de red por ejemplo.

Una vez que ya sabemos dónde está el dispositivo que queremos montar, ya
podemos proceder a montarlo. Para ello usaremos el comando mount, su sintaxis
básica es la siguiente:

mount -t [filesystem] -o [options] [device] [mountpoint]

[filesystem] Definimos el tipo de sistema de archivos a montar. Por ejemplo: ext2,


ext3, ext4, ntfs, vfat, iso9660, etc.
[options] Las opciones con las que podemos montar un sistema de archivos
permiten establecer parámetros de montaje. Las más utilizadas son:
• ro – Con permiso de solo lectura
• rw – con permiso de lectura y escritura
• exec – para permitir la ejecución de binarios
• defaults – para emplear las opciones predeterminadas
[device] Se refiere al dispositivo que queremos montar, como por ejemplo
/dev/hda3 si es una partición, /dev/hdc si es una unidad de CD-
ROM, /dev/sda1 si es un pendrive, etc., si no sabemos donde
tenemos nuestro dispositivo podemos ejecutar (como root) el
comando:
~]# dmesg
[mountpoint] Es el directorio donde queremos montar el dispositivo, el cual ya debe
existir antes de montar el dispositivo.

36 | ADMINISTRACIÓN DEL SISTEMA DE ARCHIVOS


[CURSO DE LINUX BÁSICO] www.palosanto.com

Ejemplos de uso del comando mount serían:

~]# mount -t ext3 -o rw /dev/hda2 /mnt/linux


~]# mount -t vfat -o defaults /dev/hdb1 /mnt/windows
~]# mount -t iso9660 -o ro,exec /dev/hdc /mnt/cdrom
~]# mount -t vfat /dev/sda1 /mnt/pendrive
~]# mount /dev/cdrom /mnt/cdrom

Para desmontar un dispositivo, se utiliza el comando umount, de acuerdo a la


siguiente sintaxis:

umount [device]|[mountpoint]

Donde [device] es el dispositivo y [mountpoint] es el punto de montaje de


dicho dispositivo. Es necesario usar solamente uno de los dos valores.

Así por ejemplo:

~]# umount /dev/sdb1

~]# umount /media/pendrive

ADMINISTRACIÓN DEL SISTEMA DE ARCHIVOS | 37


www.palosanto.com [CURSO DE LINUX BÁSICO]

Laboratorio 1
Acceder a un dispositivo flash USB
Este laboratorio se enfocará en cómo accesar a dispositivos de almacenamiento, y el trato con
ellos.

1. Estando logeados en el sistema, inserte una unidad flash USB dada por el instructor.
2. Para accesar al información que se encuentra en el flash USB, primeramente debemos
“montar” el dispositivo en uno de nuestros directorios. Generalmente, esto se realiza
de manera automática por el sistema operativo, pero vamos a hacerlo por nosotros
mismos.
3. Para saber si la unidad flash USB fue detectada por el sistema operativo, ejecutamos el
comando:
~]# fdisk –l
Deberíamos observar un segundo dispositivo conectado a nuestro equipo y detectado
como /dev/sdb ya que aparte de nuestro disco duro, es el segundo dispositivo de
almacenamiento en nuestro equipo.
4. Use el comando df –h para verificar que efectivamente la unidad flash USB fue
montada en el sistema de manera automática. Vamos a desmontar el dispositivo para
realizar el proceso de forma manual.
5. Para desmontar la unidad flash USB ejecute el comando:
~]# umount /dev/sdb1
Y vuelva a ejecutar el comando df –h para verificar que efectivamente se desmontó.
6. Una vez desmontado, procedemos a crear un directorio en nuestro sistema para
montar la unidad flash USB de forma manual, para esto ejecutamos el comando:
~]# mkdir /opt/usbflash
7. Una vez creado el directorio, vamos a ejecutar el siguiente comando para montar la
unidad flash USB al directorio creado:
~]# mount /dev/sdb1 /opt/usbflash
Ejecutamos nuevamente el comando df –h y verificamos que ahora nuestra unidad flash
USB está montada sobre el directorio que hemos creado y podremos acceder a nuestra
información ingresando al directorio en cuestión.
8. Para desmontar y expulsar la unidad flash USB, estando fuera del directorio montado,
ejecutamos cualquiera de los siguientes comandos, ya que ambos son igualmente
válidos:
~]# umount /dev/sdb1
~]# umount /opt/usbflash
Si recibe un error del sistema anunciando que el dispositivo se encuentra ocupado
(/dev/sdb1 is busy), lo más probable es que alguien se encuentre accediendo al
dispositivo en otra sesión, o es que usted se encuentra dentro del directorio de montaje
/opt/usbflash. Para desmontarlo correctamente, debe salir del directorio de montaje.

38 | ADMINISTRACIÓN DEL SISTEMA DE ARCHIVOS


Capítulo 4
[ADMINISTRACIÓN DEL
PROCESO DE ARRANQUE]

CONTENIDO
4.1 El proceso de arranque
4.2 El gestor de arranque GRUB
4.3 Ejecutar servicios y programas al arranque
4.4 El archivo /etc/rc.local
www.palosanto.com [CURSO DE LINUX BÁSICO]

4.1 El proceso de arranque


Cuando una PC es encendida, el primer software que se ejecuta es el BIOS, quien
realiza varios tests y chequea que todo el hardware del equipo esté correcto. El
BIOS selecciona qué dispositivo arrancará en primera instancia, de acuerdo a su
configuración, y leerá su primer sector. Para el caso de un disco duro, este es el
llamado sector de arranque o zona cero conocido como MBR (Master Boot
Record).

El gestor de arranque (bootloader) inicializará el sistema operativo. Éste consta de


dos etapas, la primera se encuentra en el sector de arranque o MBR, y la segunda
es un archivo que se encuentra en la partición /boot de la instalación del
sistema Linux.

En la primera etapa, el sector de arranque contendrá un programa pequeño


(suficiente para caber en un solo sector), el cual es responsable de leer el sistema
operativo actual y arrancarlo, en la segunda etapa, en realidad ya es el kernel que
se ha ejecutado y comienza a descomprimirse para correr en memoria.

Luego que la ubicación del kernel de Linux ha sido leída en la memoria y es


inicializado ocurre lo siguiente:

• El kernel de Linux es instalado en la memoria de manera comprimida, y se


descomprimirá por sí mismo. La parte inicial del kernel tiene un programa
que realiza esta operación.
• Luego de esto, el kernel comienza a chequear discos duros, floppies,
tarjetas de red, etc., y carga los drivers o módulos del hardware
encontrado apropiadamente si es el caso, mientras hace esto, muestra
mensajes de lo que ha encontrado por pantalla.

Luego de que todos los módulos esenciales son cargados, Linux tratará de montar
el sistema de archivos raíz (/), como solo-lectura. A partir de aquí, el kernel pasa el
control del proceso de arranque al proceso conocido como init.

El proceso init es el padre de todos los procesos, y por lo tanto tiene como PID
(Identificador de Proceso), el número 1.

El proceso init lee su configuración del archivo /etc/inittab, el cual le


indica en qué modo o runlevel debe arrancar.

Una vez que se ha leído el archivo /etc/inittab y encontrado en qué runlevel


se va a trabajar, el proceso init ejecuta el script de inicialización
/etc/rc.d/rc.sysinit, cuyas tareas incluyen:

• Configuración de ciertos parámetros para el kernel configurados en el


archivo /etc/sysctl.conf
• Configuración del reloj del sistema
• Configuración del teclado

40 | ADMINISTRACIÓN DEL PROCESO DE ARRANQUE


[CURSO DE LINUX BÁSICO] www.palosanto.com

• Habilitación de las particiones swap


• Configuración del nombre de la máquina (hostname)
• Chequeo del sistema de archivos raíz (/) y lo monta
• Añade los dispositivos de almacenamiento tipo RAID configurados por
software
• Habilitación de las cuotas de usuarios y grupos
• Chequeo de los demás sistemas de archivos y su montaje
• Limpieza de los archivos de bloqueos (lock files) y archivos de
identificación de procesos (PID)

Luego de esto, el proceso init ejecuta los scripts que levantan los servicios,
ubicados en el directorio /etc/rc.d/init.d, que están configurados para
iniciar en el runlevel seleccionado en el archivo /etc/inittab.

Una vez que se han ejecutado todos los scripts de los servicios en el runlevel
seleccionado, se ejecuta el script /etc/rc.local.

Finalmente, se realiza la presentación del sistema o login. Una vez aquí, el sistema
estará cargado totalmente y los servicios levantados.

4.1.1 Resumen del proceso de arranque


1. La BIOS chequea el sistema físico
2. La BIOS realiza la elección del dispositivo donde leerá el primer sector (MBR,
Master Boot Record)
3. En el MBR está contenido un pequeño programa el cual le indica al BIOS los
datos exactos para ubicar al kernel en el disco, el cual se lo conoce como
gestor de arranque. En CentOS este programa se llama GRUB (Grand Unified
Bootloader)
4. El kernel de Linux ubicado por el gestor de arranque se descomprime por si
solo en memoria y empieza actividades de inicialización
5. El kernel ejecuta el primer proceso llamado init
6. El proceso init identifica cual es el modo o runlevel en el que debe iniciar a
través del archivo /etc/inittab, luego se ejecuta el archivo
/etc/rc.d/rc.sysinit
7. El proceso init ejecuta los servicios que se encuentran programados para
iniciarse automáticamente en el runlevel configurado, que se encuentran en
la ruta /etc/rc.d/init.d
8. El proceso de arranque ejecuta el último script /etc/rc.local, y realiza la
presentación del sistema o login.

ADMINISTRACIÓN DEL PROCESO DE ARRANQUE | 41


www.palosanto.com [CURSO DE LINUX BÁSICO]

4.2 El gestor de arranque GRUB


El programa que reside en el MBR y se utiliza para ejecutar cualquier kernel que
se encuentre en el disco duro o cualquier dispositivo de almacenamiento, se
denomina gestor de arranque del sistema operativo. Actualmente con Linux,
vamos a utilizar GRUB.

GRUB (Grand Unified Bootloader), es un programa que reside en el MBR y que


permitirá ejecutar el kernel de Linux. Actualmente GRUB es la única opción
disponible en las distribuciones Red Hat y CentOS.

GRUB soporta opciones avanzadas, incluyendo, protección por contraseñas MD5,


un método de edición del menú en el momento de arranque y un shell para
aceptar comandos también a tiempo de arranque.

GRUB es configurado a través del archivo /boot/grub/grub.conf, y un


ejemplo de una configuración sencilla sería:

#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-279.11.1.el6.i686)
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-279.11.1.el6.i686 ro rhgb quiet
initrd /boot/initramfs-2.6.32-279.11.1.el6.i686.img

GRUB puede leer directamente desde los sistemas de archivos de Linux, por lo
tanto cuando se realizan cambios en su archivo de configuración, no es necesario
correr ningún comando para instalarlo en el MBR.

Si por alguna razón, GRUB ya no se encuentra en el sector de arranque, se puede


volver a instalar con el comando:

~]# grub-install /dev/sda

En caso de instalar el GRUB en el disco /dev/sda.

4.3 Ejecutar servicios y programas al arranque


4.3.1 El sistema de runlevels o System V
El runlevel o nivel de ejecución se refiere al modo de operación en que se puede
iniciar el sistema operativo Linux.

Existen 7 niveles de ejecución en total:

42 | ADMINISTRACIÓN DEL PROCESO DE ARRANQUE


[CURSO DE LINUX BÁSICO] www.palosanto.com

Nivel de servicio Descripción


Se utilizar para apagar el sistema. Este nivel de servicio es reservado y no
0
puede ser cambiado.
Se utiliza para ejecutarse en modo monousuario, el root. También se lo
1 conoce como modo de mantenimiento y ningún servicio se ejecuta en
este nivel de servicio, el cual es reservado y no puede ser cambiado.
2 No se utiliza por defecto. Usted es libre de definirlo por sí mismo.
Se utiliza para ejecutarse en modo multiusuario completo con una
3
interfaz de línea de comandos.
4 No se utiliza por defecto. Usted es libre de definirlo por sí mismo.
Se utiliza para ejecutarse en modo multiusuario completo con una
5
interfaz gráfica de usuario.
Se utiliza para reiniciar el sistema. Este nivel de servicio es reservado y no
6
puede ser cambiado.

El sistema de runlevels o también llamado System V, hace que se ejecuten los


servicios que corresponden al modo configurado en el archivo /etc/inittab,
ejecutando los scripts de inicialización que se encuentran en los directorios:

/etc/rc.d/rcX.d

Donde X es el número de runlevel al cual estamos accediendo. En cada uno de


estos directorios, se encuentran enlaces simbólicos (accesos directos) a los scripts
que se encuentran en el directorio /etc/rc.d/init.d/, que es donde se
alojan los scripts que levantan los servicios del sistema. Si un servicio dentro de
esa carpeta no posee un enlace simbólico al directorio anterior, en ese caso, ese
servicio no está programado para ejecutarse en dicho runlevel.

Por ejemplo, un listado del directorio /etc/rc.d/init.d/ seria:

~]# ls –l /etc/rc.d/init.d/
total 312
-rwxr-xr-x 1 root root 1128 ene 6 2012 auditd
-rwxr-xr-x 1 root root 1441 mar 28 2011 avahi-daemon
-rwxr-xr-x 1 root root 1429 mar 14 2010 bluetooth
-rwxr-xr-x 1 root root 1176 ene 6 2011 crond
-rwxr-xr-x 1 root root 2808 mar 14 2012 cups
-rwxr-xr-x 1 root root 2372 mar 14 2012 dhcpd
-rwxr-xr-x 1 root root 1848 mar 14 2012 dnsmasq
-rwxr-xr-x 1 root root 1789 mar 14 2010 dovecot
-rwxr-xr-x 1 root root 1477 mar 28 2012 httpd
-rwxr-xr-x 1 root root 1357 mar 14 2012 iptables
-rwxr-xr-x 1 root root 1424 ene 7 2012 mysqld
-rwxr-xr-x 1 root root 7019 mar 14 2012 network
-rwxr-xr-x 1 root root 1904 mar 14 2011 postfix

ADMINISTRACIÓN DEL PROCESO DE ARRANQUE | 43


www.palosanto.com [CURSO DE LINUX BÁSICO]

Así mismo, por ejemplo para observar los scripts que se encuentran programados
a ejecutarse en el runlevel 3, listamos el directorio de /etc/rc.d/rc3.d/:

~]# ls –l /etc/rc.d/rc3.d/
total 0
lrwxrwxrwx 1 root root 19 ene 31 19:05 K12dc_client -> ../init.d/dc_client
lrwxrwxrwx 1 root root 15 ene 31 19:05 K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 13 ene 31 18:56 K20nfs -> ../init.d/nfs
lrwxrwxrwx 1 root root 15 ene 31 19:14 K20rwhod -> ../init.d/rwhod
lrwxrwxrwx 1 root root 14 ene 31 18:58 K24irda -> ../init.d/irda
lrwxrwxrwx 1 root root 15 ene 31 19:06 K25squid -> ../init.d/squid
lrwxrwxrwx 1 root root 18 ene 31 19:19 K34dhcrelay -> ../init.d/dhcrelay
lrwxrwxrwx 1 root root 19 ene 31 19:19 K34yppasswdd -> ../init.d/yppasswd

4.3.2 Determinar el runlevel actual


Para chequear en el nivel de servicio en el que está operando el sistema, ejecute
el comando runlevel, así:

~]# runlevel

N 5

En este caso es el número 5, lo que significa que el sistema se está ejecutando en


modo multiusuario completo con interfaz gráfica.

4.3.3 Configuración del runlevel por defecto


El runlevel por defecto puede ser cambiado en el archivo /etc/inittab, que al
final del archivo contiene una línea como la siguiente:

id:5:initdefault:

Para hacerlo, edite el archivo como usuario root y cambie el número en esta línea
al valor deseado. El cambio tomará efecto la próxima vez que reinicie el sistema.

4.3.4 El comando init


Para cambiar el runlevel mientras está trabajando en su sistema Linux, ejecute el
comando init seguido del runlevel al que desea dirigirse.

Así por ejemplo, si estoy en modo gráfico y deseo cambiarme a runlevel 3, ejecuto
el comando:

~]# init 3

44 | ADMINISTRACIÓN DEL PROCESO DE ARRANQUE


[CURSO DE LINUX BÁSICO] www.palosanto.com

Así también, si deseo apagar o reiniciar el sistema, ejecuto los comandos


respectivamente:

~]# init 0

~]# init 6

4.4 El archivo /etc/rc.local


Este archivo es un script que es ejecutado una vez que se han corrido todos los
scripts de los servicios del runlevel específico, es decir, es el último archivo que se
ejecuta antes de la presentación del sistema, y por lo tanto es donde se deben
ubicar los programas que se necesitan correr de manera personalizada a tiempo
de arranque del sistema.

ADMINISTRACIÓN DEL PROCESO DE ARRANQUE | 45


www.palosanto.com [CURSO DE LINUX BÁSICO]

Laboratorio 2
Cambiando el runlevel por defecto a tiempo de
boot con GRUB
Este laboratorio enfoca los aspectos del programa del cargador de sistema operativo GRUB y
los scripts de inicio de los servicios:

1. Reinicie el servidor Linux hasta que aparezca la pantalla de GRUB al inicio del proceso de
arranque. Si se ha especificado un valor de timeout en el /etc/grub.conf, debe notar
que en la parte inferior de la pantalla de arranque de GRUB ha iniciado la cuenta
regresiva.
2. Antes que la cuenta regresiva llegue a cero, presione la tecla TAB para interrumpir dicha
cuenta.
3. Ahora puede notar el texto de ayuda en la parte inferior de GRUB. Use las teclas de
“flechas” para navegar al kernel que desea arrancar (si solo tiene una instalación de Linux,
solo tendrá un kernel), y ahora presione la tecla “e” para editar el contenido del
grub.conf para este kernel.
4. Una vez más, note la ayuda en la parte inferior de la pantalla. Use las teclas de “flechas”
para dirigirse hasta la línea que comienza con la palabra “kernel” y presione la tecla “e”
para editar esa línea.
5. Usted se encuentra en el modo de edición del GRUB, con el cursor en el final de la línea.
Presione la tecla espaciadora y digite el número “1” seguido de la tecla ENTER. Usted verá
que la pantalla de GRUB regresa a la pantalla anterior y ahora tiene el número “1”
agregado al final de la línea. Si desea deshacer los cambios, no tiene más que presionar la
tecla ESC y retornará a la pantalla inicial, pero para nuestro laboratorio dejaremos el
número “1” al final de la línea del kernel a ejecutar.
6. Presione la tecla “b” para realizar el boot usando la nueva opción hecha en grub.conf.
En este laboratorio, lo que hemos logrado es que ahora el sistema por defecto va arrancar
en el modo 1 o monousuario. Al momento de arrancar en este modo, notará que no se ha
levantado ningún servicio, ni tampoco se ha presentado el sistema con el pedido de login,
a ese modo de trabajo también se lo conoce como “modo de mantenimiento”.
7. Ejecute el comando init 6 para reiniciar el servidor y nuevamente ingrese a las
opciones del grub.conf, notará que los cambios anteriormente realizados a tiempo de
arranque no fueron grabados al archivo, esto se debe a que los cambios hecho en las
pantallas de GRUB no actualizan el /boot/grub/grub.conf.

46 | ADMINISTRACIÓN DEL PROCESO DE ARRANQUE


Capítulo 5
[PROCESAMIENTO EN
LINUX]

CONTENIDO
5.1 Intérprete de comandos o shell
5.2 Caracteres comodín (wildcards)
5.3 Entrada estándar, salida estándar y error
estándar
5.4 Uso de tuberías y redirectores
5.5 Procesos y tareas
5.6 Consolas virtuales
5.7 El editor VI
5.8 Empaquetar y comprimir archivos
5.9 Automatización de tareas
5.10 Administración de los historiales del sistema
www.palosanto.com [CURSO DE LINUX BÁSICO]

5.1 Intérpretes
ntérpretes de comandos o shell
Como hemos mencionado anteriormente
anteriormente en numerosas ocasiones, Linux es un
sistema operativo multitarea y multiusuario. Hay que tener ner cuidado en no
confundir Linux (el sistema operativo) con el intérprete de comandos o shell.

El intérprete de comandos o también llamado shell es una interface con el sistema


operativo.. El intérprete de comandos proporciona la funcionalidad sobre
s el UNIX.

El intérprete de comandos no es solo un intérprete interactivo de los comandos


que tecleamos, es también un potente lenguaje de programación, el cual permite
escribir scripts o ejecutables. Estos scripts permiten juntar
tar varios comandos en un
u
archivo que serán ejecutados en lote. lote. Los usuarios de Microsoft Windows
reconocerán esto como los ficheros batch. El uso de scripts es una herramienta
muy potente que le permitirá automatizar e incrementar el uso de Linux.

Hay varios tipos de intérpretes de comandos os en el mundo Linux.


Linux En CentOS, el
shell que usaremos es Bourne-again
Bourne again shell o también llamado bash.

5.2 Caracteres comodín


c (wildcards)
Una característica importante de la mayoría de los
los intérpretes de comandos en
Linux, es la capacidad para referirse
ref a más de un archivo usando caracteres
cara
especiales o comodines (wildcards).

A continuación un listado de los caracteres comodín usados en Linux:

48 | PROCESAMIENTO EN LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

Comodín Descripción
* Comúnmente utilizado para realizar coincidencias de cualquier caracter o
cadena de caracteres. Hace referencia a 0 o más caracteres.
Por ejemplo:
• x* hace coincidencia de archivos y directorios: x, xy, xyz,
x.txt, xyz.c, etc.
? Hace referencia a un solo caracter desconocido.
Por ejemplo:
• x? hace coincidencia de nombre de archivos y directorios: xx,
xy, xz, pero no de xyz
• x?? hace referencia a xyz, pero no a x ni a xy
[caracteres] Hace referencia a cualquiera de los caracteres que se encuentran
encerrados entre los corchetes.
Por ejemplo:
• x[yz] hace coincidencia de nombre de archivos y directorios:
xy y xz
[!caracteres] Hace referencia a cualquier caracter que no se encuentre encerrado entre
los corchetes.
Por ejemplo:
• x[!yz] hace coincidencia de nombre de archivos y directorios
tales como xa, x1, xb, pero no hace referencia a xy ni a xz
[a-z] Hace referencia a cualquier carácter que se encuentre en rango
[A-Z] comprendido entre los caracteres encerrados entre los corchetes.
[0-9] Por ejemplo:
• x[0-9] hace coincidencia de nombre de archivos y directorios
tales como x0, x1, x2, pero no hace referencia a xx ni a xy
Hay que considerar que esta propiedad es case sensitive, es decir, si usted
especifica x[a-zA-Z], entonces las coincidencias serán: xa y xA y así
sucesivamente
[!a-z] Hace referencia a cualquier caracter que no se encuentre en el rango
[!A-Z] comprendido entre los caracteres encerrados entre los corchetes.
[!0-9] Por ejemplo:
• x[!0-4] hace coincidencia de nombre de archivos y directorios
tales como x5, x6, x7, pero no hace referencia a x0 ni a x1
\ Sirve para que los caracteres especiales sean interpretados en una línea
de comando como literalmente se presentan
. Hace referencia al directorio actual
.. Hace referencia al directorio padre del directorio actual

PROCESAMIENTO EN LINUX | 49
www.palosanto.com [CURSO DE LINUX BÁSICO]

5.3 Entrada estándar, salida estándar, error estándar

Cuando un programa es enviado a cargarse a memoria para ejecutarse, el shell le


asigna automáticamente tres descriptores de archivos (file descriptors), los cuales
son generalmente utilizados en la programación y sirven como un manejador de
señales hacia otro archivo.

Estos tres descriptores de archivos son:

• Entrada estándar (stdin)


• Salida estándar (stdout)
• Error estándar (stderr)

5.3.1 Entrada estándar


La entrada estándar es una trama de caracteres texto entrantes al shell, que por
defecto está ligada al teclado. Cuando se están escribiendo caracteres en un
programa interactivo basado en texto, lo que se está haciendo es alimentando la
entrada estándar de datos de ese programa.

Los comandos de Linux, pueden correrse con más de un argumento además del
comando propiamente, también se puede tomar como argumento otro archivo,
es decir, los comandos necesitan de entradas estándares de datos.

La entrada de datos estándar es también conocida como el descriptor de archivos


0 (file descriptor 0).

50 | PROCESAMIENTO EN LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

5.3.2 Salida estándar


La salida estándar es una trama de caracteres salientes que resultan de la
ejecución normal de un programa, por defecto esta salida estándar está ligada a
su terminal de comandos o terminal gráfico.

La salida estándar es también conocida como el descriptor de archivos 1 (file


descriptor 1).

5.3.3 Error estándar


Este descriptor es también una trama de caracteres salientes, pero es el resultado
de exclusivamente códigos de errores u otra información no relacionada al
resultado exitoso de la ejecución de un programa. Por defecto, el error estándar
también está ligado al terminal, igual que la salida estándar, esto quiere decir que
por pantalla usted puede visualizar la salida estándar de un comando así como la
salida de error, esto muchas veces causa confusión al usuario, por lo que se
recomienda mucha atención al momento de distinguir cada uno de los
descriptores.

El error estándar es conocido como el descriptor de archivos 2 (file descriptor 2).

5.4 Uso de tuberías y redirectores


5.4.1 Tubería |
Para un programa que se ejecuta en el shell, no hay diferencia si toma la entrada
estándar desde el teclado o desde la salida estándar de la ejecución de un
comando previo. De manera similar, tampoco existe diferencia en escribir la salida
de un proceso en el terminal o en un archivo; todo esto es posible a través de la
tubería | (pipe).

La tubería es utilizada en el shell para concatenar la ejecución consecutiva de


comandos en una misma línea.

Ejemplo:

~]# ls –l /etc | more

El resultado de esta línea de comando será el listado del directorio /etc por
pantallas, ya que su contenido es extenso.

PROCESAMIENTO EN LINUX | 51
www.palosanto.com [CURSO DE LINUX BÁSICO]

5.4.2 Redirectores > <


Utilizando la tubería usted redirige la salida estándar de un programa a la entrada
estándar de un segundo programa, esta es una de las formas comunes de
redirecciones, con el uso de los redirectores puede redirigir la entrada y salida
estándar a archivos.

Para redirigir la salida estándar de un programa se utiliza el símbolo > (mayor


que), para ilustrar mejor este caso, consideremos el siguiente ejemplo, al ejecutar
el comando:

~]# cat test | grep hola > test2

Se crea un archivo llamado test2 cuyo contenido serán todas las líneas que
contienen la palabra hola dentro del archivo test.

Ahora para redirigir la entrada estándar de datos a un archivo que contiene


información previa, se utiliza el redirector < (menor que). Consideremos así
también el ejemplo:

~]# mail –s “hola como estas” [email protected] < mensaje.txt

En este caso, le estamos pasando al comando mail el cuerpo del mensaje que
está ubicado en el archivo mensaje.txt, el cual tuvo que estar creado
previamente.

Existe también otro operador >> el cual al redirigir la salida estándar de un


comando a un archivo, no lo crea nuevamente, sino que añade al final de la última
línea existente el resultado de la nueva salida.

Función Sintaxis
Enviar la salida estandar (stdout) a un archivo comando > archivo
comando 1> archivo
Enviar el error estandar (stderr) a un archivo comando 2> archivo
Enviar la salida y el error estandar a un mismo comando > archivo 2>&1
archivo
Enviar la salida al archivo1 y el error estandar comando > archivo1 2> archivo2
a archivo2
Recibir la entrada estandar de un archivo comando < archivo
Añadir la salida estandar a un archivo comando >> archivo
comando 1>> archivo
Añadir la entrada y error estandar a un comando >> archivo 2>&1
mismo archivo
Alimentar la entrada de un comando con la comando1 |comando2
salida de otro
Alimentar la entrada de un comando con la comando1 | comando2
salida de otro
Alimentar la entrada de un comando con la comando1 2>&1 | comando2
salida y error de otro

52 | PROCESAMIENTO EN LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

5.5 Procesos y tareas


Todos los programas que se ejecutan en el sistema son considerados como
procesos por el kernel. El shell es un proceso en sí, y cada comando o programa
que ejecute en ese shell iniciará uno o más nuevos procesos en dicho shell para
completar su misión.

El control de tareas es una utilidad incluida en muchos shells, que permite el


control de multitud de comandos o tareas al momento. Antes de seguir,
deberemos hablar un poco sobre los procesos.

5.5.1 Procesos
Cuando usted ejecuta un programa en el shell, el kernel que se encuentra
corriendo en memoria recibe la orden de iniciar un nuevo proceso.

El kernel, antes de ejecutar el proceso, debe asignarle recursos como memoria


RAM, tiempo de procesamiento de CPU, región de disco si es necesario, etc., en
otras palabras, todo lo necesario para su óptima ejecución.

Una vez asignado los recursos necesarios, el kernel bautiza con un número a ese
conjunto de recursos y con todo eso lo envía a ejecutarse. Ese número es lo que
se conoce como identificador de proceso o PID por sus siglas en inglés.

El comando ps visualiza la lista de procesos que se están ejecutando actualmente.


Si se acompaña la orden con las opciones -ef, se mostrará información relevante
adicional acerca de cada uno de los procesos. Por ejemplo:

~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 04:36 ? 00:00:00 init [5]
root 2 1 0 04:36 ? 00:00:00 [migration/0]
root 3 1 0 04:36 ? 00:00:00 [ksoftirqd/0]
root 4 1 0 04:36 ? 00:00:00 [watchdog/0]
root 5 1 0 04:36 ? 00:00:00 [events/0]
root 6 1 0 04:36 ? 00:00:00 [khelper]
root 7 1 0 04:36 ? 00:00:00 [kthread]
root 10 7 0 04:36 ? 00:00:00 [kblockd/0]
root 11 7 0 04:36 ? 00:00:00 [kacpid]
root 126 7 0 04:36 ? 00:00:00 [cqueue/0]
root 129 7 0 04:36 ? 00:00:00 [khubd]
root 131 7 0 04:36 ? 00:00:00 [kseriod]

Las columnas que se muestran al ejecutar este comando son:

PROCESAMIENTO EN LINUX | 53
www.palosanto.com [CURSO DE LINUX BÁSICO]

UID Muestra qué usuario está ejecutando el proceso


PID Representa el identificador del proceso, el cual es un valor numérico
PPID Muestra el proceso padre del cual se derivó el proceso
STIME Muestra la fecha u hora de cuando empezó el proceso
TTY Muestra desde qué terminal se arrancó el proceso
TIME Muestra cuanto tiempo ha utilizado el proceso para ejecutarse
CMD Es el nombre del proceso que se está ejecutando

Para eliminar un proceso que se está ejecutando en el sistema necesita conocer


el PID o identificador del proceso y ejecutar el comando kill, cuya sintaxis es la
siguiente:

kill -9 [PID]

Por ejemplo, si desea eliminar el proceso cuyo PID es 3356 ejecutaría el comando:

~]# kill -9 3356

5.5.2 Tareas
Linux es un sistema operativo multitarea, esto quiere decir que puede ejecutar
varios programas al mismo tiempo. Muchas veces se confunde el concepto de
“tarea” y “proceso”, esperamos que con la siguiente explicación usted pueda
reconocer la pequeña diferencia.

Un proceso que está corriendo en un shell se denomina tarea para éste. Este
proceso puede desencadenar varios procesos hijos, pero para el shell aún sigue
siendo la única tarea.

5.6 Consolas virtuales


La consola del sistema es el monitor y teclado conectado directamente al equipo.
Linux, como otras versiones de UNIX, proporciona acceso a consolas virtuales, las
cuales le permitirán tener más de una sesión de trabajo activa desde la consola de
comandos a la vez.

Para verificar esto, inicie sesión en su sistema Linux. Ahora pulse la combinación
de teclas ALT + F2. Debería ver la pantalla de inicio de sesión. Lo que está viendo
es la segunda consola virtual. Para volver a la primera consola virtual, pulse la
combinación de teclas ALT + F1. Ha vuelto a la primera sesión.

Un sistema Linux recién instalado probablemente le permita acceder a las


primeras seis consolas virtuales, usando ALT + F1 hasta ALT + F6.

54 | PROCESAMIENTO EN LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

Como puede observar, el uso de consolas virtuales es muy potente. Puede estar
trabajando en diferentes consolas a la vez, pero es algo limitado (después de
todo, solo puede mirar una consola cada vez), esto debería darle una idea de las
capacidades multiusuario del sistema. Mientras está trabajando en la consola
virtual 1, puede conmutar a la consola virtual 2 y empezar a trabajar en otro
asunto.

Linux llama a cada sesión de shell asignada a cada una de las teclas de función de
su teclado como tty, que es una abreviación de teletype. Es decir, el shell que se
encuentra corriendo en la consola virtual 1 (tecla de función F1) se dice que está
corriendo en el terminal tty1.

Cualquier otro shell que no sea una consola virtual conectada directamente al
sistema, Linux la nombra como pts, que es una abreviación de pseudoterminal.
Por ejemplo, si usted ejecuta un shell en el ambiente gráfico o un shell remoto
desde otro equipo, éste se llamará pts/0, el siguiente se llamará pts/1 y así
sucesivamente como tantas shell estemos ejecutando en el sistema.

5.7 El editor VI
Un editor de texto es simplemente un programa usado para la edición de archivos
que contienen texto, como una carta, un programa en lenguaje C, o un archivo de
configuración del sistema.

Mientras que hay muchos editores de texto disponibles en Linux, el único editor
que está garantizado encontrar en cualquier sistema tipo UNIX es vi, el visual
editor.

vi no es el editor más fácil de usar, ni es muy explicativo. De cualquier forma,


como es tan común en el mundo UNIX y es posible que alguna vez necesite usarlo,
aquí encontrará algo de documentación.

La elección de un editor es principalmente una cuestión de gusto personal y estilo.


Muchos usuarios prefieren el antiguo, explicativo y potente Emacs, el cual es un
editor con más características que cualquier otro programa. Es único en el mundo
UNIX. Pero como Emacs y todos sus archivos de soporte es relativamente grande,
puede que no tenga acceso a él en muchos sistemas. vi, por otra parte, es
pequeño y potente, pero más difícil de usar. De cualquier modo, una vez conozca
la forma de funcionamiento de vi, es muy fácil usarlo.

PROCESAMIENTO EN LINUX | 55
www.palosanto.com [CURSO DE LINUX BÁSICO]

5.7.1 Conceptos
Mientras se usa vi, en cualquier momento estará en uno de tres posibles modos
de operación. Estos modos son conocidos como: modo órdenes, modo inserción y
modo última línea.

Cuando inicia vi, se encontrará en el modo órdenes. Este modo le permite usar
ciertas órdenes para editar ficheros o cambiar a otros modos. Las teclas
direccionales mueven el cursor a través del archivo que estamos editando.
Generalmente, las órdenes usadas en este modo son solo de uno o dos caracteres
de longitud.

Habitualmente insertará o editará texto desde el modo inserción. Usando vi,


probablemente dedicará la mayor parte del tiempo en este modo. Para iniciar el
modo de inserción presione la letra "i" desde el modo de órdenes. Una vez en el
modo de inserción, irá insertando texto en el documento desde la posición actual
del cursor. Para salir del modo de inserción y volver al de órdenes, pulse la tecla
Esc.

El modo última línea es un modo especial usado para proporcionar ciertas


órdenes extendidas a vi. Al usar esos comandos, aparecen en la última línea de la
pantalla (de ahí el nombre). Al teclear ":" desde el modo de órdenes, entrará en el
modo última línea, y podrá usar órdenes como las detalladas a continuación:

:q Salir si no hubo cambios


:q! Salir sin guardar cambios
:w Guardar cambios
:wq
Guardar cambios y salir
:x

5.7.2 Comenzar con VI


La mejor forma de entender estos conceptos es arrancar vi y editar un fichero.

La sintaxis de vi es:

~]# vi [archivo]

Donde [archivo] es el nombre del archivo que desea editar.

5.7.3 Insertar texto


Estando en el modo órdenes; para poder insertar texto en el archivo, pulse la
tecla “i” (lo que le hará entrar en modo inserción), y comience a escribir.

56 | PROCESAMIENTO EN LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

Mientras inserta texto, puede escribir tantas líneas como desee y puede corregir
los errores con la tecla de borrado.

Para salir del modo de inserción y volver al modo de órdenes, pulse la tecla Esc.

Mientras esté en modo órdenes, puede usar las teclas del cursor para moverse
por el archivo.

5.7.4 Borrar texto


Desde el modo de órdenes, la orden “x” borra el carácter debajo del cursor.

Puede borrar líneas enteras usando la orden “dd” (es decir, pulse la tecla “d” dos
veces en una fila).

Para borrar la palabra sobre la que se encuentra el cursor, use la orden “dw”.

5.7.5 Modificar texto


Puede sustituir secciones de texto usando la orden “R”.

La orden "~" cambia de mayúsculas a minúsculas o viceversa la letra sobre la que


se encuentra el cursor.

5.7.6 Órdenes de movimiento


Ya conoce como usar las teclas del cursor para moverse por el documento.
Además, puede usar las órdenes h, j, k y l para mover el cursor a la izquierda,
abajo, arriba y derecha respectivamente. Esto es muy cómodo cuando (por alguna
razón) sus teclas de cursor no funcionen correctamente.

La orden “w” mueve el cursor al comienzo de la siguiente palabra; “b” lo lleva al


comienzo de la palabra anterior. La orden “0” (cero) mueve el cursor al comienzo
de la línea actual, y la orden “$” lo lleva al final de la línea.

Al editar ficheros grandes, querrá moverse hacia adelante y atrás a lo largo del
fichero mostrando una pantalla cada vez. Pulsando la combinación CTRL + F
avanza el cursor una pantalla hacia adelante y CTRL + B lo lleva una pantalla atrás.
Para llevar el cursor al final del fichero, pulse “G”. Puede también desplazarse a
una línea arbitraria; por ejemplo, pulsando la orden “10G” llevará el cursor a la
línea 10 del fichero. Para desplazarse al comienzo, use “1G”.

PROCESAMIENTO EN LINUX | 57
www.palosanto.com [CURSO DE LINUX BÁSICO]

5.7.7 Buscar texto en VI


Para realizar búsquedas en el archivos que se encuentra editando, debe ingresar
al modo de órdenes (presione la tecla Esc), y luego presionar la tecla “/”, a
continuación vi nos llevara a la parte inferior de la pantalla y nos mostrará el
caracter (/), usted debe digitar la cadena de caracteres a buscar en el documento.

Una vez que digita lo que desea buscar, debe presionar la tecla Enter y vi buscará
la primera coincidencia de la cadena de caracteres.

Para dirigirse a la siguiente coincidencia, estando en el mismo modo de órdenes,


presione la tecla “n”.

5.7.8 Guardar archivos y salir de VI


Para salir de vi sin modificar el fichero use la orden “:q!”. Al pulsar ":", el cursor
se desplazará a la última línea de la pantalla; está en modo última línea.

En el modo de última línea hay disponibles una serie de órdenes extendidas.

Una de ellas es “q!”, la cual permite salir de vi sin guardar los cambios.

La orden “:wq” guarda el fichero y sale de vi. La orden “ZZ” (desde el modo de
órdenes, sin ":") es equivalente a “:wq”. Recuerde que debe pulsar la tecla Enter
después de introducir la orden para que esta se ejecute en el modo última línea.

Para guardar el fichero sin salir de vi, simplemente use “:w”.

5.8 Empaquetar y comprimir archivos


El software disponible para la instalación en Linux por lo general (existen otros
formatos) se encuentran en un formato llamado tar (tape archive), lo que nos
indica que dicho archivo contiene un conglomerado de archivos, que deben ser
desempaquetados para posteriormente proceder a su instalación por ejemplo. Así
mismo, estos archivos tar suelen venir comprimidos para poder ser transmitidos
más eficientemente en Internet.

5.8.1 Utilizar TAR


El comando tar es utilizado normalmente para empaquetar archivos.

Su sintaxis es la siguiente:

58 | PROCESAMIENTO EN LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

tar [options] [file1] [file2] ... [fileN]

[options] Es la lista de comandos y opciones para tar. Las más utilizadas son:
• c – Crea un nuevo paquete de archivos
• x – Extrae el contenido de un paquete de archivos
• z – Comprime el paquete de archivos en formato ZIP
• j – Comprime el paquete de archivos en formato BZIP
• v – Muestra el progreso de la creación o extracción
• f – Indica el nombre del archivo a crear o extraer
[file1] Es el listado de archivos a agregar o extraer
[file2]
...
[fileN]

Un ejemplo podría ser:

~]# tar –cvf /root/archivo.tar /boot /etc/inittab

El cual creará un archivo de ficheros llamado archivo.tar ubicado en el


directorio /root y cuyo contenido será todo el directorio /boot y el archivo
/etc/inittab.

El comando para extraer el contenido del archivo creado en el ejemplo anterior


sería:

~]# tar –xvf /root/archivo.tar

5.8.2 Utilizar GZIP y GUNZIP


El comando gzip puede utilizarse para comprimir un archivo. El archivo a
comprimir no necesita ser un archivo tar necesariamente, puede ser cualquiera.
Su sintaxis es:

gzip -9 [archivo]

La opción -9 le dice a gzip que utilice el mayor factor de compresión.

Un ejemplo podría ser:

~]# gzip -9 archivo.tar

El cual comprimirá archivo.tar y le cambiará el nombre por


archivo.tar.gz, que es la versión comprimida del archivo.

PROCESAMIENTO EN LINUX | 59
www.palosanto.com [CURSO DE LINUX BÁSICO]

El comando gunzip puede ser utilizado para descomprimir un archivo


comprimido con gzip. Equivalentemente, se puede utilizar también el comando
gzip –d.

~]# gunzip archivo.tar.gz

~]# gzip –d archivo.tar.gz

En algunos casos usted podrá encontrarse con archivos con nombre, por ejemplo
archivo.tgz, lo que es similar a archivo.tar.gz, simplemente es otra
forma de nombrarlo o una abreviación.

5.9 Automatización de tareas


En Linux, las tareas pueden configurarse para ejecutarse automáticamente en un
plazo determinado de tiempo y en una fecha determinada. Un administrador del
sistema puede utilizar las tareas automatizadas para realizar copias de seguridad
periódicas, controlar el sistema y ejecutar scripts personalizados, entre otras
cosas.

5.9.1 Programar tareas con Cron


Cron es un servicio que se puede utilizar para programar la ejecución de tareas
periódicas de acuerdo a una combinación de unidades de tiempo.

Cron asume que el sistema está encendido continuamente. Si el sistema no se


enciende cuando una tarea está programada, pues no se ejecuta.

El archivo principal de configuración de Cron es /etc/crontab, el cual


contiene las siguientes líneas:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:


# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

60 | PROCESAMIENTO EN LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

Cada línea en /etc/crontab representa una tarea en particular y tiene el


siguiente formato:

[minute] [hour] [day] [month] [day-of-week] [username] [command]

[minute] El minuto en el cual se ejecutará la tarea. Cualquier entero de 0 a 59


[hour] La hora en la cual se ejecutará la tarea. Cualquier entero de 0 a 23
[day] El número del día en el cual se ejecutará la tarea. Cualquier entero de 1
a 31
[month] El mes en el cual se ejecutará la tarea. Cualquier entero de 1 a 12
[day-of-week] El día de la semana en el cual se ejecutará la tarea. Cualquier entero de
0a7
[username] El usuario con el cual se ejecutará la tarea
[command] El comando que se utiliza para ejecutar la tarea

Puede usar un asterisco (*) para representar todos los valores posibles. O
también a través de un rango, así por ejemplo: 1-4. También puede usar valores
separados por comas, por ejemplo: 1,3,4,7.

Por ejemplo, si quisiéramos ejecutar una tarea periódica que cada día Domingo
de la semana a las 22h15 obtenga un respaldo del directorio /etc y lo guarde en
el directorio /backups, configuraríamos una línea como la siguiente en el
archivo /etc/crontab:

15 22 * * 7 root tar –zcvf /backups/etc.tgz /etc

5.10 Administración de los historiales del sistema


Los archivos de registro (log) o historiales son archivos que contienen mensajes
sobre el sistema, incluyendo el kernel, los servicios y aplicaciones que se ejecutan
en él. Hay diferentes tipos de archivos de registro con información diferente.

Los archivos de registro pueden ser muy útiles cuando se trata de solucionar un
problema con el sistema como por ejemplo, el intento de cargar un driver o
módulo en el núcleo o la búsqueda de registro de los intentos no autorizados en
el sistema.

5.10.1 El directorio /var/log/


La mayoría de los archivos de registro o historiales se ubican en el directorio
/var/log/, algunas aplicaciones como el servidor Web Apache por ejemplo
tienen un directorio dentro de éste para almacenar sus propios historiales.

PROCESAMIENTO EN LINUX | 61
www.palosanto.com [CURSO DE LINUX BÁSICO]

Los archivos de registro crecen y con el tiempo se pueden volver muy extensos.
No tenemos que preocuparnos porque en el directorio /etc/cron.daily/
(tareas que se ejecutan diariamente) está el script
/etc/cron.daily/logrotate, (cuyo archivo de configuración es
/etc/logrotate.conf), que se encarga de comprimirlos y aplicar una
rotación de archivos, añadiéndoles la extensión .1.gz, .2.gz, etc., a modo de
históricos, volviendo a crear uno vacío (cuanto mayor sea el número más antiguo
será el archivo de log).

Un listado con los archivos de log principales en CentOS Linux son:

boot.log Contiene información de los servicios iniciados en el último arranque


del sistema
Cron Contiene información de las tareas que son ejecutadas por el servicio
cron
Dmesg Cuando el sistema arranca, se imprime el número de mensajes en la
pantalla que muestra información sobre los dispositivos de hardware
que el kernel detecta durante el proceso de arranque. Estos mensajes
están disponibles en la memoria cíclica kernel y siempre que el nuevo
mensaje llega el mensaje antiguo se sobrescribe. También puede ver el
contenido de este archivo con el comando dmesg
Lastlog Muestra la información reciente de inicio de sesión para todos los
usuarios. Este no es un archivo de texto plano. Debe utilizar el
comando lastlog para ver el contenido de este archivo
Maillog Contiene la información de registro del servidor de correo que se
ejecuta en el sistema como por ejemplo las aplicaciones Postfix o
Sendmail
Messages Contiene mensajes globales del sistema, incluyendo los mensajes que
se registran durante el inicio del sistema. Hay varias cosas que se
registran en este archivo, incluyendo correo, cron, etc.
Secure Contiene información relacionada con los privilegios de autenticación y
autorización. Por ejemplo, sshd registra todos los mensajes aquí,
incluyendo el inicio de sesión sin éxito
yum.log Contiene la información que se registra cuando un paquete se instala
mediante la utilidad YUM

5.10.2 Revisar los historiales


Verificar un archivo de log s tan simple como visualizar un archivo de texto, ya
que un archivo de log es en realidad un archivo de texto en el que se va
acumulando información del sistema a medida que transcurre el tiempo o
suceden eventos importantes.

Una forma de visualizar estos archivos es con los comandos more o less, así:

~]# more /var/log/archivo.log

~]# less /var/log/archivo.log

62 | PROCESAMIENTO EN LINUX
[CURSO DE LINUX BÁSICO] www.palosanto.com

5.10.3 Monitorear los historiales


Otra forma de visualizar un archivo de log es a medida que va creciendo, o
llenándose de información, así podemos ejecutar el comando:

~]# tail –f /var/log/archivo.log

PROCESAMIENTO EN LINUX | 63
www.palosanto.com [CURSO DE LINUX BÁSICO]

64 | PROCESAMIENTO EN LINUX
Capítulo 6
[ADMINISTRACIÓN DE
USUARIOS]

CONTENIDO
6.1 Gestión de usuarios
6.2 La cuenta root
6.3 Usuarios
6.4 Grupos
6.5 Comandos de gestión de usuarios
6.6 Permisos de archivos
www.palosanto.com [CURSO DE LINUX BÁSICO]

6.1 Gestión de usuarios


Denominamos usuario a toda entidad física o no, que esté registrada en el
sistema, el cual tiene asignados recursos para el aprovechamiento del equipo. Si
no se es usuario, no se puede usar el sistema.

El único ente que puede registrar usuarios es el superusuario o root. Se trata del
administrador del sistema, es decir, del usuario con mayor poder y privilegios. Es
único en cada sistema y es quien dicta las políticas de uso y control de equipo.

A su vez, todos los usuarios se organizan en grupos. Esto significa que un usuario
que se dedica a la programación y a la publicidad en una empresa donde se
encuentra nuestro hipotético sistema pertenecerá a los grupos de programación y
publicidad (creados por el root). Allí se encontrará con personas con sus mismos
intereses y obligaciones, de modo que podrán compartir archivos entre todos.

Gran parte de la seguridad del sistema depende de la correcta administración y


control de los usuarios. A la hora de planificar políticas de usuario, el
administrador puede optar por una excesiva seguridad, hecho que resultará
molesto para los usuarios, o por ser muy confiado, actitud que seguramente
traerá complicaciones con los usuarios experimentados y los hackers. La opción
más adecuada es, como siempre, una posición intermedia.

Independientemente de que haya muchos usuarios o no en nuestro sistema, es


importante comprender los aspectos de la gestión de usuarios bajo Linux. Aún si
somos el único usuario, debemos tener una cuenta distinta de root para hacer la
mayor parte del trabajo. Cada persona que utilice el sistema debe tener su propia
cuenta. Es una muy mala idea que varias personas compartan la misma; no sólo es
un problema de seguridad, sino que las cuentas se utilizan para identificar
unívocamente a los usuarios del sistema y saber quién está haciendo cada cosa en
un momento determinado.

6.2 La cuenta root


Los usuarios normales están restringidos para que no puedan dañar a nadie más
en el sistema, sólo a ellos mismos. Los permisos de los archivos en el sistema
están preparados para que los usuarios normales no tengan permitido borrar o
modificar ficheros en directorios compartidos por todos los usuarios como son
/bin y /usr/bin. Muchos usuarios también protegen sus propios archivos con
los permisos adecuados para que otros usuarios no puedan acceder o modificar
éstos archivos.

66 | ADMINISTRACIÓN DE USUARIOS
[CURSO DE LINUX BÁSICO] www.palosanto.com

Estas restricciones desaparecen para root. El usuario root puede leer, modificar o
borrar cualquier archivo en el sistema, cambiar permisos y pertenencias en
cualquier archivo, y ejecutar programas especiales, como pueden ser los que
particionan un disco o crean sistemas de ficheros. La idea básica es que la persona
o personas que ejecutan y cuidan del sistema ingresen como root cuando sea
necesario para realizar tareas que no pueden ser ejecutadas por un usuario
normal. Puesto que root puede hacer todo, es fácil cometer errores que tengan
consecuencias catastróficas cuando se trabaja utilizando esta cuenta.

Por ejemplo, como un usuario normal, si inadvertidamente se intentase borrar


todos los archivos en /etc, el sistema no lo permitiría. Sin embargo, como
usuario root, el sistema no diría nada. Es muy simple el dañar el sistema utilizando
root. La mejor forma de evitar accidentes es:

• Pensárselo dos veces antes de presionar Enter en un comando que pueda


causar daño. Por ejemplo, si se va a borrar un directorio, antes de
presionar Enter, releer el comando completo y asegurarse que es
correcto.
• Conectarse como root sólo cuando sea absolutamente necesario. Y
desconectarse tan como se haya terminado el trabajo. Cuanto menos se
use la cuenta root, menos posibilidades habrá de dañar el sistema.

6.3 Usuarios
Para la correcta administración de los usuarios, tendremos que cargar toda la
información que el sistema necesita a fin de identificar a cada uno de ellos.

El archivo /etc/passwd contiene toda la información de los usuarios. Cada


línea del archivo contiene información acerca de un único usuario, así:

username:password:UID:GID:comment:homedir:shell

A continuación veamos un detalle de esta información:

Campo Descripción
username Es el identificador único dado a cada usuario del sistema. Ejemplos de
nombres de usuarios son juan, jperez y mariag. Se pueden utilizar letras y
dígitos junto a los caracteres “_” (subrayado) y “.” (punto)
password El sistema también almacena la clave encriptada del usuario. La encriptación
por defecto que utiliza CentOS 6 Linux es SHA512, un tipo de encriptación
“una vía”, es decir, una vez que se encripta, no existe manera de desencriptar.
Debido a que el archivo /etc/passwd es legible por cualquier usuario, en
versiones actuales de Linux, es posible utilizar un conjunto de herramientas
que permite que este campo sea almacenado en otro archivo llamado
/etc/shadow, por lo que si la clave no está incluida en el archivo
/etc/passwd, en su lugar verá la letra “X”, indicando que se está usando la
modalidad shadowing para las claves.

ADMINISTRACIÓN DE USUARIOS | 67
www.palosanto.com [CURSO DE LINUX BÁSICO]

UID Es un número entero positivo único asignado a cada usuario del sistema. Cada
usuario se identifica con el sistema por su UID, y los nombres de usuario se
utilizan generalmente sólo como una interfaz para los seres humanos.
En los núcleos Linux 2.4 y superiores, los UIDs son un entero sin signo de 32
bits que pueden representar los valores de cero a 4,294,967,296. Sin embargo,
es aconsejable utilizar valores sólo hasta 65,534 con el fin de mantener la
compatibilidad con los sistemas que utilizan núcleos antiguos o sistemas de
ficheros que sólo pueden acomodar UIDs de 16 bits.
El UID 0 es reservado para la cuenta root, aunque se pueden crear cuentas
adicionales con este UID lo que no es recomendable desde el punto de visto
de seguridad.
Los UIDs desde 1 al 99 están reservados tradicionalmente para usuarios
especiales del sistema (a veces llamada pseudo-usuarios), los cuales ejecutan
determinadas tareas administrativas o son creados por las aplicaciones
instaladas en el sistema.
Algunas distribuciones de Linux asignan UIDs para usuarios no privilegiados
comenzando en 100. Otros, como Red Hat, los asignan desde 500, y otros más,
como Debian, desde 1000.
GID Es la identificación del grupo del usuario por defecto. Cada usuario pertenece
a uno o más grupos definidos por el administrador del sistema.
comment Nombre real que se almacena junto con el nombre del usuario. Por ejemplo, el
usuario jperez se llama Juan Pérez en la vida real.
homedir Es el directorio en el que se coloca inicialmente al usuario en tiempo de
conexión. Cada usuario debe tener su propio directorio inicial, normalmente
situado bajo /home.
shell Es el intérprete de comandos o shell que arranca para el usuario en tiempo de
conexión, por ejemplo /bin/bash.

Un ejemplo puede ser:

jperez:x:500:500:Juan Perez:/home/jperez:/bin/bash

6.4 Grupos
En los sistemas Linux, además de existir la entidad de usuario, también existe la
entidad de grupo, los cuales nos permitirán asignar permisos a los archivos de
manera más eficiente, ya que podremos agrupar usuarios que comparten
similares características con respecto al acceso a ciertos directorios y/o archivos.

Los grupos son muy similares a los usuarios en su administración, y están


definidos en el archivo /etc/group, define un grupo diferente en cada línea del
archivo con el formato:

groupname:password:GID:members

A continuación veamos un detalle de esta información:

68 | ADMINISTRACIÓN DE USUARIOS
[CURSO DE LINUX BÁSICO] www.palosanto.com

Campo Descripción
groupname Es el identificador único dado a cada grupo del sistema. Ejemplos de
nombres de usuarios son juan, jperez y mariag. Se pueden utilizar
letras y dígitos junto a los caracteres “_” (subrayado) y “.” (punto)
password La clave para grupo permite que cuando un usuario desee cambiarse
de grupo para uno en específico, el sistema le pregunte por una clave
para realizar este cambio. Si el campo está vacío, no se preguntará por
clave al realizar el cambio.
Así como en el archivo /etc/passwd, actualmente es posible
guardar las claves de grupo en un archivo separado llamado
/etc/gshadow, esto se denota cuando el campo tiene el caracter
“X”.
GID Es la identificación numérica del grupo.
members Lista los nombres de usuarios que forman parte del grupo, separados
por comas.

Un ejemplo puede ser:

ventas:x:500:jperez,srodriguez,luis

6.5 Comandos de gestión de usuarios


6.5.1 useradd / adduser
Dependiendo de la distribución de Linux que esté utilizando, permiten la creación
de usuarios utilizando una planilla predefinida que puede ser alterada por el
administrador dependiendo de las banderas que utilice al momento de ejecutarlo.
Las páginas de manual para estos comandos deberían ser suficientemente
explicativas.

Ejemplo:

~]# useradd jperez

6.5.2 passwd
Asigna o cambia una contraseña a una cuenta de usuario de manera interactiva.

Ejemplo:

~]# passwd jperez

ADMINISTRACIÓN DE USUARIOS | 69
www.palosanto.com [CURSO DE LINUX BÁSICO]

6.5.3 userdel
Borra una cuenta de usuario existente. Si la orden se la ejecuta con la bandera –r,
además de la cuenta de usuario, también se borra el directorio de inicio del
usuario.

Ejemplo:

~]# userdel –r jperez

6.5.4 groupadd
Crea un grupo en el sistema.

Ejemplo:

~]# groupadd ventas

6.5.5 gpasswd
Asigna o cambia una contraseña a un grupo del sistema de manera interactiva.

Ejemplo:

~]# gpasswd ventas

6.5.6 groupdel
Borra un grupo del sistema.

Ejemplo:

~]# groupdel ventas

6.5.7 su
Permite convertirnos a otro usuario.

Ejemplo:

~]$ su – root

70 | ADMINISTRACIÓN DE USUARIOS
[CURSO DE LINUX BÁSICO] www.palosanto.com

Con este comando nos convertimos en usuario root si hemos iniciado sesión
previamente como un usuario más del sistema. Debemos ingresar la contraseña
de root.

Podemos convertirnos a otros usuarios además de root, para esto necesitamos


saber las contraseñas de dichos usuarios.

6.6 Permisos de archivos


6.6.1 Conceptos de permisos de archivos
Al ser UNIX un sistema multiusuario, para proteger ficheros de usuarios
particulares de la manipulación por parte de otros, UNIX proporciona un
mecanismo conocido como permisos de ficheros.

Este mecanismo permite que ficheros y directorios "pertenezcan" a un usuario en


particular. Por ejemplo, como Juan creó ficheros en su directorio home, Juan es el
propietario de esos ficheros y tiene acceso a ellos. UNIX también permite que los
ficheros sean compartidos entre usuarios y grupos de usuarios.

Si Juan lo desea, podría restringir el acceso a sus ficheros de forma que ningún
otro usuario tenga acceso. De cualquier modo, en la mayoría de los sistemas por
defecto se permite que otros usuarios puedan leer tus ficheros pero no
modificarlos o borrarlos.

Como hemos explicado arriba, cada fichero pertenece a un usuario en particular.


Por otra parte, los ficheros también pertenecen a un grupo en particular, que es
un conjunto de usuarios definido por el sistema. Cada usuario pertenece al menos
a un grupo cuando es creado. El administrador del sistema puede hacer que un
usuario tenga acceso a más de un grupo.

Los grupos usualmente son definidos por el tipo de usuarios que acceden a la
máquina. Por ejemplo, en un sistema UNIX de una Universidad, los usuarios
pueden ser divididos en los grupos estudiantes, dirección, profesores e invitados.
Hay también unos pocos grupos definidos por el sistema (como bin y admin) los
cuales son usados por el propio sistema para controlar el acceso a los recursos
muy raramente los usuarios normales pertenecen a estos grupos.

Los permisos están divididos en tres tipos: lectura, escritura y ejecución. Estos
permisos pueden ser fijados para tres clases de usuarios: el propietario del
archivo, el grupo al que pertenece el archivo y para todos los usuarios
independientemente del grupo.

El permiso de lectura permite a un usuario leer el contenido del archivo o en el


caso de un directorio, listar el contenido del mismo (usando ls).

ADMINISTRACIÓN DE USUARIOS | 71
www.palosanto.com [CURSO DE LINUX BÁSICO]

El permiso de escritura permite a un usuario escribir y modificar el archivo. Para


directorios, el permiso de escritura permite crear nuevos archivos o borrar
archivos ya existentes en dicho directorio.

Por último, el permiso de ejecución permite a un usuario ejecutar el archivo si es


un programa o guión del intérprete de comandos.

Para directorios, el permiso de ejecución permite al usuario cambiar al directorio


en cuestión con cd.

6.6.2 Interpretar los permisos de archivos


Veamos un ejemplo del uso de premisos de archivos. Usando el comando ls con
la opción -l se mostrará un listado "largo" de los archivos, el cual incluye los
siguientes permisos:

-rwxr-xr-- 1 jperez ventas 1128 ene 6 2013 archivo

Donde en el ejemplo los campos representan:

-rwxr-xr-- Permisos del fichero

1 Cantidad de directorios hijos (incluyendo ocultos) tiene el


directorio listado (si es un archivo este número es 1)

jperez Propietario del fichero

ventas Grupo al cual pertenece el fichero

1128 Tamaño del fichero, o número de links simbólicos del directorio

ene 6 2013 Fecha de creación o última modificación

archivo Nombre del archivo

Ahora centremos nuestra atención en el primer campo:

-rwxr-xr--

Donde r (lectura), w (escritura) y x (ejecución).

Este campo se compone de un total de 10 caracteres, el cual lo vamos a dividir en


cuatro grupos. El primer grupo se conforma por el primer caracter y representa el
tipo de fichero, los 3 grupos siguientes se componen de 3 caracteres cada uno y
representan, por orden, los permisos para el usuario dueño, el grupo dueño y
cualquier otro usuario.

Entonces para el ejemplo anterior:

- Significa que es un fichero regular (Ver cuadro siguiente)

rwx El usuario dueño jperez tiene permisos de lectura, escritura y ejecución


72 | ADMINISTRACIÓN DE USUARIOS
[CURSO DE LINUX BÁSICO] www.palosanto.com

r-x Cualquier usuario que pertenezca al grupo dueño ventas tiene


permisos de lectura y ejecución

r-- Cualquier otro usuario (diferentes del dueño o de los pertenecientes al


grupo) tiene permisos de lectura solamente

El primer caracter en la salida, puede ser de los siguientes tipos:

- Archivo común
d Directorio
c Dispositivo de caracteres (tty o impresora)
b Dispositivo de bloque
l Enlace simbólico
s Socket

6.6.3 Dependencias
Es importante darse cuenta de que los permisos de un fichero también dependen
de los permisos del directorio en el que residen. Por ejemplo, aunque un fichero
tenga los permisos –rwxrwxrwx, otros usuarios no podrán acceder a él a menos
que también tengan permiso de lectura y ejecución para el directorio en el cual se
encuentra el fichero. Si Juan quiere restringir el acceso a todos sus ficheros,
podría simplemente poner los permisos de su directorio home /home/jperez a
-rwx------.

De esta forma ningún usuario podrá acceder a su directorio ni a ninguno de sus


ficheros o subdirectorios.

Habitualmente, los usuarios de un sistema UNIX son muy abiertos con sus
ficheros. Los permisos que se dan a los ficheros usualmente son -rw-r--r--, lo
que permite a todos los demás usuarios leer los ficheros, pero no modificarlos de
ninguna forma. Los directorios, usualmente tienen los permisos -rwxr-xr-x, lo
que permite que los demás usuarios puedan moverse y ver los directorios, pero
sin poder crear o borrar nuevos ficheros en ellos.

6.6.4 Representación octal


A diferencia de la representación decimal, la representación octal utiliza los
dígitos del 0-7 inclusive.

El método para establecer los permisos de esta manera consiste en sumar los
dígitos octales de acuerdo al valor correspondiente para cada permiso.

De esta manera, los valores para los permisos son:

r=4;w=2;x=1

ADMINISTRACIÓN DE USUARIOS | 73
www.palosanto.com [CURSO DE LINUX BÁSICO]

Entonces, a modo de ejemplo, para representar:

-rwxr-xr--

Vamos a ver el siguiente cuadro:

- r W x r - x r - -
4 2 1 4 0 1 4 0 0
7 5 4

Entonces los permisos para este archivo en representación octal sería: 754

6.6.5 Cambiar permisos


El comando chmod se usa para establecer los permisos de un archivo. Solo el
propietario puede cambiar los permisos del archivo. La sintaxis de chmod es:

chmod [a,u,g,o] [+,-] [r,w,x] [archivo]

Donde [a,u,g,o] representa, en orden, all, user, group y other que afecta a
todos los usuarios, usuario dueño, grupo dueño y cualquier otro usuario
respectivamente. En tanto que [+,-] especifica si se están añadiendo permisos
(+) o quitándolos (-). Finalmente se especifica qué tipo de permiso es: lectura (r),
escritura (w) o ejecución (x) y el nombre del archivo.

Ejemplos:

chmod a+r archivo

Asigna a todos los usuarios permiso de lectura del archivo.

chmod og-x archivo

Quita permisos de ejecución a todos los usuarios excepto el usuario dueño.

chmod o+rwx archivo

Asigna permisos de lectura, escritura y ejecución a cualquier usuario menos al


usuario dueño o usuarios que pertenecen al grupo del archivo.

Así también, el comando chmod toma como parámetro la representación octal


deseada para un archivo.

Ejemplo:

~]# chmod 754 archivo


74 | ADMINISTRACIÓN DE USUARIOS
[CURSO DE LINUX BÁSICO] www.palosanto.com

Asigna permisos de lectura, escritura y ejecución para el usuario dueño; permiso de


lectura y ejecución para los usuarios que pertenecen al grupo del archivo y
solamente permisos de lectura para cualquier otro usuario que no sea el dueño ni
pertenezca al grupo del archivo.

6.6.6 Cambiar de dueño y grupo a archivos


Es posible cambiar tanto el usuario dueño y el grupo dueño de los archivos. La
condición es que solo el “root” puede cambiar de usuario y grupo dueño.

A continuación se detallan los comandos utilizados para estas tareas.

6.6.6.1 chown
Cambia el usuario dueño de un archivo o directorio. También sirve para cambiar
usuario y grupo dueño a la vez.

Sintaxis:

chown [usuario] [archivo]

chown [usuario:grupo] [archivo]

Ejemplos:

~]# chown jperez archivo.txt

~]# chown jperez:ventas archivo.txt

6.6.6.2 chgrp
Cambia el grupo dueño de un archivo o directorio.

Sintaxis:

chgrp [grupo] [archivo]

Ejemplo:

~]# chgrp ventas archivo.txt

ADMINISTRACIÓN DE USUARIOS | 75
www.palosanto.com [CURSO DE LINUX BÁSICO]

Laboratorio 3
Crear y eliminar usuarios en el sistema
Este laboratorio se enfocará en la creación, modificación y eliminación de un usuario y su
contraseña.

1. Se procederá a crear un usuario en el sistema, el mismo que tendrá por nombre userXX,
donde XX representa el número de máquina asignado a Ud. Para crear el usuario ejecute
el siguiente comando:
~]# useradd userXX
2. Una vez ejecutado el comando, procedemos a verificar que el nuevo usuario ha sido
creado, para esto ejecutamos el siguiente comando:
~]# cat /etc/passwd | grep userXX
El comando anterior barre el contenido del archivo /etc/passwd donde se definen los
usuarios del sistema y nos muestra la entrada correspondiente al usuario creado, así:
userXX:x:501:501::/home/userXX:/bin/bash
También podemos apreciar que se encuentra creado el directorio respectivo para el
usuario en la ruta /home:
~]# ls /home | grep userXX
3. Para asignar una contraseña al usuario creado, ejecutamos el comando:
~]# passwd userXX
Y nos muestra un prompt solicitando el ingreso de la nueva contraseña y su confirmación:
Cambiando la contraseña del usuario userXX.
Nueva contraseña:
Vuelva a escribir la nueva contraseña:
Si configuramos una contraseña muy corta, sencilla o débil, el sistema nos alertará al
respecto:
CONTRASEÑA INCORRECTA: Es demasiado corta
CONTRASEÑA INCORRECTA: Es demasiado sencilla
Esto se debe, a que por seguridad el sistema hace una verificación previa de la contraseña
ingresada. Una vez ingresada la contraseña nos muestra un mensaje como el siguiente
confirmando que ha sido configurada exitosamente:
passwd: todos los tokens de autenticación se actualizaron
exitosamente.
4. Para eliminar el usuario junto con todos sus archivos y directorios creados, ejecutamos el
siguiente comando:
~]# userdel –r userXX

76 | ADMINISTRACIÓN DE USUARIOS
[CURSO DE LINUX BÁSICO] www.palosanto.com

Laboratorio 4
Modificar permisos y dueños a archivos
Este laboratorio se enfocará en la modificación de permisos y dueños a archivos y/o
directorios.

1. Vamos a proceder a crear un documento en blanco. Para esto, ejecute el comando:


~]# touch /opt/archivo.txt
2. Verificamos los permisos asignados al nuevo archivo, así:
~]# ls –l /opt/archivo.txt
y observamos algo similar a esto:
-rw-r--r-- 1 root root 0 mar 16 15:42 /opt/archivo.txt
3. Ahora, vamos a asignar permisos de ejecución al usuario dueño, grupo dueño y demás
usuarios del sistema. Para esto ejecutamos cualquiera de las dos formas del comando:
~]# chmod 755 /opt/archivo.txt
~]# chmod a+x /opt/archivo.txt
y observaríamos algo como esto al ejecutar el comando ls –l /opt/archivo.txt
nuevamente:
-rwxr-xr-x 1 root root 0 mar 16 15:42 /opt/archivo.txt
verificando como han cambiado los permisos respectivos.
4. Para cambiar el usuario dueño y grupo dueño del archivo anterior a userXX, donde XX es
el número asignado a su máquina, ejecutamos lo siguiente:
~]# chown userXX:userXX /opt/archivo.txt
Verificamos el cambio realizado ejecutando el comando –l /opt/archivo.txt
nuevamente:
-rwxr-xr-x 1 userXX userXX 0 mar 16 15:42 /opt/archivo.tx

ADMINISTRACIÓN DE USUARIOS | 77
Capítulo 7
[CONFIGURACIÓN DE RED]

CONTENIDO
7.1 Terminología
7.2 Redes con TCP/IP
7.3 Configuración de TCP/IP
7.4 Archivos de configuración de red
7.5 Network Manager
7.6 Comandos básicos par conectividad TCP/IP
7.7 Utilidades TCP/IP
[CURSO DE LINUX BÁSICO] www.palosanto.com

7.1 Terminología
Cuando estamos hablando de configuración de red, nos referimos
específicamente a como se configura la máquina para poder comunicarse con el
mundo exterior, ya sea por una conexión serial (usada por un modem por
ejemplo) o a través de la tarjeta de red que poseamos.

La terminología que se empleará en las próximas secciones, está orientada para


que el conjunto de protocolos que se conocen bajo el nombre de TCP/IP sea de
fácil comprensión.

Este conjunto de protocolos (que en adelante solo se llamará TCP/IP) hace que
nuestra PC pueda entablar y cerrar una comunicación con otra PC. No se abarcará
muy a fondo el TCP/IP, ya que está fuera del enfoque del curo, pero se dará una
introducción de dicho protocolo para que el estudiante pueda comenzar un
estudio del mismo por su propia cuenta.

7.2 Redes con TCP/IP


TCP/IP (Transport Control Protocol/Internet Protocol) es el protocolo por defecto
de Linux, el estándar en todos los UNIX y también el estándar de Internet. Sus
orígenes se remontan al año 1969, en la Agencia de Proyectos Avanzados de
Investigación en Defensa de los Estados Unidos. Allí se inició la legendaria
ARPANET, padre de Internet. En el año 1983, Internet adopta como protocolo
estándar el TCP/IP, que luego también sería incorporado como el estándar en los
sistemas UNIX.

Linux soporta una implementación completa de los protocolos de red TCP/IP.


TCP/IP ha resultado ser hasta ahora el mejor mecanismo de comunicación entre
computadores de todo el mundo.

Con Linux y una tarjeta Ethernet podrá introducir su máquina en una red local o
(si se tienen las conexiones apropiadas) a la Internet.

Poner en marcha una pequeña red local de máquinas Unix es fácil. Sólo requiere
una tarjeta Ethernet en cada máquina y los cables adecuados, así como hardware
accesorio (hubs, switchs, routers, etc.)

El protocolo TCP/IP es una sombrilla donde se cobijan un conjunto de protocolos


que funcionan en alguna de las 7 capas del modelo OSI (Open Systems
Interconnection). La configuración de red, tiene exclusivamente solo referencia el
protocolo “IP” que comprende el nivel de capa 3 del modelo OSI, y su
responsabilidad es de identificar a la estación en la red.

CONFIGURACIÓON DE RED | 79
www.palosanto.com [CURSO DE LINUX BÁSICO]

A continuación veremos en detalle esta configuración, que nos servirá de base


para poder operar los servicios de red que corren en las capas superiores del
mismo modelo OSI.

7.3 Configuración de TCP/IP


Antes de configurar su sistema con TCP/IP necesita conocer cierta información
sobre la red. En muchos casos, el administrador local se la proporcionará.

7.3.1 Dirección IP
Es un identificador único para cada máquina en la red. Una dirección IP es un
número de 32 bits binarios, agrupados en 4 octetos y puede ser representada en
forma decimal.

Ejemplo:

• 10.51.0.1
• 172.16.45.67
• 192.168.1.10

Las direcciones IP están formadas por dos campos: dirección de red y dirección de
host.

Ejemplo:

192.168.1. 10
Dirección de Red Dirección de Host

7.3.2 Máscara de red o netmask


Identifica qué parte de la dirección IP representa la dirección de red y que parte la
dirección de host. Es otro número de 32 bits binarios, que también es convertido
en número decimal.

Un bit 1 de la máscara designa esa posición de la dirección IP a la dirección de red,


un bit 0 designa esa posición de bit correspondiente a la dirección de host.

Ejemplo:

• 255.0.0.0
• 255.255.0.0
• 255.255.255.0

80 | CONFIGURACIÓN DE RED
[CURSO DE LINUX BÁSICO] www.palosanto.com

7.3.3 Dirección de red


Es la notación que se utiliza para indicar cuál es la red a la que pertenece una
máquina. Es el resultado de la operación lógica AND entre una dirección IP y su
máscara de red. Ninguna estación puede ser configurada con esta dirección. Se la
denota utilizando la dirección cero de la red.

Ejemplo:

• 10.0.0.0
• 172.16.0.0
• 192.168.1.0

7.3.4 Dirección de broadcast


Es una dirección IP reservada que sirve para que una aplicación de red instalada
en una máquina pueda comunicarse con todas las máquinas que pertenecen a esa
misma red IP con un solo paquete.

Esta dirección se la obtiene poniendo todos los bits 1 en la dirección de host. Toda
red IP tiene una sola dirección de broadcast.

Ejemplo:

• 10.255.255.255
• 172.16.255.255
• 192.168.1.255

7.3.5 Puerta de enlace o default gateway


Es la dirección IP de un equipo que pertenece a la misma red IP de la máquina y
que comunica a la red local con otra u otras redes externas.

Ejemplo:

En el caso de nuestra oficina puede ser el equipo que nos conecta a Internet como
lo es un router o firewall o en su defecto, en nuestro hogar, el equipo de cable
modem provisto por el proveedor por ejemplo.

CONFIGURACIÓON DE RED | 81
www.palosanto.com [CURSO DE LINUX BÁSICO]

7.3.6 Servidor de nombres de dominio o DNS


Es la dirección IP de una máquina que tiene la capacidad de poder traducir o
resolver un nombre de host a una dirección IP.

Esa dirección IP no necesariamente pertenece a la misma red IP local. Es posible


configurar más de una dirección de servidor DNS. Si no es posible contactar con la
primera dirección, se realiza la consulta a la segunda dirección y así
sucesivamente.

7.4 Archivos de configuración de red


Los archivos que arrancan la configuración de red TCP/IP son archivos que se
encuentran dentro del directorio /etc. Estos archivos son leídos y puestos en
marcha por el servicio de red llamado network al momento de arranque del
sistema.

Entre las distribuciones de Linux podrían variar de su ubicación, pero


apegándonos a las distribuciones basadas en Red Hat vamos a ver los archivos de
configuración de red que se detallan a continuación.

7.4.1 /etc/sysconfig/network
Este archivo contiene la información más relevante de un servidor Linux en
entrono de red. Información que necesita el demonio de red para controlar otros
archivos que tienen relación con el servicio de red. Su formato es:

NETWORKING=yes
HOSTNAME=srv1.example.com
GATEWAY=192.168.1.100

Donde:

NETWORKING Su valor puede ser yes/no. Habilita los servicios de red

HOSTNAME Es el nombre del servidor del formato nombre.dominio.com

GATEWAY Dirección IP de la puerta de enlace por defecto

82 | CONFIGURACIÓN DE RED
[CURSO DE LINUX BÁSICO] www.palosanto.com

7.4.2 /etc/sysconfig/network-scripts/
Las tarjetas de red Ethernet son identificadas con la nomenclatura ethX, donde X
es el número de tarjeta de red empezando con el número 0 para la primera
tarjeta de red, 1 para la segunda y así sucesivamente.

Cada tarjeta de red que existe en el servidor tiene un archivo del formato
ifcfg-ethX que representa los parámetros de configuración de dicha tarjeta.

Suponiendo que solo hay una tarjeta de red Ethernet en el servidor, habrá un
archivo llamado ifcfg-eth0 dentro de este directorio, cuyo contenido sería:

DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
ONBOOT=yes

Donde:

DEVICE Dispositivo o tarjeta de red (eth0, eth1, etc.)

BOOTPROTO Su valor puede ser static/dhcp. Indica si la configuración de la


dirección IP será realizada manualmente (static) o de manera
automática (dhcp).

IPADDR Dirección IP asignada a la máquina

NETMASK Máscara de red asignada a la máquina

NETWORK Dirección de red a la que pertenece la máquina

BROADCAST Dirección de broadcast perteneciente a la red de la máquina

ONBOOT Su valor puede ser yes/no. Configura si la tarjeta debe ser


habilitada cuando el servidor se inicie.

7.4.3 /etc/hosts
Contiene la resolución del nombre a dirección IP de su máquina local, así como
también de las máquinas más importantes de su red, como servidores o gateways.
Este archivo trae una configuración por defecto para que la máquina pueda
arrancar con normalidad.

CONFIGURACIÓON DE RED | 83
www.palosanto.com [CURSO DE LINUX BÁSICO]

Por ejemplo, si nuestra máquina se llama srv1.example.com con la dirección


IP 192.168.1.10, el contenido de /etc/hosts sería el siguiente:

127.0.0.1 localhost.localdomain localhost


192.168.1.10 srv1.example.com srv1

7.4.4 /etc/resolv.conf
En este archivo configuramos la dirección IP de los servidores DNS que hemos de
utilizar. Podemos agregar tantos como queramos con la directiva nameserver.

Su formato sería así:

search example.com
nameserver 192.168.1.101
nameserver 69.25.185.136

7.5 Comandos básicos para conectividad TCP/IP


7.5.1 ifconfig
Este comando es también utilizado para configurar las interfaces de red, pero esta
configuración es solo efectiva hasta que se vuelva a reiniciar la estación o el
demonio de red, ya que si se desea que los cambios queden permanentes, es
necesario editar los archivos de configuración explicados anteriormente.

Si ningún parámetro es dado, el comando muestra información extensa del


estado de cada una de las interfaces de nuestro sistema Linux.

Un ejemplo para la configuración de una interface de red sería:

~]# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up

7.5.2 mii-tool
Sirve para conocer el estado de conexión física de las tarjetas de red de nuestro
sistema Linux.

~]# mii-tool eth0


eth0: negotiated 100baseTx-FD, link ok

84 | CONFIGURACIÓN DE RED
[CURSO DE LINUX BÁSICO] www.palosanto.com

7.5.3 ping
Es la herramienta de primera instancia que se utiliza para comprobar la
conectividad en la red con otras estaciones. Utiliza protocolo ICMP (Internet
Control Message Protocol) para operar.

~]# ping 192.168.1.100

7.5.4 traceroute
Nos muestra la ruta que está recorriendo un paquete hasta llegar a un destino.

Este comando es muy utilizado en redes que tienen comunicación con muchas
otras. Refiriéndonos a Internet, el comando mostrará las direcciones IP de los
diferentes enrutadores que se utilizan para establecer una conexión con un host
remoto.

Por estándar, el comando solo mostrará máximo hasta 30 saltos, que son los
considerados como máximo para llegar hasta un servidor remoto. Luego de los 30
saltos, un destino es considerado “inalcanzable” por el comando traceroute.

Por ejemplo, si deseamos saber por cuales enrutadores es necesario pasar desde
nuestra estación hasta llegar al servidor Web de Google, el comando a ejecutar
sería:

~]# traceroute www.google.com

7.5.5 route
Este comando permite visualizar la tabla de rutas de Linux, así como también
agregar nuevas rutas o elminarlas. Al igual que ifconfig, la configuración que
ingrese por route se perderá en el siguiente arranque del sistema, por lo que
deberá hacer uso de los archivos de configuración de rutas estáticas para que esta
esté disponible permanentemente.

~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.1.100 0.0.0.0 UG 0 0 0 eth0

CONFIGURACIÓON DE RED | 85
www.palosanto.com [CURSO DE LINUX BÁSICO]

7.5.6 netstat
Dependiendo de las opciones que se le dé al comando, netstat puede mostrar
las conexiones que está recibiendo y transmitiendo el servidor, los servicios de red
que están levantados en nuestro sistema, etc.

Un ejemplo para visualizar todas las conexiones que está recibiendo y


transmitiendo el servidor, además de los servicios de red que se ejecutan en el
sistema, el comando sería:

~]# netstat -anp


Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:32768 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:32769 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 20 192.168.1.9:22 192.168.1.1:3342 ESTABLISHED

7.6 Utilidades TCP/IP


7.6.1 Telnet
Telnet (Telecommunication Network) es el nombre de un protocolo de red que
sirve para acceder a otra máquina mediante una red, para manejarla como si
estuviéramos sentados delante de ella. Para que la conexión funcione, como en
todos los servicios de Internet, la máquina a la que se acceda debe tener un
programa especial que reciba y gestione las conexiones. El puerto que utiliza
generalmente es el TCP 23.

Telnet sólo sirve para acceder en modo terminal, es decir, sin gráficos. Los
comandos ejecutados en el terminal recibido en la conexión telnet son
procesados en el servidor Telnet y no en el cliente.

Aparte de estos usos, en general, Telnet se ha utilizado y se sigue utilizando aún


para abrir una sesión con una máquina UNIX, de modo que múltiples usuarios con
cuenta en la máquina, se conectan, abren sesión y pueden trabajar utilizando esta
máquina. Es una forma muy usual de trabajar con sistemas UNIX.

El servicio de Telnet server viene por defecto deshabilitado en sistemas Linux.

Su mayor problema es de seguridad, hay tres razones por las que telnet no se
recomienda para los sistemas modernos:

86 | CONFIGURACIÓN DE RED
[CURSO DE LINUX BÁSICO] www.palosanto.com

• Los demonios de uso general de Telnet tienen varias vulnerabilidades


descubiertas sobre los años, y varias más que podrían aún existir.
• Telnet, por defecto, no cifra ninguno de los datos enviados sobre la
conexión (contraseñas inclusive), así que es fácil interferir y grabar las
comunicaciones, y utilizar la contraseña más adelante para propósitos
maliciosos.
• Telnet carece de un esquema de autentificación que permita asegurar
que la comunicación esté siendo realizada entre los dos host deseados, y
no interceptada entre ellos.

Para conectarnos vía Telnet a un equipo simplemente ejecutamos el comando:

~]# telnet 200.25.123.45

Telnet también se utiliza para probar conexiones a puertos remotos sobre


protocolo TCP, así:

~]# telnet mail.palosanto.com 25

7.6.2 SSH
SSH (Secure Shell) es el nombre de un protocolo y del programa que lo
implementa, y sirve para acceder a máquinas remotas a través de una red.
Permite manejar por completo el computador mediante un intérprete de
comandos, y también puede redirigir el tráfico de X para poder ejecutar
programas gráficos si tenemos un servidor X arrancado. El puerto que utiliza
generalmente es el TCP 22.

Además de la conexión a otras máquinas, SSH nos permite copiar datos de forma
segura (tanto ficheros sueltos como simular sesiones FTP cifradas), gestionar
claves RSA para no escribir claves al conectar las máquinas y pasar los datos de
cualquier otra aplicación por un canal seguro tunelizado mediante SSH.

SSH trabaja de forma similar a como se hace con Telnet. La diferencia principal es
que SSH usa técnicas de cifrado que hacen que la información que viaja por el
medio de comunicación vaya de manera no legible y ninguna tercera persona
pueda descubrir el usuario y la contraseña de la conexión ni lo que escribe
durante toda la sesión.

El servicio de SSH server por defecto viene habilitado en sistemas Linux. El


software servidor de SSH (quien recibe la conexión y envía el shell) se llama
OpenSSH y el software cliente (quien inicia la conexión y recibe el shell) es
justamente un comando llamado ssh.

CONFIGURACIÓON DE RED | 87
www.palosanto.com [CURSO DE LINUX BÁSICO]

Para ejecutar una sesión SSH, se pueden ejecutar los comandos:

~]# ssh 64.56.123.45 –l root

~]# ssh [email protected]

Donde root es el usuario con el que nos queremos conectar, en vez de una
dirección podemos dar un nombre de máquina o hostname.

Si se está conectando por primera vez a ese servidor SSH, su estación recibirá
inicialmente una huella digital (fingerprint) del servidor al cual se está conectando
y que por medio de la cual ambas máquinas empezarán a encriptar la información
que fluya entre ellas. Usted debe aceptar dicha huella digital para que pueda
seguir con la conexión, simplemente escribiendo la palabra yes cuando lo
requiera.

88 | CONFIGURACIÓN DE RED
[CURSO DE LINUX BÁSICO] www.palosanto.com

Laboratorio 5
Configuración de red en CentOS 6
Este laboratorio se enfocará en la configuración de los parámetros de red en nuestro servidor
tales como: dirección IP, máscara de red, puerta de enlace y servidores DNS.

NetworkManager

A partir de CentOS 5 y RHEL 5, se incluye NetworkManager como una implementación


alternativa para la gestión de parámetros de red desde la interfaz de usuario. En éstos,
Network Manager viene desactivado de modo predeterminado.

En CentOS 6 y RHEL 6, NetworkManager viene activo de modo predeterminado, salvo que se


haga la instalación mínima o la instalación básica del servidor.

Si se desea impedir que NetworkManager gestione algún dispositivo de red en particular y que
éste sea gestionado por el servicio network, edite el archivo de configuración correspondiente
al dispositivo a utilizar. Asumiendo que se trata del dispositivo eth0, en el archivo
/etc/sysconfig/network-scripts/ifcfg-eth0, agregue la siguiente directiva:

NM_CONTROLLED=no

En adelante, mientras esté establecido NM_CONTROLLED=no en la configuraciòn del


dispositivo de red, NetworkManager ignorará ésta por completo.

Si quiere prescindir del uso de NetworkManager, también se puede desactivar por completo
este servicio, siendo que su uso sólo tiene sentido en una computadora portátil que se conecta
a múltiples redes inalámbricas o bien un sistema de escritorio donde se quiere permitir al
usuario poder controlar los dispositivos de red.

Para desactivar NetworkManager, ejecute lo siguiente:

chkconfig NetworkManager off


service NetworkManager stop

1. Vamos a proceder a configurar la red en nuestro servidor Linux de acuerdo a los siguientes
parámetros:
Dirección IP: 192.168.1.1XX (XX es el número de máquina asignado a Ud)
Máscara Red: 255.255.255.0
Puerta de enlace: 192.168.1.100
DNS 1: 8.8.8.8
DNS 2: 200.124.224.199

CONFIGURACIÓON DE RED | 89
www.palosanto.com [CURSO DE LINUX BÁSICO]

2. Usando su editor de texto preferido, abrimos el archivo de configuración


/etc/sysconfig/network-scripts/ifcfg-eth0, siempre que su dispositivo
de red sea eth0, caso contrario deberá seleccionar el archivo correspondiente para el
dispositivo de red existente en su sistema. Para ver una lista de todos los dispositivos de
red del sistema, ejecute el comando ifconfig –a. Si el archivo de configuración para el
dispositivo no existe o tiene otro nombre, entonces cree un nuevo archivo o renómbrelo
como ifcfg-ethX donde ethX es el nombre de su dispositivo de red. Finalmente, lo
editamos para que quede de esta manera:

DEVICE=eth0
HWADDR=00:12:79:D8:FA:C9
NM_CONTROLLED=no
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.1XX
NETMASK=255.255.255.0
GATEWAY=192.168.1.100
DNS1=8.8.8.8
DNS2=200.124.224.199

Tenga en cuenta que la directiva HWADDR corresponde a la dirección MAC de su


dispositivo de red. Si tiene una sola interfaz de red en su sistema quizás no sea necesario
especificar dicha directiva, pero en sistemas con más de una interfaz entonces es un
requisito indispensable. Para obtener la dirección MAC de su dispositivo de red puede
ejecutar el comando ifconfig –a

3. Guardamos la configuración y para que surga efecto debemos reiniciar el servicio de red,
así:
~]# service network restart

4. Para verificar que la dirección IP se ha configurado correctamente ejecutamos el siguiente


comando:
~]# ifconfig eth0
el cual debe mostrar la información del dispositivo, así:
eth0 Link encap:Ethernet HWaddr 00:12:79:D8:FA:C9
inet addr:192.168.1.101 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::212:79ff:fed8:fac9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:70345400 errors:0 dropped:0 overruns:0 frame:0
TX packets:74141568 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:478479990 (456.3 MiB) TX bytes:2824327203 (2.6 GiB)
Interrupt:25

90 | CONFIGURACIÓN DE RED
[CURSO DE LINUX BÁSICO] www.palosanto.com

5. Para verificar conectividad procedemos a ejecutar un ping hacia la puerta de enlace, así:
~]# ping 192.168.1.100

6. Para verificar conectividad a Internet procedemos a ejecutar un ping hacia el sitio de


Google por ejemplo, así:
~]# ping www.google.com

CONFIGURACIÓON DE RED | 91
www.palosanto.com [CURSO DE LINUX BÁSICO]

92 | CONFIGURACIÓN DE RED
Capítulo 8
[EL SISTEMA X-WINDOWS]

CONTENIDO
8.1 Concepto
8.2 X-Server
8.3 X-Clients
8.4 Escritorios o ambientes gráficos
www.palosanto.com [CURSO DE LINUX BÁSICO]

8.1 Concepto
Una de los aspectos más importantes de tener un sistema Linux arriba y
ejecutándose es configurar la interface de usuario. En la mayoría de sistemas, esto
implica configurar la interface X-Windows.

El sistema X-Windows es la interface gráfica de usuario (GUI) para Linux. Al


contrario de otros sistemas operativos, en los cuales la interface gráfica es una
parte integral del sistema operativo en sí, el sistema X-Windows no es parte de
Linux pero es una aplicación adicional. Se puede tener un sistema Linux
completamente funcional sin la necesidad de ejecutar el modo gráfico.

El sistema X-Windows es un enorme entorno gráfico, potente y muy complejo.


Desarrollado por el MIT (1984) inicialmente para plataforma UNIX para poder
ofrecer la oportunidad de ejecutar aplicativos gráficos.

Los usuarios que utilicen Linux en sus máquinas se beneficiarán de la


productividad provista por un ambiente de trabajo gráfico y por la variedad de
aplicaciones basadas en X-Windows. Si usted está migrando usuarios de Microsoft
Windows a Linux, el sistema X-Windows les resultará bastante familiar.

8.2 X-Server
El sistema X-Windows funciona bajo una arquitectura cliente-servidor flexible y
potente. Está diseñado para trabajar en un ambiente de red. Esto no significa que
su sistema Linux debe estar conectado a la red para utilizar las aplicaciones
gráficas; el sistema X-Windows trabajará en modo stand-alone, así como también
como un sistema de red. Esto significa que puede ejecutar aplicaciones gráficas en
otras computadoras de la red y tener las pantallas generadas por esas
aplicaciones en su monitor.

El X-Server es el componente del sistema X-Windows que se ejecuta en su


máquina, es el responsable de dibujar las imágenes en su pantalla, obtener la
entrada del teclado y del mouse, y controlar todo el acceso a su pantalla.

Las aplicaciones gráficas que usted ejecuta utilizan los servicios provistos por el X-
Server y muestran su salida por la pantalla, a estas aplicaciones se las conoce
como clientes o X-Clients.

94 | EL SISTEMA X-WINDOWS
[CURSO DE LINUX BÁSICO] www.palosanto.com

8.2.1 Servidor X-Free86


El software que levanta el X-Server en Linux se llama X-Free86. Es un software de
tipo modular, es decir, a tiempo de ejecución puede cargar los drivers necesarios
para poder reconocer todas las características en una tarjeta de video en
particular.

La mayor parte de las tarjetas de video de los PC son soportadas por X-Free86 y si
por alguna razón una tarjeta no es reconocida es posible utilizar el driver genérico
llamado vesa.

El soporte de tarjetas de video puede ser encontrado en el sitio:

http://www.xfree86.org/

8.3 X-Clients
X-Clients son las aplicaciones gráficas que usan los servicios provistos por un X-
Server para mostrar su salida. Usted ejecuta solo un proceso X-Server para
controlar su pantalla. En contraste, usted puede ejecutar tantos X-Clients como
sus recursos de hardware, principalmente de memoria RAM, le permitan.

Iniciar un X-Client es muy sencillo. Cuando su sistema inicia en runlevel 5, muchos


X-Clients se levantarán automáticamente, de ahí que usted ve que el modo gráfico
de su sistema se ejecuta a tiempo de arranque.

Usted puede iniciar X-Clients adicionales usando el mouse y seleccionando un


programa de la barra de menú, o puede hacerlo desde la línea de comandos. Si
usted decido hacerlo vía comandos, puede escoger el nombre del comando de la
aplicación que desea iniciar con algunas opciones extras.

8.4 Escritorios o ambientes gráficos


Linux ofrece muchas alternativas de escritorios. Existen casas desarrolladoras de
ambientes gráficos independientes, que distribuyen sus entornos a través de las
empresas que desarrollan distribuciones de Linux. Cada uno de estos entornos
trae herramientas gráficas muy útiles que simplifican la administración del
sistema.

Existen actualmente varios entornos gráficos potentes: GNOME, KDE, Unity,


Cinnamon, etc.

EL SISTEMA X-WINDOWS | 95
Capítulo 9
[INSTALACIÓN DE
SOFTWARE]

CONTENIDO
9.1 Formato .tar.gz
9.2 Formato RPM
9.3 Administración del software con YUM
[CURSO DE LINUX BÁSICO] www.palosanto.com

9.1 Formato .tar.gz


En un principio la instalación de paquetes de software disponibles para Linux se
enfocaba en la ejecución de instrucciones de comandos especificados en un
archivo creado por el mismo grupo de desarrolladores de dicho software. De
hecho, es así como nativamente se instalan aún los programas para Linux, es
decir, el administrador debe descargar el software en formato .tar.gz,
descomprimirlo y desempaquetarlo, luego buscar entre los archivos obtenidos
alguno que tenga como nombre Readme o Install, y seguir las instrucciones para
compilar el software y hacerlo correr en su máquina. Se lo conoce como fuentes.

Esto hacía que Linux sea considerado como un sistema operativo de uso exclusivo
para gurús de la programación ya que la sola instalación de nuevas aplicaciones
conllevaba la compilación de código, cosa que para los usuarios comunes es algo
con lo que no se topan frecuentemente, y mucho menos utilizando Microsoft
Windows.

9.1.1 Instalación de software


Cómo ya hemos visto anteriormente .tar.gz o .tgz significan lo mismo, el
proceso de instalación será así:

1. Descomprimimos y/o desempaquetamos el archivo. Verificar si la extensión


es .tar, o .tar.gz o .tgz, en el primer caso solo sería desempaquetarlo
y en los dos siguientes si habría que descomprimirlos, por ejemplo:

~]# tar –zxvf instalador.tar.gz

2. Acceder al directorio generado y buscar un archivo con nombre Readme o


Install (el nombre puede variar y quizás pudiera ser otro no citado aquí), ya
que en este archivo deben estar las indicaciones de los pasos a seguir para
realizar la compilación si procede y la instalación.

3. Generalmente los pasos a seguir son:


• ./configure
• make
• make install

4. Pudiera darse el caso de que necesite parámetros adicionales, como por


ejemplo:

./configure –-disable-gtk

INSTALACIÓN DE SOFTWARE | 97
www.palosanto.com [CURSO DE LINUX BÁSICO]

9.1.2 Desinstalación de software


Para desinstalar un .tar.gz, deberá de soportarlo, por lo que y tras acceder al
directorio donde lo descomprimió y/o desempaquetó la primera vez se podrá
desinstalar al ejecutar el comando:

~]# make uninstall

Para saber si es soportado deberá leer el archivo Readme o Install con las
indicaciones del desarrollador del software.

9.2 Formato RPM


Alrededor de los años 1994-1995, un usuario de Linux se le ocurrió una manera
más sencilla de instalación de paquetes de software y lo llamó RPM (Red Hat
Package Manager), de hecho allí nació la distribución Red Hat.

Lo que realizaba este usuario era precompilar el código fuente de la aplicación en


una máquina y luego agrupar los archivos compilados (binarios), archivos de
configuración, archivos de documentación, etc., en otro archivo que justamente
tenía la extensión .rpm, además creó una aplicación capaz de leer este tipo de
archivos, extraer los archivos allí existentes y copiarlos a los directorios
correspondientes del árbol jerárquico en una nueva máquina que no tenga ese
software instalado.

La aplicación para poder administrar paquetes RPM, es justamente el comando


rpm. Con este comando es posible instalar, actualizar, gestionar y eliminar
aplicaciones. De hecho, cuando usted instala una distribución Linux de Red Hat, el
programa de instalación no hace más que instalar de manera sucesiva paquetes
RPM que vienen en los discos de instalación.

Tan buena fue la manera de administrar software con RPM que muchas otras
distribuciones adoptaron el mismo esquema para instalar sus aplicaciones.
Algunas de ellas son: SuSE, Fedora, CentOS, etc.

9.2.1 Objetivos de diseño de RPM


• Capacidad de actualización. Con RPM, es posible actualizar
componentes individuales de su sistema sin tener que reinstalarlo
completamente. RPM permite la actualización inteligente y
completamente automatizada de su sistema. Los archivos de
configuración en los paquetes se conservan, por lo que no perderá sus
personalizaciones.

98 | INSTALACIÓN DE SOFTWARE
[CURSO DE LINUX BÁSICO] www.palosanto.com

• Consultas poderosas. RPM está diseñado para proporcionar opciones


de consulta de gran alcance. Usted puede hacer búsquedas en la base de
datos de RPM de un paquete en específico o inclusive de un solo archivo.
También es posible averiguar a qué paquete pertenece un archivo y de
dónde proviene el paquete.
• Fuentes originales. Un objetivo crucial ha sido el de permitir el uso de
fuentes de software originales, según lo distribuido por los autores
originales del software. Con RPM tendrá las fuentes originarias junto con
los parches que han sido usados y las instrucciones de construcción. Esto
es una ventaja importante por varias razones. Por ejemplo, si una nueva
versión del programa es lanzada, usted no necesariamente tiene que
empezar desde cero para que se compile. Usted puede ver el parche para
ver lo que es posible que tenga que hacer. Todas las compiladas por
defecto, y todos los cambios que se hicieron para obtener el software
para construir adecuadamente, son fácilmente visibles utilizando esta
técnica. El objetivo de mantener las fuentes originales puede parecer
importante sólo para los desarrolladores, pero los resultados en el
software de mayor calidad para los usuarios finales, también.

9.2.2 Convención de un paquete RPM


Los paquetes RPM tienen una convención en su nombre, el cual se compone de lo
siguiente:

• Nombre del software


• Versión
• Número de parche
• Arquitectura de procesamiento
• Extensión .rpm

Ejemplo:

postfix-2.11-19.x86_64.rpm

El nombre de los paquetes es sensitivo a mayúsculas y minúsculas.

En el caso de arquitectura de procesamiento, tenemos los siguientes tipos:

i386 32 bits
x86_64 64 bits
ppc PowerPC
sparc SPARC
noarch Compatible con todas las arquitecturas

Usted debe escoger el tipo adecuado para su sistema.

INSTALACIÓN DE SOFTWARE | 99
www.palosanto.com [CURSO DE LINUX BÁSICO]

Para verificar la arquitectura de su sistema, puede hacer uso del comando


uname, así:

~]# uname -a

9.2.3 Usando RPM para el manejo de software


Para realizar cualquier operación con un paquete RPM, usamos el comando rpm:

Opción Descripción
-i Instala (Install)
-force Forza la instalación
-v
Indican el progreso de la instalación
-h
-U Actualiza (Update)
-force Forza la actualización
-v
Indican el progreso de la actualización
-h
-e Desinstala (Erase)
-q Información (Query)
-a Muestra todos los paquetes instalados
-i Muestra la información de un paquete instalado
-l Lista los archivos de un paquete instalado
-c Lista los archivos de configuración de un paquete instalado
-d Lista los archivos de documentación de un paquete instalado
-f Muestra si un archivo pertenece a un paquete instalado
-p Muestra información de paquetes no instalados

Por ejemplo, para instalar el paquete ‘postfix-2.11-19.x86_64.rpm’, ejecutaría el


comando:

~]# rpm –ivh postfix-2.11-19.x86_64.rpm

9.3 YUM (Yellowdog Updater Modified)


9.3.1 Paquetes
En CentOS, el software y la documentación se suministran en forma de archivos
llamados paquetes RPM. Cada paquete es un archivo comprimido que contiene
información del producto, archivos de programa, iconos, documentación y scripts
de administración. Las aplicaciones de administración utilizan estos archivos para
localizar con seguridad, instalar, actualizar y eliminar software. Por ejemplo, el
proceso de instalación de CentOS usa los paquetes que vienen con CentOS para
construir o actualizar un sistema de acuerdo a sus necesidades.

100 | INSTALACIÓN DE SOFTWARE


[CURSO DE LINUX BÁSICO] www.palosanto.com

9.3.2 Repositorios
Un repositorio es un directorio preparado o un sitio Web que contiene paquetes
de software y archivos de índice. Las utilidades de administración de software
como YUM, automáticamente ubican y obtienen de manera correcta los paquetes
RPM de estos repositorios. Este método le libera de tener que buscar e instalar
manualmente las nuevas aplicaciones o actualizaciones. Usted puede utilizar un
solo comando para actualizar todo el software del sistema, o buscar un nuevo
software mediante una palabra o frase.

9.3.3 Dependencias
Algunos de los archivos instalados en una distribución CentOS son librerías que
pueden proporcionar funciones para múltiples aplicaciones. Cuando una
aplicación requiere una librería específica, el paquete que contiene dicha librería
es una dependencia. Para la correcta instalación de un paquete, CentOS debe
satisfacer primero sus dependencias. La información de las dependencias de un
paquete RPM se almacena dentro del archivo RPM.

La utilidad YUM utiliza los datos de dependencia de los paquetes para asegurar
que todos los requisitos de una aplicación se cumplen durante la instalación. Se
instala automáticamente los paquetes para las dependencias que aún no están
presentes en su sistema. Si una nueva aplicación tiene requisitos que entran en
conflicto con el software existente, YUM aborta sin hacer ningún cambio a su
sistema.

9.3.4 Administración de software con YUM


Utilice la utilidad YUM para administrar el software de su sistema de las
siguientes formas:

• Para instalar un nuevo software desde los repositorios de paquetes


• Para instalar un nuevo software desde un archivo individual
• Para actualizar el software existente en su sistema
• Para eliminar software no deseado en su sistema

9.3.4.1 Actualizar el sistema completo

Actualización del sistema completo con todas las dependencias que sean
necesarias:

~]# yum update

INSTALACIÓN DE SOFTWARE | 101


www.palosanto.com [CURSO DE LINUX BÁSICO]

9.3.4.2 Búsquedas
Realizar una búsqueda de algún paquete o término en la base de datos en alguno
de los repositorios configurados en el sistema:

~]# yum search [nombre-paquete]

Por ejemplo:

~]# yum search telnet-server

9.3.4.3 Consulta de información


Consultar la información contenida en un paquete en particular:

~]# yum info [nombre-paquete]

Por ejemplo:

~]# yum info telnet-server

9.3.4.4 Instalación de paquetes

Instalación de paquetes con resolución automática de dependencias:

~]# yum install [nombre-paquete]

Por ejemplo:

~]# yum install telnet-server

9.3.4.5 Desinstalación de paquetes

Desinstalación de paquetes junto con todo aquello que dependa de éstos:

~]# yum remove [nombre-paquete]

Por ejemplo:

~]# yum remove telnet-server

102 | INSTALACIÓN DE SOFTWARE


[CURSO DE LINUX BÁSICO] www.palosanto.com

9.3.4.6 Listado de paquetes


Lo siguiente listará todos los paquetes disponibles en la base de datos yum y que
pueden instalarse:

~]# yum list available | less

Lo siguiente listará todos los paquetes instalados en el sistema:

~]# yum list installed | less

Lo siguiente listará todos los paquetes instalados en el sistema y que pueden


(deben) actualizarse:

~]# yum list updates | less

9.3.4.7 Limpieza del sistema

YUM deja como resultado de su uso cabeceras y paquetes RPM almacenados en


el interior del directorio localizado en la ruta /var/cache/yum/.
Particularmente los paquetes RPM que se han instalado pueden ocupar mucho
espacio y es por tal motivo conviene eliminarlos una vez que ya no tienen
utilidad. Igualmente conviene hacer lo mismo con las cabeceras viejas de
paquetes que ya no se encuentran en la base de datos. A fin de realizar la
limpieza correspondiente, puede ejecutarse lo siguiente:

~]# yum clean all

INSTALACIÓN DE SOFTWARE | 103


www.palosanto.com [CURSO DE LINUX BÁSICO]

Laboratorio 6
Instalar y eliminar un paquete de software con el
comando RPM
En este laboratorio, procederemos a instalar y eliminar un paquete RPM haciendo uso del
comando del mismo nombre.

1. De acuerdo a las indicaciones provistas por el instructor, descargue el paquete de


software Dovecot, cuyo nombre sería algo similar a esto:

dovecot-2.0.9-2.el6_1.1.x86_64.rpm

2. Procedemos a instalar el paquete de software con el siguiente comando:

~]# rpm -ivh dovecot-2.0.9-2.el6_1.1.x86_64.rpm


Preparando... ########################################### [100%]
1:dovecot ########################################### [100%]

3. Para verificar si el paquete se encuentra instaló correctamente, ejecutamos el


comando:

~]# rpm -qa | grep dovecot


dovecot-2.0.9-2.el6_1.1.x86_64

4. Para ver la información respectiva acerca del paquete instalado, ejecutamos:

~]# rpm -qi dovecot


Name : dovecot Relocations: (not relocatable)
Version : 2.0.9 Vendor: CentOS
Release : 2.el6_1.1 Build Date: vie 23 sep 2011 14:42:45 ECT
Install Date: sáb 16 mar 2013 20:40:54 ECT Build Host: c6b18n1.dev.centos.org
Group : System Environment/Daemons Source RPM: dovecot-2.0.9-2.el6_1.src.rpm
Size : 5653741 License: MIT and LGPLv2
Signature : RSA/SHA1, dom 25 sep 2011 23:09:26 ECT, Key ID 0946fca2c105b9de
Packager : CentOS BuildSystem <http://bugs.centos.org>
URL : http://www.dovecot.org/
Summary : Secure imap and pop3 server
Description :
Dovecot is an IMAP server for Linux/UNIX-like systems, written with security
primarily in mind. It also contains a small POP3 server. It supports mail
in either of maildir or mbox formats.

5. Para eliminar el paquete de software Dovecot, ejecutamos:

~]# rpm –e dovecot

104 | INSTALACIÓN DE SOFTWARE


[CURSO DE LINUX BÁSICO] www.palosanto.com

Laboratorio 7
Instalar y eliminar un paquete de software con el
comando YUM
En este laboratorio, procederemos a instalar y eliminar un paquete RPM haciendo uso del
comando yum.

1. Vamos a proceder a instalar el paquete de software telnet-server, para esto


ejecutamos el comando:

~]# yum install telnet-server


Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
* base: mirror.edatel.net.co
* epel: mirror.globo.com
* extras: mirror.edatel.net.co
* rpmforge: mirror.us.leaseweb.net
* updates: mirror.edatel.net.co
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package telnet-server.i686 1:0.17-47.el6_3.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
telnet-server i686 1:0.17-47.el6_3.1 base 36 k

Transaction Summary
================================================================================
Install 1 Package(s)

Total download size: 36 k


Installed size: 53 k
Is this ok [y/N]: y
Downloading Packages:
telnet-server-0.17-47.el6_3.1.i686.rpm | 36 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : 1:telnet-server-0.17-47.el6_3.1.i686 1/1
Verifying : 1:telnet-server-0.17-47.el6_3.1.i686 1/1

Installed:
telnet-server.i686 1:0.17-47.el6_3.1

Complete!

INSTALACIÓN DE SOFTWARE | 105


www.palosanto.com [CURSO DE LINUX BÁSICO]

2. Para verificar si el paquete se encuentra instaló correctamente, ejecutamos el


comando:

~]# yum list installed | grep telnet-server


telnet-server.i686 1:0.17-47.el6_3.1

3. Para ver la información respectiva acerca del paquete instalado, ejecutamos:

~]# yum info telnet-server


Installed Packages
Name : telnet-server
Arch : i686
Epoch : 1
Version : 0.17
Release : 47.el6_3.1
Size : 53 k
Repo : installed
From repo : base
Summary : The server program for the Telnet remote login protocol
License : BSD
Description : Telnet is a popular protocol for logging into remote systems over
: the Internet. The package includes a daemon that supports Telnet
: remote logins into the host machine. The daemon is disabled by
: default. You may enable the daemon by editing /etc/xinetd.d/telnet

4. Para eliminar el paquete de software telnet-server, ejecutamos:

~]# yum remove telnet-server


Loaded plugins: fastestmirror, refresh-packagekit
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package telnet-server.i686 1:0.17-47.el6_3.1 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Removing:
telnet-server i686 1:0.17-47.el6_3.1 @base 53 k

Transaction Summary
================================================================================
Remove 1 Package(s)

Installed size: 53 k
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Erasing : 1:telnet-server-0.17-47.el6_3.1.i686 1/1
Verifying : 1:telnet-server-0.17-47.el6_3.1.i686 1/1

Removed:
telnet-server.i686 1:0.17-47.el6_3.1

Complete

106 | INSTALACIÓN DE SOFTWARE


Apéndice A
[GNU GENERAL PUBLIC
LICENSE]
www.palosanto.com [CURSO DE LINUX BÁSICO]

La presente es una traducción no oficial de la Licencia Pública General de GNU al español. No


ha sido publicada por la Fundación para el Software Libre ni establece legalmente los términos
de distribución para el software que se rija por la Licencia Pública General de GNU (GNU GPL,
por sus siglas en inglés); la única que lo hace es la versión original en inglés
(http://www.gnu.org/licenses/gpl.html) de la GNU GPL. No obstante,
esperamos que esta traducción les ayude a los hispanoparlantes a comprender mejor la GNU
GPL.

LICENCIA PÚBLICA GENERAL DE GNU


Versión 3, 29 de junio de 2007

Copyright © 2007 Free Software Foundation, Inc. <http://fsf.org/>

Se autoriza la reproducción y distribución de las copias del presente documento de licencia,


pero se prohíbe la modificación de cualquiera de sus partes.

Preámbulo

La Licencia Pública General de GNU (GNU GPL, por sus siglas en inglés) es una licencia libre y
gratuita con derecho de copia para software y otros tipos de obras.

Las licencias para la mayoría del software y otras obras de índole práctica están diseñadas para
privarle de la libertad para distribuir y modificar las obras. Por el contrario, la Licencia Pública
General de GNU garantiza la libre distribución y modificación de todas las versiones de un
programa, a fin de asegurarle dicha libertad a todos los usuarios. En la Fundación para el
Software Libre utilizamos la Licencia Pública General de GNU para la mayoría de nuestro
software; también se aplica a cualquier otra obra publicada de esta manera por sus autores.
Usted también puede aplicarla a sus programas.

Cuando hablamos de software libre, nos referimos a la libertad, no al precio. Nuestras


Licencias Públicas Generales están diseñadas para garantizarle a usted la libertad de distribuir
copias de software libre (y cobrar por ellas, si así lo desea), obtener el código fuente, o tener la
posibilidad de obtenerlo, modificar el software o utilizar partes del mismo en nuevos
programas libres, y saber que puede hacer estas cosas.

Para proteger sus derechos, necesitamos evitar que otros le nieguen estos derechos o le pidan
que renuncie a los mismos. Por lo tanto, en el caso de que usted distribuya o modifique este
software, tendrá ciertas responsabilidades a fin de garantizar la libertad de los demás.

Por ejemplo, si usted distribuye copias de un programa de esta naturaleza, ya sea en forma
gratuita o a cambio de dinero, debe extender a los destinatarios del software las mismas
libertades que le fueron otorgadas a usted. Debe asegurarse de que ellos también reciban o
tengan la posibilidad de obtener el código fuente. Y debe mostrarles los presentes términos a
fin de que conozcan sus derechos.

Los desarrolladores que utilizan la GNU GPL siguen dos pasos para proteger los derechos que
usted recibe: (1) declarar los derechos de autor del software, y (2) ofrecerle esta Licencia para
que usted pueda copiar, distribuir y/o modificar el software legalmente.

108 | GNU GENERAL PUBLIC LICENSE


[CURSO DE LINUX BÁSICO] www.palosanto.com

A fin de proteger a los desarrolladores y autores, la GPL explica claramente que nos se ofrecen
garantías por este software libre. Por el bien de los usuarios y de los autores, la GPL exige que
las versiones modificadas se identifiquen como tales, de modo que los problemas que puedan
contener estas versiones no se atribuyan erróneamente a los autores de versiones anteriores.

Existen algunos dispositivos diseñados para negarles a los usuarios el acceso para instalar o
ejecutar versiones modificadas del software que contienen, aunque el fabricante pueda
hacerlo. Esto es esencialmente incompatible con el objetivo de proteger la libertad de los
usuarios para modificar el software. El patrón sistemático de tal abuso se da en el área de
productos para el uso por parte de individuos, precisamente un área en la cual se vuelve más
inaceptable. Por lo tanto, hemos diseñado esta versión de la GPL a fin de prohibir la práctica
para dichos productos. En el caso de que dichos problemas surgieran en otras esferas, hemos
tomado los recaudos necesarios para extender esta disposición a dichas esferas en futuras
versiones de la GPL, según se requiera para proteger la libertad de los usuarios.

Por último, todos los programas se ven amenazados constantemente por patentes de
software. Los Estados no deberían permitirles a las patentes restringir el desarrollo y el uso de
software en computadoras para fines generales, pero, en el caso de que esto suceda,
deseamos evitar el riesgo especial de que las patentes que se apliquen a un programa libre
efectivamente otorguen tal exclusividad. Para lograrlo, la GPL garantiza la imposibilidad del
uso de las patentes para apropiarse de un programa y restringir dicha libertad.

A continuación, se incluyen los términos y condiciones particulares para la reproducción,


distribución y modificación del software.

TÉRMINOS Y CONDICIONES

0. Definiciones.

Por “esta Licencia” se entiende la versión 3 de la Licencia Pública General de GNU.

El término “copyright” también se extiende a las leyes que protegen los derechos de autor
para otros tipos de obras, tales como diseños de circuitos integrados sobre substrato
semiconductor.

Por “el Programa” se entiende cualquier obra incluida en esta Licencia sobre la que se puedan
ejercer derechos de autor. Para referirnos a cada licenciatario, utilizamos el término “usted”.
Los “licenciatarios” y “destinatarios” pueden ser individuos u organizaciones.

Por “modificar” una obra se entiende el proceso de copiar o adaptar una obra en forma parcial
o total de un modo que requiera autorización de copyright y que no sea la reproducción de
una copia exacta. La obra resultante es una “versión modificada” de la obra anterior o una
obra “basada en” la obra anterior.

Por “obra amparada” se entiende el Programa sin modificaciones o una obra basada en el
Programa.

Por “propagar” una obra se entiende cualquier acción sobre la misma que, en el caso de no
tener autorización, pudiera hacerlo responsable, ya sea en forma directa o indirecta, de
infringir las leyes de derechos de autor aplicables, salvo que dicha acción se realice en una
computadora o se modifique una copia privada. La propagación incluye la reproducción,

GNU GENERAL PUBLIC LICENSE | 109


www.palosanto.com [CURSO DE LINUX BÁSICO]

distribución (con o sin modificaciones), divulgación y, en algunos países, otras actividades


también.

Por “transmitir” una obra se entiende cualquier tipo de propagación que le permita a un
tercero hacer o recibir copias. La mera interacción con un usuario a través de una red
informática, cuando no se transfiere una copia, no se considera una transmisión.

Una interfaz de usuario interactiva muestra “avisos legales apropiados” en la medida en que,
de un modo práctico y bien visible, (1) muestre un aviso de copyright apropiado y (2) le
informe al usuario que no se ofrecen garantías por la obra (salvo que efectivamente se
ofrezcan garantías) y que los licenciatarios pueden transmitir la obra conforme a las
disposiciones de esta Licencia, además de mostrar la forma en que se puede consultar una
copia de esta Licencia. Si la interfaz presenta una lista de comandos del usuario u opciones,
tales como un menú, dicha lista debe incluir un ítem visible que cumpla con este criterio.

1. Código fuente.

El “código fuente” de una obra es el formato preferido de la obra para realizar modificaciones
en la misma. Por “código objeto” se entiende cualquier formato de una obra que no sea código
fuente.

Una “interfaz estándar” es una interfaz que puede ser una norma oficial, según lo defina un
organismo de normas reconocido, o bien, en el caso de interfaces específicas para un lenguaje
de programación particular, una interfaz de uso generalizado entre los desarrolladores que
trabajan con dicho lenguaje.

Las “bibliotecas de sistemas” de una obra ejecutable comprenden cualquier cosa, salvo la obra
en su totalidad, que (a) se incluya en la forma normal de empaquetamiento de un
Componente Importante, pero que no forme parte del Componente Importante, y (b) sirva
únicamente para permitir el uso de la obra con dicho Componente Importante o para
implementar una Interfaz Estándar para la cual haya a disposición del público una
implementación en forma de código fuente. Un “Componente Importante”, en este contexto,
es un componente fundamental (núcleo, sistema de ventanas, etc.) del sistema operativo
específico (si hubiera) en el que funcione la obra ejecutable, o un compilador utilizado para
producir la obra, o un intérprete de código objeto utilizado para ejecutarlo.

La “Fuente Correspondiente” para una obra en código objeto refiere a todo el código fuente
necesario para generar, instalar y (para una obra ejecutable) ejecutar el código objeto y
modificar la obra, incluidas las secuencias de comandos para controlar dichas actividades. Sin
embargo, no incluye las Bibliotecas de Sistemas de la obra, así como tampoco herramientas de
aplicación general o programas libres generalmente disponibles que se utilicen sin
modificaciones para realizar dichas actividades pero que no formen parte de la obra. Por
ejemplo, la Fuente Correspondiente incluye los archivos de definición de interfaz asociados a
los archivos fuente para la obra, así como el código fuente para las bibliotecas compartidas y
los subprogramas vinculados en forma dinámica requeridos específicamente conforme a su
diseño, por ejemplo, mediante la comunicación de datos intrínseca o el control de flujo entre
esos subprogramas y otras partes de la obra.

La Fuente Correspondiente no necesita incluir nada que los usuarios puedan regenerar
automáticamente de otras partes de la Fuente Correspondiente.

La Fuente Correspondiente para una obra en código fuente es esa misma obra.
110 | GNU GENERAL PUBLIC LICENSE
[CURSO DE LINUX BÁSICO] www.palosanto.com

2. Permisos básicos.

Todos los derechos que se otorgan conforme a esta Licencia se otorgan por el término del
copyright que ampara al Programa y son irrevocables siempre y cuando se cumplan las
condiciones establecidas. Esta Licencia lo autoriza en forma expresa e ilimitada a ejecutar el
Programa sin modificaciones. El producto obtenido a partir de la ejecución de una obra
amparada está cubierto por esta Licencia únicamente si el producto, dado su contenido,
constituye una obra amparada. Esta Licencia reconoce sus derechos de uso razonable y otros
equivalentes, conforme a las leyes de copyright.

Usted puede crear, ejecutar y propagar obras amparadas que no transmita, sin condiciones en
la medida en que su licencia siga vigente de alguna otra manera. Usted puede transmitir obras
amparadas a terceros con el único fin de que éstos realicen modificaciones exclusivamente
para usted, o que le proporcionen los medios para ejecutar dichas obras, siempre y cuando
usted cumpla con los términos de esta Licencia en lo que respecta a la transmisión de
cualquier material que exceda su control del copyright. Aquéllos que de esta manera creen o
ejecuten las obras aparadas para usted deben hacerlo exclusivamente en su nombre, bajo su
dirección y control y sobre la base de términos que les prohíban hacer copias de su material
protegido por derechos de autor fuera de la relación que mantienen con usted.

La transmisión bajo cualquier otra circunstancia se permite únicamente conforme a las


condiciones que se describen a continuación. Se prohíbe sublicenciar; la sección 10 hace que
sea innecesario.

3. Protección de los derechos legales de los usuarios frente a la Ley Anti-Evasión.

Ninguna obra amparada se considerará parte de una medida tecnológica efectiva conforme a
cualquier ley aplicable que cumpla las obligaciones del artículo 11 del tratado de copyright
WIPO adoptado el 20 de diciembre de 1996 o a leyes similares que prohíban o restrinjan la
evasión de dichas medidas.

Cuando usted transmite una obra amparada, renuncia a cualquier facultad legal de prohibir la
evasión de medidas tecnológicas en la medida en que dicha evasión se realice al hacer uso de
los derechos que se otorgan conforme a esta Licencia con respecto a la obra amparada, y niega
cualquier intención de restringir el uso o la modificación de la obra como una forma de hacer
valer, en contra de los usuarios de la obra, sus derechos legales o los derechos legales de
terceros para prohibir la evasión de medidas tecnológicas.

4. Transmisión de copias exactas.

Usted puede transmitir copias exactas del código fuente del Programa tal cual lo reciba, en
cualquier medio, siempre y cuando publique de un modo llamativo y adecuado un aviso de
copyright apropiado en cada copia; mantenga intactos todos los avisos que establecen que
esta Licencia y cualquier término no-permisivo que se agregue conforme a la sección 7 se
aplican al código; mantenga intactos todos los avisos mediante los cuales se niega cualquier
tipo de garantía; y les proporcione a todos los destinatarios una copia de esta Licencia junto
con el Programa.

Usted puede cobrar el precio que usted desee o no cobrar nada por cada copia que transmita,
y puede ofrecer soporte o protección de garantía a cambio de una tarifa.

GNU GENERAL PUBLIC LICENSE | 111


www.palosanto.com [CURSO DE LINUX BÁSICO]

5. Transmisión de versiones modificadas del código fuente.

Usted puede transmitir una obra basada en el Programa, o las modificaciones para producirlo
a partir del Programa, en forma de código fuente conforme a los términos de la sección 4,
siempre y cuando también cumpla con todas las condiciones que se incluyen a continuación:

• a) La obra debe conservar avisos llamativos que establezcan que usted la ha


modificado e incluyan la fecha correspondiente.
• b) La obra debe conservar avisos llamativos que establezcan que la misma se realiza
conforme a esta Licencia y a todas las condiciones que se agreguen bajo la sección 7.
Este requerimiento modifica el requerimiento de la sección 4 que establece que se
deben “mantener intactos todos los avisos”.
• c) Usted debe otorgar una licencia por la obra completa, en forma íntegra, conforme a
esta Licencia, a cualquier tercero que adquiera una copia. Por lo tanto, esta Licencia,
junto con cualquier término adicional aplicable de la sección 7, se aplica a la obra en su
totalidad y a todas sus partes, independientemente del modo en que se las
empaquete. Esta Licencia no lo autoriza a otorgar licencias para la obra de ningún otro
modo, pero no invalida dicha autorización si usted la ha recibido por separado.
• d) Si la obra tuviera interfaces de usuario interactivas, cada una de ellas deberá
mostrar Avisos Legales Apropiados. No obstante, si el Programa tuviera interfaces
interactivas que no mostraran Avisos Legales Apropiados, usted no necesita incluirlos.

Se denomina “conjunto” a la compilación de una obra amparada con otras obras diferentes e
independientes que por su naturaleza no sean extensiones de la obra amparada ni se
combinen con ella para formar un programa más grande en un volumen de un medio de
distribución o almacenamiento, si la compilación y el copyright consiguiente no se utilizan para
restringir el acceso o los derechos legales de los usuarios de la compilación más allá de lo que
permitan las obras individuales.

La inclusión de una obra amparada en un conjunto no implica que esta Licencia se aplique a las
otras partes del conjunto.

6. Transmisión de códigos que no son códigos fuente.

Usted puede transmitir una obra amparada en código objeto conforme a los términos de las
secciones 4 y 5, siempre y cuando también transmita la Fuente Correspondiente legible por
máquina conforme a los términos de esta Licencia, de alguna de las siguientes maneras:

• a) Transmisión del código objeto dentro de un producto físico (incluidos medios físicos
de distribución) o incorporado a éste, acompañado de la Fuente Correspondiente en
un medio físico duradero habitual para el intercambio de software.
• b) Transmisión del código objeto dentro de un producto físico (incluidos medios físicos
de distribución) o incorporado a éste, acompañado de una oferta escrita, que sea
válida por un plazo mínimo de tres años y por el tiempo que usted ofrezca repuestos o
soporte técnico para ese modelo del producto, para proporcionarle a cualquier
persona que posea el código objeto (1) una copia de la Fuente Correspondiente para
todo el software del producto que esté amparado por esta Licencia, en un medio físico
duradero habitual para el intercambio de software, a cambio de un precio que no
exceda el costo razonable de la acción física de transmitir esta fuente, o (2) acceso
para la copia de la Fuente Correspondiente desde un servidor de red sin costo alguno.
• c) Transmisión de copias individuales del código objeto junto con una copia de la
oferta escrita para proporcionar la Fuente Correspondiente. Esta opción se permite
112 | GNU GENERAL PUBLIC LICENSE
[CURSO DE LINUX BÁSICO] www.palosanto.com

únicamente en ocasiones y para fines no comerciales, y sólo en la medida en que


usted haya recibido el código objeto con una oferta de esta naturaleza, conforme a la
subsección 6b.
• d) Transmisión del código objeto ofreciendo acceso desde un lugar determinado (en
forma gratuita u onerosa) y ofreciendo un acceso equivalente a la Fuente
Correspondiente del mismo modo y desde el mismo lugar sin costo adicional. No es
necesario que les exija a los destinatarios que copien la Fuente Correspondiente junto
con el código objeto. Si el lugar ofrecido para copiar el código objeto fuera un servidor
de red, la Fuente Correspondiente podrá estar en un servidor diferente (operado por
usted o un tercero) que ofrezca posibilidades de reproducción equivalentes, siempre y
cuando se incluyan, junto al código objeto, instrucciones claras para localizar la Fuente
Correspondiente. Independientemente de qué servidor albergue la Fuente
Correspondiente, usted mantiene la obligación de asegurarse de que el mismo esté
disponible por el tiempo que sea necesario para satisfacer estos requerimientos.
• e) Transmisión del código objeto mediante transferencia entre usuarios (peer to peer),
siempre y cuando les informe a los usuarios la ubicación del código objeto y la Fuente
Correspondiente de la obra para el público en general sin costo alguno conforme a la
subsección 6d.

No se necesita incluir una parte separable del código objeto, cuyo código fuente se excluya de
la Fuente Correspondiente como una biblioteca de sistemas, para transmitir el código objeto
de la obra.

Por “producto de usuario” se entiende (1) un “producto de consumo”, que es cualquier bien
personal tangible que se utilice habitualmente para fines personales, familiares o domésticos,
o (2) cualquier cosa que se diseñe o comercialice para su incorporación en una vivienda. Al
determinar si un producto es un producto de consumo, los casos dudosos deberán resolverse
a favor del amparo. Para un producto específico que recibe un usuario particular, un “uso
habitual” es el uso común o típico que se le suele dar a ese tipo de producto,
independientemente de la condición del usuario particular o de la forma en que el usuario
particular utilice el producto o de las expectativas propias o de terceros con respecto al uso del
producto. Un producto se considera un producto de consumo independientemente de que
que se le pueda dar usos sustanciales de índole comercial, industrial o ajena al consumo, salvo
que dichos usos representen el único modo significativo de utilizar el producto.

Por “información de instalación” de un producto de usuario se entiende cualquier método,


procedimiento, clave de autorización u otro tipo de información requerida para instalar y
ejecutar versiones modificadas de una obra amparada en dicho producto de usuario a partir de
una versión modificada de su Fuente Correspondiente. La información debe ser suficiente para
garantizar que el funcionamiento continuo del código objeto modificado no se vea afectado o
imposibilitado por el solo hecho de haberse realizado la modificación.

En el caso de que usted transmita el código objeto de una obra conforme a esta sección en un
producto de usuario, junto con un producto de usuario o específicamente para su uso en un
producto de usuario, y la transmisión se produzca como parte de una transacción mediante la
cual los derechos de posesión y uso del producto de usuario se transfieran al destinatario por
un plazo limitado o ilimitado (independientemente de las particularidades de la transacción), la
Fuente Correspondiente transmitida conforme a esta sección deberá ir acompañada de la
información de instalación. Sin embargo, este requerimiento no se aplicará en el caso de que
ni usted ni un tercero conserven la capacidad para instalar el código objeto modificado en el
producto de usuario (por ejemplo, que la obra se haya instalado en memoria ROM).

GNU GENERAL PUBLIC LICENSE | 113


www.palosanto.com [CURSO DE LINUX BÁSICO]

El requerimiento de proporcionar información de instalación no implica la necesidad de seguir


proveyendo soporte técnico, garantías o actualizaciones para una obra que haya sido
modificada o instalada por el destinatario o para el producto de usuario en el cual se la haya
modificado o instalado. Podrá negarse el acceso a una red cuando la modificación en sí misma
pueda afectar de un modo adverso y sustancial el funcionamiento de la red o infrinja las
normas y los protocolos de comunicación a través de la red.

La Fuente correspondiente que se transmita y la información de instalación que se


proporcione conforme a esta sección deberán presentarse en un formato sobre el cual exista
documentación pública (y con una implementación disponible para el público en código
fuente) y no deberán requerir ninguna clave o contraseña especial para su
desempaquetamiento, lectura o reproducción.

7. Términos adicionales.

Los “permisos adicionales” son términos que complementan los términos de esta Licencia al
permitir excepciones a una o más condiciones. Los permisos adicionales que se aplican al
Programa en su totalidad deberán tratarse como si formaran parte de esta Licencia, en la
medida en que sean válidos conforme a las leyes aplicables.

En el caso de que los permisos adicionales se apliquen únicamente a una parte del Programa,
esta parte podrá utilizarse por separado conforme a dichos permisos, pero el Programa en su
totalidad seguirá rigiéndose de acuerdo a esta Licencia independientemente de los permisos
adicionales.

Cuando usted transmita una copia de una obra amparada, podrá optar por eliminar cualquier
permiso adicional de dicha copia o de cualquier parte de la misma (en ciertos casos, cuando
usted modifique la obra, podrán establecerse permisos adicionales para requerir la eliminación
de los mismos). Tiene autorización para incluir permisos adicionales en un material que usted
haya agregado a una obra amparada y sobre el cual usted posea o pueda otorgar permisos de
copyright adecuados.

Independientemente de cualquier otra disposición de esta Licencia, con respecto al material


que usted agregue a una obra amparada, usted podrá (en la medida en que lo autoricen los
titulares de los derechos de copyright de dicho material) complementar los términos de esta
Licencia con los siguientes términos:

• a) Ausencia de garantías o limitación de la responsabilidad más allá de los términos de


las secciones 15 y 16 de esta Licencia; o
• b) Obligación de conservación de atribuciones de autoría o avisos legales razonables
específicos en dicho material o en los avisos legales apropiados que se muestren en las
obras que lo contengan; o
• c) Prohibición de tergiversación del origen del material, o requerimiento de que en las
versiones modificadas de dicho material se indique de un modo razonable que son
diferentes de la versión original; o
• d) Limitación del uso de los nombres de los licenciantes o autores del material para
fines publicitarios; o
• e) Negativa con respecto al otorgamiento de derechos conforme a las leyes de marcas
para el uso de ciertos nombres comerciales, marcas de productos o marcas de
servicios; o
• f) Requerimiento de indemnización de los licenciantes o autores de dicho material por
parte de cualquier persona que transmita el material (o versiones modificadas del
114 | GNU GENERAL PUBLIC LICENSE
[CURSO DE LINUX BÁSICO] www.palosanto.com

mismo) bajo presunciones contractuales de responsabilidad del destinatario por


cualquier responsabilidad que dichas presunciones contractuales impongan
directamente sobre los licenciantes y autores del material.

Cualquier otro término adicional no permisivo se considerará una “restricción adicional” en el


contexto de la sección 10. En el caso de que el Programa, tal cual usted lo recibió, o cualquier
parte del mismo contengan un aviso que indique que el mismo se rige según esta Licencia
junto con un término que constituya una restricción adicional, podrá eliminar dicho término.
En el caso de que un documento de licencia contenga una restricción adicional pero permita la
extensión de la licencia o la transmisión del programa conforme a esta Licencia, usted podrá
agregar a la obra amparada cualquier material conforme a los términos de dicho documento
de licencia, siempre y cuando la restricción adicional no se mantenga tras la extensión de la
licencia o la transmisión del programa.

En el caso de que usted agregue términos a una obra amparada conforme a esta sección,
deberá incluir en los archivos fuente correspondientes una declaración de los términos
adicionales que se aplican a dichos archivos o un aviso que indique la ubicación de los términos
aplicables.

Se podrán establecer términos adicionales, sean éstos permisivos o no permisivos, en una


licencia escrita independiente, o a modo de excepciones; sea como fuere, se aplicarán los
requerimientos mencionados anteriormente.

8. Cancelación.

Usted no está autorizado a propagar o modificar una obra amparada de ningún otro modo que
no se estipule en esta Licencia. Cualquier intento no autorizado por propagarla o modificarla se
considerará nulo y conllevará la cancelación automática de los derechos que le haya otorgado
esta Licencia (incluida cualquier licencia de patente otorgada conforme al párrafo tercero de la
sección 11).

No obstante, en el caso de que deje de violar las cláusulas de esta Licencia, un titular de
derechos de copyright particular podrá restituirle la licencia (a) en forma provisoria, hasta
tanto dicho titular dé por finalizada su licencia en forma expresa y definitiva, y (b) en forma
permanente, si dicho titular no lo notificara de la infracción por algún medio razonable antes
de los 60 días posteriores a la cancelación.

Asimismo, la licencia que le otorgue un titular de derechos de copyright particular se le


restituirá en forma permanente si dicho titular lo notificara de la infracción por algún medio
razonable, ésta fuera la primera vez que usted hubiese recibido una notificación de violación
de esta Licencia (por cualquier obra) emitida por dicho titular, y usted subsanara la infracción
en un plazo de 30 días a partir de la recepción de la notificación.

La extinción de sus derechos conforme a esta sección no cancela las licencias de aquellos
terceros a los que usted les haya otorgado copias o derechos conforme a esta Licencia. En el
caso de que sus derechos se cancelen y no se le restituyan en forma permanente, usted no
estará capacitado para recibir nuevas licencias para el mismo material conforme a la sección
10.

9. Aceptación innecesaria para la posesión de copias.

GNU GENERAL PUBLIC LICENSE | 115


www.palosanto.com [CURSO DE LINUX BÁSICO]

Usted no está obligado a aceptar esta Licencia para poder recibir o ejecutar una copia del
Programa. De modo similar, la propagación secundaria de una obra amparada que se produzca
únicamente como consecuencia de una transferencia entre usuarios (peer to peer) a fin de
recibir una copia tampoco requiere aceptación. No obstante, esta Licencia es lo único que lo
autoriza a propagar o modificar cualquier obra amparada. En el caso de que usted no acepte
esta Licencia, los actos anteriores representarán una violación de las leyes de copyright. Por lo
tanto, al modificar o propagar una obra amparada, usted expresa su aceptación de esta
Licencia para hacerlo.

10. Traspaso automático de licencia a destinatarios subsiguientes.

Cada vez que usted transmite una obra amparada, el destinatario recibe automáticamente de
los licenciantes originales una licencia para ejecutar, modificar y propagar la obra conforme a
esta Licencia. Usted no es responsable de asegurar el cumplimiento de esta Licencia por parte
de terceros.

Una “transacción entre entidades” es una transacción mediante la cual se transfiere el control
de una organización o de todo el patrimonio de una organización, se subdivide una
organización o se fusionan dos o más organizaciones.

En el caso de que la propagación de una obra amparada se deba a una transacción entre
entidades, cada parte de la transacción que reciba una copia de la obra también recibirá todas
las licencias para la obra que el predecesor de la parte tuviera o pudiera otorgar conforme al
párrafo anterior, más el derecho de recibir de su predecesor la Fuente Correspondiente de la
obra, si el predecesor la tuviera en su poder o pudiera obtenerla con un esfuerzo razonable.

Usted no puede imponer restricciones adicionales para el ejercicio de los derechos que se
otorgan o consolidan conforme a esta Licencia. Por ejemplo, usted no puede imponer tarifas,
regalías u otros cargos a cambio del ejercicio de los derechos que se otorgan conforme a esta
Licencia, así como tampoco puede iniciar acciones legales (incluidas demandas y
contrademandas en un pleito) sobre la base de una infracción de patentes por crear, usar,
comercializar, ofrecer para la venta o importar el Programa o cualquier parte del mismo.

11. Patentes.

Un “colaborador” es un titular de derechos de copyright que autoriza el uso conforme a esta


Licencia del Programa o de una obra sobre la cual se base el Programa. La obra cuya licencia se
otorgue de esta manera se denomina “versión en colaboración” del colaborador.

Los “derechos de patente fundamentales” de un colaborador son todos los derechos de


patente bajo la titularidad o el control del colaborador, ya sea que se los hubiese adquirido
previo al otorgamiento de esta Licencia o a partir del mismo, que puedan infringirse de algún
modo permitido por esta Licencia para crear, usar o vender su versión en colaboración, pero
no incluyen derechos que se podrían infringir únicamente como consecuencia de
modificaciones posteriores a la versión en colaboración. A los efectos de esta definición, el
“control” incluye el derecho de otorgar sublicencias de patente de un modo acorde a los
requerimientos de esta Licencia.

Cada colaborador le otorga a usted una licencia de patente internacional no-exclusiva libre de
regalías conforme a los derechos de patente fundamentales del colaborador para crear, usar,
comercializar, ofrecer para la venta, importar y ejecutar, modificar y propagar de algún otro
modo el contenido de su versión en colaboración.
116 | GNU GENERAL PUBLIC LICENSE
[CURSO DE LINUX BÁSICO] www.palosanto.com

En los tres párrafos que se incluyen a continuación, una “licencia de patente” es cualquier
contrato o acuerdo expreso, independientemente de su denominación, mediante el cual se
convenga no ejercer derechos de patente (como, por ejemplo, una autorización expresa para
hacer uso de una patente o una cláusula que establezca que no se iniciarán acciones legales
por infringir los derechos de patente).

Por “otorgar” una licencia de patente de esta naturaleza a otra parte se entiende el acto de
celebrar un contrato o acuerdo mediante el cual se conviene no ejercer derechos de patente
en contra de dicha parte.

En el caso de que usted transmita una obra amparada, a sabiendas de que está sujeta a una
licencia de patente, y la Fuente Correspondiente de la obra no estuviera disponible para su
reproducción, en forma gratuita y conforme a los términos de esta Licencia, a través de un
servidor de red de acceso público u otro medio igualmente accesible, usted deberá (1) poner la
Fuente Correspondiente a disposición del destinatario subsiguiente, (2) renunciar al beneficio
de la licencia de patente para esta obra en particular, o bien (3) tomar las medidas necesarias
para extender la licencia de patente a los destinatarios subsiguientes de un modo acorde a los
requerimientos de esta Licencia. La frase “a sabiendas de que está sujeta a una licencia de
patente” significa que usted efectivamente sabe que, de no ser por la licencia de patente, su
transmisión de la obra amparada en un país o el uso que pudiera darle el destinatario a la obra
amparada en un país infringirían una o más patentes identificables en dicho país que usted
considera válidas por diversas razones.

En el caso de que, en relación con una transacción o contrato individual, usted transmitiera
una obra amparada o la propagara consiguiendo su transmisión y otorgara a algunas de las
partes que reciban la obra amparada una licencia de patente que las autorizara a usar,
propagar, modificar o trasmitir una copia específica de la obra amparada, la licencia de
patente que usted otorgue se extenderá automáticamente a todos los destinatarios de la obra
amparada y a las obras que se basen en ella.

Una licencia de patente se considera “discriminatoria” cuando no incluye dentro de su ámbito


de cobertura uno o más de los derechos que se otorgan específicamente conforme a esta
Licencia, prohíbe el uso de dichos derechos o se otorga como condición de que no se usen
dichos derechos. Usted no debe transmitir una obra amparada si fuese una de las partes de un
contrato con un tercero que se dedicara a la distribución de software, conforme al cual usted
debiera pagarle al tercero por la actividad que usted realice con respecto a la transmisión de la
obra y el tercero le otorgara a cualquiera de las partes que reciban de usted la obra amparada
una licencia de patente discriminatoria (a) en relación con las copias de la obra amparada
transmitidas por usted (o las copias que se hagan de esas copias), o (b) principalmente para
compilaciones o productos específicos que contengan la obra amparada y en relación con
éstos, a menos que usted hubiese celebrado dicho contrato o que la patente se hubiese
otorgado antes del 28 de marzo de 2007.

Ninguna disposición de esta Licencia deberá interpretarse como excluyente o limitativa de


ninguna licencia implícita u otras defensas legales contra infracciones a las que, de otro modo,
usted pudiese tener derecho conforme a la ley de propiedad intelectual vigente.

12. Protección de la libertad de terceros.

En el caso de que le fueran impuestas condiciones (ya sea por una orden judicial, un contrato o
de algún otro modo) que contradijeran las condiciones de esta Licencia, usted no quedará
eximido de cumplir las condiciones de esta Licencia. En el caso de que no pueda transmitir una
GNU GENERAL PUBLIC LICENSE | 117
www.palosanto.com [CURSO DE LINUX BÁSICO]

obra amparada de un modo que le permita cumplir simultáneamente con las obligaciones
establecidas por esta Licencia y cualquier otra obligación pertinente, no podrá transmitirla de
ningún modo. Por ejemplo, en el caso de que usted acepte términos que lo obliguen a cobrar
regalías por retransmisión de aquéllos a los que usted transmita el Programa, la única forma
de satisfacer tanto dichos requerimientos como esta Licencia será abstenerse de transmitir el
Programa.

13. Uso conjunto con la Licencia Pública General Affero de GNU.

Independientemente de cualquier otra disposición de esta Licencia, usted tiene permiso para
vincular o combinar cualquier obra amparada con una obra cuya licencia se otorgue conforme
a la versión 3 de la Licencia Pública General Affero de GNU en una única obra combinada y
transmitir la obra resultante. Los términos de esta Licencia seguirán aplicándose a la parte que
corresponda a la obra amparada, pero los requerimientos especiales de la sección 13 de la
Licencia Pública General Affero de GNU sobre la interacción a través de una red se aplicarán a
la combinación como tal.

14. Revisiones de esta Licencia.

La Fundación para el Software Libre podrá publicar revisiones y/o versiones nuevas de la
Licencia Pública General de GNU de vez en cuando. Tales versiones serán de naturaleza similar
a la versión actual, pero podrán diferir en cuanto a los detalles para afrontar nuevos
problemas o inquietudes.

Cada versión recibirá un número de versión que la distinga. En el caso de que el Programa
especifique que se rige por una versión determinada de la Licencia Pública General de GNU “o
cualquier versión posterior”, usted podrá optar por adoptar los términos y condiciones de
dicha versión específica o de cualquier versión posterior que publique la Fundación para el
Software Libre. En el caso de que el Programa no especifique un número de versión de la
Licencia Pública General de GNU, usted podrá regirse por cualquier versión que haya publicado
la Fundación para el Software Libre.

Si el Programa especificara que un apoderado puede decidir qué versiones de la Licencia


Pública General de GNU pueden aplicarse en el futuro, la declaración pública del apoderado
sobre la aceptación de una versión determinada lo autorizará a usted, en forma permanente, a
optar por dicha versión para el Programa.

Puede que las versiones posteriores de la licencia le otorguen permisos adicionales o


diferentes. No obstante, no se les impondrán obligaciones adicionales a ningún autor o titular
de derechos de copyright como resultado de la adopción de la versión posterior que usted
elija.

15. Ausencia de garantías.

EL PROGRAMA SE OFRECE SIN NINGÚN TIPO DE GARANTÍAS, EN LA MEDIDA EN QUE LO


PERMITAN LAS LEYES APLICABLES. SALVO DISPOSICIÓN CONTRARIA POR ESCRITO, LOS
TITULARES DE DERECHOS DE COPYRIGHT Y/U OTRAS PARTES PROVEEN EL PROGRAMA "TAL
CUAL" SIN GARANTÍAS DE NINGÚN TIPO, YA SEAN EXPRESAS O IMPLÍCITAS, INCLUIDAS,
AUNQUE NO EN FORMA TAXATIVA, LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD Y
APTITUD PARA UN PROPÓSITO DETERMINADO. USTED ASUME TODOS LOS RIESGOS CON
RESPECTO A LA CALIDAD Y EL DESEMPEÑO DEL PROGRAMA. EN EL CASO DE QUE EL

118 | GNU GENERAL PUBLIC LICENSE


[CURSO DE LINUX BÁSICO] www.palosanto.com

PROGRAMA TUVIERA DEFECTOS, USTED ASUME EL COSTO DE TODAS LAS ACTIVIDADES DE


MANTENIMIENTO, REPARACIÓN O CORRECCIÓN.

16. Limitación de la responsabilidad.

EN NINGÚN CASO, SALVO QUE ASÍ LO DISPONGAN LAS LEYES APLICABLES O UN CONTRATO
POR ESCRITO, UN TITULAR DE DERECHOS DE COPYRIGHT O UN TERCERO QUE MODIFIQUE Y/O
TRANSMITA EL PROGRAMA SEGÚN SE AUTORIZA ANTERIORMENTE SERÁ RESPONSABLE ANTE
USTED DE CUALQUIER DAÑO, INCLUIDOS DAÑOS GENERALES, ESPECIALES, FORTUITOS O
DERIVADOS, QUE PUEDA SURGIR DEL USO O LA INCAPACIDAD DE USO DEL PROGRAMA
(INCLUIDOS, AUNQUE NO TAXATIVAMENTE, LA PÉRDIDA DE INFORMACIÓN, EL SUMINISTRO
DE INFORMACIÓN IMPRECISA O LAS PÉRDIDAS QUE PUEDAN SUFRIR USTED O UN TERCERO O
LA INCAPACIDAD DEL PROGRAMA PARA INTERACTUAR CON OTROS PROGRAMAS), AUN
CUANDO DICHO TITULAR O TERCERO HUBIESE SIDO ADVERTIDO DE LA POSIBILIDAD DE TALES
DAÑOS.

17. Interpretación de las secciones 15 y 16.

En el caso de que las cláusulas de ausencia de garantías y limitación de la responsabilidad


anteriores carecieran de validez legal a nivel local conforme a sus términos, los juzgados
deberán aplicar las leyes locales que más se asimilen a una exención absoluta de cualquier
responsabilidad civil en relación con el Programa, salvo que una copia del Programa estuviera
acompañada de una garantía o presunción de responsabilidad a cambio de una tarifa.

FIN DE TÉRMINOS Y CONDICIONES

Cómo aplicar estos términos a sus programas nuevos

Si usted desarrolla un programa nuevo y desea que el público le encuentre la mayor utilidad
posible, la mejor manera de lograrlo es hacer de éste un software libre para que todos lo
puedan redistribuir y modificar conforme a estos términos.

Para hacerlo, adjunte los siguientes avisos al programa. Lo más seguro es añadirlos al
comienzo de cada archivo fuente a fin de que se establezca de un modo efectivo la exclusión
de garantías. Asimismo, cada archivo debería incluir el renglón del “copyright” y un vínculo a la
ubicación del aviso completo.

<un renglón para incluir el nombre del programa y una


descripción breve de sus funciones>
Copyright © <año> <nombre del autor>

Este programa es software libre: usted puede redistribuirlo y/o


modificarlo conforme a los términos de la Licencia Pública
General de GNU publicada por la Fundación para el Software
Libre, ya sea la versión 3 de esta Licencia o (a su elección)
cualquier versión posterior.

Este programa se distribuye con el deseo de que le resulte útil,


pero SIN GARANTÍAS DE NINGÚN TIPO; ni siquiera con las garantías
implícitas de COMERCIABILIDAD o APTITUD PARA UN PROPÓSITO
DETERMINADO. Para más información, consulte la Licencia Pública
General de GNU.

GNU GENERAL PUBLIC LICENSE | 119


www.palosanto.com [CURSO DE LINUX BÁSICO]

Junto con este programa, se debería incluir una copia de la


Licencia Pública General de GNU. De no ser así, ingrese en
<http://www.gnu.org/licenses/>.

También incluya información de contacto que les permita a los destinatarios comunicarse con
usted, ya sea por correo electrónico o convencional.

Si el programa admite la interacción entre terminales, asegúrese de que muestre un breve


aviso como el que se incluye a continuación cuando se inicie en modo interactivo:

<programa> Copyright © <año> <nombre del autor>


Este programa se proporciona SIN GARANTÍAS DE NINGÚN TIPO; para
más información escriba 'show w'.
Este programa es software libre y usted puede redistribuirlo
conforme a ciertas condiciones; para más información, escriba
'show c'.

Los comandos hipotéticos 'show w' y 'show c' deberían mostrar las partes correspondientes de
la Licencia Pública General. De más está decir que los comandos de su programa pueden ser
diferentes; para una interfaz gráfica de usuario, debería utilizar un cuadro de diálogo de tipo
“acerca de”.

En el caso de que trabaje como programador para un empleador o establecimiento educativo,


también asegúrese de que éste firme una “renuncia de copyright” para el programa, si fuera
necesario. Para más información a este respecto y sobre cómo aplicar y cumplir la GNU GPL,
ingrese en <http://www.gnu.org/licenses/>.

La Licencia Pública General de GNU no autoriza la inclusión de su programa en programas de


propiedad privada. Si su programa fuera una biblioteca de subrutinas, puede que considere
más útil permitir la vinculación de aplicaciones de propiedad privada con la biblioteca. Si usted
deseara hacer esto, utilice la Licencia Pública General Reducida de GNU en lugar de esta
Licencia. Pero primero, por favor, lea la información que se incluye en
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

Copyright © 2013 Guillermo Sánchez Herrera

Este documento fue elaborado para ser utilizado en los cursos de entrenamiento Linux ofrecidos por
Palosanto Solutions

120 | GNU GENERAL PUBLIC LICENSE

También podría gustarte