Guía Práctica del Sistema Operativo GNU Debian

Davor Ocelic

Walter Echarri (traducción al español)

Historial de revisiones
Revisión 2.4 30 de marzo del 2002 Revisado por: docelic
La versión inicial.
Revisión 2.5 02 de mayo del 2002 Revisado por: docelic
Correcciones ortográficas y gramaticales, traducción al español (todo a cargo de Walter Echarri)
Revisión 2.6 03 junio del 2002 Revisado por: docelic
Mejoras de contenido, correcciones gramaticales de Walter, introducción de un capítulo nuevo sobre el kernel (documento aparte).
Revisión 2.7 24 de julio del 2002 Revisado por: docelic
Más mejoras. La variante lyx->sgml simplemente no funcionó, los documentos obtenidos eran inintelegibles. Reescribí en forma manual el sgml docbook con las hojas de estilo de newbiedoc ¡son sorprendentes!
Revisión 2.8 12 de septiembre del 2002 Revisado por: docelic
Gran cantidad de mejoras y detalles nuevos. Gracias a Gürkan Sengün (tarzeau@linuks.mine.nu) por diversos trucos, sugerencias y enlaces.
Revisión 2.9 15 septiembre del 2002 Revisado por: docelic
Mejoras; enlaces a recursos externos.
Revisión 3.0 16 septiembre del 2002 Revisado por: docelic
Mejoras; ahora el aspecto del documento se ve mejor.

Tabla de contenidos
1. Introducción
1.1. Sitio Oficial de Descarga
1.2. Agradecimientos
2. Convenciones
3. Teoría básica
3.1. UNIX
3.2. GNU, Linux, Free Software, Open Source
3.3. El kernel GNU - El Hurd
3.4. El sistema GNU Debian: sus objetivos de diseño y componentes básicos
3.5. Términos de uso frecuente
4. Administración básica del sistema
4.1. Administración de paquetes
4.2. Familiarizándose con los mensajes del sistema
4.3. El Sistema X Window, principios básicos y su configuración en Debian
4.4. Consolas virtuales
4.5. Observaciones generales sobre el soporte de hardware
4.6. Habilitando el ratón en consolas de texto
4.7. El rendimiento de su disco duro
4.8. Supervisando software non-free de su máquina
4.9. Firewalls
4.10. Configurando enmascaramiento IP/NAT
4.11. Acceso al sistema, shell de inicio y archivos de configuración
4.12. Cuentas de usuario
4.13. Accediendo a la cuenta de superusuario sin la contraseña
4.14. Control de accesos
4.15. Los limitadores de TCP
4.16. Desempaquetar en forma manual archivos .deb
4.17. Comprobando las sumas MD5 de los paquetes Debian instalados
4.18. Sesiones compartidas
4.19. Niveles de ejecución y servicios del sistema
4.20. El sistema de 'alternativos' de Debian
4.21. Verificación periódica del espacio disponible en disco
4.22. Creando y extrayendo archivos
4.23. Copiando, replicando y volviendo a descargar paquetes Debian
4.24. Recompilación de paquetes
4.25. Conectándose a su Proveedor de Servicios de Internet local
4.26. El concurso de popularidad de paquetes
4.27. Accediendo a los datos de particiones MS Windows
5. Los procesos en Linux
5.1. Introducción
5.2. Comandos básicos relacionados con procesos
5.3. Dos tipos diferentes de archivos ejecutables
5.4. Cómo iniciar un proceso
5.5. Maneras de finalizar un proceso
5.6. Cómo poner a dormir un proceso
5.7. Las prioridades de los procesos
5.8. Los procesos y sus funciones de entrada/salida
5.9. Dejando procesos ejecutándose en nuestra ausencia
6. Usando Debian GNU
6.1. Combinaciones de teclas más habituales
6.2. Configurando el terminal
6.3. Aprendizaje y uso del editor Vim
6.4. La biblioteca readline y la función bindings
6.5. Archivos de configuración del usuario
6.6. Alias de comandos
6.7. Características avanzadas de la línea de comandos
6.8. Personalizando la sesión en X
6.9. Reporte de fallos
7. Primero intente hacerlo por sí mismo
7.1. Una lista paso a paso
7.2. Obteniendo ayuda en el IRC
7.3. Cómo no formular preguntas en un IRC
7.4. Enlaces

1. Introducción

Es conveniente que consulte esta guía luego de haber instalado con éxito el sistema Debian GNU en su máquina.

Se trata de un documento paso a paso destinado a responder la mayoría de sus preguntas y brindarle la posibilidad de adquirir los conocimientos necesarios para continuar por su cuenta; no me canso de repetir que lo que cuenta es la idea y la lógica, no la implementación exacta o los detalles de uso.

Nota Observación:
 

Este documento puede parecer un tanto extenso, en especial si está leyendo la versión que viene en una única hoja html. Por favor, sea decidido y paciente: será Ud. quien se beneficie de su lectura. He intentado evitar párrafos que no le aporten nada significativo.

Esta guía constituye una suerte de combinación equilibrada entre una guía para administradores y una guía para usuarios; quizás resulte demasiada amplia para aquellos que pertenecen a algunas de estas dos categorías específicas. El enfoque que utilizé se ajusta mejor a usuarios domésticos, es decir, a aquellas personas que tienen una instalación Debian, una cuenta de superusuario a mano y tengan el deseo de aprender y experimentar.

Definiremos en forma adecuada los términos básicos, explicaremos los objetivos del diseño del sistema, abarcaremos lo temas más importantes para el usuario final y mostraremos varios ejemplos usando la línea de comandos. Puesto que se trata de una guía Debian, no vacilaré en usar comandos y caracteríticas específicas de Debian aunque la mayoría de lo explicado (al menos desde el punto de vista ideológico) también se aplica a otras distribuciones de Linux o sistemas UNIX. Por último, a pesar de decir que se trata de una guía para principiantes, no nos restringiremos a los fundamentos de UNIX. Considero que esta guía contiene una gran cantidad de detalles interesantes que incluso los usuarios experimentados pueden encontrar útiles (o divertidos :).

Cabe destacar que toda la información que se brinda aquí puede encontrarse en la documentación que acompaña a los respectivos paquetes en forma más detallada y comprensiva. Por lo tanto, se sugiere en forma implícita leer junto con esta guía, la documentación oficial del sistema y de los programas (las páginas del manual para dpkg y apt son perfectas para mostrar que hay muchas cosas más de las que se menciona aquí). www.debian.org y www.tldp.org (inicialmente linuxdoc), los directorios /usr/{doc, share/doc, local/share/doc} y las páginas info y del manual sistema son, en general, fuentes valiosas de consulta.

Luego de finalizar con esta guía (que debería ayudarlo a desenvolverse :), probablemente debería leer los interesantes manuales disponibles en el directorio de documentación de Debian.


1.1. Sitio Oficial de Descarga

http://www.linuks.mine.nu/~docelic/debguide/es/

De todas maneras, mi dirección electrónica actual es (docelic-AT-mail.inet.hr). No duden en preguntar por un sitio de descarga si la URL proporcionada no funciona :)


1.2. Agradecimientos

  • Walter Echarri <wecharri-AT-infovia.com.ar>: por la traducción al español, lectura minuciosa, numerosas correcciones gramaticales/de estilo y motivación. Gracias Wally ;)

  • Gürkan Sengün (tarzeau-AT-linuks.mine.nu) por varios trucos interesantes, sugerencias y enlaces.


2. Convenciones


3. Teoría básica

Usaremos este capítulo para identificar algunas interpretaciones equivocadas y definir en forma correcta los términos que usaremos en todo el documento. Comenzaremos con términos generales, tales como UNIX, GNU o Free Software. A continuación hablaremos sobre el propio proyecto Debian para finalizar el capítulo con una explicación de algunos de los términos más frecuentes que encontrará en su vida futura Debian.

Así que comencemos ...


3.1. UNIX

En las primeras versiones de este documento, solía mencionar que UNIX era el nombre genérico para un conjunto de sistemas operativos avanzados que compartían la mayoría de las ideas de diseño. Si bien no hay nada incorrecto en esta afirmación, recurrí a Internet para buscar una explicación más formal:

Breve introducción del sitio UGU:

UNIX - /'iuniks/ Plural "Unices". Un sistema operativo interactivo de tiempo compartido inventado en 1969 por Ken Thompson, luego que los laboratorios Bell abandonaran el proyecto Multics, inicialmente para poder ejecutar juegos en su vetusta PDP-7. Dennis Ritchie, el inventor del lenguaje C, se considera co-autor del sistema.

Una descripción similar y más detallada se encuentra en searchSolaris:

