===== Introducción ===== El propósito de este curso es brindar los conocimientos mínimos de Linux, tanto técnicos como informativos, que permitan al alumno administrar básicamente un sistema GNU/Linux. Incluye conocimientos sobre distribuciones basadas en Debian, en CentOS y algunas otras, así como ideas y conceptos de BSD Unix. Se incluirá también información sobre servidores, demonios y bases de datos, así como nociones de seguridad. El objetivo de esta página wiki es suministrar un resumen de lo que se enseñará durante la cursada, en especial comandos y consejos prácticos. ===== 1. Introducción a Linux ===== ==== Objetivos ==== Adquirir conceptos básicos y terminología necesaria para el uso diario del sistema operativo. ==== 1.1. [ ] Definición e historia ==== Se llama "Linux" específicamente al kernel de un sistema operativo. Este kernel fue creado por [[http://es.wikipedia.org/wiki/Linus_Torvalds|Linus Torvalds]] en 1991 y liberado como software Open Source (Código Abierto) bajo licencia [[http://es.wikipedia.org/wiki/GNU_General_Public_License|GNU GPL (GNU Privacy Licence)]] de manera que cualquiera pueda mejorarlo, extenderlo y modificarlo para sus propias necesidades. La condición de esta licencia es que se publiquen nuevamente esas fuentes modificadas, junto con una copia de la propia licencia. Por extensión, se llama [[http://es.wikipedia.org/wiki/Linux|"GNU/Linux" o "Linux"]] a secas al sistema operativo, que consta de un conjunto de herramientas, servicios y archivos de configuración, y que permite aprovechar la potencia y confiabilidad de ese kernel. De ahora en más, se utilizará cualquiera de ambos términos para referirse al sistema operativo en sí, a menos que se indique lo contrario. GNU/Linux, como sistema operativo, no es de ninguna manera un Unix. Es simplemente un sistema operativo "como Unix" (Unix-like). Es decir, toma conceptos, ideas y técnicas de Unix, agregando muchas cosas nuevas, para obtener un producto mucho más versátil, extensible y práctico. ==== 1.2. [ ] Conceptos básicos: multiusuario, multitarea, versatilidad, monoraíz ==== Linux ha sido escrito desde las bases para ser multiusuario, proveer poderosas capacidades multitarea, y una versatilidad ilimitada. **Multiusuario**: significa que cada proceso puede ser ejecutado con un usuario diferente, proveyendo así limitaciones básicas a cada uno. Esta capacidad se usa extensivamente y se recomienda aprovecharla. Por ejemplo, cada servicio suele ser ejecutado con su propio usuario, limitando así en caso de un ataque a los permisos asignados a dicho usuario. **Multitarea**: es la capacidad de ejecutar múltiples tareas sin que interfieran unas con otras. En el sistema en el cual está siendo escrito este tutorial en este momento, se ejecutan más de 160 procesos y unos 380 threads; esto incluye servicios como DNS, DHCP, proxy, y servidor HTTP, así como máquinas virtuales. La memoria usada es de unos 3,7GB incluyendo las dos máquinas virtuales. **Versatilidad**: es la posibilidad de ser utilizado en distintos ambientes, para enorme cantidad de fines distintos, sobre distintas plataformas e infinitos servicios. Desde celulares y minicomputadoras de todo tipo, hasta supercomputadoras con miles de procesadores y almacenamiento de miles de TB; desde centro de datos para servicios críticos de empresas, hasta computadoras de escritorio y multimedia. **Monoraíz**: como los Unix, Linux está basado en el concepto de "raíz única", es decir que todos los directorios penden de una sola raíz base y no hay letras de unidades. Los dispositivos de almacenamiento son accedidos luego de seguir un procedimiento que se denomina "montar" y que deja disponibles al usuario los archivos contenidos en ellos en una carpeta del árbol de directorios. ==== 1.3. [ ] Conceptos previos: particionamiento, primarias, extendidas y lógicas, GPT ==== Las particiones primarias, extendidas y lógicas es el sistema de particionamiento basado en DOS sobre el que está diseñado todo el hardware x86 que se usa actualmente. Se llama MBR (Master Boot Record), es de 32 bits y está limitado a unidades de almacenamiento de 2TB. Por ello se ideó un nuevo sistema denominado {{http://es.wikipedia.org/wiki/GUID_Partition_Table|GPT (GUID Partition Table)}} que es de 64 bits y utiliza identificadores globales únicos (GUID, Globally Unique IDentifiers) para guardar la información de las particiones. GPT permite hasta 128 particiones, las que son todas del mismo nivel, es decir no existe diferencias entre ellas como en MBR. ==== 1.4. [ ] Terminología básica ==== **Bash**: es uno de los intérpretes de comandos más utilizados. Permite ejecutar comandos y desarrollar scripts para automatizar tareas. Posee una gran funcionalidad **boot manager**: es el programa que inicia el sistema operativo. Se instala en el MBR y si hay varios sistemas operativos instalados en la misma computadora, permite iniciar cada uno por separado **Manejador de ventanas**: en inglés "Window Manager". Es una capa de software sobre el sistema X Window, y que provee la funcionalidad de ventanas para mover, minimizar, maximizar, apilar, etc. las aplicaciones. Las aplicaciones y programas gráficos corren dentro de las ventanas provistas por el manejador de ventanas **MBR (Master Boot Record)**: es una pequeña porción al inicio de un disco rígido, que es ejecutada por la BIOS al encender una computadora **montar**: acción de hacer visibles para el usuario los archivos de un sistema de archivos, conectando éste a una carpeta del árbol de directorios **particionar**: acción de dividir una unidad de almacenamiento en particiones, que luego pueden ser usadas para separar las distintas porciones del sistema operativo **raíz**: en inglés también "root". Es el directorio principal, de más alto nivel, de un sistema de archivos Unix. De él penden el resto de las carpetas del sistema operativo **root**: usuario administrador del sistema. También se llama "superuser" **shell**: también denominado "consola" o "terminal". Es una interfaz de texto para interactuar con el sistema operativo, que permite la ejecución de comandos **sistemas de archivos**: en inglés "filesystems". Son los diferentes sistemas de organización de archivos en unidades de almacenamiento, de los cuales Linux puede utilizar una gran variedad, cada uno con sus ventajas y desventajas: ext4, ext3, NTFS, FAT32, vfat, ReiserFS, XFS, GFS2, JFS, etc. **X Window System**: llamado simplemente "las X" o "sistema X", es el motor gráfico que provee las primitivas de acceso al hardware de vídeo, y que permite interactuar de manera gráfica con el sistema operativo. Sobre éste se ejecutan manejadores de ventanas y aplicaciones gráficas ==== 1.5. [ ] Utilidad: ¿para qué sirve? ¿para qué se usa? ==== Es un sistema operativo extremadamente versátil, por lo que puede usarse prácticamente en cualquier ámbito y para resolver el tema que sea. Algunos ejemplos a continuación: * Estación de trabajo: como reemplazo de otros sistemas operativos, para realizar todo tipo de tareas, desde procesamiento de texto, cálculo y gráficos, hasta tratamiento de imágenes, CAD/CAM y muchas otras cosas * Servidor: brindando servicios como web server, proxy, DHCP, DNS, firewall, archivos, aplicaciones, bases de datos, sistemas de archivos distribuídos, virtualización * Sistemas embebidos: al tener la posibilidad de modificar y adaptar el código todo lo necesario, se puede reducir su tamaño para poder utilizarlo en controladores y toda clase de sistemas embebidos * Celulares: el sistema operativo Android, presente hoy en día en la mayoría de los celulares, es una versión modificada y reducida del kernel Linux y utilitarios * Otros dispositivos: reproductores multimedia, teclados electrónicos, televisores inteligentes, sistemas de navegación, sistemas de automóviles * Militares: es la base de sistemas operativos presentes en electrónica militar de todo tipo * Científicos: se utiliza extensivamente en investigación, como supercomputadoras, renderización gráfica, cálculo de alto rendimiento, bases de datos masivas * Nube: las nubes públicas más conocidas funcionan ofreciendo sus servicios gracias al sistema operativo Linux que corre sobre miles de servidores en cluster * Empresas: la mayoría de las empresas más grandes de hoy utilizan Linux. Como ejemplos valen Amazon, Banco Itaú, Boeing, CERN, Dreamworks, Facebook, Google, IBM, Industrial Light & Magic, NASA, Peugeot, Pixar, Twitter, Virgin * Gobiernos: alrededor del mundo, muchos gobiernos nacionales, provinciales, regionales y municipales usan Linux, incluyendo el Gobierno argentino ==== 1.6. [ ] Distribuciones: concepto y ejemplos ==== Se denomina "distribución", o "distro" a un conjunto de herramientas de software, más kernel Linux. La mayoría de ese software suele ser Open Source. En muchos casos, las distribuciones son gratuitas. No así en otros. Ejemplos son: * Arch * CentOS * Debian * Gentoo * RedHat * SuSE * Slackware * Ubuntu * Ututo ==== 1.7. [ ] Sitios recomendados en castellano y en inglés ==== === En castellano === * The Linux Documentation Project (español): http://es.tldp.org/ * Manuales varios: http://www.alcancelibre.org/staticpages/index.php/manuales-indice * Wiki de CentOS: http://wiki.centos.org/es * FMSI Sistema de documentación: https://doc.fmsistemas.com/ === En inglés === * Sitio oficial de CentOS: http://www.centos.org/ * CentOS 5 Manual: http://www.centos.org/docs/5/ * The Linux Documentation Project: http://www.tldp.org/