1.
HARDW HARDWAR ARE E Y ARQUIT ARQUITECT ECTUR URA A 1.1. 1.1.
CPU (Cent (Central ral Proces Processin sing g Unit) Unit)
La CPU es el cerebro del sistema. Sin embargo, a diferencia de los humanos, la CPU es incapaz de pensar por sí misma. Actúa como un autómata. Los unos y ceros del código binario actúan sobre ella como pulsos eléctricos, excitando sus circuitos, que que func funcio iona nan n como como los los reso resort rtes es de un relo relojj de prec precis isió ión. n. El resu resultltad ado o de tal tal interacción es la salida, de nuevo en forma de unos y ceros binarios, que actuarán a su vez sobre otros circuitos electrónicos, tales como la memoria RAM, el controlador de disco, la impresora, o la pantalla. Del mismo modo que cada reloj tiene su propio mecanismo interno de relojería, la CPU tiene su propia circuitería interna. De este modo, según la arquitectura y el fabricante de la CPU, la respuesta al mismo código binario de unos y ceros puede ser comple completam tament ente e difere diferente nte de un modelo modelo a otro. otro. Por Por este este motivo motivo,, un softwa software re compilado para una CPU, no servirá, en general, para la CPU de otro fabricante o con otra arquitectura diferente. Normalme Normalmente, nte, Linux Linux se distribuy distribuye e compilad compilado o para muy diferent diferentes es arquitec arquitectura turass y fabricantes: Alpha, Atmel, ARM, Fujitsu, Hitachi, Itanium, MIPS, Mitsubishi, Motorola, NEC, Olivetti, PowerPC, RISC, SPARC, x86, x86_64, etcétera. La arquitectura más habit habitual ual actua actualme lmente nte es la x86_6 x86_64, 4, que que corres correspo ponde nde a la de un ordenad ordenador or con procesador Intel ó AMD de 64 bits. Para comprobar las características de nuestra CPU, podemos utilizar el comando: $ lscpu Este comando lista información importante acerca de las características de nuestra CPU, tales como la arquitectura, el número de CPUs que tenemos en el sistema, el fabricante, el nombre exacto del modelo, la frecuencia máxima y mínima de trabajo, etcétera. Por ejemp ejemplo, lo, el resul resultad tado o de ejecu ejecutar tar dicho dicho comand comando o en mi netbo netbook, ok, indica indica que dispongo de 4 CPUs, con arquitectura x86_64, de marca Intel, modelo Intel Atom CPU N570, con una frecuencia máxima de trabajo de 1.667 GHz y mínima de 1 GHz. 1.2.
PLACA PLACA BASE (Motherb (Motherboard oard/Mai /Mainbo nboard) ard)
Si la CPU es el cerebro del sistema, la placa base es el sistema nervioso. La placa base es una tarjeta de circuito impreso donde se conectan todos los componentes del sistema. Tiene instalado un circuito integrado auxiliar, denominado chipset, que conecta la CPU con el resto de dispositivos.
Incluye un sistema operativo básico: el Basic Input/Output System (BIOS). Esto es fundamental, porque cuando arranca el ordenador, aún no está disponible el sistema operativo Linux para acceder al hardware. De este modo, la BIOS inicializa y prueba el hardware del sistema, y permite el posterior arranque del sistema operativo Linux. Los dispositivos periféricos se conectan directamente a la placa base mediante el bus PCI (Periphe (Peripheral ral Componen Componentt Intercon Interconnect nect). ). Existen Existen otros otros buses buses más antiguo antiguoss como como el ISA ISA o el bus bus MCA MCA de IBM. IBM. Los Los disp dispos osititiv ivos os que que pued pueden en conec conecta tars rse e medi median ante te el PCI PCI son son muy muy dive divers rsos os:: la cont contro rola lado dora ra de vide video, o, audi audio, o, USB, USB, la controladora del disco duro SATA, la tarjeta de red Ethernet, WiFi, etcétera. Podemos comprobar los dispositivos que tenemos conectados en nuestro sistema mediante el comando: $ lspci El siguiente ejemplo muestra la salida del anterior comando describiendo la tarjeta de red Ethernet: 01:00.0 Ethernet controller: Qualcomm Atheros AR8152 v2.0 Fast Ethernet (rev c1) Los Los núme número ross a la izqu izquie ierd rda a indi indica can n el núme número ro de bus, bus, disp dispos osititiv ivo o y func funció ión, n, respectivamente. Le sigue el nombre de la clase correspondiente y el nombre del fabricante, seguidos del nombre del dispositivo. Estos dispositivos están manejados por los correspondientes drivers del kernel de Linux. Linux. Si quere queremos mos conoce conocerr el nombr nombre e del del drive driverr asocia asociado do a cada cada dispos dispositi itivo, vo, debemos añadir al comando el siguiente modificador: $ lspci -k Este ejemplo muestra la salida del comando describiendo el controlador de disco SATA y su driver correspondiente: 00:1f.2 SATA controller: Intel Corporation NM10/ICH7 Family SATA Controller [AHCI mode] (rev 02) Kernel driver in use: ahci Serial Serial Advanced Advanced Technolo Technology gy Attachmen Attachmentt (SATA) (SATA) es una interfaz interfaz que conecta conecta la placa placa base base a los dispos dispositi itivos vos de almac almacena enamie miento nto tales tales como como los discos discos duros duros.. Advanced Host Controller Interface (AHCI) es una interfaz publicada publicada por Intel que permite el uso de algunas características avanzadas de SATA. 1.3. 1.3.
MÓDUL MÓDULOS OS DEL DEL KERNEL KERNEL
El kernel de Linux es la parte del sistema operativo que controla el hardware del sistem sistema. a. A travé travéss de los driver drivers, s, contr controla ola y manipu manipula la los dispo disposit sitivo ivos, s, para que puedan ser aprovechados por el resto del sistema operativo y las aplicaciones de usuario.
En la sección anterior hemos visto cómo identificar el driver del kernel que maneja un determinado dispositivo. Dicho driver puede estar precompilado en el kernel, o ser parte de un módulo específico, que se carga con posterioridad. Para consultar los módulos cargados en el kernel, podemos utilizar el comando: $ lsmod El resultado de dicho comando es una lista con los módulos cargados, indicando su tamaño y si están siendo utilizados por otro módulo del kernel. Una vez determinado el módulo (por ejemplo: usbcore), podemos obtener más información del mismo con el siguiente comando: $ modinfo usbcore Cuando arranca el sistema operativo, y el kernel detecta el hardware instalado en nuestro sistema, inmediatamente carga los módulos que contienen los drivers necesarios para manejar dichos dispositivos. Si queremos instalar manualmente algún módulo, podemos hacerlo con el siguiente comando: # modprobe usbcore Y con el siguiente comando, lo podríamos desinstalar manualmente: # modprobe -r usbcore 1.4.
USB (Universal Serial Bus)
Universal Serial Bus (USB) es un estándar industrial que define la conexión entre los ordenadores y los dispositivos electrónicos. Tiene varios tamaños (normal, mini y micro) y variantes (1.1, 2.0 y 3.0). Asimismo, las conexiones USB tienen cinco velocidades de transferencia de datos: Low a 1.5 Mbit/s, Full a 12 Mbit/s, High (2.0) a 480 Mbit/s, Super (3.0) a 5 Gbit/s y Super+ (3.1) a 10 Gbit/s. USB se utiliza para conectar todo tipo de dispositivos: smartphones, PDAs, videoconsolas, cargadores, teclados, videocámaras, impresoras, discos, etcétera, tanto para la comunicación como para la carga de energía eléctrica. Podemos verificar los dispositivos USB conectados al sistema mediante el comando: $ lsusb Bus 001 Device 002: ID 13d3: 5702 IMC Networks UVC VGA Webcam
1.5.
GESTOR DINÁMICO DE DISPOSITIVOS (udev)
El gestor dinámico de dispositivos (udev) se encarga de escuchar cualquier evento relacionado con los dispositivos, como puede ser, por ejemplo, introducir un pendrive USB, conectar una videocámara o un cable de red. Una vez detectada la conexión, si es necesario, le asigna un fichero especial al nuevo dispositivo. Con el siguiente comando podemos monitorizar el funcionamiento del gestor dinámico de dispositivos (udev): $ udevadm monitor De esta manera, visualizaremos en pantalla todos los mensajes entre el kernel y el gestor de dispositivos. Si introducimos ahora un pendrive en una de las ranuras USB, se produce una avalancha de datos en pantalla, siendo las últimas líneas en pantalla los nombres de los ficheros de dispositivo asignados al pendrive: sdb1 y sdb2. Si ahora extraemos el pendrive, se produce otra avalancha de mensajes, correspondiente al borrado de los ficheros previamente asignados. Este sencillo experimento puede repetirse con cualquier otro dispositivo del cual queramos visualizar la respuesta dada por el gestor dinámico de dispositivos (udev) 1.6.
KERNEL RING BUFFER
En el búfer en anillo del kernel se registran los mensajes del kernel de Linux desde que se inicia el sistema hasta el momento actual. Al tratarse de un búfer en anillo, cuando se completa el espacio disponible, sigue escribiendo, borrándose los mensajes más antiguos, para dejar espacio a los nuevos. Con el siguiente comando, podemos visualizar la totalidad del búfer: $ dmesg Dado que la salida de este comando puede ser demasiado extensa, podemos filtrar la salida para visualizar los mensajes más recientes (concretamente los dos últimos) con el siguiente comando: $ dmesg|tail -n 2 Si repetimos la operación de introducir el pendrive en la ranura USB, y ejecutamos entonces el anterior comando, veremos una salida similar a ésta: sdb: sdb1 sdb2 sd 4:0:0:0: [sdb] Attached SCSI removable disk
Podemos comprobar que el kernel ha asignado los ficheros sdb1 y sdb2 a las particiones correspondientes del pendrive con el siguiente comando: # fdisk -l /dev/sdb El comando fdisk nos permite visualizar y manipular la tabla de particiones de los discos, y el kernel de Linux considera el pendrive como otro disco SCSI. También podemos hacer la misma comprobación mediante el siguiente comando alternativo: # blkid El comando blkid nos permite visualizar los atributos de los dispositivos de bloque. Un dispositivo de bloque es un dispositivo al cual se accede en forma de bloques de tamaño fijo (normalmente 4 KB), como es el caso de los pendrives USB, a diferencia de otros dispositivos a los cuales se accede carácter a carácter (byte a byte), como el teclado (tecla a tecla) o la pantalla (pixel a pixel). Si retiramos el pendrive, y ejecutamos los dos comandos anteriores, podremos comprobar que ambas particiones y ficheros de dispositivo han desaparecido.
2.
INSTALACIÓN Y GESTIÓN DE PAQUETES 2.1.
CentOS LINUX
CentOS Linux es una distribución compilada a partir del código fuente de Red Hat Enterprise Linux (RHEL). De este modo, CentOS Linux es totalmente compatible con RHEL. La diferencia fundamental es que se eliminan el logotipo y la imagen de marca Red Hat de todos los paquetes, así como el soporte técnico y las actualizaciones de pago. El acceso a los servicios profesionales de RHEL es a través de suscripciones de pago, que son incompatibles con CentOS Linux. CentOS Linux puede actualizarse eficazmente a través de sus propios repositorios oficiales y gratuitos. Cada versión de CentOS Linux tiene una garantía de mantenimiento de diez años. En cuanto al soporte técnico, CentOS Linux se apoya en la comunidad internacional de usuarios. Los manuales y la documentación técnica de RHEL puede utilizarse en la mayoría de los casos como referencia técnica para CentOS Linux, dada la compatibilidad entre ambas distribuciones. Es recomendable utilizar la documentación en su versión en inglés por estar más actualizada. Desde Enero de 2014, Red Hat da cobertura oficial al proyecto CentOS. A partir de este cambio, la marca CentOS es propiedad de Red Hat, quien asimismo emplea a los principales desarrolladores de CentOS. 2.2.
ENLACES
Red Hat Enterprise http://es.wikipedia.org/wiki/Red_Hat_Enterprise_Linux
Linux
CentOS - Wikipedia: http://es.wikipedia.org/wiki/CentOS Portal de descargas de Red Hat: https://access.redhat.com/downloads Portal de descargas de CentOS: https://www.centos.org/download Portal de documentación para Red Hat Enterprise Linux: https://access.redhat.com/documentation/en/red-hat-enterprise-linux Portal de documentación para CentOS: https://wiki.centos.org
-Wikipedia:
2.3.
INSTALACIÓN DE CentOS
Vamos a guiar los pasos necesarios para una correcta instalación de la última versión estable de CentOS Linux, que ha sido compilada a partir del código fuente de la última versión estable de Red Hat Enterprise Linux (RHEL). Una vez hemos accedido al portal de descargas de CentOS, tal y como se especifica en la sección anterior de enlaces, accedemos al apartado Minimal ISO, clicando en el icono correspondiente de la pantalla principal. Así pues, vamos a descargar una versión mínima, con los paquetes básicos para que nuestro sistema operativo funcione perfectamente. Tras la instalación, tendremos la opción de añadir todos los paquetes disponibles en los repositorios de CentOS. De este modo, el proceso de descarga e instalación de CentOS será más rápido y eficiente. Una vez hemos accedido a la página correspondiente al Minimal ISO, debemos elegir el mirror adecuado, que es el servidor donde se aloja el archivo que nos queremos descargar. Normalmente elegiremos el primero de la lista donde nos indica Actual Country, que hace referencia al mirror más cercano según nuestro país de residencia. Es importante elegir un mirror cercano, para no saturar los servicios de internet. La Minimal ISO cabe completamente en un CD, de modo que su tamaño es siempre menor de un gigabyte. Una vez instalada la ISO, tan sólo hay que ejecutarla desde un CD o un USB, y seguir las instrucciones por defecto. En los capítulos posteriores se dan algunas instrucciones referentes a particiones y configuraciones del hardware, que pueden ser útiles para personalizar la instalación. 2.4.
INSTALACIÓN DEL CARGADOR DE ARRANQUE
RHEL 7 utiliza GRUB2 (GRand Unified Bootloader version 2) como cargador de arranque. El cargador de arranque es el primer programa que se ejecuta cuando el sistema arranca (después de la BIOS) y es el responsable de la carga del kernel y la transferencia del control al sistema operativo. GRUB2 puede arrancar casi cualquier sistema operativo (Linux, Windows, Solaris, etcétera) y puede también transferir el control a otros cargadores de arranque en caso de sistemas operativos que no estén soportados. Advertencia: ¡la instalación de GRUB2 puede sobreescribir el actual cargador de arranque! Si tenemos otros sistemas operativos ya instalados, RHEL intenta detectarlos de forma automática y configurar GRUB2 para poder arrancarlos.
Podemos configurar manualmente con posterioridad cualquier sistema operativo adicional que no haya sido detectado adecuadamente (por ejemplo, una partición con Windows). En el proceso de instalación, debemos seleccionar el disco donde queremos instalar el cargador de arranque. Podemos seleccionar un disco duro, una pendrive USB, etcétera. En cualquier caso, debemos marcar dicho disco como dispositivo de arranque, para que pueda arrancar el cargador de arranque al inicio del sistema. Si seleccionamos un pendrive para alojar el cargador de arranque, será necesario insertar previamente el USB para arrancar el sistema. Podemos también elegir no instalar ningún cargador de arranque, en ese caso RHEL no podrá arrancar, a no ser que utilicemos un cargador de arranque externo, como puede ser un CD, DVD o un pendrive USB con Linux. 2.5.
MBR Y GPT
Tenemos la opción de instalar GRUB2, tanto en el Master Boot Record (MBR) como en la GUID Partition Table (GPT) del dispositivo. MBR es un antiguo método de particionado de disco usado en ordenadores basados en BIOS. El MBR contiene una tabla de particiones con capacidad para sólo cuatro particiones primarias. Cada entrada de la tabla contiene la información necesaria para definir una única partición: los puntos del disco donde empieza y termina, si la partición es arrancable y el tipo de partición. Para resolver este inconveniente, podemos crear particiones extendidas, donde se consume una entrada de la tabla de particiones, para dirigirnos a una sección del disco donde vamos a definir el resto de particiones lógicas, de forma anidada. Para resolver todos estos inconvenientes del MBR, surgió la GPT, un nuevo sistema de de particionado que es parte de la UEFI (Unified Extensible Firmware Interface). En general, instalaremos GRUB2 en el MBR cuando el tamaño del disco sea inferior a 2 TB, y en la GPT cuando sea superior. Si instalamos el cargador de arranque en la GPT, necesitaremos crear una partición BIOS Boot de tamaño 1 MB, para poder arrancar el sistema. En el caso de sistemas UEFI, sólo podemos usar la GPT para alojar GRUB2. Necesitaremos crear una partición EFI de más de 50 MB para poder arrancar el sistema. Nota: ni la partición BIOS Boot, ni la EFI pueden alojarse en un volumen LVM, así pues utilizaremos particiones físicas para ello.
2.6.
PARTICIONES ENCRIPTADAS
Si hemos seleccionado el uso de particiones encriptadas, el programa de instalación nos va a solicitar una contraseña. Las particiones se encriptan usando LUKS (Linux Unified Key Setup). Al elegir e introducir la contraseña hay que tener en cuenta el peligro que supone utilizar caracteres extraños, que pueden cambiar si se modifica la configuración del teclado. Así pues, si introducimos caracteres que se encuentran en una determinada posición del teclado español, no seremos capaces de introducir dicha contraseña en un teclado anglosajón. Hay que tener en cuenta que, si se desconfigura el sistema, éste arrancará con el teclado por defecto que es el anglosajón, y no seremos capaces de introducir la contraseña e iniciar el sistema. Es aconsejable encriptar las particiones que van a contener datos sensibles. Como mínimo, es aconsejable encriptar la partición /home. Advertencia: si olvidamos la contraseña, las particiones encriptadas serán totalmente irrecuperables. 2.7.
PARTICIONAMIENTO MANUAL
Si seleccionamos el particionamiento manual en el proceso de instalación, podremos elegir la configuración del disco y del sistema de ficheros. Se recomienda hacer un mínimo de cuatro particiones, para alojar los siguientes sistemas de ficheros: /, /home, /boot y swap. Una vez creadas las particiones, debemos seleccionar cada una de ellas y crear el punto de montaje en el sistema de ficheros. Cada vez que creamos una partición, podemos elegir el tipo: física (estándar), LVM (por defecto en RHEL), RAID, LVM Thin Provisioning, o BTRFS. También podemos seleccionar si queremos encriptar dicha partición. 2.8.
TIPOS DE PARTICIÓN
La partición física o estándar puede alojar un sistema de ficheros o un espacio swap para el intercambio de memoria. También puede contener un RAID basado en software o un volumen físico LVM. Si creamos una partición LVM, automáticamente se genera un volumen lógico LVM. LVM puede aumentar el rendimiento si se utilizan discos físicos. Si usamos LVM Thin Provisioning, se crea un espacio de almacenamiento libre, que puede ser utilizado por las aplicaciones cuando lo requieran.
El espacio libre se puede expandir de forma dinámica si es necesario. BTRFS es un sistema de ficheros con algunas característica especiales. Puede manejar más ficheros y más grandes que el sistema de ficheros extendido. Crear dos o más particiones RAID nos permite crear un dispositivo RAID. El objetivo de los dispositivos RAID puede ser mejorar la fiabilidad del almacenamiento, la velocidad de acceso al disco, o ambas cosas, dependiendo de la configuración RAID elegida. 2.9.
PARTICIONAMIENTO RECOMENDADO
RHEL recomienda las siguientes particiones: /boot, /, /home, swap. La partición /boot contiene el kernel del sistema operativo, necesario para el arranque del sistema. Debido a que la BIOS no puede manejar particiones de gran tamaño, se recomienda un valor pequeño. Un valor recomendado es de 500 MB. La partición raíz / es donde se aloja el sistema de ficheros. Toda la estructura de directorios cuelga de esta partición. Aunque un partición de 5 GB permite una instalación mínima, se recomienda un tamaño de 10 GB. La partición /home alojará los datos de los usuarios de forma separada a los datos del sistema. El tamaño de esta partición va a depender del uso que hagan los usuarios. En caso de corromperse la partición raíz, esta partición no se verá afectada, permitiendo rápidamente reinstalar el sistema sin pérdida de datos. Se recomienda un tamaño mínimo de 1 GB. La partición swap da apoyo a la memoria virtual. Los datos se escriben en la partición swap del disco duro, cuando no hay suficiente espacio en la memoria RAM. El tamaño adecuado para esta partición es muy variable, y depende de las características y uso del sistema: Menos de 2 GB de RAM, se recomienda que la SWAP sea el doble que la RAM (el triple si hiberna el sistema) Menos de 8 GB de RAM, se recomienda que la SWAP sea igual a la RAM (el doble si hiberna el sistema) Menos de 64 GB de RAM, se recomienda que la SWAP sea la mitad que la RAM (una vez y media si hiberna el sistema)
2.10.
YUM
YUM (Yellowdog Updater, Modified) es el gestor de paquetes de Red Hat. Permite obtener información sobre los paquetes disponibles, descargarlos de los repositorios, instalarlos y desinstalarlos, y actualizar el sistema a la última versión disponible. También se encarga de resolver las dependencias de forma automática, descargando e instalando todos los paquetes necesarios. YUM permite realizar muchas de las mismas funciones de RPM (Red Hat Packet Manager), con opciones de comando muy similares. Es la forma más rápida y sencilla de gestionar los paquetes de software instalados en el sistema. Veamos algunas de las opciones más importantes: # yum update (para actualizar el sistema completo) # yum update rpm (para actualizar únicamente el paquete rpm) # yum search kompare (para buscar información del paquete kompare) # yum list all (para listar información de todos los paquetes instalados y disponibles) # yum list "abrt*" (para listar información de los paquetes que empiezan por abrt) # yum list installed "krb*" (para listar información de los paquetes instalados que empiezan por krb) # yum list available "krb?*" (para listar información de los paquetes disponibles que empiezan por krb) # yum repolist (para listar información de los repositorios habilitados) # yum repoinfo (para listar información más detallada de los repositorios habilitados) # yum repolist all (para listar información de todos los repositorios) # yum info rpm (para listar información del paquete rpm) # yumdb info rpm (para listar información más detallada del paquete rpm) # yum install rpm (para instalar el paquete rpm) # yum install rpm abrt (para instalar los paquetes rpm y abrt) # yum install "audacious-plugins-*" (para instalar todos los plugins de audacious) # yum install /usr/sbin/named (para instalar el paquete que provee el binario /usr/sbin/named) # yum provides "/*bin/named" (para averiguar el paquete que provee el binario /*bin/named) # yum localinstall /home/me/a.rpm (para instalar el paquete a.rpm sito en la carpeta /home/me) # yum remove httpd (para desinstalar el paquete httpd) # yum group info LibreOffice (para listar información del grupo de paquetes LibreOffice) # yum group list ids (para listar nombres e identificadores de todos los grupos de paquetes) # yum group list ids "kde*" (para listar nombres de los grupos de paquetes relacionados con KDE) # yum group list hidden ids "kde*" (para listar nombres ocultos de los grupos de paquetes sobre KDE) # yum group update "KDE Desktop" (para actualizar el grupo de paquetes KDE Desktop)
# yum group install "KDE Desktop" (para instalar el grupo de paquetes KDE Desktop) # yum group install kde-desktop (para instalar el grupo de paquetes KDE Desktop) # yum install @"KDE Desktop" (para instalar el grupo de paquetes KDE Desktop) # yum install @kde-desktop (para instalar el grupo de paquetes KDE Desktop) # yum group remove "KDE Desktop" (para desinstalar el grupo de paquetes KDE Desktop) # yum group remove kde-desktop (para desinstalar el grupo de paquetes KDE Desktop) # yum remove @"KDE Desktop" (para desinstalar el grupo de paquetes KDE Desktop) # yum remove @kde-desktop (para desinstalar el grupo de paquetes KDE Desktop) # yum history list (para listar las veinte últimas transacciones) # yum history list all (para listar todas las transacciones) # yum history list 1..5 (para listar las cinco primeras transacciones) # yum history list "kde*" (para listar las transacciones relacionadas con KDE) # yum history sync (para sincronizar las bases de datos rpmdb y yumdb) # yum history stats (para visualizar estadísticas de las transacciones) # yum history summary (para visualizar un resumen de todas las transacciones) # yum history summary 1..5 (para visualizar un resumen de las cinco primeras transacciones) # yum history summary "kde*" (para visualizar un resumen de las transacciones sobre KDE) # yum history package-list "kde*" (para visualizar detalles de las transacciones sobre KDE) # yum history info 1..5 (para listar información detallada de las cinco primeras transacciones) # yum history addon-info 1..5 (para listar información más detallada de las cinco primeras transacciones) # yum history addon-info last (para listar información más detallada de la última transacción) # yum history undo last (para deshacer la última transacción) # yum history redo last (para repetir la última transacción) # yum history new (para comenzar el histórico de transacciones de nuevo) # yum-config-manager --add-repo URL (para añadir un repositorio) # yum-config-manager --enable REPO (para habilitar un repositorio) # yum-config-manager --disable REPO (para deshabilitar un repositorio) # yum install createrepo (para instalar el paquete createrepo) # cp *.rpm /home/me/repo (para copiar los paquetes RPM a la carpeta local /home/me/repo) # createrepo --database /home/me/repo (para crear un repositorio local)
3.
COMANDOS UNIX Y GNU 3.1.
LÍNEA DE COMANDOS
Antes de la introducción de la interfaz gráfica de usuario, UNIX y después Linux tan sólo disponían de una interfaz de texto por línea de comandos. Hoy en día, la interfaz de texto está disponible si se accede al sistema desde una terminal, un emulador de terminal, una consola virtual de texto, o cuando se accede a un sistema a través de ssh o telnet. Aunque parezca un concepto anticuado, la interfaz de texto aún puede resultar muy útil. En algunos casos, el administrador usará una herramienta de línea de comandos, bien por no existe una equivalente gráfica, o bien porque la herramienta gráfica no es tan potente y flexible como la de texto. Muchas veces, cuando el sistema es un servidor, ni siquiera se instala la interfaz gráfica. La razón principal de esta omisión es que la GUI (Graphical User Interface) consume muchos recursos del sistema; en un servidor, esos recursos es mejor que se dediquen a la tarea principal del servidor. 3.2.
PRIVILEGIOS DE ROOT (SUPERUSUARIO)
Los sistemas UNIX/Linux siempre han tenido un usuario privilegiado denominado root. Cuando se trabaja como usuario root, se tienen poderes omnipotentes sobre el sistema. Un usuario trabajando con privilegios de root a menudo se le conoce como un superusuario o administrador del sistema. Con privilegios de root, se puede leer o escribir en casi cualquier archivo del sistema, ejecutar programas que los usuarios ordinarios no pueden, etcétera. El superusuario es el responsable del mantenimiento del sistema. Es importante no experimentar cuando se trabaja con privilegios de root. Se puede experimentar libremente cuando NO se tienen privilegios de root. Sin embargo, cuando se tienen privilegios de root, es importante limitarse a ejecutar los comandos que sean estrictamente necesarios, a la vez que es importante saber muy bien lo que se está haciendo. Tras haber completado la tarea, de volverse a la identidad de usuario ordinario. Trabajando con privilegios de root, se puede dañar el sistema de forma tal que puede ser necesario reinstalar Linux. En una configuración convencional, se pueden ganar privilegios de root de dos maneras diferentes. En primer lugar, se puede acceder al sistema como root; de este modo, se trabajará con privilegios de root hasta que se cierre la sesión. De forma alternativa, habiendo accedido al sistema como usuario ordinario, se puede utilizar el comando su (substitute user) para ejecutar un comando con privilegios de root, o bien ganar privilegios de root temporalmente para ejecutar varios comandos.
Tanto al acceder como root desde la consola, como al ejecutar su para ganar privilegios de root, es necesario introducir la contraseña de root. El siguiente ejemplo muestra cómo usar su para ejecutar un único comando: $ ls -l /lost+found ls: cannot open directory /lost+found: Permission denied $ su -c ‘ls -l /lost+found’ Password: (ahora introducimos la contraseña de root) total 0 El primer comando del ejemplo precedente muestra que un usuario ordinario no está permitido a listar los archivos contenidos en el directorio /lost+found: ls muestra un mensaje de error. El segundo comando utiliza su con la opción -c (command) para ejecutar el mismo comando con privilegios de root. Las comillas simples que encierran el comando nos aseguran que la shell interpreta el comando correctamente. Cuando el comando termina su ejecución (ls muestra que no hay archivos en el directorio), el usuario pierde sus privilegios de root. Cuando se invoca el comando su sin argumentos, se ejecuta una nueva shell con privilegios de root. Típicamente la shell muestra el símbolo de la almohadilla # para indicar que se trabaja con privilegios de root. Con el comando exit se vuelve al símbolo normal $ y se pierden los privilegios de root. Veamos un ejemplo: $ su Password: (ahora introducimos la contraseña de root) # ls -l /lost+found total 0 # exit exit $ Algunas distribuciones (como Ubuntu) tienen el acceso a la cuenta de root bloqueado, y dependen del comando sudo para autorizar a los usuarios para trabajar con privilegios de root. El comando sudo requiere que se introduzca la contraseña del usuario (y NO la contraseña de root) para ganar privilegios de root. El siguiente ejemplo muestra el uso de sudo para visualizar el contenido de la carpeta /lost+found: $ sudo ls -l /lost+found [sudo] password for user: (ahora introducimos la contraseña de usuario) total 0
Con el argumento -s (spawn), sudo ejecuta una nueva shell con privilegios de root. Típicamente, la shell muestra el símbolo # para indicar que estamos trabajando con privilegios de root. Con el comando exit se vuelve al símbolo normal $ y a los privilegios normales de usuario ordinario. $ sudo -s [sudo] password for user: (ahora introducimos la contraseña de usuario) # ls -l /los+found total 0 # exit logout $ 3.3.
LA DOCUMENTACIÓN DE LA LÍNEA DE COMANDOS
El comando man muestra las páginas de la documentación del sistema. Esta documentación es muy útil cuando sabemos el nombre del comando que queremos utilizar, pero no recordamos con exactitud cómo se utiliza. También se puede buscar en las páginas del manual información acerca de una característica específica de dicho comando. Dado que la explicación del manual es poco amigable, resulta más útil cuando ya tenemos algunas nociones básicas del funcionamiento del comando. Así pues, para averiguar más información acerca de un comando, introducimos el comando man, seguido del nombre del comando sobre el que buscamos información. Así por ejemplo, man man mostrará información del propio comando man: $ man man Basándose en el FHS (Filesystem Hierarchy Standard), las páginas del manual se dividen en diez secciones: Comandos de usuario Llamadas al sistema Librerías Dispositivos Formatos de archivo Juegos Varios Administración del sistema A no ser que se especifique la sección del manual, el comando man muestra la primera ocurrencia en el manual de la palabra que se especifica en la línea de comandos. En algunos casos el manual contiene entradas para diferentes herramientas con el mismo nombre. Por ejemplo, en el manual 1 se explican las funciones del comando passwd, y en el manual 5 se explican las características del archivo /etc/passwd: $ man 1 passwd $ man 5 passwd
3.4.
APROPOS
Cuando no sabemos el nombre exacto del comando que ejecuta una determinada tarea, podemos usar el comando apropos seguido de una palabra clave para realizar una búsqueda. El comando apropos busca la palabra clave en la corta descripción que todas las páginas del manual contienen y muestra aquellas que coinciden. La utilidad man, cuando se invoca con la opción -k (keyword) proporciona la misma salida que apropos. El siguiente ejemplo muestra la salida de apropos cuando se le invoca con la palabra clave: who. La salida del comando incluye el nombre de cada comando, la sección del manual que lo contiene, y la corta descripción del manual: $ apropos who at.allow (5) - determine who can submit jobs via at or batch w (1) - show who is logged on and what they are doing who (1) - show who is logged on whoami (1) - print effective userid whois (1) - client for the whois service El comando whatis es similar a apropos, pero localiza solamente coincidencias completa para el nombre del comando: $ whatis who who (1) - show who is logged on 3.5.
HELP
Otra herramienta que podemos utilizar en un entorno de texto es la opción --help. La mayoría de comandos de GNU proporcionan una opción --help que muestra información acerca de sí misma: $ cat --help $ ls --help|less El comando help interno de la shell muestra información acerca de los comandos de la shell, estructuras de control, y otras características. Se invoca con el comando help seguido de la palabra clave: $ help help $ help echo $ help while También se puede encontrar información más detallada en la siguientes carpetas: /usr/share/doc /usr/src/linux/Documentation
La mayoría de estos directorios y sus subdirectorios contienen un archivo README. Es un buen principio para empezar a buscar información. Otros enlaces donde podemos encontrar información serían: www.google.es (Google) www.gnu.org (GNU) www.tldp.org (The Linux Documentation Project) 3.6.
PASSWD
Utilizaremos el comando passwd para cambiar la contraseña. Al ejecutar el comando, lo primero que nos pregunta es la contraseña original. Si introducimos la contraseña correcta, entonces nos pregunta por la nueva contraseña: $ passwd Changing password for user. (current) UNIX password: New password: Retype new password: passwd: all authentication tokens updated successfully. Para ser relativamente segura, una contraseña debería contener una combinación de números, letras mayúsculas y minúsculas, así como caracteres especiales. Aunque el uso de caracteres especiales es peligroso si existe la posibilidad de que se desconfigure el teclado, y tengamos que usar el teclado por defecto (anglosajón), dado que los caracteres especiales se encuentran en lugares diferentes a los que estamos acostumbrados. Además, deberíamos seguir los siguientes criterios: Debería tener una longitud mínima de ocho caracteres. No debería ser una palabra de ningún diccionario de ningún lenguaje conocido. No debería ser el nombre de una persona, mascota, o cosa. Debería ser mezcla de letras y números. No debería estar relacionado con el nombre de usuario, de ninguna manera. La entropía de una contraseña es una medida matemática de su fortaleza. Así, por ejemplo, una contraseña que consista en ocho caracteres, extraídos aleatoriamente de un conjunto de letras mayúsculas A-Z (26), minúsculas a-z (26) y números del 0 al 9 (10), tendrá una probabilidad de ser descubierta igual a la inversa de (26+26+10)^8 = 2.18x10^14. Este valor puede parecernos elevado, pero no lo es tanto. Al final, la contraseña se almacena en forma de unos y ceros, y por eso buscamos su equivalencia en el sistema binario. Es decir, ¿qué longitud debería tener una contraseña formada por unos y ceros, para que tuviera la misma probabilidad de ser descubierta? La ecuación que se plantea es: (2)^X = 2.18x10^14, y el resultado es que X = 47 bits. A este resultado se le conoce como los bits de entropía de nuestra contraseña.
Suponiendo que la contraseña haya sido creada eligiendo caracteres de forma totalmente aleatoria, hace más de quince años que, con un hardware especializado, se ha podido descifrar contraseñas de hasta 56 bits de entropía en menos de un día. Se recomienda un mínimo de 128 bits de entropía para contraseñas importantes. La fórmula para calcular la entropía de una contraseña sería: X = (longitud de la contraseña) x Log(número de caracteres diferentes a elegir) / Log(2) 3.7.
ALGUNOS COMANDOS ÚTILES
ls lista el contenido de un directorio cat muestra el contenido de un fichero rm borra un fichero more muestra el contenido de un fichero paginado less muestra el contenido de un fichero paginado y se puede navegar hacia atrás cp copia un archivo mv cambia el nombre de un archivo grep busca un patrón head muestra las primeras líneas de un archivo tail muestra las últimas líneas de un archivo sort muestra un archivo ordenado por líneas uniq muestra un archivo borrando las líneas duplicadas diff compara dos archivos file identifica el contenido de un archivo | comunica la salida de un comando con la entrada de otro wc cuenta las palabra, líneas y caracteres de un archivo tr traduce el texto de un archivo echo muestra texto date muestra la fecha script graba una sesión de shell gzip comprime un archivo gunzip descomprime un archivo tar empaqueta y desempaqueta archivos which localiza comandos whereis localiza comandos type determina si un comando está empotrado en la shell who lista usuarios en el sistema uptime muestra información de la carga y duración del sistema w lista usuarios en el sistema free muestra información de la memoria
4.
SISTEMAS DE FICHEROS 4.1.
TIPOS DE SISTEMAS DE FICHEROS
XFS es el sistema de ficheros por defecto y el recomendado por RHEL. Posee alto rendimiento y soporta sistemas de ficheros de hasta 16 EB, con ficheros individuales de hasta 8 EB, y estructuras de directorios de hasta decenas de millones de entradas. Soporta el diario de metadatos, que facilita una rápida recuperación en caso de desastre. Se puede también defragmentar y modificar el tamaño mientras está montado y activo. El máximo tamaño soportado por una partición XFS es de 500 TB. El sistema de ficheros EXT4 está basado en EXT3 y posee algunas mejoras respecto a éste. Dichas mejoras incluyen soporte para sistemas de ficheros más grandes y ficheros individuales más grandes, asignación de espacio en disco más rápida y eficiente, sin límite en el número de subdirectorios dentro de otro directorio, más rápido análisis del sistema de ficheros y un sistema de diario más robusto. El máximo tamaño soportado por una partición EXT4 en RHEL 7 es de 50 TB. El sistema de ficheros EXT3 está basado en EXT2 y tiene una única ventaja respecto a éste: el diario. Usar un diario reduce el tiempo de recuperación del sistema de ficheros tras un desastre, puesto que no es necesario analizar el sistema para comprobar la consistencia de los metadatos. El sistema de ficheros EXT2 soporta los ficheros Unix incluyendo: ficheros regulares, directorios y enlaces simbólicos. El sistema de ficheros VFAT es un sistema Linux que es compatible con el sistema FAT de Windows. Las particiones SWAP se utilizan para soportar la paginación de la memoria. En caso de que se agote la RAM, el sistema operativo guardará los páginas de memoria en el disco duro. BIOS Boot es una pequeña partición requerida para arrancar un dispositivo con GPT en un sistema BIOS. EFI System Partition es una pequeña partición requerida para arrancar un dispositivo con una GPT en un sistema UEFI.
4.2.
RAID BASADO EN SOFTWARE
Los dispositivos RAID (Redundant Arrays of Independent Disks) se construyen a partir de varios dispositivos de almacenamiento que se agrupan para mejorar el rendimiento o, según la configuración, la tolerancia a fallos. Como mínimo, se requieren dos particiones RAID para crear un dispositivo RAID. Una vez seleccionado el dispositivo RAID, podemos configurar el nivel o tipo de RAID: RAID 0: Optimización del rendimiento (stripe) Los datos se distribuyen en múltiples discos. De este modo, el acceso a los datos es más rápido. No posee redundancia, por lo que un fallo en uno de los discos destruye por completo el RAID. Este nivel requiere como mínimo dos particiones RAID. RAID 1: Redundancia (mirror) Los datos de un disco se copian en otro o más discos. Cuantos más discos extra se utilicen, mayor será el nivel de redundancia y por tanto de fiabilidad. Este nivel requiere como mínimo dos particiones RAID. RAID 4: Detección de errores (paridad) Los datos se distribuyen en múltiples discos, y se utiliza un único disco para almacenar la información de paridad que permitirá la recuperación de los datos en caso de que falle alguno de los discos. Dado que toda la información de paridad está almacenada en un único disco, el acceso a este disco crea un cuello de botella en el rendimiento del dispositivo. Este nivel requiere como mínimo tres particiones RAID. RAID 5: Detección de errores distribuida (paridad distribuida) Distribuye los datos y la paridad en múltiples discos. De este modo, ofrece un mejor rendimiento que el RAID 4. Este nivel requiere como mínimo tres particiones RAID. RAID 6: Detección de errores distribuida y redundante (paridad distribuida y redundante) Este nivel es similar al RAID 5, pero en lugar de almacenar un único conjunto de datos de paridad, almacena dos conjuntos. Este nivel requiere como mínimo cuatro particiones RAID. RAID 10: Redundancia y optimización de rendimiento (mirror & stripe) Este nivel es un híbrido (o anidado) entre el RAID 1 y el RAID 0. Consiste en un conjunto de stripes a partir de una serie de mirrors. Por ejemplo, un RAID 10 construido con cuatro particiones RAID consiste en dos stripes a partir de dos mirrors. Este nivel proporciona mejor rendimiento que el resto de niveles (excepto, obviamente, el RAID 0). Así pues, es el preferido para aplicaciones como bases de datos, correo electrónico y servidores web. Este nivel requiere como mínimo cuatro particiones RAID.
4.3.
VOLÚMENES LÓGICOS LVM
LVM (Logical Volume Managament) presenta una visión lógica del espacio físico. De este modo, las particiones físicas (de cualquier tipo y naturaleza) se consideran como volúmenes físicos, que pueden agruparse en grupos de volúmenes. Cada grupo de volúmenes puede dividirse en múltiples volúmenes lógicos, cada uno de los cuales es análogo a una partición de disco estándar. Así pues, los volúmenes lógicos LVM funcionan como particiones que pueden estar distribuidas en múltiples discos físicos. Advertencia: no puede alojarse la partición /boot en un volumen lógico LVM.
5.
ARRANQUE Y NIVELES DE EJECUCIÓN 5.1.
INIT SYSTEM V
El programa init es el primer proceso que se inicia y el último que se para dentro del sistema, y su misión es ejecutar las demás tareas. La función de init consiste en iniciar y parar todos los servicios. init ejecutará las diferentes tareas iniciales necesarias para el buen funcionamiento de Linux mediante la ejecución de varios comandos y scripts. Una vez iniciado el sistema y ejecutados los servicios, init sigue activo para gestionar los cambios de estado de los procesos que controla y de los niveles de ejecución. El programa init puede cambiar de una distribución a otra. En la mayoría de las distribuciones profesionales o mayores (Mandriva, Red Hat/Fedora, openSUSE, Debian, etc.), el principio sigue siendo más o menos el mismo: init de tipo System V (basado en la noción de niveles de ejecución). La distribución Ubuntu utiliza Upstart, que gestiona las prioridades, los eventos y dependencias entre los servicios, pero respeta el mismo principio. La distribución Slackware utiliza otro mecanismo inspirado en BSD. Finalmente, la distribución Fedora utiliza desde la versión 15 systemd otro reemplazo de init, de diseño moderno y disponible únicamente para Linux. Hoy en día, systemd suele sustituir a init. Sin embargo, la versión System V de init aún goza de días de gloria: no sólo la siguen usando la mayoría de distribuciones de Linux para empresas, sino que además su principio de diseño y su configuración son casi idénticos a las versiones Unix propietarias. El proceso init es el padre de todos los procesos. Siempre tiene el PID 1. Su configuración está en el archivo /etc/inittab. Si este archivo está corrompido o es inutilizable, habrá que arrancar el sistema en modo single (S, s, 1 Single) y arreglarlo, o en el peor de los casos arrancar desde un soporte externo o un disco de emergencia. Es un archivo central del sistema operativo.
5.2.
NIVELES DE EJECUCIÓN
Un nivel de ejecución, o runlevel, corresponde al estado en el cual está Unix/Linux. Init controla dicho estado. Cada estado dispone de su propia configuración (o por inittab, o por scripts llamados initscripts). Por ejemplo, se puede utilizar un nivel de ejecución para arrancar Unix en modo monousuario, en multiusuarios, con o sin red, con o sin modo gráfico. El administrador puede personalizar todos los niveles.
6.
IMPRESIÓN 6.1.
CONFIGURACIÓN
Existen tres estándares de impresión en Unix, uno en System V, otro en BSD y un último federador. Sea cual sea el estándar, el principio de configuración es el mismo. A cada impresora detectada (en general en /etc/printcap) corresponde una cola de espera (queue). Un servicio independiente gestiona el conjunto de estas colas de espera. Este mecanismo permite la impresión multiusuario (los trabajos de impresión están en cola de espera, job queues) y en red (se puede usar el servicio desde otra máquina remota). En general, todas las impresoras saben imprimir directamente texto llano ASCII en 80 columnas. Para imprimir documentos formateados o imágenes, se puede utilizar un driver. En realidad se habla de filtro de impresión. El filtro puede ser un script o un binario que recupera el flujo entrante (texto, imagen, documento, postscript...), lo identifica y, con la ayuda de tratamientos asociados, lo transforma en lenguaje comprensible por la impresora (PostScript, PCL, Canon, Epson, WPS...).
7.
FUNDAMENTOS DE REDES 7.1.
TCP/IP
El origen de TCP/IP se sitúa en las investigaciones de la DARPA (Defense Advanced Research Project Agency), que empezaron en 1970 y desembocaron en ARPANET. En realidad, la DARPA financió a la universidad de Berkeley, que integró los protocolos básicos de TCP/IP dentro de su sistema UNIX BSD 4. TCP/IP se popularizó gracias a su interfaz genérica de programación de intercambios de datos entre las máquinas de una red, las primitivas sockets, y la integración de protocolos de aplicación.
7.2.
DIRECCIONAMIENTO
Es importante saber antes de la instalación a qué tipo de red se debe integrar el nuevo servidor, TCP/IP por supuesto, pero hay que reservarle una dirección IP, un hostname (nombre de máquina de red), conocer las diversas pasarelas, el nombre de dominio, la clase utilizada y la máscara de subred o netmask. Hagamos un breve repaso de las clases de IP. Se define una dirección IP en 32 bits y se representa con cuatro nombres separados por puntos: n1.n2.n3.n4. Esta dirección está formada por dos partes que definen la dirección de red y el anfitrión en la red, respectivamente. Según los casos, se distinguen cuatro o cinco clases de direcciones: A, B, C, D y E, pero sólo las tres primeras nos interesan. Existen direcciones de anfitriones que no pueden utilizarse. Por ejemplo, en la clase C sólo se pueden tener 254 anfitriones, mientras que el identificador de la máquina está codificado en 8 bits (por lo tanto, 256 valores). La dirección 0 representa la dirección de la red, y la dirección 255, la del broadcast (multidifusión). Es posible dividir estas redes en subredes usando máscaras que permiten una división más pequeña de las direcciones. Un netmask es una máscara binaria que permite separar de manera inmediata la dirección de la red y de la subred, de la dirección del anfitrión en la dirección IP global. La máscara de red permite determinar si una máquina destinataria está en la misma red que usted o no. Hay que indicar la ruta que deben tomar los paquetes IP para alcanzar su destino. Si su máquina es un terminal cliente que dispone de una sola tarjeta de red y esta red tiene un único enrutador (caso clásico de una conexión hacia Internet), entonces debe crear dos rutas. La primera es la que indica qué tarjeta de red deben emplear los paquetes para acceder al resto de la red (a la subred); la segunda, qué ruta deben utilizar los paquetes para salir de la red. En general, se habla de ruta por defecto cuando sólo hay un enrutador. 7.3.
CONFIGURACIÓN
Red Hat propone herramientas para configurar la red básica sin tener que manejar los archivos de configuración. El programa en modo de texto netconfig permite instalar la configuración TCP/IP básica (IP estática o dinámica, enrutador, nombre de anfitrión, servidor de nombres). La configuración básica de una interfaz de red se hace con la ayuda del comando ifconfig. Sin embargo, la mayoría de las distribuciones utilizan scripts de administración y archivos de configuración que simplifican mucho las cosas, ya que configuran al mismo tiempo la interfaz de red y las rutas.
8.
SERVICIOS DE RED 8.1.
SENDMAIL
La serie libre sendmail es la más conocida y más utilizada. Eric Allman creó Sendmail en 1981, que fue integrado en BSD 4.2 en 1983. En 2000 se estimaba que lo usaban a más de 100 millones de servidores de correo electrónico. Mientras no haya que modificar su configuración básica, sendmail es idóneo. Si desea ir más lejos, le hará falta comprarse un libro completo sobre este tema. La configuración de sendmail es tan compleja que se inventó un lenguaje de macros llamado m4 sólo para él. Así no se edita (o poco) el archivo de configuración de sendmail: se edita el archivo fuente de las macros y se vuelve a compilar: m4 va a crear el archivo de configuración de sendmail. Sendmail se ha convertido en un monstruo en lo que respecta a potencia y configuración. 8.2.
APACHE
Apache 2 es el servidor HTTP más utilizado actualmente en los servidores Web. Su configuración y su flexibilidad hacen que sea un servidor ineludible. Cuando un servidor Apache recibe peticiones, puede distribuirlas a procesos hijos. La configuración permite iniciar procesos de manera anticipada y adaptar de manera dinámica este número según la carga. Apache es modulable. Cada módulo permite añadir funcionalidades al servidor. El módulo más famoso es probablemente el que gestiona el lenguaje PHP, ”mod_php”. Cada módulo se añade mediante los archivos de configuración y no hace falta iniciar de nuevo el servidor Apache: sólo se le da la orden de volver a leer su configuración. Apache puede gestionar varios sitios web a la vez, cada uno con su nombre, mediante los anfitriones virtuales. Se almacena la configuración principal en /etc/httpd/conf/httpd.conf: controla los parámetros generales del servidor web, los anfitriones virtuales y los accesos. La configuración de los diferentes módulos está ubicada en /etc/httpd/conf.d. Los módulos están presentes en /etc/httpd/modules/. Por defecto la raíz del servidor, donde se colocan las páginas del sitio, está en /var/www o /srv/www. Esta posición depende de la directiva DocumentRoot en los archivos de configuración.
8.3.
DNS
El sistema de Nombres de Dominios DNS (Domain Name System) transforma los nombres de anfitrión en direcciones IP: es la resolución de nombre y transforma las direcciones IP en nombres de anfitrión: es la resolución inversa. Permite agrupar las máquinas por dominios de nombre. Facilita información de encaminamiento y correo electrónico. El DNS permite referirse a sistemas basados en IP (los anfitriones) empleando nombres amenos (los nombres de dominios). El interés de un DNS es obvio. Los nombres de dominio son más fáciles de recordar y, si su dirección IP cambia, el usuario no se da cuenta. Por lo tanto, se entiende que el DNS es un servicio fundamental para Internet. Los nombres de dominio van separados por puntos. Como cada elemento se puede componer de 63 caracteres, sólo puede haber un máximo de 127 elementos y el nombre completo no debe superar los 255 caracteres. El nombre completo no abreviado se llama FQDN (Fully Qualified Domain Name). En un FQDN, el elemento más a la derecha se llama TLD (Top Level Domain), el más a la izquierda representa al anfitrión y, por tanto, la dirección IP. 8.4.
SSH
OpenSSH es un protocolo de shell con prestaciones de seguridad, un mecanismo que permite la autenticación segura, la ejecución remota y la conexión a distancia. Permite también el transporte seguro del protocolo X Window. En realidad, es capaz encapsular protocolos no seguros redireccionando los puertos. Los paquetes que se deben utilizar para un servidor son openssh, openssl y openssh-clients. Para X se añaden los paquetes openssh-askpass* (puede haber varios en función del entorno de escritorio). La lista de los paquetes que hay que instalar depende de cada distribución. El uso más común sigue siendo el acceso remoto seguro a una máquina mediante el cliente ssh. Es posible establecer una conexión automática hacia otra máquina sin introducir una contraseña. Para ello, es necesario generar un par de claves, privada y pública, desde la cuenta de usuario del cliente (la máquina que se va a conectar). No se debe introducir ninguna frase de contraseña. Por parte del servidor ssh, se debe colocar la clave pública del cliente en un archivo que contiene las claves autorizadas para conectarse en la cuenta de destino.