UNIX (a menudo escrito "Unix" en los medios de prensa) es un sistema operativo de tiempo compartido interactivo que tuvo origen en los laboratorios Bell en 1969. Ken Thompson y Dennis Ritchie se consideran los inventores de UNIX. El nombre (que se pronuncia 'iuniks) es un juego de palabras basado en un sistema anterior: Multics. En 1974, UNIX se convirtió en el primer sistema operativo escrito en lenguaje C. UNIX ha evolucionado como una suerte de gran producto freeware con diversas extensiones y nuevas ideas proporcionadas por una variedad de versiones UNIX de diferentes compañias, universidades e individuos.

Parte porque no era un sistema operativo propietario de alguna de las compañías líderes y parte porque estaba escrito en un lenguaje estándar y abrazaba diversas ideas populares, UNIX se convirtió en el primer sistema operativo abierto que podía ser ampliado o mejorado por cualquier persona. Una combinación del lenguaje C e intérpretes de comandos de diferentes versiones de UNIX fueron estandarizados con los auspicios de la IEEE como POSIX (Portable Operating System Interface). A su vez, las interfaces POSIX fueron especificadas en la Guía de Programación X/Open 4.2 (también conocida como "Especificación Única de UNIX" o "UNIX 95"). La Versión 2 de la Especificación Única de UNIX también se conoce como UNIX 98. La marca UNIX "oficial" pertenece actualmente al Open Group, una organización de estándares industriales que certifica implementaciones UNIX.

Considero que algo ocurre con la gente de UNIX. Lo que también confirmó mis sospechas fue el artículo There's something about UNIX people que encontré antes del año 2000. Las otras URLs que me sirvieron de inspiración están en el archivo Multics.

No obstante, suceden cosas extrañas cuando la gente de UNIX enloquece.

Encontré un artículo dudoso, insinuando que UNIX es en realidad una travesura del Día de los Inocentes que se mantuvo vigente durante 20 años.

Incluso encontré una página web denominada UNIX Haters.

Algunas personas han expresado sus frustaciones sobre sus usuarios y se han convertido en The Bastard Operators from Hell .

Algunos encontraron consuelo en nombres de dominio extraños (específicamente, http://www.0100101110101101.org/, y la página de la Tía Tillie junto con su subordinado Melvin).

Algunos se han unido a la campaña anti-Linux de Microsoft y han escrito graciosos informes sobre comparaciones competitivas.

Algunos se dieron cuenta que no podían continuar más y decidieron servir bebidas desde la barra de una VAX de Digital.

Algunos incluso pensaron que finalmente habían encontrado La Salida pero pronto fueron ridiculizados por aquellos que encontraron La Entrada.

Y cuando parecía que nada podía empeorar, encontramos al tío Booger y su "invento" patentado 'Bumper Dumper'.

No puede decir que no se lo hemos advertido ...


3.2. GNU, Linux, Free Software, Open Source

Richard Stallman, un mítico hacker del MIT, tomó la iniciativa de crear un sistema operativo totalmente libre. Entre otras cosas, su decisión se basó en la frustración y problemas que tuvo por un acuerdo de licencia. No permitieron que un colega suyo le proporcionara el código fuente del controlador de una impresora láser (Stallman deseaba incluir una notificación automática ante un atasco de papel).

Muy motivado por hacer lo correcto, posteriormente abandonó su trabajo en el MIT (de modo que no pudieran reclamarle derechos de autor por su trabajo) y en 1984 inició el proyecto GNU (Gnu's Not Unix), cuyo objetivo era proteger la libertad y proporcionar a los usuarios programas totalmente funcionales para sus computadoras. GNU es un esfuerzo admirable que afecta incluso a áreas no relacionadas con la informática.

Puede consultar el mensaje original de Stallman del 27 de Sep de 1983 / 10:35:59 PST en el excelente archivo de google: Grupos Google.

En 1994, Peter van der Linden escribió lo siguiente en su libro “Expert C Programming; Deep C Secrets” (ISBN 0-13-177429-8):

La Free Software Foundation es una organización extraordinaria fundada por el mítico hacker del MIT Richard Stallman. A propósito, usamos “hacker” en el sentido benévolo original de “programador talentoso”; el término ha sido degradado por los medios, por lo que el hombre común lo usa para designar a un “genio perverso”. Al igual que el adjetivo bad, “hacker” tiene dos significados opuestos y uno debe darse cuenta según el contexto.

La fundación de Software Libre de Stallman se basa en la filosofía que el software debe ser libre y estar disponible para todo el mundo. La premisa de la FSF es “eliminar las restricciones sobre la copia, redistribución, comprensión y modificación de los programas de computación” y su anhelo es crear una implementación de UNIX de dominio público denominada GNU (que significa “GNU's Not UNIX”. Sí, en serio).

Muchos estudiantes graduados en ciencias de la computación y otras personas están de acuerdo con la filosofía GNU y han trabajado en productos de software que la FSF empaqueta y distribuye libremente. Uno de los mejores productos de la FSF es el compilador C GNU. Gcc es un compilador robusto altamente optimizado, disponible para diversas plataformas y a menudo mejor que los compiladores propietarios.

Los desarrolladores GNU habían re-escrito todas las herramientas necesarias del sistema y utilidades (liberadas como software libre - bajo la licencia GNU GPL) y lo único que necesitaban era un kernel (el núcleo del sistema operativo) para alcanzar el objetivo inicial.

En 1991, y en forma independiente, Linus Torvalds de la universidad de Helsinki hizo pública su primer versión del kernel en el que estaba trabajando: Linux. Para entonces era un estudiante y deseaba crear una alternativa económica a los altamente costosos sistemas UNIX que se ejecutara en máquinas PC (i386 ). Uniendo el kernel de Linux con las herramientas GNU, el sueño de un sistema libre GNU/Linux se hizo realidad. Linux (el kernel) fue escrito desde la nada ('partiendo de cero') y fue una de las primeras variantes libres de UNIX que, apoyado por la inmensa comunidad GNU y su software, hizo que el movimiento del software libre realmente comenzara.

No obstante, han existido otros proyectos -como el del BSD- que han tenido problemas en cuanto a temas de licencia y derechos de autor, pero que han reescrito las partes en cuestión y han liberado las variantes libres del BSD: FreeBSD, NetBSD y OpenBSD (que surgió de NetBSD gracias a Theo de Raadt). NetBSD se conoce como el sistema operativo más portable del mundo mientras que OpenBSD es valorado por aquellos relacionados con la seguridad informática.

Nota Observación:
 

Linux (y otros sistemas operativos libres actuales) han tomado lo mejor del mundo UNIX además de ofrecer una gran cantidad de ventajas sobre el UNIX ortodoxo para el usuario final. Dado su diseño y filosofía, cabe señalar que nada es imposible en GNU/Linux - únicamente es cuestión de habilidades.

El término Código Abierto es relativamente nuevo y, en general, fue aceptado para promover el Software Libre en entornos comerciales. Está relacionado con los beneficios prácticos del Software Libre: calidad, fiabilidad, costo y mantenimiento... No conlleva mayores implicaciones filosóficas.

Importante ¡Importante!
 

Lea más sobre el Software Libre, Código Abierto y la interpretación correcta de la palabra 'libre' en la página de Debian "¿Qué significa Libre?".


3.3. El kernel GNU - El Hurd

Resulta interesante mencionar que Linux es un kernel monolítico que comparte muchas ideas con su contraparte Unix. No obstante, las personas detrás del proyecto GNU tienen una visión diferente de lo que debería ser la próxima generación de núcleos y están trabajando en el microkernel el Hurd. Algunos están trabajando en una versión Debian GNU/Hurd. Se puede ver el estado actual del projecto o descargarlo desde la página Migración a Debian GNU/Hurd

Los núcleos monolíticos son fundamentalmente diferentes a los microkernels y ha habido acalorados debates sobre la utilidad de los microkernels en aplicaciones de la vida real. Linus Torvalds envió un mensaje que decía: “Dí NO a las drogas y quizás no termines como la gente del projecto el Hurd” pero esto son tonterías. Considere, a QNX como ejemplo de microkernel maduro y poderoso. Alan Cox, el encargado del árbol de producción del kernel de Linux (con más simpatía por el Hurd), señaló una vez que el diseño del Hurd estaba más relacionado con la idea de Richard Stallman de cómo debería funcionar un sistema para fomentar la comunidad que con el diseño de un sistema operativo de alto rendimiento. En mi opinión personal, el Hurd y -en general- los microkernels ofrecen muchísimas ventajas sobre los núcleos UNIX tradicionales y su momento esta por llegar. Si está interesado en obtener más información sobre el Hurd, no se pierda los famosos documentos hurd-paper y hurd-talk.


3.4. El sistema GNU Debian: sus objetivos de diseño y componentes básicos

Citemos parte de la página oficial Sobre Debian:

Debian comenzó en agosto de 1993 gracias a Ian Murdock, como una nueva distribución que se realizaría en forma abierta, con el mismo espíritu que Linux y GNU. Debian fue ideada para ser creada con esmero y a conciencia; mantenida y dando apoyo con el mismo cuidado. Comenzó con un reducido grupo de hackers de Software Libre estrechamente vinculado y gradualmente creció hasta convertirse en una comunidad bien organizada de desarrolladores y usuarios.

Ya que mucha gente lo ha preguntado, Debian se pronuncia 'deb ii n'. Proviene de los nombres del creador de Debian, Ian Murdock, y de su esposa, Debra.

Debian es creada por cerca de un centenar de desarrolladores esparcidos por todo el mundo que ayudan voluntariamente en su tiempo libre. Son pocos los desarrolladores que realmente se han encontrado en persona. La comunicación se realiza principalmente a través de correo electrónico (listas de correo en lists.debian.org) y a través de IRC (canal #debian en irc.debian.org).

El Proyecto Debian es una asociación de individuos que han aunado sus esfuerzos para crear un sistema operativo libre. Este sistema operativo que hemos creado se llama Debian GNU/Linux o simplemente Debian por brevedad.

Un sistema operativo es un conjunto de programas y utilidades básicas que hacen que su computadora funcione. La parte principal de un sistema operativo es el núcleo o kernel. El núcleo es el programa más importante en una computadora que permite realizar las tareas básicas y ejecutar otros programas.

Actualmente, los sistemas Debian usan el kernel de Linux. Linux es un programa completamente libre creado inicialmente por Linus Torvalds y con contribuciones hechas por cientos de programadores de todo el mundo.

No obstante, se está trabajando para proporcionar Debian con otros núcleos en especial con el Hurd. El Hurd es un conjunto de servidores que se ejecutan sobre un microkernel -al igual que Mach- para implementar distintas funcionalidades. El Hurd es software libre creado por el proyecto GNU.

Una gran parte de las herramientas básicas que acompañan al sistema operativo provienen del proyecto GNU; de allí los nombres: GNU/Linux y GNU/Hurd. Estas herramientas también son libres.

Desde luego, lo que la gente quiere son aplicativos: programas que les ayuden a realizar lo que quieren hacer desde editar documentos a manejar sus negocios hasta jugar y crear más software. Debian viene con más de 8710 paquetes (software precompilado y empaquetado en un formato sencillo para una instalación sin problemas en su máquina) -- todos ellos totalmente gratis.

Es un poco como una torre. En la base se encuentra el kernel. Encima se encuentran todas las herramientas básicas. A continuación están todos los programas que se ejecutan en la computadora. En la cima de la torre está Debian -- organizando y haciendo encajar todo para que el conjunto funcione armónicamente.

Puede que se pregunte: ¿por qué gastará la gente horas de su propio tiempo escribiendo software, empaquetándolo cuidadosamente para luego regalarlo? Las respuestas son tan diversas como la gente que contribuye. A algunas personas les agrada ayudar a otras. Muchas escriben programas para aprender más sobre computadoras. Más y más personas están buscando la forma de evitar los precios sobrevaluados de algunos programas. Un grupo creciente contribuye en agradecimiento por todo el excelente software libre y gratuito que ha recibido de otros. En las instituciones académicas muchos crean software libre para ayudar a que los resultados de sus investigaciones tengan un uso más amplio. Las empresas ayudan a mantener el software libre de modo de poder ver cómo evoluciona -- ¡no existe manera más rápida de obtener una nueva característica que implementarla uno mismo!. Por supuesto, están aquellos que al igual que a muchos de nosotros simplemente nos resulta terriblemente divertido.

Puesto que Debian se encuentra muy comprometido con el software libre pensamos que iba ser útil que dicho compromiso quedara formalizado por escrito en un documento. De esta manera, nació nuestro Contrato Social.


3.5. Términos de uso frecuente

3.5.1. Dpkg, apt, dselect, tasksel

dpkg

dpkg es una herramienta de nivel medio para instalar, crear, eliminar y administrar los paquetes de Debian GNU/Linux. En sí dpkg se controla por completo a través de parámetros de la línea de comandos que consisten en un única acción y en cero o más opciones. El parámetro de acción le indica a dpkg qué hacer y las opciones controlan de cierta manera el comportamiento de la acción.

apt

es un sistema de administración de paquetes e incluye las herramientas apt-get, apt-cache apt-cdrom. Sus puntos fuertes son las actualizaciones sin problemas de programas, el cálculo automático de dependencias y su uso sencillo.

dselect

es otra interfaz de dpkg basada en ncurses. Posee más características que apt pero requiere de mayor tiempo para acostumbrarse a su uso (no siempre es tan eficiente como apt).

tasksel

nos permite seleccionar una categoría completa de programas de una sola vez (del tipo, “instalar todo de la sección 'juegos' ”).


3.5.2. Páginas del manual, man e info

man

(de 'manual') las páginas del manual ofrecen una interfaz común para la documentación bajo UNIX. Por ejemplo, si existe un programa llamado "mkdir" y lo escuchó nombrar en algún lado pero no sabe para qué sirve, escriba 'man mkdir' y lo averiguará.

info

el sistema info es la manera en que GNU documenta las cosas. Algunas herramientas importantes GNU tienen páginas del manual muy breves y la verdadera documentación se encuentra oculta en las páginas info.


3.5.3. Administrador del sistema, superusuario, root

Con estos términos nos referimos a la cuenta que tiene los privilegios para hacer absolutamente todo (sí, esto incluye borrar todos nuestros archivos, bloquear nuestro acceso al sistema y reportar nuestros verdaderos ingresos al fisco :). No hay que confudir este término con el 'directorio raíz' que se detalla más abajo.


3.5.4. Directorio home

Tras autenticarse, ingresará al directorio principal de su cuenta (directorio home). En él tiene control absoluto para leer, crear y borrar archivos (estos permisos no los tiene en el resto del sistema). Para ver cuál es el directorio, escriba 'pwd' (verá algo similar a /home/su_nombre). Esté donde esté escriba simplemente 'cd' para volver a su directorio home. El 'tilde' (~) es un carácter especial que se expande en su directorio principal (pruebe con 'echo ~' o 'vim ~/.bashrc').


3.5.5. Directorio raíz

En UNIX, las diferentes particiones se muestran como directorios (se dice que están "montadas"). El directorio base siempre es "/" y se denomina "directorio raíz". Así en Windows se habla de las unidades de disco C:, D: etc. en tanto que en UNIX (y Linux) de directorios. Su disco D:, por ejemplo, podría estar montado en el directorio /mnt/discowin-D bajo Linux (obviamente, la ubicación es arbitraria).


3.5.6. /etc

El directorio /etc contiene prácticamente la totalidad de los archivos de configuración. Por lo tanto, cuando alguien le pide que edite el archivo de configuración de syslog quiere decir que debe ir al directorio /etc/ y editar el archivo syslog.conf. Como regla general, la mayoría de los paquetes poseen un archivo de configuración denominado <paquete>.conf o almacenan sus archivos de configuración en el directorio /etc/<paquete>/.

Nota Observación:
 

Para una descripción completa de la estructura del sistema de archivos y directorios, consulte la subsección La estructura de archivos del Manual de Referencia del usuario Debian.


3.5.7. /proc

Se trata de un directorio virtual semejante al resto de los directorios del sistema pero cuyo contenido dinámino proviene directamente del kernel y no de los archivos del disco. Lo utiliza el kernel para guardar temporalmente información sobre el sistema y los procesos que están ejecutándose. Algunos de los archivos incluso se pueden modificar y usarse para poner a punto el comportamiento del sistema.


3.5.8. Binarios

La palabra binario es un término habitual con la que se designa cualquier archivo de datos en formato binario (de dos dígitos). Sin embargo, a menudo se usa como sinónimo de ejecutable. Así es habitual escuchar "¿dónde se encuentra el binario ttysnoop?" o "el binario se encuentra en el directorio /usr/sbin".


3.5.9. Imagen

En general, este término no se refiere a una foto o dibujo , sino a datos raw (de bajo nivel). Por ejemplo, los datos de un cd contiene el sistema de archivos ISO9660 y otros archivos. Puede usar la utilidad típica de UNIX dd para crear una imagen de dicho cd en el disco duro (la salida sería -obviamente- un único archivo raw, es decir, una copia exacta de bits del medio original). Esto significa que se verá como un dispositivo válido e incluso podrá montarlo en forma local (usando la opción 'loop')


3.5.10. Demonio

Un proceso del sistema que se ejecuta en segundo plano, generalmente durante largos períodos, y dedicado a satisfacer los pedidos de los usuarios. Ejemplos de demonios son httpd (Apache), telnetd, ftpd (ProFtpd) o sshd (Openssh).


3.5.11. X11R6, XFree86

Nombres para referirse al Sistema XWindow (nuevamente: "Sistema XWindow") que proporciona el entorno de ventanas (tanto en máquinas locales como remotas). XFree86 es una implementación open-source del protocolo X11 usado por la mayoría de los sistemas operativos libres actuales (véase el sitio web de XFree86).

X11R6 (el "Sistema XWindow") es un estándar industrial para aplicaciones informáticas basadas en ventanas.


3.5.12. RMS

Richard Matthew Stallman (ver foto), mítico hacker del MIT, fundador de la Free Software Foundation.


3.5.13. Curses

las bibliotecas curses (o las nuevas, ncurses), son un conjunto de rutinas que brindan al usuario un método independiente del terminal para actualizar pantallas de caracteres con una optimización razonable. La implementación Linux es ``new curses'' (ncurses) y constituye el reemplazo de las clásicas curses 4.4BSD, que han sido discontinuadas.

Por lo tanto, cuando decimos que apt-setup es una aplicación ncurses, queremos significar que tiene una agradable interfaz de usuario en modo texto con ventanas, menúes y botones. Las aplicaciones ncurses son, en general, muy convenientes y fáciles de usar. Encontré un enlace a un tutorial sobre programación con ncurses.


3.5.14. El tiempo UNIX

Hace referencia a la hora y fecha que el reloj del sistema toma como valor 0. En la mayoría de las versiones UNIX es 00:00:00 GMT, del 1 de enero de 1970; en VMS, es el 00:00:00 del 17 de noviembre de 1858 (fecha patrón de las efemérides del Observatorio Naval de los Estados Unidos) ; en una Macintosh, es el comienzo de la medianoche del primero de enero de 1904.

El tiempo del sistema se expresa en segundos o unidades de tiempo transcurridos a partir del tiempo patrón.


4. Administración básica del sistema

Este es el primer capítulo donde realmente hablaremos del sistema. Como es habitual, comenzaremos con los temas básicos, tales como la instalación de programas o el proceso de apagado del sistema. A continuación, diremos los pasos a seguir para la configuración del hardware (incluyendo el sistema gráfico X Window), haremos algunas sugerencias para tener en cuenta en instalaciones recientes de Debian y proporcionaremos ejemplos de uso de algunos paquetes de software opcionales.


4.1. Administración de paquetes

Lo primero que haremos será observar con detenimiento al sistema de administración de paquetes de Debian. Haremos un paseo por dpkg, apt y otras herramientas relacionadas con la administración de paquetes.

Nota Observación:
 

Todos las interfaces o frontales (dpkg, apt-get, synaptic, aptitute, dselect, ...) utilizan la misma base de datos. Esto significa que los cambios hechos por uno de ellos son tenidos en cuenta por las otras herramientas y, por lo tanto, no es necesario limitarse a usar sólo una de ellas.


4.1.1. dpkg

-i vim_6.0.093-1.deb

instala el paquete 'vim', versión 6.0.093, revisión Debian 1. Vale hacer dos observaciones:

  1. Es necesario saber dónde se localiza el archivo .deb y proporcionar su ruta completa.

  2. Dpkg no verifica dependencias de modo que vim se desempaquetará pero su configuración se postergará hasta tanto se instalen todos los paquetes que necesita (una tarea aburrida si se hace en forma manual, véase apt-get a continuación).

-r vim

elimina el paquete vim si no existen programas que dependan de él. Conserva en el sistema los archivos de configuración.

--purge vim

elimina el paquete vim y sus archivos de configuración.

--configure vim

configura el paquete vim.

--configure --pending

configura todos los paquetes pendientes

--get-selections

devuelve un listado con el estado actual de los paquetes del sistema según la base de datos de dpkg.

--set-selections

Fija el estado de los paquetes. Acepta la salida generada por la opción anterior. Por supuesto, también se puede usar para un único paquete: echo “vim hold” | dpkg --set-selections pondrá el paquete vim en 'hold' (al estar en hold, dpkg no lo tocará incluso si existen versiones nuevas disponibles). Una vez modificada la lista, utilice apt-get dselect-upgrade para instalar/desinstalar los paquetes del sistema.

--force-depends

esta opción puede utilizarse con dpkg, pero casi siempre hace que su base de datos se corrompa (debido específicamente al conflicto de versiones) y crea un caos absoluto entre dependencias. Si se desea usar posteriormente apt-get nunca emplee esta opción ya que automáticamente corromperá a apt (no obstante, puede usar 'apt-get -f install' para solucionar el problema).

-l

muestra el listado de paquetes instalados

-S /ruta/al/archivo

muestra a qué paquete pertenece el 'archivo'

-L vim

muestra todos los archivos instalados por el paquete vim


4.1.2. dpkg-reconfigure

dpkg-reconfigure es una herramienta para volver a configurar los paquetes con debconf activado (aquellos paquetes que utilizan a debconf para formular preguntas y obtener respuestas sobre la configuración local).

dpkg-reconfigure gpm

vuelve a configurar el paquete gpm. Esto es posible sólo si el paquete (gpm en este caso) se basa en debconf.

dpkg-reconfigure debconf

vuelve a configurar al propio debconf. Puede optar por modelos de configuración de paquetes interactivos o no. El modo no interactivo resulta conveniente cuando se realiza una instalación masiva de paquetes.

Sugerencia Sugerencia
 

A veces (debido a un fallo de la interfaz debconf de un paquete determinado), no podrá configurar con éxito el paquete. Esto es muy probable que ocurra de vez en cuando si usa la rama inestable de Debian. Ejemplos habituales son botones 'Aceptar' que en realidad no aceptan la entrada o campos de textos grisados. Una posible solución para este tipo de problema sería reconfigurar debconf en modo no interactivo para configurar el paquete problemático y volver luego al modo interactivo.


4.1.3. apt

El paquete apt proporciona algunas herramientas de la línea de comandos, necesarias para usar con éxito apt-get.


4.1.3.1. apt-setup

apt-setup (cuidado, pertenece al paquete base-config) abre una herramienta para configurar apt basada en ncurses. Básicamente, le permite editar el archivo /etc/apt/sources.list y luego actualizar los archivos de los paquetes (puede hacer lo mismo manualmente con apt-get update).

También vea el paquete netselect que selecciona en forma automática los servidores réplica más veloces.

Y todavía no hemos terminado: puede hacer telnet linuks.mine.nu para obtener fuentes apt interesantes.


4.1.3.2. apt-cdrom

Si tiene los paquetes en cds, use la utilidad apt-cdrom para indexarlos.

# apt-cdrom add


4.1.3.3. apt-get

apt-get es una utilidad de apt para el manejo de paquetes. Probablemente sea la manera más conveniente para instalar o eliminar paquetes, ya que calcula las dependencias y configura la lista de paquetes de forma automática.

Mientras dpkg le permite instalar cualquier paquete .deb (suponiendo que se satisfagan sus dependencias), no ocurre lo mismo con apt-get. Apt-get utiliza el archivo /etc/apt/sources.list como su lista de paquetes base; los analiza y crea una gran lista con todos los paquetes disponibles. Por lo tanto, haga lo que haga quedará restringido a los paquetes ya conocidos por apt. Esta forma es elegante y a la vez poderosa de encargarse de la administración de paquetes. Algunas tareas complicadas (como la actualización entera de toda la distribución a una nueva versión) resultan ser tan sencillas en Debian/GNU que ¡no lo podrá creer!

update

Obtiene y actualiza la lista de paquetes. Invóquelo cada vez que modifique el archivo /etc/apt/sources.list o diariamente si utiliza repositorios de apt remotos (aquellos que podrían modificar su contenido).

install vim

instala el paquete vim. Apt utiliza su base de datos interna para conocer la ubicación del paquete (que puede estar en algún cd, en Internet o en una réplica local de apt).

apt-get install vim=6.0.093-1

Lo mismo que antes pero instala en particular la versión 6.0.093-1 (utilice apt-cache para ver las versiones disponibles de un paquete determinado).

--reinstall install vim

el nombre lo dice todo.

remove vim

elimina el paquete vim (y posiblemente otros paquetes que dependen estrictamente de él).

--purge remove vim

Elimina completamente el paquete vim y otros paquetes que dependen estrictamente de él. Esto incluye los archivos de configuración que normalmente permanecen en el sistema.

upgrade

actualiza los paquetes del sistema. Que exista o no candidatos para la actualización dependerá de la réplica de apt y de nuestra base de datos local (si un paquete está en Hold no se tendrá en cuenta). Puede utilizar el parámetro -s para controlar qué paquetes en realidad serán actualizados.

Hace algún tiempo leí sobre una herramienta de Red Hat que permitía realizar actualizaciones a través de Internet pero que exigía el envío previo del listado de todos los paquetes de nuestro sistema (de este modo el servidor de RedHat podía compararlo con su base de datos e informar los nuevos paquetes disponibles). Apt no funciona de esta manera: en forma anónima obtiene la totalidad de los listados y en forma local decide qué paquetes nos son necesarios. Uno pensaría que es la única manera razonable de realizar una actualización, pero luego uno ve a gente de Red Hat ...

-f install

repara una instalación Debian. Realiza los pasos necesarios para recuperar el orden en la base de datos interna. Resulta práctico cuando se hizo uso de dpkg --force-depends (pero a menudo implica obtener la versión anterior de paquetes o desinstalaciones masivas).


4.1.3.4. apt-cache

Se puede utilizar apt-cache para consultar la base de datos de dpkg.

show vim

muestra la información interna del paquete vim (versión, tamaño, dependencias, conflictos, sugerencias, descripciones ...)

search vim

busca en la base de datos los nombres de paquetes o descripciones que contienen la palabra 'vim'.

--names-only

sólo busca en el campo que hace referencia al nombre del paquete (de otro modo busca en todos los campos).


4.1.3.5. Representación gráfica de la dependencia entre paquetes

apt-cache dotty toma un conjunto de nombres de paquetes desde la línea de comandos y genera una salida adecuada para ser usada por dotty que forma parte del paquete GraphViz. El resultado es un conjunto de nodos y ramas que representan la relación entre los paquetes. Por defecto, se muestran todas las dependencias de los paquetes dados como argumento lo que puede originar un gráfico extremadamente grande. Esto se puede deshabilitar fijando la opción APT::Cache::GivenOnly (man apt-preferences).

Los nodos resultantes tiene distintas formas. Los paquetes normales se representan mediante cajas, los 'provides' puros con triángulos, los 'provides' mixtos con diamantes y los paquetes faltantes con hexágonos. Las cajas naranjas significan que la recursión fue detenida, las líneas azules predependencias y las líneas verdes conflictos.

# apt-cache dotty vim | dot -Tps 
# apt-cache dotty $(dpkg --get-selections | grep -v deinstall | awk 'print $1') | dot -Tps packgraph.ps

Atención Atención
 

dotty no puede graficar conjuntos de paquetes muy grandes.


4.1.4. grep-dctrl

La utilidad grep-dctrl

El programa grep-dctrl (greps Debian control files) puede responder preguntas tales como

  • ¿Para qué sirve el paquete Debian lo_que_sea?

  • ¿Qué versión del paquete Debian lo_que_sea está vigente actualmente?

  • ¿Qué paquetes están a cargo de Juan Pérez?

  • ¿Qué paquetes Debian están de cierto modo relacionados con el lenguaje de programación Scheme?

  • y con un poco de ayuda: ¿Quiénes están a cargo de los paquetes esenciales del sistema Debian?

Es un programa grep adaptado para procesar cualquier archivo que tenga el formato genérico de un archivo de control de paquetes de Debian como se describe en el Manual de Empaquetamiento de Debian. Esto incluye el archivo 'available' y 'status' de dpkg y los archivos Packages (de un CD o de un sitio FTP Debian).

Vea los ejemplos de uso en la página del manual grep-dctrl(1).


4.1.5. debrecsug

Esta es otra herramienta que puede utilizar para ver los paquetes recomendados/sugeridos y que aún no forma parte de la distribución estándar de Debian.

El sitio de Erik Warendorf desde donde descargué el script parece que está fuera de servicio.


4.1.6. debfoster y deborphan

Herramienta para eliminar paquetes innecesarios de nuestro sistema. Su uso es trivial.

Por ejemplo, para eliminar todos los paquetes innecesarios haga:

# apt-get --purge remove `deborphan`


4.1.7. dpkg-repack

El paquete dpkg-repack nos brinda una herramienta para volver a juntar los archivos de un .deb desempaquetado. Reconstruye un archivo .deb a partir de un paquete debian que ya se encuentra instalado en el sistema. Si al desempaquetarlo se ha hecho algún tipo de modificación (por ejemplo, los archivos en /etc fueron modificados), el nuevo paquete heredará los cambios.

Esta utilidad puede facilitar la copia de paquetes de una computadora a otra o reconstruir paquetes que están instalados en su sistema pero que ya no se encuentran disponibles en ningún lugar.

# dpkg-repack vim


4.1.8. dpkg-divert

dpkg-divert fuerza dpkg a no instalar un archivo en su lugar habitual sino en otro diferente. Estos 'desvíos' se pueden usar en los scripts de los paquetes Debian para quitar un archivo cuando provoca un conflicto. Los administradores de sistema también pueden usarlo para no tener en cuenta algunos archivos de configuración o cuando algunos archivos (que no se encuentran marcados como 'conffiles') necesitan preservarse de dpkg al instalar una versión nueva de un paquete que los incluya.

Lo utilicé en la configuración de ttysnoop+ssh (ver más adelante):

# dpkg-divert --divert /bin/login.real --add /bin/login


4.1.9. dpkg-statoverride

Es la manera de decirle a dpkg al instalar un paquete que use un propietario o modo distinto para un archivo. Esto puede utilizarse para forzar a programas que se instalen sin el setuid root activado o únicamente ser ejecutado por un determinado grupo.

Consulte la página dpkg-statoverride(8) del manual para más detalles.


4.2. Familiarizándose con los mensajes del sistema

Resulta muy importante aprender cómo se comunica el sistema con los usuarios (o administradores). Uno siempre puede encontrar el origen exacto del problema y tomar las acciones adecuadas (tareas sencillas cuya eficacia ha sido demostrada y que ayudan en casi cualquier situación). Por esto, este capítulo ha tenido relevancia en la estructura del documento final.


4.2.1. Mensajes del arranque

Durante el arranque del sistema, el kernel muestra una gran cantidad de información interesante (salvo que le haya pasado la opción 'quiet'). La copia de estos mensajes se almacena en el archivo /var/log/dmesg (que aumenta de tamaño con el correr del tiempo).

El comando 'dmesg', no obstante, le mostrará los últimos 4 KB de los mensajes recientes del núcleo.


4.2.2. El demonio de registro del sistema

En UNIX existe un mecanismo estándar para el envío de mensajes provenientes de programas, aplicaciones y demonios al sistema de registro global ('syslog'). Existen pocas implementaciones de syslog y en Debian puede elegir entre el sysklogd del BSD tradicional (la utilizada por defecto en Debian), syslog-ng y msyslog.

Cada mensaje tiene una facilidad (fuente que dió origen al mensaje) y una 'prioridad' (severidad o nivel de importancia del mensaje). La fecha, hora y otra información es generada automáticamente por syslog. El demonio syslog distribuye los mensajes a archivos, tuberías, destinos remotos o usuarios, usando el esquema especificado en el archivo /etc/syslog.conf (en el caso del sysklogd del BSD tradicional).

Todos los registros de un sistema Debian básico ("directo de fábrica") se almacenan en archivos situados en el directorio /var/log/.

Nota Observación:
 

Nada impide especificar múltiples destinos para un mismo mensaje.

Para registrar todos los mensajes del sistema en un único archivo (para propósitos estrictamente educacionales :) añada una línea como la siguiente al /etc/syslog.conf:

*.* TAB /var/log/todos_los_mensajes

[TAB sirve para advertirle que en realidad tiene que presionar la tecla TAB. La barra espaciadora no sirve]. Cree el archivo vacío /var/log/todos_los_mensajes (elija su preferida, ambas variantes hacen exactamente lo mismo):

# touch /var/log/todos_los_mensajes
# > /var/log/todos_los_mensajes

Y vuelva a cargar la configuración del demonio sysklogd:

# /etc/init.d/sysklogd reload

Vaya a alguna consola virtual y escriba (consulte la página tail(1) del manual):

$ tail -f /var/log/todos_los_mensajes

Haga algo en su sistema (salga/entre al sistema o use 'su' en otra consola, por ejemplo, y ¡vea cómo aparecen los mensajes!). Esta es una excelente manera de aprender más sobre nuestro sistema y ver cómo funciona. También, es posible detectar cualquier anomalía u error que de otra manera pasarían desapercibidos.

Si está escribiendo scripts de shell o modificando su ~/.bash_profile, puede usar el comando 'logger' para registrar los mensajes vía syslog.

Nota Observación:
 

Prefiero que aparezcan todos los mensajes en /dev/tty12, lo cual facilita su análisis simplemente cambiando a la consola virtual 12 (Alt+F12). Si la mayoría del tiempo usa la interfaz gráfica X, considere el paquete root-tail que supervisa los archivos de registro e imprime los mensajes en la ventana raíz.


4.2.3. Mensajes de acceso a ppp

Resulta útil enviar todos los registros de ppp a /var/log/ppp.log; de esta manera el comando 'plog' funcionará como es de esperar. Lo siguiente añadirá una línea al /etc/syslog.conf y reiniciará el demonio sysklogd:

# echo "local2.* TAB /var/log/ppp.log" >> /etc/syslog.conf
# /etc/init.d/sysklogd restart

El TAB que se ve en realidad hace referencia a la tecla TAB y no a la palabra "TAB".


4.3. El Sistema X Window, principios básicos y su configuración en Debian

4.3.1. El proyecto XFree86: una implementación de código abierto del sistema X Window

De www.XFree86.org:

El Proyecto XFree86, Inc es la organización creadora del XFree86, una implementación open-source libremente distribuible del Sistema X Window que se ejecuta en sistemas UNIX(R) y en sistemas operativos del tipo UNIX tales como Linux, todas las variantes del BSD, Sun Solaris x86, Mac OS X (vía Darwin), así como en otras plataformas tales como OS/2 y Cygwin.

XFree86, el programa, proporciona una interfaz cliente/servidor entre el hardware (el ratón, el teclado y la placa de video) y el entorno de escritorio. Además brinda una estructura de ventanas y una interfaz de programación de aplicaciones estandarizada (API). XFree86 es extensible, independiente de la plataforma y trabaja en red en forma totalmente transparente.

Con XFree86 un usuario puede no sólo elegir el entorno de escritorio de su preferencia, sino que -al ser un proyecto de código abierto- puede también modificar y actualizar su sistema para que se vea de la mejor manera posible. Puesto que XFree86 siempre ha sido un partidario incondicional de la libertad del usuario de escritorio, los instamos a personalizar el mismo con la aplicación que deseen, ya sea KDE, GNOME, Enlightenment, Blackbox, AfterStep, fvwm o twm.

El objetivo de XFree86 es lograr que X se ejecute en cada una de las plataformas disponibles (incluídas aquellas que carecen actualmente de soporte) y que sea el mejor sistema de ventanas disponible en dicha plataforma.


4.3.3. Instalación de XFree86

Debian potato (2.2) viene con la versión 3.6.6 de XFree86 mientras que Debian woody (3.0) viene con la versión 4. Vea el estado actual en la página principal de X Strike Force.

X4 trae una gran cantidad de mejoras y actualmente es estándar en Debian. Desde el punto de vista de la administración no existe gran diferencia entre ambas versiones de X pero se harán las observaciones pertinentes en caso de ser necesario.

Puede instalar el soporte básico para X, el administrador de ventanas icewm y el administrador de pantalla wdm haciendo:

# apt-get install xserver-xfree86 xbase-clients xfonts-base icewm icewm-themes wdm 

Nota Observación:
 

Si está usando X3, escriba 'apt-cache search xserver-' e instale el servidor apropiado en vez del xserver-xfree86.

wdm es similar pero de mejor aspecto que el administrador de pantallas (abre una pantalla de acceso gráfico) xdm de X. Resulta útil tenerlo, en especial si se desea instalar diversos administradores de ventanas para luego seleccionarlos desde su menú. Si usa Gnome o KDE considere usar sus propios programas: gdm or kdm.


4.3.4. Configuración del servidor XFree86

Al instalar los paquetes el proceso de configuración se iniciará automáticamente. Si no logra hacerlo correctamente la primera vez, siempre es posible volver a configurarlos de la siguiente manera:

# dpkg-reconfigure xserver-common
# dpkg-reconfigure xserver-xfree86

La interfaz es muy sencilla y debería permitirle crear un archivo de configuración funcional inmediatamente. En caso de problemas, inspeccione en forma manual el archivo de configuración (/etc/X11/XF86Config-4 o /etc/X11/XF86Config) para asegurarse que tiene la opción Driver correcta y que la opción UseFBDev está deshabilitada (estos son los errores más usuales).


4.3.5. Ajustando la resolución en X

Al arrancar X, el servidor elige la profundidad de color adecuada (generalmente 8, 16, 24 o 32 bits), carga la lista de resoluciones disponibles para dicha profundidad y muestra la elegida por defecto. Puede alternar entre las resoluciones definidas con Ctrl+Alt+'+'.

Todo esto se configura en el /etc/X11/XF86Config-4. Veamos un extracto de una configuración con una profundidad de color de 16 bits y con una resolución predeterminada de 1024x768:

...
Section "Screen"
...
DefaultDepth 16
SubSection "Display"
Depth 1
Modes "1152x864" "1024x768" "800x600" "640x480"
EndSubSection
...
SubSection "Display"
Depth 16
Modes "1024x768" "800x600" "640x480"
EndSubSection
...
EndSection
...

Para arrancar en forma explícita con una profundidad de color de 16 bits (si no existe la opción DefaultDepth o resulta ser diferente), haga:

startx -- -bpp 16

Si desea seguir experimentando con las velocidades de actualización y resoluciones, modifique manualmente las opciones VertRefresh, HorizSync y Modeline (únicamente X3) del archivo de configuración de X o consulte Directivas de OpenBSD para X.

Nota Observación:
 

Puede usar Ctrl+Alt+signo_más/signo_menos para alternar las resoluciones en tiempo de ejecución.


4.3.6. Autodetección de dispositivos

Para tomar ventaja de cierto tipo de autodetección de dispositivos, vea los siguientes programas:

  • read-edid, herramienta para obtener información sobre el hardware de monitores PnP VESA

  • mdetect, herramienta para la autodetección del ratón

  • discover, identificación del hardware del sistema


4.3.7. El modelo cliente-servidor

Puesto que X está basado en un modelo cliente-servidor (como la mayoría de las cosas en UNIX), se tiene todo un abanico nuevo de características a nuestra disposición. Las discutiremos en lo que sigue.

  • Sesión típica usuario-local/máquina-local

    Cuando inicia X (mediante startx, xinit o X), se abre la primera consola virtual libre (la consola 7 en la mayoría de las distribuciones Linux) y arranca el servidor X (el servidor X usa la variable de entorno DISPLAY para detectar la pantalla objetivo que en este caso es “localhost:0”; “:0” o la variable DISPLAY sin definir tienen el mismo efecto). Éste entonces ejecuta el administrador de ventanas de su preferencia y aparece la pantalla de su escritorio. Puede volver a sus consolas en modo texto mediante Ctrl+Alt+F1, F2 etc... Para volver a su pantalla X use Alt+F7. Para cerrar una sesión X puede buscar algún botón para salir de su administrador de ventanas o usar Ctrl+Alt+Backspace. Así como es posible tener distintas consolas de texto virtuales es posible tener distintas pantallas X en un mismo dispositivo de video (incluso, obviamente, bajo diferentes nombres de usuario): Inicie X (mediante el comando startx& command)), luego vuelva a la consola de texto con Ctrl+Alt+F1, y ejecute 'startx -- :1&'. ¡Felicitaciones! Ahora cuenta con dos sesiones X ejecutándose. Alterne entre una y otra con Ctrl+Alt+F7 y Ctrl+Alt+F8.

  • Ver un programa remoto en nuestra máquina

    Suponga que tiene dos máquinas: Monarch y Denali. Está sentado frente a Denali y le gustaría iniciar algún programa X en Monarch pero que se muestre localmente en el monitor de Denali (OBSERVACIÓN: no se trata de un simple intercambio de archivos. En este caso, el programa realmente se ejecuta en Monarch y sólo su visualización se envía a Denali). Utilizaremos un enfoque muy conveniente (existen otras maneras, por supuesto) - utilizaremos el programa slogin (forma parte del paquete ssh) para ingresar a Monarch. slogin configurará el archivo .Xauthority y la variable DISPLAY en forma automática y todo lo que necesitaremos hacer será lanzar nuestra aplicación. Pruebe con xeyes. Veamos el ejemplo:

denali:~$ slogin monarch
Enter password: xxxxx
monarch:~$ echo $DISPLAY
denali:0
monarch:~$ xeyes&

Nota Observación:
 

Debe tener las siguientes opciones activadas para que el ejemplo anterior funcione: X11Forwarding en /etc/ssh/sshd_config y ForwardX11 en /etc/ssh/ssh_config. Para reiniciar el demonio ssh haga /etc/init.d/ssh restart


4.3.8. La Infraestructura de Renderizado Directo (DRI)

Veamos una breve introducción del archivo Documentation/Configure.help (paquetes kernel-doc-*):

AGP (Puerto Acelerador Gráfico) es un bus del sistema que se utiliza principalmente para conectar tarjetas gráficas. Si tiene un sistema AGP, será posible aprovechar las características AGP del renderizado 3D de su tarjeta de video. Obsérvese que ésta es la única manera de poder usar XFree4/GLX junto con el soporte MTRR del bus AGP. Sin él, el renderizado directo OpenGL será un poco más lento pero aún así más rápido que PIO.

El soporte de la Infraestructura de Renderizado Directo (DRI) a nivel del kernel fue introducido en XFree86 4.0 (que lo tendrá si usa Debian Woody (3.0) o versiones posteriores).


4.3.9. Observaciones

X3 posee menos controladores y debe instalar alguno de ellos para un determinado grupo de tarjetas gráficas (por ejemplo, xserver-rage128, mach32, mach64, i128, 3dlabs, agx, 8514, s3v etc...). En X4, lo solucionamos instalando únicamente el servidor xserver-xfree86 que es modular y que carga el módulo adecuado en tiempo de ejecución. El archivo de configuración para X4 es /etc/X11/XF86Config-4 y /etc/X11/XF86Config el del antiguo X3.


4.3.10. Resolución de problemas

  • Analice los archivos /var/log/XFree86.log y ~/.xsession-errors en busca de pistas.

  • edite el /etc/X11/XF86Config-4, busque la línea Option "UseFBDev" "true y reemplace 'true' por 'false'

  • Si sigue sin funcionar, edite el parámetro de configuración Driver=.

  • Si aún no funciona y suponiendo que la elección del controlador es la correcta trate de modificar los valores HorizSync y VertRefresh. Pruebe con: HorizSync 30-80 VertRefresh 40-90

  • Asegúrese tener instalado algún administrador de ventanas, haga apt-get install icewm.


4.3.11. Administradores de ventanas

Ya tiene el sistema X Window. Dejémoslo en claro: se necesita un servidor X porque es el que sabe cómo comunicarse con nuestro hardware para mostrar gráficos. Pero eso es todo lo que hace. El aspecto de su interfaz en realidad depende exclusivamente del 'administrador de ventanas' que utilice. Si siguió mi explicación, probablemente esté usando icewm pero existen muchos otros (al instalarlos, arrancan por defecto o se muestran en el menú de wdm). Pruebe wmaker, blackbox, afterstep, xfce o enlightenment. También twm al menos por razones históricas y para entender el folklore de Unix ;)

No se sienta decepcionado por el aspecto de wdm o icewm (cada cual tiene su gusto), existe una inmensa variedad para elegir; visite el sitio web Gestores de ventanas para X.

Para conseguir un programa que muestre una pantalla de acceso gráfico (de modo de no tener que entrar en la consola y escribir cada vez 'startx'), instale el paquete wdm (o cualquiera de sus equivalentes; xdm, kdm o gdm). A partir de ahora, podrá seleccionar desde el menú el administrador de ventanas que desea utilizar.

También es posible ejecutar X sin el administrador de ventanas (generalmente para efectuar pruebas). Pruebe arrancar 'xinit'.


4.3.12. Fuentes en X

Las fuentes disponibles se encuentran en los paquetes xfonts-*. Escriba el siguiente comando para buscarlas:

# apt-cache search xfonts-

Si está interesado en usar las fuentes ttf de Microsoft, hay servidores de fuentes que pueden manipularlas y les recomendaría probar xfstt. No viene acompañado de fuentes debido a las licencias propietarias. Esto significa que tendrá que conseguir las fuentes ttf por su cuenta, copiarlas en /usr/share/fonts/truetype/, añadir FontPath “unix/:7101” en el /etc/X11/XF86Config, exec '/etc/init.d/xfstt restart' y reiniciar X.

Para visualizar las fuentes instaladas, recurra a los programas xfontsel o gfontview.

Tambiém, consulte el archivo http://www.linuks.mine.nu/fonts/readme.


4.3.13. Gpm y el XFree86

Es muy probable que tenga problemas con gpm (el controlador para consola del ratón) y XFree86 ejecutándose simultáneamente. La solución consistiría en asignar 'raw' al tipo de repetición en el archivo de configuración de gpm y /dev/gpmdata al 'mouse device' en el archivo de configuración de X, pero no siempre se obtienen buenos resultados. Prefiero tener gpm deshabilitado.


4.4. Consolas virtuales

4.4.1. Configuración de las consolas virtuales en el /etc/inittab

Prácticamente todas las distribuciones GNU/Linux vienen acompañadas de 'consolas virtuales' predefinidas - es decir consolas emuladas a las que es posible acceder mediante la combinación de teclas Alt izq. + F1-F6 (por defecto, sólo se encuentran habilitadas 6 consolas). También, resulta posible usar la línea de comandos para alternar entre ellas - véase el comando chvt.

Para agregar más consolas virtuales, edite (siendo superusuario, por supuesto) el archivo /etc/inittab y añada más líneas similares a éstas:

5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

[Se puede ver qué campos deben modificarse]. Para que los cambios en el archivo surtan efecto, hay que salir del editor de texto y escribir init q.

Si se crean más de 12 consolas no se podrá acceder a ellas mediante la tecla ALT (pues se cuenta con sólo 12 teclas F). En este caso use la tecla AltGr para abrir las consolas 13 - 24. También es posible alternar en forma cíclica entre las consolas activas mediante Alt + flecha_izquierda o flecha_derecha. La combinación de teclas Alt+Impr_pant permite volver a la última consola virtual donde estuvimos.

Si desea ir de X a una consola, necesita usar Ctrl+Alt en vez de Alt.

El comando deallocvt libera la memoria asociada a las terminales virtuales que ya no se usan [por las aplicaciones, no por Ud. obviamente]. Ya no resulta tan importante, pues posiblemente disponga de gran cantidad de ram y unos pocos bytes no significarán absolutamente nada.


4.4.2. El tamaño de las fuentes VGA de la consola

Si no le agradan esas letras grandes de la consola, ejecute lo siguiente:

# lilo -R 'linux vga=ask' ; reboot

Esto configurará los parámetros de LILO en el siguiente arranque (linux vga=ask) y reiniciará (reboot) nuestra máquina (la elección del modo vga sólo puede hacerse durante el arranque a menos que haya usado el paquete 'svgatextmode' lo cual no es recomendable). Cuando encuentre un modo vga a su gusto, edite el archivo /etc/lilo.conf para hacer el cambio permanente:

image=/vmlinuz
label=Linux
read-only
# Añada la siguiente línea
append="vga=X"

[debe reemplazar X por el valor elegido, pruebe con '6' por ejemplo]. Ejecute a continuación 'lilo' para que tenga lugar los cambios.

Si ve un pingüino en la esquina superior izquierda de su pantalla, está usando un framebuffer (modo VESA). En este caso, existen más modos disponibles, consulte la tabla de la página del Framebuffer HOWTO.


4.4.3. Tipos de fuentes para la consola

Instale el paquete fonter para crear/editar sus propias fuentes o usar las fuentes estándar que pueda conseguir:

$ consolechars -f /usr/share/fonter/crakrjak.fnt
$ consolechars -f /usr/share/fonter/elite.fnt
$ consolechars -f iso01.f16


4.4.4. Las distribuciones de teclado de la consola

Para ver la distribución de teclado actual, escriba simplemente:

$ dumpkeys > keymap

Tras configurar el archivo 'keymap' de acuerdo con sus necesidades, vuelva a cargarlo con el comando loadkeys.

Sólo para ver cuan avanzada es la consola Linux, ejecute el programa loadkeys y escriba lo siguiente:

string F1 = "¡Hola, Mundo!"
[Ctrl+d]

Luego presione simplemente la tecla F1 para ver el resultado.


4.5. Observaciones generales sobre el soporte de hardware

Hacer que funcione una pieza de hardware es una tarea bastante sencilla (auque en el pasado no fue así por lo que la comunidad de desarrolladores la trataron siempre con el debido respeto). Básicamente, debe ser capaz de categorizar su hardware y saber cómo se configuran determinados dispositivos bajo Debian GNU o Linux.

  • Los discos duros y las lectoras de CD están soportadas por el kernel.

  • Las tarjetas de sonido y de red están soportadas por el kernel. Las preferencias de audio se guardan en el archivo de configuración de un programa mezclador (aumix, por ejemplo) y la información referente a la configuración de la red se encuentra en el archivo /etc/network/interfaces; consulte la página del manual interfaces(5).

  • Los adaptadores gráficos pueden usar el soporte del kernel (principalpente para la utilización de AGP y la aceleración por hardware) pero los controladores son generalmente módulos del servidor XFree. Los puede configurar haciendo dpkg-reconfigure xserver-xfree86.

  • Los ratones son soportados por la consola mediante el paquete gpm o por el servidor gráfico X. No obstante, el kernel necesita soporte del puerto en donde se encuentra conectado el ratón (serie, PS/2, USB ...). Utilice gpmconfig o dpkg-reconfigure xserver-xfree86.

  • Los módems (los verdaderos, no los winmódems) no requieren de algún controlador en especial. Son soportados por el controlador del puerto en serie del kernel que casi con certeza ya esta habilitado en su máquina. Si posee un winmódem, simplemente olvídelo (dar soporte a dispositivos que son de pésimo diseño no tiene mucho sentido en el mundo Debian). Configure su conexión a Internet a través de la red telefónica con la utilidad pppconfig.

  • Escáneres, cámaras digitales y dispositivos USB utilizan los "controladores" del kernel o los proporcionados por el usuario (dependiendo del modelo y diseño del controlador). No obstante el kernel necesita tener incluído un soporte básico para ellos.

Debian GNU posee una excelente herramienta para la configuración de los módulos del kernel: la utilidad modconf. No obstante, todo lo referente a los módulos del kernel es trivial. Existen tres comandos básicos (modprobe, rmmod, lsmod) y un conjunto de módulos situados en el directorio /lib/modules/`uname -r` para elegir. Por ejemplo, para cargar el controlador de una placa de red 3Com y un chip de audio integrado VIA de AMD tendría que hacer (sin recurrir a modconf):

# modprobe 3c59x
# modprobe via82cxxx_audio

Y para que se realice la carga de los módulos en cada arranque, debe añadirlos al archivo /etc/modules.

Si desea proceder de esta manera, deberá conocer los nombres de los módulos. Hasta que que adquiera cierta experiencia use modconf.

Nota Observación:
 

Si planea compilar su propio kernel use sin dudarlo el paquete auxiliar kernel-package (específicamente, el comando make-kpkg) que le evitará un montón de problemas. Lea el otro documento que escribí que trata la compilación en Debian GNU.


4.6. Habilitando el ratón en consolas de texto

Resulta muy útil poder utilizar el ratón en consolas de texto. Es posible copiar una porción de texto seleccionándolo y pegándolo con el segundo o tercer botón.

Instale el paquete 'gpm' y automáticamente le pedirá su configuración. Si desea postergarla o si lo hace en forma incorrecta siempre resulta posible volver a ejecutar la herramienta de configuración (llamada gpmconfig) con posterioridad.

Veamos un ejemplo para mi ratón con rueda. Respondí lo siguiente a las preguntas formuladas por gpmconfig:

  • ¿Dónde se encuentra su ratón? /dev/psaux (éste es el puerto PS2, use /dev/ttyS0 o /dev/ttyS1 para los puertos serie 1 y 2).

  • ¿Qué tipo de ratón es? imps2 (la mayoría de los ratones funcionan con imps2 o ps2. Pruebe con 'ms' o 'bare' para ratones seriales)

  • ¿sensibilidad? *dejar en blanco*

  • ¿protocolo de repetición? use 'none'

  • ¿otros argumentos? *dejar en blanco*

Pruebe la configuración y disfrútela.


4.7. El rendimiento de su disco duro

Para ver cuán bueno resulta ser, use la utilidad hdparm, cambie al modo 'single' y pruébelo:

# apt-get install hdparm
# init s
# sync
# hdparm -tT /dev/hda
# init 2

En máquinas PC de ~1 Ghz PC, verá lecturas de caché de alrededor de 180 MB/sec y discos sin búfer de alrededor de 35MB/sec. No obstante, los resultados pueden variar. Si comprueba un rendimiento pobre (pueden obtenerse valores tan bajos como 2MB/sec), recompile el kernel y haga nuevamente la prueba; es muy probable que compruebe mejoras notables. Si es aventurero, use hdparm e intente poner a punto los parámetros del disco duro; vea si mejora las cosas.


4.9. Firewalls

4.9.1. ¿Qué es un firewall?

Esta pregunta tenía poco sentido hace pocos años (año <1997) pero actualmente parece ser una necesidad cuando casi todo se esconde detrás de interfaces gráficas y hay chicos que pasan su tiempo aprendiendo destrezas que casi nunca tienen aplicación en la vida real (como saltar de máquina en máquina al igual que en el Quake).

De todas formas, vayamos al tema. Ejecutar una máquina UNIX implica una gran cuota de responsabilidad, en especial hoy donde la mayoría de las personas tienen en sus hogares conexiones a Internet de alta velocidad. Los sistemas UNIX no hacen una diferencia fundamental entre los usuarios locales y los remotos. Cualquiera que consiga acceso a su máquina (especialmente a cuentas privilegiadas) puede comprometer a su sistema y a otras máquinas de su red o atacar a otros sitios de Internet y borrar sus pistas. Dependiendo del éxito del ataque, le queda como consuelo el acceso físico a la máquina y la habilidad de reinstalar todo (dejando de lado las copias de respaldo que no hizo).

Por lo tanto, introduciremos el tema de los firewalls:

Un firewall es un conjunto de programas relacionados, situados en la puerta de enlace (gateway) de una red o en la máquina del usuario, que protege los recursos privados del [ab]uso de usuarios no autorizados. En pocas palabras, un firewall examina cada paquete de la red para determinar si debe enviarlo a su destino. Un firewall a menudo está en una computadora especialmente destinada para este fin y separada del resto de la red de modo que ninguna solicitud entrante pueda acceder directamente a los recursos de la red.

Esto significa que usaremos un firewall para controlar el acceso a nuestra máquina teniendo presente de distinguir entre las conexiones iniciadas por nosotros y aquellas iniciadas por usuarios remotos.

Atención Atención
 

Instalar y configurar un firewall de ninguna manera es suficiente para hacer cumplir la política de uso de un sitio o proporcionar un nivel de seguridad satisfactorio pero constituye una gran diferencia en comparación con un sistema básico ('salido de fábrica'). [Tener un auto no lo hace conductor, pero satisface un requisito previo fundamental].


4.9.2. Configurando un firewall en Debian GNU/Linux

En Linux, los firewalls han evolucionado. Las antiguas versiones 2.0 del kernel usaban ipfwadm, 2.2 tenían las ipchains y la rama actual estable 2.4 ostenta el flamante netfilter, visto con buenos ojos incluso por aquellos que siempre han preferido los sistemas BSD para esta tarea.

En el caso de netfilter la parte del usuario viene dada por el paquete iptables que es una interfaz de bajo nivel vinculada con las funciones de un firewall con lo cual algunas personas (sí, incluído yo) acostumbran usar frontales; me he dado cuenta que ferm es el frontal. ferm es un 'analizador sintáctico de reglas de firewalls para linux diseñado para configurar y encargarse de reglas de firewall complicadas'. Más que suficiente.

# apt-get install ferm

Ahora veremos cúal es el aspecto de la configuración genérica de un firewall sencillo. Seguiremos la siguiente política: inhabilitar todo, permitir únicamente el puerto 113, especificar en forma manual las IP y el tráfico iniciado de nuestro lado. Debería leer la página del manual de ferm y los ejemplos de /usr/share/doc/ferm/examples/, pero veamos mis sugerencias para poder proseguir:

# /etc/security/ferm.rules
# Siéntase libre de reubicar este archivo en cualquier lugar.

# Opciones
option automod
option iptables
option clearall
option createchains

# Política predeterminada. Descartamos todos los paquetes
chain input policy drop;
chain output policy drop;
chain forward policy drop;

# Aceptamos todo lo que sale y todos los mensajes ICMP que entran.
# TODO: actualizar esto.
chain output accept;
chain input proto icmp accept;

# En las interfaces lo y eth0, aceptar todo lo que se encuentra
# en el rango de direcciones. Registrar y descartar paquetes que
# que no provengan de allí.
# TODO: hacer que se vea en forma adecuada

chain input if ( eth0 lo ) {
(1) saddr 192.168.7.110/24 accept;
saddr 127.0.0.1 accept;
drop log;
}

# Conexión a Internet.
# Aceptar todo lo proveniente de 129.70.28.189 y 161.53.41.91
# Aceptar todo lo que provenga de nuestro puerto identd (113)
# Aceptar todo lo que pertenezca a la conexiones establecidas
# o relacionadas.
# Registrar y descartar el resto.

(2)chain input if ppp0 {
saddr 129.70.28.189 ACCEPT;
saddr 161.53.41.91 ACCEPT;

proto tcp dport 113 ACCEPT;

state (established,related) ACCEPT;

drop log;
}

(1)
En el ejemplo se supone que la dirección IP local de su máquina es 192.168.7.110 y la máscara de red 255.255.255.0. Ajustar la IP de la máquina (con netmask probablemente sea suficiente).
(2)
Se supone además que su conexión a Internet es a través de la red telefónica y mediante ppp0. Modifique esto teniendo en cuenta su configuración.

Sugerencia Sugerencia
 

Si en las reglas utiliza las opciones dport o sport, también debe incluir la especificación proto tcp o la udp.

Para activar las reglas:

# ferm /etc/security/ferm.rules

También puede añadir este comando al script /etc/ppp/ip-up para que arranque automáticamente cada vez que realiza la conexión.


4.10. Configurando enmascaramiento IP/NAT

Múltiples computadoras pueden compartir una única conexión (generalmente a Internet) instalada en la puerta de enlace. El procedimiento para configurarla es trivial:

  • En la máquina 'servidor'

# apt-get install ipmasq

  • En las máquinas clientes

# route add default gw [server.ip]

Para que los cambios en el lado del cliente sean permanentes, añada la opción 'gateway' al archivo /etc/network/interfaces. También, asegúrese que los archivos /etc/resolv.conf de las máquinas clientes sean válidos (sirve copiarlos desde la máquina principal si sustituye las referencias a 127.0.0.1 por la IP real del servidor).

Nota Observación:
 

Si esto no le funciona (si obtiene errores del tipo 'Operation not permitted' incluso en la máquina 'servidor'), pruebe hacer '/etc/init.d/iptables stop').

Para portátiles o computadoras que a menudo cambian su entorno de red consulte el paquete divine.


4.11. Acceso al sistema, shell de inicio y archivos de configuración

4.11.1. El sistema getty

Ya antes hemos mencionado al archivo /etc/inittab. Durante el arranque del sistema, el proceso init (que es el primer proceso que ejecuta el núcleo y siempre tiene el PID igual a 1) lee este archivo y, entre otras cosas, inicializa las consolas virtuales generalmente iniciando el comando getty en ellas. El sistema getty habilita el indicador de acceso en las consolas especificadas y queda a la espera de usuarios.

Cuando ingresa su nombre de usuario y contraseña, su pedido de autenticación alcanza la capa PAM (Pluggable Authentication Modules), donde se comprueba su validez (usando las reglas /etc/pam.d/login); generalmente la verificación incluye la lectura de los archivos /etc/passwd, /etc/group y /etc/shadow para confirmar la contraseña del usuario y la fecha de caducidad. Nótese que estamos hablando aquí sobre la configuración predeterminada. El sistema PAM tiene una infinidad de opciones de configuración y no debería ser muy difícil poder usar analizadores de retina en vez de contraseñas para autenticar usuarios.

En un principio, PAM fue desarrollado por Sun Microsystems pero la gente de Linux mantiene un árbol de desarrollo de Linux-PAM bastante compatible. Para obtener los manuales para el desarrollador, administrador y usuario de Linux-PAM busque en el sitio FTP de kernel.org (la documentación de PAM no se encuentra www.tldp.org).

Nota Observación:
 

Getty espera a que acceda al sistema, pero si la primera vez no logra autenticarse con éxito el siguiente indicador de acceso que verá no será servido por getty sino por el propio programa /bin/login. Tiene casi el mismo aspecto, pero espero que sepan apreciar la diferencia. Verán nuevamente el verdadero getty cuando finalicen de hacer su trabajo y salgan del sistema, o bien cuando alcancen el límite máximo de intentos de acceso. En estos casos el /bin/login finalizará y el proceso init iniciará otro getty en la consola.


4.11.2. El intérprete de comandos

Si PAM le da luz verde, el programa login inicia un intérprete de comandos o shell (cúal de ellos dependerá del último campo de su registro situado en /etc/passwd). A continuación, el intérprete:

  • Ejecuta el /etc/profile

  • Ejecuta el archivo punto ~/.bash_profile o el ~/.profile si el primero no existe

  • Por último, proporciona el indicador del intérprete de comandos (shell).

Nota Observación:
 

El usuario root NO lee el /etc/profile y su archivo punto se encuentra en /root/.profile. Sólo se trata de una convención. El archivo punto del superusuario no es usado necesariamente por el sistema ya que ~/.bash_profile tiene prioridad si se encuentra presente.

Asimismo, el ~/.bash_profile es leído sólo si utiliza el shell bash (consulte el último campo de 'getent passwd $USER'). Si su intérprete de comando es /bin/sh o algún otro, sólo se leerá el archivo ~/.profile (si es que existe).


4.12. Cuentas de usuario

Si ingresó al sistema como superusuario cree una nueva cuenta de usuario con el comando 'adduser' y reabra la presente guía. La cuenta de superusuario (root) debe utilizarse únicamente para tareas administrativas y con el debido cuidado. Para ilustrar por qué se desalienta el uso de la cuenta de superusuario para tareas cotidianas, citaré un buen resumen de los dichos de usuarios Debian en el canal IRC #debian@OPN:

Se ha dicho que la cuenta de superusuario es una cuenta administrativa: úsela sólo cuando necesite el poder del usuario root. Por lo tanto, no lea el correo, compile programas o ejecute aplicaciones como superusuario. Ni siquiera piense usar irc siendo superusuario pues aumenta el peligro de vulnerabilidades y troyanos (tales como bliss).

Si visita #debian on irc.openprojects.net, y sus miembros comprueban que se ha conectado como superusuario es altamente probable que lo pongan en evidencia.

Siempre debe entrar al sistema como usuario normal y cambiar el ID del usuario actual al del root sólo cuando sea necesario usando el comando 'su' (o instalando mecanismos de control avanzados como, por ejemplo, 'sudo').


4.13. Accediendo a la cuenta de superusuario sin la contraseña

El problema radica en que cada vez que se desea cambiar a root es necesario ingresar siempre la contraseña. Para evitarlo (es decir para adquirir privilegios de superusuario sin la contraseña), edite el archivo /etc/group y agregue la siguiente línea (en cualquier lugar)

wheel:x:28:usuario1,usuario2

en /etc/pam.d/su descomente la línea (quite el signo # del comienzo o copie la línea si no está)

auth sufficient pam_wheel.so trust

Esto permitirá a los usuarios 'usuario1' y 'usuario2' escribir 'su' y adquirir privilegios de root sin tener que ingresar la contraseña. Asimismo, les permitirá iniciar procesos como superusuario mediante comandos: su -c '/comando/a/ejecutar con argumentos'.

Sugerencia Sugerencia
 

Para comprobarlo por primera vez, salga por completo del sistema e ingrese nuevamente para actualizar la información referente a los grupos.

Atención Atención
 

Obsérvese que una vez hecho esto, la seguridad del sistema dependerá de las contraseñas de las cuentas de los usuarios usuario1 y usuario2.


4.14. Control de accesos

Puesto que la mayoría de las cuentas en nuestra máquina se usarán en forma local no querrá que otras personas accedan al sistema en forma remota ¿no es cierto? (se necesita la contraseña de una cuenta para ello pero es posible obtenerla más fácilmente de lo uno se imagina). Edite el archivo /etc/security/access.conf, lea la breve información que se acompaña y añada lo siguiente:

-:usuario1 usuario2:ALL EXCEPT LOCAL

Esto deniega a las cuentas usuario1 y usuario2 el acceso al sistema desde cualquier ubicación salvo desde nuestra propia máquina.

Sugerencia Sugerencia
 

Para que sshd reconozca las restricciones, necesita escribir la directiva 'UseLogin Yes' en el archivo /etc/ssh/sshd_config y reiniciar sshd (/etc/init.d/ssh restart).


4.15. Los limitadores de TCP

Actualmente, los limitadores de TCP (Tcp wrappers) son parte estándar de Debian y permiten controlar de forma sencilla el acceso a los servicios del sistema (la mayoría de ellos lanzados por el meta-demonio inetd). Si desea deshabilitar todo los servicios a direcciones remotas, debe comprobar que el archivo /etc/hosts.allow esté vacío y añadir la siguiente línea al archivo /etc/hosts.deny:

ALL: ALL EXCEPT LOCAL 127.0.0.1: DENY

Para más información (incluyendo cómo activar los comandos del sistemas ante peticiones entrantes) lea las páginas del manual hosts_access(5) y hosts_options(5).

Nota Observación:
 

Un limitador de tcp y un firewall tienen muy poco en común; el nivel en el que tiene lugar la decisión de permitir/denegar el paquete es radicalmente diferente. En un firewall, ocurre en el nivel más bajo, a nivel paquete: el paquete en cuestión, un puerto ftp por ejemplo, puede ser descartado por el firewall tan pronto sea recibido por el hardware de la red y procesado por la capa de red del sistema operativo (no alcanzará ni siquiera al demonio ftp). Con el limitador de tcp, el paquete alcanza su destino (o, por lo menos, a inetd). La comprobación de la validez del pedido generalmente se realiza antes que el servidor genere un nuevo proceso hijo para servir al pedido entrante.


4.16. Desempaquetar en forma manual archivos .deb

De vez en cuando deseará desempaquetar un archivo .deb para ver su contenido (o para recuperar algunos archivos del sistema). Afortunadamente, los archivos .deb de Debian no necesitan de herramientas especiales para ser desenpaquetados. Se trata de simples archivos 'ar' que contienen dos archivos: data.tar.gz y control.tar.gz. Veamos algunos ejemplos:

  • Usando dpkg para desempaquetar el contenido de un archivo .deb a un directorio arbitrario:

    $ dpkg -x paquete.deb /tmp/paquete

  • Usando 'ar' para desempaquetar el archivo empaquetado y comprimido data:

    $ ar x paquete.deb data.tar.gz

  • Usando 'ar' para desempaquetar el archivo empaquetado y comprimido control:

    $ ar x paquete.deb control.tar.gz

Nota Observación:
 

Si no es cuidadoso al actualizar/instalar una versión anterior del paquete libc gnu de su sistema es muy probable que pierda el comando /sbin/ldconfig y la mayoría de las cosas que haga fallará por este motivo. Si es por eso que está leyendo esta sección, una solución consiste en desempaquetar manualmente el paquete libc6 y copiar el comando ldconfig nuevamente en su lugar; otra cosa que puede hacer es crear un ldconfig vacío lo que solucionará el problema:

# echo "#!/bin/sh" > /sbin/ldconfig
# chmod 755 /sbin/ldconfig


4.17. Comprobando las sumas MD5 de los paquetes Debian instalados

A menudo, resulta útil verificar los archivos de su sistema, para detectar modificaciones no autorizadas o sólo para recordar qué archivos modificó alguna vez haga

# apt-get install debsums
# debsums [package]


4.18. Sesiones compartidas

Las sesiones en terminales compartidas por diversos usuarios pueden ser muy útiles. En algunas ocasiones, me pidieron que configurara máquinas en forma remota (tales como controladores para tarjetas de audio o soporte para XFree86) y permitiera un seguimiento completo de mis acciones (para fines educacionales y de control).

Es posible lograr este seguimiento usando screen o ttysnoop.


4.18.1. screen

Usar screen para establecer sesiones compartidas resulta muy sencillo pero requiere la cooperación de ambas partes (debe confiar en el otro extremo) e implica compartir contraseñas (lo que no es bueno si se convierte en hábito). Todo lo que debe hacer es entrar como, por ejemplo, 'usuario1' (ssh -l usuario1 localhost) y ejecutar 'screen', luego esperar que la otra parte entre al sistema (con el mismo nombre de usuario obviamente) y ejecutar 'screen -x'.

(Este truco fue proporcionado por electr0n@OPN).


4.18.2. ttysnoop

ttysnoop es una herramiente trivial pero muy conveniente que puede se usar para compartir, monitorear o controlar las terminales de usuario. Si ambas partes cooperan, ttysnoop en sí no necesita ninguna configuración especial (con exepción, quizás, del archivo /etc/snooptab): una inicia el servidor ttysnoops y el otro el cliente ttysnoop. No obstante, lograr que al instalarlo ttysnoops se inicie durante el acceso al sistema requiere de algunos cambios en los archivos de configuración del mismo.

Veremos ahora cómo reemplazar el programa login del sistema con ttysnoops y cómo habilitarlo para conexiones ssh. Como ya hemos dicho, el procedimiento es delicado por lo tanto comentaremos cada línea que deberá ejecutar en su intérprete de comandos.

Atención Atención
 

Se modificará el archivo /bin/login que es una parte importante de todo sistema UNIX. Esto significa que se verán afectadas todas las aplicaciones que usan /bin/login; en otras palabras, para aquellos usuarios que posean la contraseña de superusuario les resultaría posible monitorear y controlar el flujo de datos establecido (sin contraseña de superusuario, lo podrían hacer de todas maneras pero NO *tan* fácilmente). No notará ningún cambio visual pero recuerde que el servidor ttysnoop se interpondrá entre el programa login y el usuario remoto (/dev/ttyp*). Si desea que determinados servicios no utilicen el pseudo /bin/login, configúrelos para que utilicen el /bin/login.real como programa de acceso (esto es exactamente lo que hicimos con el sistema getty).

(1) # dpkg-divert --divert /bin/login.real --add /bin/login
(2) # mv /bin/login /bin/login.real
(3) # echo "* socket login /bin/login.real" > /etc/snooptab
(4) # cp /etc/inittab /etc/inittab.correcto
(5) # perl -p -i -e 's#getty#getty -l /bin/login.real#g' /etc/inittab
(6) # ln -sf /usr/sbin/ttysnoops /bin/login
(7) # init q
(8) # echo "UseLogin yes" >> /etc/ssh/sshd_config
(9) # /etc/init.d/ssh restart

(1)
Ya hemos descripto más arriba el comando dpkg-divert. "Desvía" ("divert" significa desviar en inglés) el archivo /bin/login hacia el /bin/login.real, lo cual significa que los paquetes nuevos que contengan el archivo /bin/login usarán el archivo /bin/login.real. Para deshacer este paso, haga dpkg-divert --remove /bin/login.
(2)
Mueva /bin/login a /bin/login.real. El acceso al sistema quedará corrompido hasta el paso 6 donde volvemos a crear el archivo /bin/login. Para deshacer este paso, haga mv /bin/login.real /bin/login.
(3)
Cree el archivo /etc/snooptab que contenga esta única regla "* socket login /bin/login.real". Vea la página ttysnoop(8) del manual para más detalles.
(4)
Cree una copia del archivo /etc/inittab en /etc/inittab.correcto. Esto es importante; si algo malo le ocurre al /etc/inittab puede terminar con un sistema inutilizado por lo tanto es recomendable tener una copia válida a mano (también deje una sesión abierta, de modo de poder ubicar el archivo válido en su lugar incluso si se daña el sistema de acceso al sistema).
(5)
Usando Perl edite el archivo /etc/inittab y reemplace cada aparición de la palabra 'getty' por 'getty -l /bin/login.real'. No ejecute dos veces este comando antes de copiar primero el inittab.correcto sobre el /etc/inittab alterado. Si tiene problemas, copie el archivo inittab.correcto del paso previo en /etc/inittab. Asimismo, observe que es 'getty -l' (donde -l es la letra ele minúscula, no el número -1).
(6)
Recreamos el comando /bin/login, haciendo un enlace simbólico a /usr/sbin/ttysnoops (el servidor de ttysnoop).
(7)
Reinicie el proceso init para que vuelva a leer el archivo /etc/inittab. Si cometió alguna equivocación en alguna de las etapas previas, es probable que sus consolas locales ya no funcionen más; es por tal motivo que hemos sugerido dejar una terminal abierta y hacer una copia del /etc/inittab original. Si desea restaurar el inittab original no se olvide de hacer lo mismo con el archivo login.real y eliminar el otro.
(8)
Añadimos 'UseLogin Yes' al final del archivo de configuración de sshd.
(9)
Reiniciamos el demonio sshd.

Aviso Advertencia
 

Habilitar ttysnoop en su máquina resulta peligroso ya que puede violar su política de seguridad o dejar al sistema inutilizado si no se hace correctamente. Por ejemplo, si pierde la capacidad de arrancar X como usuario común, es muy probable que no haya indicado a getty que use el programa login original. En este caso hágalo o ejecute dpkg-reconfigure xserver-common y permita que cualquiera pueda ejecutar el servidor X (algo que no es aconsejable).

Puede probar la configuración en forma local aunque, por supuesto, la misma idea se aplica a accesos remotos:

  • haga ssh a su localhost (ejecute: ssh 127.0.0.1 o ssh 0, este último funciona únicamente en Linux)

  • acceda como superusuario en otra consola virtual (o a otra terminal X) y averigue el dispositivo tty correcto (ttyp*) de nuestro objetivo a espiar:
    # w | grep ttyp
    myuser ttyp0 - 4:20am 3.00s 0.05s 0.02s -bash

  • invoque ttysnoop para conectarse con /dev/ttyp0:
    $ /usr/sbin/ttysnoop ttyp0

  • escriba su contraseña de root (para autenticarse con ttysnoops) y disfrute su visualización compartida ;p

Cuando se permite la conexión en forma remota a nuestra máquina la forma preferida de hacerlo es a través de ssh. Ni siquiera se moleste con telnet (que es un servicio inseguro y sin cifrado). Si lo necesita para algo especial o sólo quiere tener telnet en el archivo /etc/snooptab hay algunos ejemplos.


4.19. Niveles de ejecución y servicios del sistema

4.19.1. El arranque del sistema y el proceso init

Esta es una parte muy interesante e importante en todo sistema UNIX.

En la mayoría de los casos, se tiene al cargador LILO para arrancar nuestro sistema Debian. LILO (LInux LOader) acepta parámetros desde la línea de comandos, pero Debian ha sido configurado para no mostrar el indicador de arranque de LILO. Para que aparezca, mantenga presionada la tecla Alt cuando vea el mensaje 'LILO' (durante el arranque, justo antes que aparezca 'Loading linux ... ') y será capaz de ingresar parámetros arbitrarios al kernel. Cualquier cosa que escriba lo podrá ver posteriormente en /proc/cmdline.

Una vez cargado el kernel, éste lanza a 'init' como primer proceso del sistema. De manera predeterminada, init entra al nivel de ejecución 2 (la mayoría de las distribuciones Linux usan el nivel de ejecución 3) y ejecuta las tareas definidas en el directorio /etc/rc2.d. Los directorios 'init' (es decir, los niveles de ejecución) consisten en un conjunto de enlaces simbólicos a los archivos situados en /etc/init.d/; veamos un ejemplo:

$ ls -la /etc/rc2.d/ | cut -b 57-
...
S20net-acct -> ../init.d/net-acct
S20openldapd -> ../init.d/openldapd
S20postgresql -> ../init.d/postgresql
...

Para un nivel de ejecución determinado, los enlaces que comienzan con una 'S' (started) indican servicios activos mientra que los que comienzan con 'K' representan servicios inactivos (killed). Los números indican el orden en que se ejecutan los guiones (siendo 0 el primero).

A continuación, init ejecuta los scripts locales situados en /etc/rc.boot/ y realiza las tareas especificadas en el archivo /etc/inittab.


4.19.2. Manipulando los enlaces del directorio /etc/rcX.d/

Debian proporciona una herramienta útil para agregar o quitar enlaces de un script init del tipo System V (para controlar el arranque/parada de servicios) denominada update-rc.d . Existen por lo menos dos maneras de invocarla:

# update-rc.d -f xdm remove
# update-rc.d xdm defaults

La primera línea muestra cómo eliminar el servicio xdm del inicio, en tanto que la segunda cómo recuperarlo. Xdm es la implementación básica de la pantalla de acceso gráfico. Se la puede deshabilitar si se prefiere entrar al sistema en modo consola (aunque nada impide usar ambas en forma simultánea) o si se desea algunas de las alternativas a xdm, tales como kdm, gdm o wdm.


4.19.3. Inicio/parada de los servicios en forma manual

Todos los archivos situados en /etc/init.d/ se invocan de la misma forma definida por la Política de Debian. Cada uno de los servicios del sistema tienen aquí su script (generalmente denominado igual que el propio servicio) que aceptan argumentos genéricos. Veamos un ejemplo:

# ls -al /etc/init.d/a* | cut -b 55- 
/etc/init.d/acct
/etc/init.d/apache
# /etc/init.d/apache start
Starting web server: apache.
/usr/sbin/apachectl start: httpd started
# /etc/init.d/apache stop
Stopping web server: apache.
/usr/sbin/apachectl stop: httpd stopped
# /etc/init.d/apache invalid
Usage: /etc/init.d/apache {start|stop|reload|reload-modules|force-reload|restart}

Nota Observación:
 

  • En /etc/init.d/skeleton se encuentra la plantilla de un guión genérico del init.d. Úsela para crear sus propios guiones. También consulte el archivo /etc/init.d/bootmisc.sh.

  • Además del sistema init del System V tradicional, Debian también admite el init basado en un único archivo. Si le interesa, vea el paquete file-rc.


4.20. El sistema de 'alternativos' de Debian

La distribución Debian viene con una gran cantidad de paquetes de software y existe la posibilidad que pueda elegir entre diferentes aplicaciones que básicamente realizan la misma tarea. Incluso puede tenerlas todas instaladas en el sistema coexistiendo en paz. Puesto que hablamos de Debian, intuimos que debe haber una manera elegante de configurar el sistema predeterminado; y, en efecto, existe una: el sistema de 'alternativos'. Veamos una introducción similar y un ejemplo en la página update-alternatives(8) del manual:

Es posible instalar en un único sistema y al mismo tiempo distintos programas que cumplen las mismas o similares funciones. Por ejemplo, muchos sistemas tienen instalados diversos editores a la vez. Esto brinda la posibilidad a los usuarios del sistema elegir, si lo desea, un editor diferente. Sin embargo, esto dificulta a un programa hacer una buena elección de un editor cuando necesita uno si el usuario no especificó una preferencia en particular. El propósito del sistema de alternativos de Debian es resolver este problema. Un nombre genérico en el sistema de archivos es compartido por todos los archivos que brindan una funcionalidad intercambiable. El sistema de alternativos junto con el administrador del sistema determinan qué archivo es referenciado con este nombre genérico. Por ejemplo, si se encuentran instalados en el sistema los editores de texto ed(1) y nvi(1), el sistema de alternativos hará que el nombre genérico /usr/bin/editor haga referencia por defecto al /usr/bin/nvi. El administrador del sistema puede evitarlo y hacer que haga, en cambio, referencia a /usr/bin/ed y el sistema de alternativos no alterará esta configuración hasta que explicítamente se le pida que lo haga.

Para configurar el mencionado 'editor' alternativo, escriba simplemente:

# update-alternatives --config editor

Para una lista de los posibles alternativos, consulte el directorio /etc/alternatives/. Es muy probable que desee ajustar las elecciones 'x-window-manager' y 'x-session-manager'.


4.21. Verificación periódica del espacio disponible en disco

Resulta muy importante controlar el espacio en disco. Si el disco se llena (en particular su partición /home) es muy probable que se dañen sus archivos de configuración o incluso pierda datos. XFree ni siquiera arrancará si no hay espacio libre suficiente en disco. Un sencillo script para crontab que nos envíe diariamente información sobre el espacio en disco puede crearse de la siguiente manera:

# echo '#!/bin/sh' > /etc/cron.daily/disk-usage
# echo 'df' >> /etc/cron.daily/disk-usage
# chmod 755 /etc/cron.daily/disk-usage

Asegúrese editar el archivo /etc/crontab para ajustar la hora a la que se ejecutan las partes de cron.daily/ (por defecto a las 06:25 AM).


4.22. Creando y extrayendo archivos

En UNIX, es costumbre agrupar diversos archivos en un único archivo y luego comprimirlo usando un algoritmo de compresión (gzip, por ejemplo). Veremos aquí, cómo crear y extraer archivos tar, tar.gz y tar.bz2.

# apt-get install bzip2

# Crear un archivo tar sin comprimir
# tar -cf etc_respaldo.tar /etc

# Crear un archivo tar.gz (comprimido)
# tar -zcf etc_respaldo.tar.gz /etc

# Crear un archivo tar.bz2 (comprimido..¡bzip2 es mejor!)
# tar -jcf etc_respaldo.tar.gz /etc

# Desempaquetar un archivo tar
# tar xf etc_respaldo.tar

# Descomprimir *y* desempaquetar un archivo tar.gz
# tar zxf etc_respaldo.tar.gz

# Sólo descomprimir un archivo tar.bz2
# bunzip2 etc_respaldo.tar.bz2

# Descomprimir etc_respaldo.tar a un directorio diferente
# tar xf etc_respaldo.tar -C /tmp/

Para descomprimir archivos zip, rar, arj o cab use el comando apt-cache search para buscar los paquetes que necesita instalar.


4.23. Copiando, replicando y volviendo a descargar paquetes Debian

4.23.1. Volviendo a descargar todos los paquetes .deb instalados

Si desea hacer réplicas, copias de seguridad o grabar un conjunto de CDs que cumplan con las dependencias, puede recurrir al siguiente truco:

# COLUMNS=200 dpkg -l | grep '^ii' | awk '{ print $2 }' > /tmp/pkglist
# cat /tmp/pkglist | xargs apt-get --download-only --reinstall -y install

Cuando finalice la descarga, verá todos los archivos .deb en /var/cache/apt/archives/. También, vea el método apt-move sync que se detalla a continuación. Quizás sea lo que realmente necesita.


4.23.2. Configurando una réplica Debian o una fuente apt en el disco duro local

Esta subsección puede ser de su interés si desea copiar los CDs Debian a su disco (de modo que no tenga que cambiar todo el tiempo los cds de su lectora) o exportar una réplica Debian a las máquinas de su LAN local.

La manera más sencilla de copiar los CDs de Debian al disco duro consiste en usar la herramienta dd y crear directamente las imágenes de los CDs:

# dd if=/dev/cdrom of=/mnt/deb-cd1.img bs=512k

Luego debe montar la imagen de la siguiente manera (por supuesto, debe añadirla al /etc/fstab si desea que el cambio sea permanente):

# mkdir /mnt/deb-cd1
# mount -o loop,ro /mnt/deb-cd1.img /mnt/deb-cd1

Una entrada de ejemplo en el sources.list tendría siguiente aspecto:

deb file://mnt/deb-cd1 woody main contrib non-free non-US/main non-US/contrib non-US/non-free

Nota Observación:
 

Si bien este procedimiento funciona y es perfectamente válido, si en realidad desea las imágenes de los CDs (para grabar los CDs de Debian, por ejemplo) quizás lo encuentre un tanto inconveniente para otros propósitos (ya que el número máximo predeterminado de dispositivos loop del kernel es 7 y se tienen necesariamente múltiples fuentes en vez de una única que contenga todo).


4.23.3. Usando apt-move para mover los paquetes en el repositorio del disco duro local

Si tiene suficiente espacio en disco encontrará el uso de apt-move muy conveniente. Puede usarlo para copiar los cds al disco, ordenar los arhivos descargados desde /var/cache/apt/archives o permanecer en sincronización con su réplica Debian local.

  • Primero, instale apt-move:

    apt-get install apt-move

  • Edite /etc/apt-move.conf, escriba 'localhost' (o el nombre de la réplica en Internet) debajo del campo APTSITES y cambie la opción DIST (a 'woody', si tiene Debian 3.0). También puede cambiar PKGTYPE a 'both' si también desea los paquetes fuente.

  • Edite /etc/apt/sources.list y deshabilite todas las líneas que hacen referencia a los cds.

  • Exporte /cdrom con Apache (si usa http://localhost en vez de la réplica en Internet como fuente de paquetes):

    # apt-get install apache
    # echo "Alias /cdrom/ /cdrom/" >> /etc/apache/httpd.conf
    # /etc/init.d/apache restart
    # echo "deb http://localhost/cdrom/ woody contrib main non-US/contrib non-US/main non-US/non-free non-free" >> /etc/apt/sources.list
    # apt-get update

  • Inicialize apt-move:

    # apt-move get

  • Ahora por cada CD que desea copiar al disco duro, escriba:

    # mount /cdrom
    # apt-get update
    # apt-move mirror
    # umount /cdrom

    Si no utiliza CDs sino directamente la réplica en Internet:

    # Para mover únicamente los paquetes desde /var/cache/apt/archives/
    # apt-move move

    # Para crear una réplica completa
    # apt-move mirror

    # Para copiar únicamente los paquetes que están instalados en el sistema
    # apt-move sync

  • Cuando haya terminado todo, cree los Packages.gz y Sources.gz nuevos:

    # apt-move packages
    # cd /mirrors/debian
    # gunzip `find . -name Packages.gz`
    # apt-move packages

    Observe que la línea gunzip ... es importante, ya que crea los archivos Packages; debe tenerlos si desea usar luego herramientas como debootstrap. Asimismo, necesitará copiar algún archivo Release en el directorio dists/woody/.

  • Reemplace el repositorio http://localhost/cdrom/ (ya no lo necesitamos más) con la réplica nueva creada e instale xplanet para probarlo:

    # perl -n -i -e 'print unless m#/cdrom/#' /etc/apt/sources.list
    # apt-get install apache
    # echo "Alias /mirrors/debian/ /debian/" >> /etc/apache/httpd.conf
    # /etc/init.d/apache reload
    # echo "deb http://localhost/debian/ woody contrib main non-US/contrib non-US/main non-US/non-free non-free" \
    >> /etc/apt/sources.list
    # apt-get update
    # apt-get install xplanet xplanet-images

    Antes de mover, no se olvide de eliminar la entrada /cdrom/ del /etc/apache/httpd.conf.


4.24. Recompilación de paquetes

Los paquetes de software de Debian vienen precompilados para diversas arquitecturas. En el caso de los compatibles con Intel, los paquetes están optimizados para funcionar con todas las variantes i386 en adelante. No obstante, esto significa que todos los binarios del sistema no utilizan absolutamente ninguna de las características avanzadas que se encuentran en los procesadores modernos (Pentiums, por ejemplo).

Ha habido mucho debate si la recompilación local de paquetes brinda alguna ventaja, pero la conclusión general parece ser la siguiente:

La recompilación local tiene sentido en el caso del kernel, la biblioteca C GNU (glibc), las herramientas de compresión (tales como gzip o bzip2) y algunos juegos open-source.

Por ejemplo, para recompilar e instalar el paquete vim haga:

# apt-get -b source vim


4.24.1. Creando los paquetes .deb a partir de los fuentes

TODO: source_builder.pl, apt-get --build, cast

fakeroot dpkg-buildpackage -uc -us

Instalando software a partir de paquetes .tar.gz - el proyecto checkinstall (apt-get install checkinstall)


4.24.2. Dpsyco

Dpsyco es un acrónimo de Paquetes Debian de Configuraciones del Sistema (con sus siglas en inglés) y con él puede crear y mantener "paquetes de configuración". Un paquete de configuración es un paquete que reside "encima" de los paquetes Debian normales. Puede sobreescribir archivos normales, parchear el sistema, añadir usuarios y grupos y mucho más.

# apt-get install dpsyco dpsyco-{skel,patch}


4.24.3. equivs - informa a dpkg sobre los paquetes instalados localmente

Este es un paquete que crea paquetes Debian que pueden usarse para informar a dpkg sobre los paquetes instalados localmente y sus dependencias. Asimismo, con equivs se pueden crear paquetes vacíos requeridos por otros paquetes.

Nótese que se trata de algo experimental y que si no se utiliza concientemente es posible que dañe su sistema de paquetes. Además no se recomienda su uso para tratar con dependencias rotas. En estos casos resulta conveniente un informe de fallos.


4.25. Conectándose a su Proveedor de Servicios de Internet local

4.25.1. Conexiones a través de la red telefónica

No necesita cargar ningún controlador para reconocer su módem. El reconocimiento tiene lugar en forma automática. El controlador genérico 'serial.o' se encarga de las comunicaciones a través del puerto serie y todos los módems normales entienden el conjunto de comandos AT. Si tiene un winmódem (módems que carecen de algunos chips que son emulados por software y que utilizan recursos del CPU), entonces olvídelo (aunque, existe el sitio web LinModems si no desea escuchar la voz de la cordura).


4.25.1.1. pppconfig

Escriba pppconfig (siendo superusuario) para crear una nueva conexión y definir los parámetros de configuración. Probablemente lo haga correctamente con sólo seguir los menús, pero permítame darle algunos consejos:

  • Deje a la palabra "provider" como el nombre de la primer conexión que realiza (de modo que quede como conexión predeterminada)

  • Elija DNS dinámico.

  • Método de autenticación: averigue el método utilizado por su ISP. Actualmente, PAP es casi siempre una suposición correcta.

  • Velocidad del puerto del módem: déjela en 115200 si utiliza un módem externo o defina otro valor si es interno (como, por ejemplo, 57600).

  • Elija 'Yes' para detectar automáticamente el puerto del módem (vea más abajo qué hacer si no encuentra ninguno).

  • Ya se encuentra en la pantalla principal y puede modificar las opciones seleccionadas antes de guardarlas al disco. Elija 'Advanced options'. En Europa, es probable que tenga que modificar el campo Modeminit de 'ATZ' a 'ATx3l1m1' (use l0m0 si no desea escuchar el parlante del módem); el 'x3' aquí es importante: si no se pone se obtendrá el error 'NO DIALTONE'.

Nota Observación:
 

pppconfig no es más que una interfaz conveniente para crear los archivos /etc/chatscripts/<provider> y /etc/ppp/peers/<provider>. También los puede crear a mano si lo desea.

A diferencia de otros sistemas "marcadores", el método pon/poff utiliza la capacidad del pppd para comunicarse con el extremo remoto. /usr/bin/pon constaba de una única línea hasta hace muy poco, cuando se añadió manejo y descripción de errores.


4.25.1.2. pon, poff

Para conectarse a su proveedor predeterminado escriba pon.

Para finalizar la conexión, use poff.


4.25.1.3. Estadísticas de la conexión

Están plog y pppstats del paquete ppp. También puede instalar el paquete 'pppstatus' para un monitor de tiempo real realmente interesante.

Nota Observación:
 

Antes de probar plog, asegúrese de añadir "local2.* TAB /var/log/ppp.log" a la configuración de su syslogd; las instrucciones exactas fueron dadas anteriormente en este documento.


4.25.1.4. Resolución de problemas

  • pppconfig no detecta su módem

  1. asegúrese que realmente se trata de un módem compatible Hayes/Rockwell -los winmódems no lo son- que comprenda el conjunto de comandos AT .

  2. asegúrese que el módem esté correctamente conectado a la máquina e intente apagarlo/prenderlo para reiniciarlo

  3. intente especificar manualmente los puertos /dev/ttyS0 a /dev/ttyS3 (puertos com 1 a 4) varias veces (puede que tenga suerte).

  • ping 161.53.2.66 funciona, pero ping www.google.com no

  1. si la conexión parece funcionar (las luces del módem están encendidas, etc.) pero no puede hacer ping usando un FQDN (¿por qué nunca me gustó este nombre?) - significa que falló la configuración automática del DNS. En este caso, averigue el IP del DNS (Domain Name Service) de su ISP y edite el archivo /etc/resolv.conf. Escriba una línea del tipo:

nameserver ip.dns.servidor


4.25.1.5. Alternativas a pppconfig/pon/poff

pppconfig, pon y poff son herramientas excelentes. No obstante, podría probar con otro programa: wvdial. La ventaja de wvdial radica en que detecta automáticamente el tipo de autenticación utilizada por su ISP (si no tiene éxito, intente definir "Stupid Mode = 1" en el /etc/wvdial.conf).


4.25.2. ADSL con pppoe

Sorprendentemente, la configuración adsl+pppoe es trivial en Debian. Instale el paquete pppoe, averigue el nombre exacto de su proveedor (enviando el paquete PADI) y lea los últimos párrafos del README.Debian:

# apt-get install pppoe
# pppoe -A
# zless /usr/share/doc/pppoe/README.Debian.gz

Nota Observación:
 

También está el programa pppoeconfig.


4.25.3. Estoy conectado a Internet ¿y ahora qué?

Asegúrese tener instalado el paquete ircii (o alguna otra variante del cliente irc, en modo consola irssi o gráfico xchat o kvirc). Luego conéctese al servidor IRC (irc.debian.org, que forma parte de la red FreeNode [antes "OpenProjects"]) y únase al canal #debian:

# su -c 'apt-get install xchat'
# xchat

/server irc.debian.org
/join #debian

Allí puede pedir ayuda, consejos o simplemente haraganear y conseguir trucos útiles.

Aviso Atención
 

Espero que hayan notado el su -c ' ... ' de arriba; les permitirá ejecutar apt-get install xchat como superusuario. El mensaje implícito es que no debería usar la cuenta de superusuario para tareas habituales.

Nota Observación:
 

Piense la posibilidad de visitar The serious bit, The Parody Site, y la Petition page para comprender los mensajes que solicitan dinero que seguramente recibirá si pasa algún tiempo en la red OPN.


4.26. El concurso de popularidad de paquetes

Citemos la página del manual popularity-contest que lo dice todo:

El comando popularity-contest obtiene infomación de los paquetes instalados en el sistema e imprime el nombre de los ejecutables más utilizados del paquete asi como el último tiempo de acceso (atime).

Al unificar la salida del programa proveniente de muchos sistemas diferentes, la información obtenida es importante ya que se puede usar para determinar qué paquetes Debian generalmente son instalados, usados o instalados y nunca usados. Esto ayuda a los encargados de Debian a tomar decisiones tales como qué paquetes deberían ser instalados en sistemas nuevos por defecto.

Normalmente popularity-contest se ejecuta como tarea del cron (8), /etc/cron.weekly/popularity-contest, que automáticamente envía por correo los resultados a los encargados de paquetes Debian según la configuración del archivo /etc/popularity-contest.conf.

# apt-get install popularity-contest


4.27. Accediendo a los datos de particiones MS Windows

Si escribe 'fdisk -l' podrá ver el listado de particiones de todos los discos de su máquina. Ignore todo (incluso los errores) salvo las referencias a las particiones del tipo FAT16 (para versiones antiguas de Windows) o NTFS (win2k y toda esa Tecnología de Neandertal(tm)). Veamos una salida de ejemplo:

# fdisk -l

Disk /dev/hda: 255 heads, 63 sectors, 1823 cylinders
Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hda1 1 62 497983+ 82 Linux swap
/dev/hda2 * 63 70 64260 83 FAT16
/dev/hda3 71 1823 14080972+ 5 Extended
/dev/hda5 * 71 101 248976 83 NTFS
/dev/hda6 * 102 709 4883728+ 83 Linux
/dev/hda7 710 1317 4883728+ 83 Linux
/dev/hda8 1318 1823 4064413+ 83 Linux

Disk /dev/hdc: 16 heads, 63 sectors, 29065 cylinders
Units = cylinders of 1008 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hdc1 1 29065 14648728+ 83 Linux

Se tienen dos discos duros llamados /dev/hda y /dev/hdc. Las particiones Windows que estamos buscando se denominan /dev/hda2 y /dev/hda5 (¿se da cuenta? dice FAT16 y NTFS respectivamente). Ahora cree los directorios /mnt/hda2 y /mnt/hda5 (use 'mkdir' ¿lo recuerda?), edite el /etc/fstab y, siendo superusuario, haga:

# mkdir /mnt/hda2 /mnt/hda5

# Añada lo siguiente al /etc/fstab:
/dev/hda2 /mnt/hda2 vfat defaults,ro 0 0
/dev/hda5 /mnt/hda5 ntfs defaults,ro 0 0

Como superusuario escriba 'mount /mnt/hda2' y todos los datos de Windows estarán allí, en el directorio /mnt/hda2/. El mismo procedimiento se aplica a la partición hda5.

Añadiendo lo anterior al /etc/fstab nos hemos asegurado que las particiones Windows se monten automáticamente al iniciar el sistema. Si no es de su agrado, agregue la opción 'noauto' en el campo Opciones ('defaults,ro'). Reemplace 'ro' por 'rw' si desea un acceso completo de escritura-lectura.

Cabe destacar que para montar particiones Windows de MS necesita del módulo del kernel aunque Linux lo carga automáticamente. Vea la salida 'lsmod' después de montar alguna partición Windows (debería ve las palabras 'vfat' o 'nfts').


5. Los procesos en Linux

En este capítulo explicaremos los procesos y la forma en que se ejecutan bajo el kernel de Linux. Además, aprenderemos métodos sencillos para iniciarlos, detenerlos y controlarlos.


5.1. Introducción

Para tener un claro entendimiento del verdadero significado de la palabra "proceso", busqué una explicación formal y clara de la base de datos WhatIs:

Un proceso es una instancia de un programa que se ejecuta en una computadora. Su significado es similar al de 'tarea', un término usado en algunos sistemas operativos. En UNIX, un proceso arranca cuando se inicia un programa (ya sea por un comando de shell escrito por un usuario o por otro programa). Al igual que una tarea, un proceso es un programa en ejecución al que se le asocia un conjunto determinado de datos de manera de poder seguirle el rastro. Una aplicación que está siendo compartida por varios usuario generalmente tiene un proceso en alguna etapa de ejecución para cada usuario.

Un proceso puede iniciar un subproceso que se denomina proceso hijo (y el proceso que lo inició a veces es referido como su padre ). Un proceso hijo es una réplica del proceso padre y comparte algunos de sus recursos pero no puede existir si se termina el proceso padre.

Los procesos pueden intercambiar información o sincronizar sus acciones a través de diversos métodos de comunicacion entre procesos (IPC).

En Linux, los procesos funcionan en áreas de memoria aisladas (denominadas 'segmentos') y si un proceso comienza a comportase en forma incorrecta, seguramente no afectará al resto del sistema.


5.2. Comandos básicos relacionados con procesos

5.2.1. Listado de procesos

Para ver el listado de procesos actuales, escriba:

$ ps aux
$ ps auxwww

Un ejemplo de salida sería:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 398 0.0 0.8 2872 1084 tty1 S 11:57 0:00 -bash
root 399 0.0 0.3 2136 412 tty2 S 11:57 0:00 /sbin/getty 38400 tty2
root 400 0.0 0.3 1616 412 tty3 S 11:57 0:00 /sbin/getty 38400 tty3
root 401 0.0 0.3 1484 412 tty4 S 11:57 0:00 /sbin/getty 38400 tty4
root 402 0.0 0.3 2292 412 tty5 S 11:57 0:00 /sbin/getty 38400 tty5
docelic 2850 0.0 0.7 2768 984 tty6 S 15:39 0:00 -sh
docelic 3114 0.0 0.6 2472 772 tty6 S 16:57 0:00 /bin/sh /usr/bin/X11/startx
docelic 3409 0.0 1.0 2332 1300 pts/2 S 17:20 0:00 -sh
docelic 3410 0.3 4.9 9048 6260 pts/2 S 17:20 0:04 gvim hands-on.sgml
docelic 3415 0.0 1.0 3032 1312 pts/4 S 17:21 0:00 -sh
docelic 3428 0.0 3.4 7524 4344 pts/4 S 17:24 0:00 gvim hands-on-guide,editing.sgml
docelic 3611 0.0 1.0 3040 1276 pts/0 S 17:43 0:00 -sh
root 3612 0.2 1.0 2648 1288 pts/0 S 17:43 0:00 bash
root 3614 0.0 1.2 3940 1604 pts/0 R 17:43 0:00 ps auwww

Los nombres de cada columna se encuentran en la primer fila. Algunas observaciones:

  • USER: propietario del proceso (esto indica también los privilegios que tiene un proceso).

  • PID: Número de ID del proceso (es un valor único). Los IDs se usan para distinguir los procesos y generalmente se asignan en forma incremental. Los números no se vuelven a utilizar hasta que el PID alcance su máximo valor (32768 en general).

  • CPU, MEM: nos informa el tiempo total que la CPU utiliza al ejecutar la tarea (observación: tiempo de CPU no el tiempo real), y la cantidad de memoria actual ocupada por el proceso.

  • TTY: la terminal de control de un proceso (generalmente el lugar desde donde se inició el proceso). Si el campo está vacío (si contiene el carácter ?), significa que el proceso se independizó del terminal o no fue iniciado en modo interactivo.

  • STAT: estado actual del proceso - SW = swapped (en swap), S = sleeping (durmiendo), R = running (ejecutándose).

Nota Observación:
 

  • El orden incremental en que se seleccionan los PIDs se puede modificar; la mayoría de los parches de seguridad del sistema modifican este comportamienta (ver grsecurity).

  • Es posible limitar la cantidad de procesos que una persona puede ver (usualmente sus propios procesos). La mayoría de los parches de seguridad del sistema sugieren hacerlo.

  • Puede ocurrir que vea procesos en los estados D o Z. El carácter Z señala procesos 'zombies'; aquellos procesos cuyos padres no los desactivaron en forma adecuada debido a su propia finalización anormal. 'D' indica un proceso que se encuentra bloqueado debido a la llamada de una función del kernel; estos estados son normales durante breves períodos de tiempo pero si los visualiza en la salida de ps sería conveniente que analizara qué es lo que realmente está pasando.


5.2.2. Información sobre el sistema, el procesador y la memoria

5.2.2.1. uptime

El comando uptime informa la hora actual, el tiempo que lleva encendida la máquina, el número de shells de acceso y la carga del sistema:

$ uptime
20:30:17 up 8:33, 5 users, load average: 1.15, 1.19, 1.16

Nota Observación:
 

Los tres números muestran la carga promedio de los últimos 1, 5 y 15 minutos.


5.2.2.2. free

free muestra la cantidad de memoria del sistema libre y en uso:

$ free
total used free shared buffers cached
Mem: 126500 100780 25720 0 7624 49324
-/+ buffers/cache: 43832 82668
Swap: 497972 31796 466176

  • Mem: la cantidad total de memoria disponible, en uso y libre del sistema. El campo 'shared' indica la cantidad de memoria compartida entre los procesos pero es muy probable que vea el valor cero (0) ya que los núcleos de la serie 2.4 cambiaron su interfaz y este campo se conserva por cuestiones de compatibilidad.

  • Swap: muestra la misma información pero acerca del espacio de intercambio (swap). El espacio de intercambio generalmente está ubicado en su disco duro y se usa como una extensión virtual de memoria de la verdadera memoria de la máquina (random access memory - memoria de acceso aleatorio). Tener un espacio de intercambio permite al kernel simular que tiene más RAM de la que realmente hay.

Nota Observación:
 

  • Cuando el sistema decide liberar parte de la RAM ocupada por algún binario del sistema no lo coloca en el espacio de intercambio ya que el costo que implica (en tiempo) recuperarlo nuevamente del sistema de archivos es prácticamente el mismo.

  • Muchos han preguntado por qué el sistema consume tanta RAM (vea el valor 100MB de la salida de nuestro ejemplo. La respuesta es muy sencilla, pero no perdamos la oportunidad de profundizar en el tema:

    Teniendo en cuenta la memoria instalada en una máquina, podemos hacer el siguiente diagrama:

    Los discos duros son grandes (> 50 GB) pero su tiempo de acceso es muy pobre; la RAM es más rápida y está disponible en cantidades de 512-1024MB; la memoria caché del procesador es extremadamente rápida pero generalmente con un tamaño de 128-512KB (en computadoras PC típicas). Esta distribución viene dada por el costo de los componentes en el mercado.

    Ahora bien, el caché del procesador y la RAM del sistema son sencillamente subconjuntos de la memoria del disco duro (salvo, obviamente, por los datos generados en tiempo de ejecución). Resulta un desperdicio total (y una agresión contra el rendimiento del sistema) borrar datos de la memoria RAM del sistema; el costo en tiempo de ejecución de obtenerlos nuevamente del disco duro es alto. Por lo tanto, el sistema lo mantiene cargado tanto como le resulta posible. Para ver el uso real de la RAM consulte la columna "-/+ buffers/cache:" de la salida de free que resta resta el caché y el búfer de la cantidad total de memoria consumida.

  • Si está interesado en la memoria de intercambio del sistema puede recurrir a los comandos mkswap, swapon y swapoff (el espacio de intercambio, obviamente, se encuentra configurado en el archivo /etc/fstab).


5.2.2.3. top

El comando top es un monitor de procesos interactivo que muestra el estado de la memoria y del procesador del sistema y que periódicamente actualiza la lista de los procesos que consumen más recursos.


5.2.2.4. Otros comandos

Otros comandos interesantes incluyen sar, iostat y mpstat (del paquete sysstat), vmstat (del paquete procps), las interfaces gráficas lavaps y las pertenecientes a Gnome o KDE.


5.2.3. Comandos misceláneos

Hay tres comandos que definitivamente no podemos dejar de tener strace, lsof y fuser. Es probable que no los utilice en seguida, pero considérelos como una inversión a futuro.

La herramienta strace rastrea las señales y llamadas del sistema; su salida puede ser abrumadora pero es aquí dónde entran en juego la práctica y las páginas del manual.

# strace ls

lsof es una herramienta extremadamente útil que le proporcionará un listado de todos los archivos abiertos.

# lsof -p 1

Por último, el comando fuser identifica los procesos que están usando archivos o sockets.

# fuser -v /dev/tty1


5.3. Dos tipos diferentes de archivos ejecutables

Un proceso es, como ya hemos dicho, una instancia de un programa. Un programa puede ser un archivo compilado (binario) o un script que necesita de un intérprete para ejecutarse. Instale el paquete file de modo de poder usar el comando file en nuestra demostración. El programa /bin/ls es un ejemplo de archivo binario:

$ file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically
linked (uses shared libs), stripped

$ vim /bin/ls
^?ELF^A^A^A^@^@^@^@^@^@^@^@
[obviamente obtenemos basura]

Veamos lo que nos dice file con otros ejecutables del sistema:

$ file `which dpkg`
/usr/bin/dpkg: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically
linked (uses shared libs), stripped

$ file `which apt-cache`
/usr/bin/apt-cache: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
dynamically linked (uses shared libs), stripped

$ file `which pon`
/usr/bin/pon: Bourne shell script text executable

$ file /usr/bin/822-date
/usr/bin/822-date: perl script text executable

Ahora sabemos que dpkg y apt-cache son binarios compilados ejecutables. También que el comando pon es en realidad un script de shell y que 822-date un script en Perl. Pruebe de verlos con un editor de texto.

Desde la perspectiva de un sistema UNIX, no existe una alguna diferencia entre los ejecutables compilados y los scripts. Todos los archivos necesitan tener el bit de ejecución para ser considerados ejecutables. Los permisos y modos de los archivos no se explicarán aquí, consulte el Manual de Referencia del Usuario Debian, sección 4.4 para ello.

Además del bit de ejecución, los scripts necesitan de una directiva especial (una línea con un signo de admiración) que indica el intérprete que hay que invocar si no se especifica ninguno desde la línea de comandos (si escribe sólo /usr/bin/822-date en vez de perl /usr/bin/822-date o /usr/bin/pon en vez de sh /usr/bin/pon). Analizemos las primeras líneas del script 822-date y corroboremos nuestra afirmación (no se confundan, únicamente estamos interesados en la primer línea):

#! /usr/bin/perl --
# I hereby place this in the public domain - Ian Jackson, 1995.
# Changes by Klee Dienes also placed in public domain (1997).

# time structure:
# [ sec min hour mday mon year wday yday isdst ]

@ARGV && die "usage: 822-date\n";

.... ....

Muy bien. Esta sección en realidad tuvo el propósito de enseñarles las siguientes tres cosas:

  • Los archivos ejecutables no son necesariamente binarios compilados; también pueden ser scripts y, si se encuentra presente la línea con el signo de admiración, se pueden iniciar de la misma manera que los binarios verdaderos (es decir, escribiendo sólo su nombre).

  • Los scripts siempre están asociados con un intérprete específico. Puede escribir "/usr/bin/pon", o bien "sh /usr/bin/pon" ( [nombre intérprete] [script] [argumentos] ).

  • Los archivos binarios (compilados) tiene también una suerte de intérprete aunque la mayoría de las personas no son concientes de ello. Por ejemplo, para ejecutar el comando ls usando un "intérprete" (en realidad se trata del programa auxiliar para las bibliotecas compartidas), escriba:

    $ /lib/ld-linux.so.2 /bin/ls

    Esto puede resultar muy práctico; no obstante, lo dejo como un ejercicio para el lector averiguar exactamente cuándo y cómo se puede usar [¿No les agrada cuando en la documentación dice "ejercicio para el lector" justo cuando las cosas se ponen más interesantes?]


5.4. Cómo iniciar un proceso

  • Escriba el nombre de un programa. Esto funcionará bien si el programa realiza su tarea rápidamente o si se trata de un demonio (el cual se pone a sí mismo en segundo plano). De otra manera, no recuperará la línea de comandos pues el programa la considera como si fuese su STDIN (Entrada Estándar).

    $ ls

  • Escriba el nombre de un programa seguido por un '&'. Esto se denomina 'un proceso en segundo plano'. El proceso devuelve la línea de comandos y continúa ejecutándose en segundo plano (o si no puede funcionar en segundo plano - como ocurre con el comando tee - espera hasta volver al primer plano).

    $ tee&

  • Use nohup para ejecutar un comando que sea inmune a los cuelgues Útil si desea dejar una tarea ejecutándose en el sistema cuando sale del sistema.

    $ nohup ls

  • Utilice nice para ejecutar un comando con una determinada prioridad.

    $ nice -n 5 top

Nota Observación:
 

Si intenta ejecutar alguno de sus programas desde el directorio actual escribiendo simplemente su nombre, es muy probable que obtenga el mensaje de error "Command not found" [siga entonces mi lección sobre la variable PATH :) ].

PATH es una variable que contiene los nombres de los directorios en donde buscar los ejecutables. Cuando uno escribe el comando ls, el sistema lo localiza (usando el contenido de la variable PATH) en el directorio /bin/ y lo ejecuta. Sólo unos pocos directorios estándar están incluidos en la variable PATH, de modo que tendrá que preceder con un "./" para ejecutar comandos no estándar en un directorio determinado:

# Creemos un directorio tmp, ubiquémonos en él y creemos un archivo
# ejecutable para fines ilustrativos
$ mkdir tmp; cd tmp
$ echo "echo Hola, Mundo" > test.sh
$ chmod 755 test.sh

# Ahora intentémos ejecutarlo (no se ejecutará, porque nuestro
# directorio actual no se encuentra en la lista de directorios de la
# variable PATH)
$ test.sh
sh: test.sh: command not found

# Probemos hacerlo de la manera correcta
$ ./test.sh
Hola, Mundo

$ cd ..
$ ./test.sh
sh: ./test.sh: No such file or directory

$ ./tmp/test.sh
Hola, Mundo


5.5. Maneras de finalizar un proceso

  • Espere a que el proceso finalice normalmente (cuando termine su tarea).

    $ who

    Nota Observación:
     

    El comando who tiene un origen famoso, ¡apareció por primera vez en 1967!

  • Entre a otra consola virtual, use el comando ps para averiguar el ID del proceso y mátelo (con kill).

    # Esto funcionará a menos que el proceso funcione incorrectamente o ignore
    # las señales kill habituales
    $ kill [PID]

    # Este es un kill incondicional que matará cualquier cosa.
    $ kill -9 [PID]

    Nota Observación:
     

    El comando kill en realidad se utiliza para mandar cualquier señal a un proceso no sólo para matarlo; consulte la página del manual kill(1).

  • Si el proceso es interactivo (es decir, si no devuelve la línea de comandos), utilice Ctrl+C o Ctrl+D para finalizarlo. La diferencia radica en que Ctrl+C se usa para detener el proceso mientras que Ctrl+D indica 'fin de la entrada' por lo que Ctrl+D a menudo se utiliza para decirle a un programa que deje de leer la entrada y continue procesándola.

    $ tee
    [Ctrl+c]
    $

  • Si inicia un proceso con un '&' al final (y permanece en la misma terminal), al escribir 'jobs' lo verá en la lista de procesos en segundo plano. Escriba simplemente kill %[JOB].

    $ tee&
    [1] 5652

    $ jobs
    [1]+ Stopped(SIGTTIN) tee

    $ kill %1
    [1]+ Terminated tee

  • Utilice el comando killall para matar los procesos por su nombre.

    # killall ssh

  • Utilice pkill cuando necesite matar en forma simultánea una gran cantidad de procesos.

Nota Observación:
 

Cuando finaliza un proceso puede ver el estado de su salida es decir, el estado de la salida del último comando ejecutado) escribiendo: 'echo $?'. Un cero (0) indica que el proceso terminó exitosamente; para otros valores (error) consulte la documentación del programa.

Nota Observación:
 

Tenga cuidado con killall. Su comportamiento no es el mismo en todos los sistemas UNIX.


5.6. Cómo poner a dormir un proceso

Enviándole una señal:

kill -STOP [PID]
kill -CONT [PID]

Cuando se inicia un proceso en segundo plano y desaparece la línea de comandos, se puede presionar 'Ctrl+z' para traerlo al primer plano y detenerlo. Luego puede recurrir a bg o fg para renaudarlo en segundo o primer plano respectivamente. Incluso puede ponerlo en segundo plano y en un tiempo posterior usar fg para traerlo al primer plano (pero no después de cerrar el terminal de control debido a su disociación con el proceso en cuestión)

También puede pulsar ctrl+s y ctrl+q en el canal STDIN (generalmente su terminal) para pausarlo/renaudarlo.


5.7. Las prioridades de los procesos

Los sistemas Linux (y otros sistemas UNIX) tienen una forma de especificar la prioridad de un proceso mediante un número comprendido entre -20 (prioridad absoluta) y 19 (mínima prioridad). El planificador de procesos del kernel de Linux es una importante pieza de software y funciona como es de esperar (a diferencia de algunos planificadores de otros sistemas que no son UNIX).

Los usuarios comunes únicamente pueden usar los valores comprendidos entre 0 y 19 (0 es el valor predeterminado). Para ejecutar un programa (por ejemplo, 'top') con su nivel de prioridad modificada escriba:

$ nice -n 10 top
# renice -10 -p [PID]


5.8. Los procesos y sus funciones de entrada/salida

En general, cada proceso abre 3 canales de comunicación:

  1. STDIN (la Entrada Estándar, 0) para obtener los datos de entrada

  2. STDOUT (la Salida Estándar, 1) para la salida de datos

  3. STDERR (el Error Estándar, 2) para imprimir los mensajes de error

En una sesión de usuario típica (por ejemplo, al escribir 'ls') las tres están asociadas al terminal donde uno ingresa información y la aplicación muestra su salida e información (incluyendo los errores). No obstante, estos descriptores pueden asociarse a un socket, tubería o a cualquier cosa imaginable (incluso como entrada a otro programa o computadora remota).

Veamos un ejemplo: (grep buscará todos los archivos y mostrará las líneas de los archivo que contienen la cadena '/var/log/messages'):

$ cd /etc
$ grep '/var/log/messages' *

grep: shadow: Permission denied
grep: shadow-: Permission denied
grep: skel: Is a directory
grep: sound: Is a directory
grep: ssh: Is a directory
grep: syslog-ng: Is a directory
syslog.conf:*.warn;mark.*;auth,authpriv.none /var/log/messages
syslog.conf,old: mail,news.none -/var/log/messages
syslog.conf.syslog-facility-old:*.=info;*.=notice;*.=warn %classic /var/log/messages
grep: t1lib: Is a directory
grep: terminfo: Is a directory
grep: texmf: Is a directory

Claramente, una parte de la salida son datos válidos (provenientes de syslog.conf y syslog.conf,old) en tanto que la otra son mensajes de error (los mensajes 'Is a directory' y 'Permission denied'). A continuación veamos el comando ligeramente modificado con su correspondiente descripción:

# redirigir la salida del error estándar al archivo al archivo
# /tmp/errdata
$ grep '/var/log/messages' * 2> /tmp/errdata

# redirigir la salida estándar a /tmp/outdata y el stderr al mismo lugar
$ grep '/var/log/messages' * > /tmp/outdata 2>&1

# lo mismo que la línea anterior (es más corta, pero no funciona en
# algunos sistemas UNIX)
$ grep '/var/log/messages' * >& /tmp/outdata

# enviar el contenido del archivo /etc/syslog.conf como entrada estándar
# del comando tee
$ tee < /etc/syslog.conf

# pasar la salida de 'ps aux' al siguiente comando, 'cut' que muestra
# sólo la primer columna de la entrada.

$ ps aux | cut -d" " -f 1

# redirigir la salida del comando 'ls -al' hacia 'less', que lista la
# salida pantalla por pantalla.

$ ls -al | less

# pasar la salida al comando 'grep' que sólo muestra las líneas que
# contienen la palabra 'root' y descarta el resto

$ ls -al | grep root


5.9. Dejando procesos ejecutándose en nuestra ausencia

Puede que desee ejecutar sus procesos mientras está ausente.

El primer truco consiste en usar nohup o '&' al inicio del programa (como hemos mencionado antes).

Si ya está ejecutándose, puede protegerlo con 'disown -h' (pero no encontrará la página del manual de disown ya que es un comando incorporado del intérprete de comandos bash y es comentado en la página del manual bash(1)).

$ ./mi_comando &
$ nohup ./mi_comando2
$ nohup ./mi_comando3 &
$ disown -h %1

Nota Observación:
 

Nótese, no obstante, que no podrá recuperar el control de las funciones de entrada/salida de los procesos una vez que acceda nuevamente al sistema, únicamente se asegurará que no se cierren junto al intérprete de comandos al salir del mismo.

La mejor forma consiste en usar la utilidad screen que permite renaudar sesiones completas. Haga Ctrl+a,d para disociar y screen -r [ID] para renaudar una sesión. Familiarizarse con screen resulta práctico en shells UNIX remotas o sistemas que aún no poseen consolas virtuales (como ocurre con el Hurd).


6. Usando Debian GNU

6.1. Combinaciones de teclas más habituales

  • Utilice las teclas Mayús + RePág/AvPág para desplazarse por el texto que queda fuera del área visible de la pantalla.

  • Ctrl+l para despejar la pantalla (o escriba clear)

  • Ctrl+s detiene la salida del terminal (en realidad, detiene la aplicación que la originó) y Ctrl+q la renauda.

  • También puede usar la utilidad splitvt para dividir una consola virtual en dos terminales separadas. Una vez hecho (escribiendo simplemente splitvt) puede alternar entre ellas mediante Ctrl+W. Otras combinaciones de teclas son:

    • Ctrl+o,q : abandonar splitvt

    • Ctrl+o,4- : disminuir en 4 líneas el terminal actual

    • Ctrl+o,2+ : aumentar en 2 líneas el terminal actual

  • Para volcar el contenido de una pantalla a un archivo utilice el comando screendump.


6.2. Configurando el terminal

Para mayor información sobre la configuración del terminal, véase las páginas del manual de setterm(1), reset(1), tput(1), tset(1), stty(1), termcap(3) y terminfo(3X). Aquí sólo haremos un breve análisis:

  • desactivar el oscurecimiento de la pantalla (antiguamente se usaba como un protector de pantallas primitivo)
    setterm -blank 0

  • desactivar las señales audibles
    setterm -blength 0

    Nota Observación:
     

    En X, utilice xset b off.

  • fijar los colores del primer/segundo plano
    setterm -foreground black; setterm -background white

  • ocultar/mostrar cursor
    setterm -cursor off; setterm -cursor on
    tput civis; tput cnorm

También, consulte la página del manual console_codes(4).


6.3. Aprendizaje y uso del editor Vim

El núcleo de UNIX está basado en texto y su dispositivo de entrada primario debería ser su teclado. Es muy probable y comprensible que no se sienta atraído hacia un sistema operativo open source hasta que vea los entornos gráficos de escritorio Gnome o KDE, pero si decide profundizar sobre el sistema, valorará su teclado.

Tener un editor de texto preferido (no un procesador de texto, ¡note la diferencia!) es fundamental en UNIX; casi todo lo que haga estará de cierto modo relacionado con texto plano.

La mayoría de las personas le aconsejará empezar con joe, nano, pico o algún editor gráfico ("sólo hasta adquirir cierta experiencia"), pero considero que este enfoque es equivocado. La edición de textos es una tarea demasiado importante como para aprenderla incorrectamente desde el principio. Después de todo, no hay nada que aprender de todos estos editores: son sencillos, con funcionalidades limitadas y su combinaciones de teclas están listadas en la parte inferior de la pantalla de modo que pueda comprender absolutamente todo desde el comienzo.

La categoría de los editores de texto profesionales está reservada para dos viejos rivales: GNU Emacs de Richard Stallman y el Visual IMproved de Bram Moolenaar (o el tradicional vi). Como habrá inferido del título, prefiero vim pero no existe duda que ambos editores son de uso profesional y cualquier preferencia personal merece ser respetada.

No deseo hostigar a los usuarios devotos de Emacs. Tienen mi permiso para omitir el resto de esta subsección.

VIM es el editor de texto para los programadores profesionales. Además de poseer combinaciones de teclas ultra rápidas, macros, abreviaturas, modos de edición, resaltado de sintáxis y autocompletado, puede literalmente encontrar la salida de un laberinto (véase /usr/share/doc/vim/macros/maze/).

Para instalar vim y sus herramientas relacionadas generalmente tendrá que hacer:

# apt-get install vim vim-gtk vim-scripts exuberant-ctags

Quizás la ventaja más grande de vim (o el antiguo vi) es que muy probablemente se encuentre instalado en cualquier UNIX que pueda imaginar. Si alguna vez tiene que usar alguno de los sistemas operativos UNIX tradicionales me lo agradecerá :)

Además, puede usar a vim como editor de texto predeterminado en sus aplicaciones Gnome, usando el sistema Bonobo (y existe una interfaz gráfica independiente: gvim). Los usuario de KDE pueden recurrir a kvim.

Algo muy importante de destacar es que vim admite diferentes modos de edición. Al ejecutarlo, automáticamente entra al modo comando lo cual significa que no podrá empezar simplemente a escribir ya que lo que escriba será interpretado como comandos y no como caracteres que quiere que aparezca en el documento.

Lo más obvio que puede hacer es pulsar "a" o "i" (Append o Insert) cuando desee entrar al modo edición (de modo de poder escribir algo en su documento). Para grabar y salir, presione ESC (para volver al modo comando) y escriba ":wq" (Write y Quit).

Por supuesto, el tema es demasiado complejo para tratarlo aquí; los remitiré al tutor de vim y a algunos recursos externos:

Nota Observación:
 

En definitiva, no pierda la oportunidad de aprender vim o Emacs GNU antes de seguir. Es un esfuerzo que dará sus frutos incluso antes de comenzar ;-)


6.4. La biblioteca readline y la función bindings

Abra la página del manual bash(1), escriba /^SHELL BUILTIN COMMANDS (para buscar dicha frase al comienzo de una oración) y busque 'bind' (escriba /bind).

Puede encontrar más información en el directorio /usr/share/doc/bash/.


6.5. Archivos de configuración del usuario

Como probablemente sepa en este momento, los usuarios de los sistemas UNIX estándar no poseen permiso de escritura para todo, la lista a menudo se encuentra limitada a diversas ubicaciones temporales y a su directorio personal.

Mientras que la mayoría de los servicios del sistema poseen su archivos de configuración en el directorio /etc/, resulta obvio que los usuarios normales no pueden hacer lo mismo por no poseer los permisos adecuados. En consecuencia, sus archivos de configuración se almacenan en archivos punto situados en su directorio personal. Un archivo punto es simplemente un archivo cuyo nombre comienza con un punto (por ejemplo, ".vimrc"); estos archivos se encuentran ocultos y no se muestran en la salida del comando ls salvo que utilice la opción -a (--all).

En general, las aplicaciones usan fallbacks para cargar la información de configuración. Esto significa que primero verifican las opciones de la línea de comandos que tienen la prioridad más alta, a continuación tienen en cuenta las variables de entorno, luego los archivos punto y por último los archivos de configuración genéricos (que pueden estan en el directorio /etc/).

En general, una aplicación crea sus archivos puntos cuando se la ejecuta por primera vez.


6.6. Alias de comandos

Supongamos que prefiere la salida estructurada de 'ls -al' pero escribiendo tan sólo 'll' en vez de 'ls -al'. La solución a este problema se llama 'alias' y se implementa a nivel del shell. Edite su ~/.bash_profile y añada algo así:

alias ll='ls -al'

Vuelva a cargar el archivo de configuración:

# Escriba
$ source ~/.bash_profile

# O
$ . ~/.bash_profile

# O haga
Ctrl+x,Ctrl+r

Escriba ll y disfrútelo :)

Nota Observación:
 

Como habrá comprobado el formato de los archivos .bash_profile y .bashrc es muy sencillo: se ponen los mismos comandos que se hubieran puesto en la línea de comandos. Hemos guardado la información del alias en ~/.bash_profile ya que queremos disponer de ella cuando accedamos al sistema la próxima vez (de otra forma, deberíamos escribir el comando del alias en la línea de comandos)


6.7. Características avanzadas de la línea de comandos

Casi con seguridad, está usando el intérprete de comandos bash (echo $SHELL) con soporte 'readline' incluido. Readline es la "biblioteca que lee la entrada cuando se usan shells interactivos". A pesar que los usuarios UNIX tradicionales aborrecen a bash (una pérdida de memoria según dicen) junto con readline forman un entorno de usuario tremendamente eficiente.

Veamos algunas de sus características:

  • Escriba 'history' para ver un listado de los comandos ejecutados con anterioridad. El histórico se guarda en el archivo ~/.bash_history. Los nuevos comandos se van agregando al archivo cuando se cierra una sesión en el terminal. Si desea salir sin guardar el histórico, se puede cerrar el shell con kill -9 $$ o kill -9 0. No obstante, ésta no es la forma habitual de hacerlo. Lea sobre el comando history en la página del manual de 'bash' para deshabilitarlo correctamente (la página del manual de bash es muy extensa, al abrirla escriba '/hist' para buscar las secciones que hablan sobre este comando).

  • Utilice las teclas Flecha Arriba y Flecha Abajo para desplazarse por el búfer del histórico (que se guarda entre sesión y sesión). Utilice las teclas Inicio y Fin para mover el cursor al principio o al final de la línea actual. Si estas últimas teclas no funcionan, se puede lograr idéntico resultado con Ctrl+a, Ctrl+e (y el retroceso con Ctrl+h).

  • Utilice la tecla TAB para completar el nombre de un archivo o comando. Escriba 'cat /etc/syslog.' y presione TAB para ver qué sucede.

  • Utilice Alt+. (punto) o Esc, Mayús+_ para repetir el último argumento del comando anterior. Para elegir el argumento que desea repetir, use: Esc, número_arg, Ctrl+Alt+y. Pruebe hacer:

    mkdir x
    cd Alt+.

  • Eventos

    • !! : repite el último comando

    • !-1 : repite el último comando

    • !co : repite el último comando que empieza con 'co'

    • !n : ejecuta el n-ésimo comando del histórico

  • Presione Ctrl+R y empiece a escribir un comando hasta encontrar la línea que buscaba (esta "búsqueda recursiva" busca en el búfer del histórico el comando más parecido al fragmento de texto ingresado).

  • Hay algunos consejos cuando se desea cambiar de directorio: se puede volver al directorio anterior donde estábamos escribiendo 'cd -'. Se logra el mismo resultado (aunque es posible agregar más nombres de directorios en la lista) con pushd y popd (ejemplo, 'cd /bin; pushd /etc/; popd')

  • Probablemente desee saber los nombres de los programas que puede lanzar desde la línea de comandos. Veamos un pequeño truco: escriba 'a' y presione la tecla TAB dos veces. Verá todos los comandos que comienzan con la letra 'a' (pero esto no es nada del otro mundo: idéntica información se puede obtener ejecutando simplemente 'ls' en los directorios /bin, /usr/bin y /usr/local/bin).


6.8. Personalizando la sesión en X

Como el nombre lo sugiere, el archivo a buscar es ~/.xsession. Puede encontrar un ejemplo adecuado en /usr/share/doc/xfree86-common/examples/.

El archivo ~/.Xdefaults es el lugar para poner a punto los recursos de X (invoque el comando xrdb -load ~/.Xdefaults desde el archivo ~/.xsession para cargarlo).


6.8.1. Eligiendo fondos en X

Los gustos varían; algunos prefieren fondos de un único color, otros prefieren gradientes y algunos eligen imágenes.

Encontré que es posible crear fondos con un aspecto muy agradable usando el paquete xplanet (instale xplanet y xplanet-images):

$ xplanet -blend -grid -label -projection mercator -quality 100 -rotate 45 -cloud_image clouds_2000.jpg&
$ xplanet -blend -grid -label -projection mercator -quality 100 -cloud_image clouds_2000.jpg&
$ xplanet -blend -grid -label -projection mercator -quality 100 -latitude 15 -cloud_image clouds_2000.jpg&

Nota Observación:
 

La imagen clouds_2000.jpg se la puede localizar en la página del proyecto xplanet y es un mapa real de las nubes que circundan la tierra (actualizada cada 3 horas y de un tamaño de 500kb).

Es posible hacer que xplanet genere una nueva imagen cada 5 minutos; consulte la página del manual de xplanetbg(1) y modifique el archivo ~/.xsession si le agrada la idea.

El paquete debian-propaganda se pueden encontrar buenas imágenes para utilizar como fondo.

Se pueden configurar los fondos en forma manual con los comandos xsetbg, xsetroot o Esetroot (del paquete eterm).


6.8.2. Capturando pantallas

# Utilice el tradicional xwd
$ xwd -root >captura.xwd; convert captura.xwd captura.png; pngcrush captura.png; rm captura.xwd

# Use scrot
$ scrot captura.png

# Use import del paquete imagemagick
$ import -comment "Gnome2 + tema xy" -compress jpeg -frame -screen captura.jpg


6.9. Reporte de fallos

  • Asegúrese que el fallo se puede reproducir y que está usando la versión más actual.

  • Inicialice las variables de entorno DEBMAIL y DEBFULLNAME:

    # export DEBMAIL="alguien@algo.org"
    # export DEBFULLNAME="Su nombre"

  • # reportbug -bx [paquete]

Atención Atención
 

NO se involucre informando un fallo a menos que esté 100% seguro que ha encontrado un verdadero problema. Antes de pensar "es un fallo", pregúntese si en realidad tiene la suficiente experiencia (sobre un tema determinado) para decir si es un fallo o si no lo es. A continuación verifique si el problema ya fue dado a conocer. Los encargados de los paquetes tienen bastante cosas que hacer como para encargarse de informes de "fallos" falsos y/o ridículos.

Sin embargo, a pesar que le pueda parecer maravilloso informar sobre fallos (y se sienta que está "contribuyendo" con el proyecto), debería tratar no apasionarse demasiado. Existen mejores maneras de contribuir con Debian (escribiendo documentación y páginas del manual, por ejemplo).


7. Primero intente hacerlo por sí mismo

Estamos muy cerca del final de esta guía. Como dije al comienzo:

lo que cuenta es la idea y la lógica, no la implementación exacta o los detalles de uso.

Para finalizar resumiremos los puntos claves que he intentado fomentar en todo el documento:


7.1. Una lista paso a paso

A continuación veamos una lista hipotética de los pasos a seguir cada vez que tropiece con un problema:

  • Defina correctamente el problema:

    • ¿Qué desea hacer?

      Divida su problema en etapas lógicas. Si no puede precisar exactamente lo que necesita hacer, madúrelo durante la noche. Enfóquelo desde la perspectiva más amplia posible.

    • ¿Tiene sentido su idea?

      Si funciona "la mayor parte del tiempo" significa que tiene algún tipo de problema y requiere de un esfuerzo adicional para abarcar los "casos particulares" y existe la posibilidad que todo salga mal. Esta usando un entorno pensado para estar exento de soluciones a medias ¿lo recuerda?. Vuelva a plantear su problema y empiece de nuevo.

  • ¿Su problema es similar a los resueltos en UNIX/GNU/Debian/Linux?

    Tener poca experiencia e intentar a toda costa reinventar la rueda es una pérdida de tiempo y dinero. Intente buscar un problema similar al suyo y re-utilice el mecanismo general usado para su resolución.

    • Pruebe buscar en las páginas man e info de su sistema. Asegúrese tener instalado man-db con el setuid root activado (dpkg-reconfigure man-db), luego ejecute mandb recrear los índices del caché. Esto le permitirá usar los comandos apropos y whatis que le ayudarán a encontrar la(s) página(s) que contengan una respuesta.

      Para convertir las páginas man o info en archivos de texto, aproveche las tuberías de UNIX:
      $ man dpkg | col -b > /tmp/dpkg.man.txt

    • Consulte los directorios apropiados de /usr/share/doc/. Puede usar las utilidades find y grep para filtrar el material útil.

    • Consulte los sitios web más relevantes; debian.org, El proyecto de Documentación de Linux u otros más relacionados con su problema (vea la sección Enlaces de esta guía).

    • Utilice Google, google.com/{linux, bsd} o el servicio de de grupos de Google y busque palabras claves.


7.2. Obteniendo ayuda en el IRC

El IRC (Internet Relay Chat service) es una manera muy conveniente de obtener ayuda directamente de la comunidad, es decir, de las personas que usan o desarrollan los mismos programas que uno usa.


7.2.1. Servidores IRC y canales

  • irc.oftc.net : #kernelnewbies, #lartc, #holarse

  • irc.openprojects.net : #debian, #debian.de, #debian-bugs, #debian-kde, #debian-oo, #c, #offtopic, #perl, #security, #crystalspace, #blenderchat, #vim, #devtools

Puede escribir /msg chanserv info #[channel] para obtener más información sobre un canal específico.


7.3. Cómo no formular preguntas en un IRC

En sí el IRC es sólo un protocolo. Sobre él se han establecido convenciones (especialmente desde que empezaron a aparecer las redes de Sofware Libre).

Las reglas son muy 'sencillas' y no impone restricciones, sólo sugieren determinadas cosas que no debería hacer para no molestar a las personas del canal y aumentar las probabilidades de obtener una respuesta a su pregunta.

Muchos recién llegados, comienzan a discutir sobre temas completamente intrascendentes (incluyendo, pero no limitado, a temas personales) en canales como #debian (que es un lugar -¿quién lo diría?- muy relacionado con Debian). Cuando alguien les llama la atención, se sienten atacados y no muy bienvenidos. Por favor, tenga en cuenta que #debian es un canal grande (500+ personas) y todos tenemos que cumplir con ciertas reglas si deseamos que la totalidad funcione.

He intentado hacer un resumen (la mayoría tomado de la base de datos de apt [apt es un robot del IRC en #debian]) de cosas que debería / no debería hacer:

  • Si tiene una pregunta, por favor, *hágala*. No la dirija a una determinada persona - pregunte al canal. Si alguien la sabe, la responderá :) Si quiere obtener ayuda más rápido, no pregunte "¿puedo hacer una pregunta?, "¿alguien me puede ayudar? o ¿alguien usa/sabe sobre loquesea?. Sea tan específico como pueda. Específico, informativo, completo, conciso y sobre el tema en cuestión. No exija ni insulte; por favor no haga /msg a las personas sin permiso.

  • No empiece diciendo que su programa no funciona. No funciona es una afirmación ambigua. ¿Está todo el día sentado en el sofá? ¿Quiere más dinero? ¿Pasa todo el tienpo en el IRC? Por favor, ¡sea específico! Explique qué hace y qué no hace.

  • No formule preguntas del tipo ¿Alguien puede orientarme sobre xyz?" o "¿Puede alguien decirme sobre xyz?". Si es una persona absolutamente normal llegará a la conclusión que no estamos dispuesto a escribir un libro para Ud. (¡en tiempo real!) o convertirnos en su salvador. La mayoría de los temas de los que se habla son muy amplios, por lo tanto en ausencia de una descripción adecuada no sabríamos ni siquiera por dónde empezar.

    Toda la documentación que necesita está disponible y no existe ninguna excusa para no leerla. Preguntar en el canal en vez de analizarla primero es un atajo peligroso que no debería tomar.

  • No se repita a sí mismo, ni use excesiva puntuación, ni pegue inmensos bloques de textos, ni moleste en forma insistente a la gente en privado. "Jugar" con gráficos ascii es otras de las cosas antipáticas que debe evitar.

  • Si es un novato Debian (un principiante), no intente responder las preguntas de otras personas, salvo que esté 100% seguro que está en lo correcto. La razón por la que ingresó al canal fue para aprender, no para desinformar a otra gente; no haga más difícil la vida del canal.

  • Cuando está hablando en el canal con una determinada persona, por favor, preceda los mensajes con su apodo. Actualmente, la mayoría de los clientes IRC permiten completar el apodo con la tecla TAB.

El espectro de los posibles problemas es muy amplio y el esfuerzo necesario para describirlos varía. En general:

  • No pulse ENTER en vez de la barra espaciadora: no desperdicie renglones. Idealmente, todo debería ocupar un único renglón (y si no es así, es muy probable que su cliente automáticamente lo separe. Por lo tanto: no se preocupe por la longitud del renglón).

  • Suponemos que intentó resolver el problema por su cuenta antes de preguntar en el IRC, por lo tanto incluya lo siguiente:

    • ¿Cómo obtuvo el programa? (por ejemplo, "apt-get install xxx")

    • ¿Cuál era su objetivo inicial?

    • ¿Cómo procedió?

    • ¿Cuándo específicamente comenzó a tener problemas?

    Al formular su pregunta en forma correcta y precisa, le permitirá identificar su problema sin tener que formular otras preguntas.

    Además, algunas personas proceden de forma equivocada. Empiezan preguntando sobre un tema y, después de 30 minutos de discusión, mencionan finalmente que es parte de "algo más" y llegan a la conclusión que tomaron el camino completamente equivocado. Describiendo el problema adecuadamente, permitirá a las otras personas evaluar la idea general y no sólo el problema específico.


7.4. Enlaces

Relacionados con Debian GNU

GNU

Linux

Índice de programas y proyectos

Gráficos, logos y pancartas

Varios

Documentación

Juegos