Bienvenidos a este capítulo de este Curso Gratis de Linux para Hackers – Introducción a Linux. Comparte este articulo y síguenos para recibir más capítulos, guías y cursos gratis.
Esta guía es parte de un curso mucho más grande en donde te enseñamos a convertirte en hacker de 0 a 100. Desde los conocimientos más básicos hasta conseguir empleo.
En esta guía veremos desde cero un tema tan amplio como es Linux y lo haremos desde el punto de vista del hacking y la ciberseguridad.
Para saber más comente a continuación, respondemos todos y cada uno de los comentarios.
¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?
Introducción a Linux
LINUX es un sistema operativo o núcleo distribuido bajo una licencia de código abierto. Sus funciones es bastante similar a la de UNIX. El núcleo es un programa que se encuentra en el corazón del sistema operativo Linux y que se encarga de cuestiones fundamentales, como permitir que el hardware se comunique con el software.
Linux es una familia de sistemas operativos de código abierto de tipo Unix basados en el núcleo Linux. Normalmente, Linux se empaqueta como la distribución Linux, que contiene las bibliotecas de soporte, el software del sistema y el núcleo, varios de los cuales son ofrecidos por el Proyecto GNU. Varias distribuciones Linux utilizan el término «Linux» en el título, pero la Free Software Foundation utiliza el título «GNU/Linux» para centrarse en la necesidad del software GNU, lo que ha provocado algunas controversias.
Las distribuciones Linux más conocidas son Ubuntu, Fedora y Debian, esta última compuesta por varias modificaciones y distribuciones diferentes, entre las que se incluyen Ubuntu y Kali. Las distribuciones comerciales son SUSE Linux Enterprise y Red Hat Enterprise Linux. Mientras que las distribuciones de escritorio de Linux son los sistemas de ventanas como Wayland o X11 y los entornos de escritorio como KDE Plasma y GNOME.
Linux es uno de los ejemplos más destacados de colaboración entre software libre y código abierto. El código fuente puede ser distribuido, modificado y utilizado comercial o no comercialmente por cualquier persona bajo las condiciones de sus respectivas licencias, como la GPL (Licencia Pública General) de GNU. Por ejemplo, el núcleo de Linux está licenciado bajo la GPLv2.
¿Por qué necesitas un sistema operativo?
Cada vez que enciendes tu computadora, ves una pantalla en la que puedes realizar distintas actividades, como escribir, navegar por Internet o ver un video. ¿Qué es lo que hace que el hardware de la computadora funcione de esa manera? ¿Cómo sabe el procesador de tu computadora que le estás pidiendo que ejecute un archivo?
Bueno, es el sistema operativo o el núcleo el que hace este trabajo. Por lo tanto, para trabajar en su computadora, necesita un sistema operativo (OS) . De hecho, está usando uno mientras lee esto en su computadora o teléfono. Ahora bien, es posible que haya usado sistemas operativos populares como Windows pero aquí aprenderemos una introducción al sistema operativo Linux y qué beneficios ofrece en comparación con otras opciones de sistemas operativos.
Si quieres aprender todo, en video, totalmente práctico para desarrollarte en el ambiente profesional y aprobar el examen de la Certificación LPIC-1 te recomendamos iniciar por este curso: Aprende Linux desde 0 y prepara la Certificación LPIC-1. Inicia desde 0 en Linux. Prepara la Certificación LPIC-1 con todo el contenido Teórico, practica y modelos de Examen.
La definición de la palabra Linux depende del contexto en el que se utiliza. Linux se refiere al kernel. Es el controlador central de todo lo que pasa en el equipo. Pero quienes dicen que su equipo “se ejecuta con Linux” generalmente se refiere al kernel y el conjunto de herramientas que vienen con él (llamados distribución). Si tienes “Experiencia con Linux”, probablemente te refieres a los propios programas, aunque dependiendo del contexto, podrías hablar sobre tu capacidad de ajustar con precisión el kernel.
La Evolución de Linux
El núcleo del sistema operativo fue publicado por primera vez el 17 de septiembre de 1991 por Linus Torvalds . Aunque necesitaba programas como el Administrador de archivos, Editores de documentos y programas de audio y video para ejecutarse en él.
Con el paso del tiempo, colaboró con otros programadores en lugares como el MIT y comenzaron a aparecer aplicaciones para Linux. Así, alrededor de 1991, se lanzó oficialmente un sistema operativo Linux funcional con algunas aplicaciones, y este fue el comienzo de una de las opciones de SO de código abierto más queridas que existen en la actualidad.
Linux ha sido escrito solamente en C, que es un lenguaje que comparte historia con el UNIX original. Linux Torvalds no sólo creó Linux, sino que lo puso a disposición del mundo de forma gratuita.Esta es la razón por la que Linux ganó una enorme cantidad de audiencia entre los desarrolladores muy rápidamente y es que Linux es el sistema operativo favorito entre los hackers.
Los Precursores Unix y MINIX
El sistema operativo Unix fue implementado y concebido en 1969 en los laboratorios Bell de AT&T por Joe Ossanna, Douglas Mcllroy, Dennis Ritchie y Ken Thompson en los Estados Unidos. Publicado por primera vez en 1971, Unix estaba escrito íntegramente en lenguaje ensamblador, como era la práctica básica en ese momento. Fue actualizado en lenguaje C por Dennis Ritchie de una manera pionera clave en 1973.
La disponibilidad de una implementación de lenguaje de alto nivel de Unix hizo que su adaptación a distintas plataformas informáticas fuera conveniente. ‘Unix’ era sencillo y elegante, utilizaba lenguaje ‘C’ en lugar de lenguaje ensamblador y su código era reciclable. Como era reciclable, una parte de su código, ahora comúnmente llamado ‘kernel’, se utilizó para desarrollar el sistema operativo y otras funciones y podía utilizarse en diferentes sistemas. Además, su código fuente era de código abierto.
Inicialmente, Unix sólo se encontraba en grandes organizaciones como gobiernos, universidades o grandes corporaciones financieras con mainframes y minicomputadoras (PC es una microcomputadora).
UNIX es considerado el sistema operativo madre de los sistemas operativos, ya que sentó las bases de Linux. Unix está diseñado principalmente para mainframes y se utiliza en empresas y universidades. Mientras que Linux se está convirtiendo rápidamente en un nombre familiar para los usuarios de computadoras, desarrolladores y entornos de servidores. Es posible que deba pagar por un núcleo Unix, mientras que en Linux es gratuito.
Unix y Linux
En los años ochenta, muchas organizaciones como IBM, HP y docenas de otras compañías comenzaron a crear su propio Unix. El resultado fue una maraña de dialectos Unix. Luego, en 1983, Richard Stallman desarrolló el proyecto GNU con el objetivo de que fuera un sistema operativo tipo Unix de libre acceso y que pudiera ser utilizado por todos. Pero su proyecto no logró ganar popularidad. Surgieron muchos otros sistemas operativos tipo Unix, pero ninguno de ellos logró ganar popularidad.
Los comandos que se utilizan en ambos sistemas operativos suelen ser los mismos. No hay mucha diferencia entre UNIX y Linux . Aunque puedan parecer diferentes, en esencia son lo mismo, ya que Linux es un clon de UNIX . Por lo tanto, aprender uno es lo mismo que aprender otro.
En la actualidad hay muchas variantes de UNIX. Sin embargo, UNIX es ahora una marca registrada y una especificación, propiedad de un consorcio industrial llamado Open Group. Sólo el software que ha sido certificado por el Open Group puede llamarse UNIX. A pesar de la adopción de todos los requisitos de la especificación de UNIX, Linux no ha sido certificado. ¡Eso significa que Linux realmente no es un UNIX! Es sólo… como UNIX.
La creación de Linux
Torvalds se inscribió en un curso de Unix mientras visitaba la Universidad de Helsinki en el otoño de los 90. El curso utilizaba una minicomputadora MicroVAX que ejecutaba Ultrix, y uno de los textos necesarios era Operating Systems: Design and Implementation de Andrews S. Tanenbaum.
El libro de texto contenía una copia del sistema operativo MINIX de Tanenbaum. Fue junto con este curso que Torvalds se abrió inicialmente a Unix. Se interesó en los sistemas operativos en 1991. Frustrado por la licencia MINIX, que lo limitaba solo a un uso educativo en ese momento, comenzó a trabajar en el núcleo de su sistema operativo, que finalmente se convirtió en el núcleo Linux.
Torvalds comenzó el desarrollo del núcleo Linux en MINIX, y el software escrito para MINIX también se utilizó en Linux. Más tarde, Linux se cultivó, y luego apareció el desarrollo del núcleo Linux en los sistemas Linux. Además, las aplicaciones GNU reemplazaron todos los componentes MINIX debido a que era beneficioso usar el código libre a través del Proyecto GNU con el nuevo sistema operativo; El código licenciado bajo la GPL de GNU puede ser reutilizado en otras funciones informáticas siempre que se publique también bajo una licencia compatible o la misma.
Torvalds inició un cambio de su licencia actual, que prohibía la distribución comercial, a la GPL de GNU. Los desarrolladores trabajaron para desarrollar elementos GNU con el núcleo Linux, creando un sistema operativo libre y completamente funcional.
Desarrollo actual
El principal responsable del mantenimiento del núcleo Linux es Greg Kroah-Hartman , que guía su desarrollo. El director ejecutivo de la Free Software Foundation es William John Sullivan , que a su vez apoyó los componentes GNU. Las corporaciones y los individuos finalmente desarrollan componentes de terceros que no son GNU.
Los componentes de terceros se componen de un amplio cuerpo de trabajo y pueden contener tanto bibliotecas y aplicaciones de usuario como módulos del núcleo. La comunidad Linux y los proveedores distribuyen y combinan el núcleo, los componentes que no son GNU y los componentes GNU con software de gestión de paquetes adicional al estilo de las distribuciones Linux.
Las versiones anteriores del sistema operativo Linux no eran tan fáciles de usar como las que utilizaban los programadores y Linus Torvalds nunca tuvo en mente comercializar su producto. Esto definitivamente frenó la popularidad de Linux, mientras que otros sistemas operativos comerciales como Windows se hicieron famosos. No obstante, el aspecto de código abierto del sistema operativo Linux lo hizo más sólido.
Adopción popular y comercial
En entornos de producción, la adopción de Linux comenzó a despegar inicialmente a mediados de la década de 1990 en la comunidad de supercomputación en lugar de ser utilizada solo por aficionados, donde organizaciones como la NASA comenzaron a reemplazar cada vez más sus costosas máquinas con clústeres de computadoras de bajo costo que ejecutaban Linux.
El uso comercial comenzó cuando IBM y Dell, perseguidos por Hewlett-Packard, comenzaron a proporcionar soporte para Linux para escapar del monopolio de Microsoft en el mercado de sistemas operativos de escritorio. Los
sistemas Linux se utilizan completamente en la informática actual, desde sistemas integrados hasta prácticamente cada supercomputadora, y se han asegurado una posición en instalaciones de servidores como la famosa pila de aplicaciones LAMP.
Además, las distribuciones Linux se han vuelto famosas en el mercado de netbooks, con varios dispositivos que se mueven con distribuciones Linux personalizadas instaladas y Google publicando su ChromeOS desarrollado para netbooks.
Hoy en día, las supercomputadoras, teléfonos inteligentes, computadoras de escritorio, servidores web, tabletas, computadoras portátiles y electrodomésticos como lavadoras, reproductores de DVD, enrutadores, módems, automóviles, refrigeradores, etc. utilizan el sistema operativo Linux.
Arquitectura de Linux
Actualmente Linux es un núcleo monolítico híbrido. Los controladores de dispositivos y las extensiones del núcleo normalmente se ejecutan en un espacio privilegiado conocido como anillo 0 (ring 0), con acceso irrestricto al hardware, aunque algunos se ejecutan en espacio de usuario.
A diferencia de los núcleos monolíticos tradicionales, los controladores de dispositivos y las extensiones al núcleo se pueden cargar y descargar fácilmente como módulos, mientras el sistema continúa funcionando sin interrupciones. A diferencia de los núcleos monolíticos tradicionales, los controladores también pueden ser pre-volcados (detenidos momentáneamente por actividades más importantes) bajo ciertas condiciones. Esta habilidad fue agregada para gestionar correctamente interrupciones de hardware y para mejorar el soporte de multiprocesamiento simétrico.
El hecho de que Linux no fuera desarrollado siguiendo el diseño de un micronúcleo (diseño que, en aquella época, era considerado el más apropiado para un núcleo por muchos teóricos informáticos), fue motivo de una famosa y acalorada discusión entre Linus Torvalds y Andrew S. Tanenbaum
Los Procesos en Linux
Linux se organiza en procesos, que son tareas independientes que se ejecutan de forma simultánea mientras el sistema está en funcionamiento. Los procesos cuelgan unos de otros en una dependencia padre/hijo. Inicialmente al arrancar el sistema sólo existe un proceso, llamado init. Init lee los ficheros de configuración de arranque y va creando procesos hijos.
Estos a su vez tendrán sus propios hijos formando un árbol de descendientes. Los procesos en ejecución se encuentran alojados en la RAM del sistema. Cuando se habla de ejecutar o lanzar o arrancar un proceso, nos estamos refiriendo al proceso de leer un archivo almacenado en el disco duro que contiene las instrucciones del programa, colocando las mismas en la memoria RAM y a continuación empezando a ejecutar las instrucciones del programa que ya se encuentra en la RAM.
Usuarios en Linux
Linux está diseñado para ser utilizado por varios usuarios simultáneamente. Aun cuando el sistema sólo vaya a ser utilizado por un único usuario internamente Linux utilizará varios usuarios “robots” para organizar mejor y de forma más segura el sistema. Linux siempre tiene un superusuario llamado “root” (Raíz). Cada uno de los procesos pertenece a un usuario y en función del usuario asociado, dicho proceso tendrá unos permisos u otros.
Un proceso en ejecución puede cambiar su usuario asociado si tiene los permisos suficientes para hacerlo. Sólo tendrá permisos para cambiar de usuario cuando el usuario actual asociado al proceso sea ‘root’. El proceso inicial Init se ejecuta con el usuario asociado ‘root’ lo cual le confiere permisos totales sobre la máquina. Cuando Init ejecute sus procesos hijos lo hará asociándolos a usuarios distintos cuyos permisos se reduzcan a los esenciales para ejecutar la tarea para la cual están diseñado.
Si ejecutamos un cliente de correo con un agujero de seguridad y descargamos un correo con virus, dicho virus ‘engañará’ al cliente de correo para que lo ejecute y entonces tendremos un nuevo proceso ‘virus’ colgando del cliente de correo y asociado al usuario que inició la sesión. Sin embargo puesto que este usuario no tiene permisos de administración el virus no podrá modificar ficheros claves del sistema, solamente los ficheros propios del usuario. Al reiniciar el equipo el virus habrá desaparecido. Esto complica enormemente la creación de virus para Linux.
Archivos en Linux
Los procesos acceden al hardware y a otros recursos como la conexión de red a internet o los datos almacenados en disco a través de un sistema de archivos. Todas las entradas y salidas de datos desde/hacia procesos se realizan a través de archivos.
Mientras que para acceder a un documento de texto almacenado en su disco duro lo hará accediendo a otro archivo con una ubicación diferente y con permisos diferentes. En general un mismo proceso puede acceder simultáneamente a varios archivos y a su vez un mismo archivo puede ser accedido simultáneamente por varios procesos.
El Kernel de Linux
Determina que programa obtiene que pedazos de memoria, arranca y mata a los programas, y se encarga de mostrar texto en un monitor. Cuando una aplicación necesita escribir en disco, debe pedir al sistema operativo que lo haga. Si dos aplicaciones piden el mismo recurso, el kernel decide cuál de las dos lo recibe y en algunos casos, mata a una de las aplicaciones para salvar el resto del sistema. También se encarga de cambiar entre aplicaciones.
Se encarga de descargar una tarea y cargar una nueva si hay más tareas que CPUs. Cuando la tarea actual se ha ejecutado una cantidad suficiente de tiempo, la CPU detiene la tarea para que otra pueda ejecutarse. Esto se llama multitarea preferente. Multitarea significa que la computadora realiza varias tareas a la vez, preferente significa que el kernel decide cuándo cambia el enfoque entre las tareas. Con las tareas de conmutación rápida, parece que el equipo está haciendo muchas cosas a la vez.
Cada aplicación puede pensar que tiene un bloque grande de memoria en el sistema, pero es el kernel que mantiene esta ilusión, reasignando bloques más pequeños de memoria, intercambiando bloques de memoria con otras aplicaciones, o incluso sacando al disco bloques que aún no se hayan tocado.
El primer proceso en ejecutarse es el Kernel. El kernel hace de frontera entre el software y el hardware. Para nuestra CPU, el kernel es un programa de software como cualquier otro, pero para el resto de procesos, init incluido, el kernel se comporta como si fuese hardware. Cuando un proceso quiere acceder al hardware no lo hace directamente, sino que se lo pide al kernel. El kernel hace de interlocutor entre procesos y hardware.
El gestor de arranque de Linux
debe cargar el kernel y arrancarlo. Si estás más familiarizado con sistemas operativos como Windows y macOS, probablemente nunca ves al gestor de arranque, pero en el ambiente de UNIX es generalmente visible por lo que puedes modificar la manera en la que tu equipo arranque. El gestor de arranque carga el kernel de Linux y luego transfiere el control. Linux continúa con el funcionamiento de los programas necesarios para hacer que el equipo sea útil, tales como conexión a la red o abrir un servidor web.
Es el software que administra el proceso de arranque del dispositivo. Para la mayoría de los usuarios se trata de una pantalla de arranque que muestra el progreso con alguna animación, pero en Linux es muy común configurar y modificar el programa de arranque o incluso elegir cual usar.
Daemons
Son servicios que corren en segundo plano que arrancan durante el inicio del sistema operativo, cuando un usuario se conecta o se pueden iniciar manualmente.
El Shell de Linux
Seguramente hayan oído hablar de la línea de comando de Linux. El Shell es un proceso que permite administrar el sistema operativo mediante una interface de texto interactivo. Los shell´s son entornos programables, esto quiere decir que tienen variables a las que se le pueden asignar valores, se pueden realizar operaciones complejas y se pueden escribir programas comúnmente llamados Shell scripts. En Linux existen varios shell´s que el usuario puede elegir y cada uno tiene sus particularidades.
Entorno Gráfico en Linux
Es un subsistema que se encarga de la administración de los gráficos en el monitor así como también de dispositivos periféricos como el mouse y teclado. Comúnmente se lo denomina X Server o simplemente X. El entorno gráfico estándar de Linux es un proceso más llamado X.
Cuando se arrancan las X todos los programas gráficos (que son a su vez procesos) cuelgan de él y se ejecutarán generalmente con los permisos del usuario que se ha logeado con su nombre y password al inicio de la sesión. Las aplicaciones que solemos manejar frecuentemente como el navegador web o el reproductor de vídeo no son más que procesos hijo del proceso X.
El entorno gráfico X es un proceso más, sin ningún privilegio sobre cualquier otro. Esto significa que podemos prescindir del mismo si no nos hace falta. En general, cuando Linux se utiliza como servidor de Internet es normal no iniciar el entorno gráfico ya que consume mucha memoria y puede ralentizar el sistema.
Esto ha hecho que Linux se popularice y desplace a Windows en el entorno profesional, ya que por ejemplo permite contratar servicios de hospedaje virtual a precios mucho más reducidos que sus equivalentes en Windows. También, al no depender de un entorno gráfico, puede administrarse remotamente de forma mucho más cómoda mediante líneas de comandos, mientras que Windows requiere transmitir el entorno gráfico a través de Internet (mucho más lento, costoso e inseguro).
Existen muchos entornos gráficos en Linux y se puede tener varios instalados en la misma instancia de Sistema operativo para usar uno u otro. Los más utilizados son GNOME, KDE pero existen muchos otros como XFCE, Enlightment, Unity, Fluxbox, etc….
Distribuciones de Linux
Toma las herramientas de GNU y Linux, añade algunas aplicaciones para el usuario y obtienes un sistema Linux completo. La distribución se encarga de configurar el almacenamiento de información, instalar el kernel e instalar el resto del software. Las distribuciones recomendadas completas también incluyen herramientas para administrar el sistema y un administrador de paquetes para añadir y eliminar el software después de la instalación.
Los principales actores en el mercado se remontan a Red Hat o Debian. La diferencia más visible es el administrador de paquetes, aunque encontrarás otras diferencias en todo, desde ubicaciones de archivos a filosofías de políticas.
Las distribuciones de Linux que son Corporativas, como es el caso de Red Hat Linux, una de las más antiguas y reconocidas. Pero siendo esta una distribución corporativa se puede descargar gratuitamente pero se debe obtener una licencia y soporte corporativo el cual es pago. Aun así existen distribuciones “hermanas” como CentOS y Fedora que son prácticamente lo mismo y son 100% gratuitas.
Son proyectos de comunidades libres de los cuales se nutre Red Hat y a partir de los cuales desarrolla sus productos. Se trata de un ecosistema auto-regulado y que se retroalimenta ya que muchos de los programadores que trabajan para Red Hat aportan a los proyectos libres y a su vez Red Hat dona mucho dinero a estos proyectos que luego adopta y desarrolla como productos.
Características de Linux
- Capacidad multiusuario: varios usuarios pueden acceder a los mismos recursos del sistema, como memoria, disco duro, etc., pero deben utilizar diferentes terminales para operar.
- Multitarea: se puede realizar más de una función simultáneamente dividiendo el tiempo de CPU de forma inteligente.
- Portabilidad: Portabilidad no significa que el archivo tenga un tamaño menor o que pueda llevarse en pendrives o tarjetas de memoria. Significa que es compatible con distintos tipos de hardware.
- Seguridad: Proporciona seguridad de tres maneras, a saber: autenticación (asignando contraseña e ID de inicio de sesión), autorización (asignando permiso para leer, escribir y ejecutar) y cifrado (convierte el archivo a un formato ilegible).
- Live CD/USB: Casi todas las distribuciones de Linux proporcionan Live CD/USB para que los usuarios puedan ejecutarlo/probarlo sin instalarlo.
- Interfaz gráfica de usuario (sistema X Window): Linux es un sistema operativo basado en línea de comandos, pero se puede convertir a uno basado en GUI mediante la instalación de paquetes.
- Soporte de teclado personalizado: como se utiliza en todo el mundo, admite teclados en diferentes idiomas.
- Soporte de aplicaciones: Tiene su propio repositorio de software desde donde los usuarios pueden descargar e instalar muchas aplicaciones.
- Sistema de archivos: proporciona un sistema de archivos jerárquico en el que se organizan los archivos y directorios.
Beneficios de Linux
Código abierto: el núcleo de Linux se publica bajo la licencia de software de código abierto GNU GPL. La mayoría de las distribuciones contienen varias aplicaciones con diversas opciones en casi todas las categorías. Además, varias distribuciones contienen software propietario, como controladores de dispositivos ofrecidos por los fabricantes, para dar soporte al hardware.
Fiabilidad: Linux se considera un sistema operativo fiable y cuenta con un buen soporte gracias a varios parches de seguridad. Además, se considera un sistema operativo estable, lo que significa que puede ejecutarse en casi todas las circunstancias. Linux también puede gestionar errores cuando se ejecutan entradas y software inesperados.
Costos de licencia: Linux no tiene tarifas de licencia precisas, a diferencia de macOS de Apple o Microsoft Windows. Si bien varios proveedores de Linux ofrecen soporte para el sistema por una tarifa, el sistema operativo en sí es gratuito y se puede copiar. Algunas organizaciones de TI han mejorado sus ahorros al trasladar su software de servidor a Linux desde un sistema operativo comercial.
Compatibilidad con versiones anteriores: Linux y muchos programas de código abierto tienden a actualizarse con frecuencia para incluir parches funcionales y de seguridad, a la vez que conservan la funcionalidad básica. Es probable que los scripts y las configuraciones de shell funcionen sin cambios incluso si se utilizan actualizaciones de software. Por lo general, Linux y otras aplicaciones de código abierto no modifican sus modos de funcionamiento con nuevas versiones, a diferencia de los proveedores de software económicos que lanzan nuevas versiones de sus sistemas operativos con nuevas formas de trabajo.
Varias opciones: entre casi todas las opciones infinitas, varias distribuciones disponibles y muchas opciones de aplicación para configurar, compilar y ejecutar Linux en casi todas las plataformas de hardware, es posible desarrollar Linux para casi todas las aplicaciones.
Algunas desventajas de Linux son:
Falta de un estándar: no hay una versión estándar disponible para Linux, lo que puede ser útil para optimizar Linux para aplicaciones específicas, pero no tanto para implementar imágenes de escritorio y servidores estandarizados. La enorme variedad de opciones puede complicar el soporte como resultado.
Costos de soporte: el soporte no es gratuito, aunque una organización puede adquirir Linux libremente sin pagar licencias. Casi todos los distribuidores de Linux para empresas, como Red Hat y SUSE, ofrecen contratos de soporte. Estas tarifas de licencia pueden reducir significativamente los ahorros según la situación.
Software propietario: el software de productividad para PC, como Microsoft Office, no se puede utilizar en escritorios Linux, y muchos software propietarios pueden no estar disponibles para plataformas Linux.
Curva de aprendizaje pronunciada: varios usuarios luchan por aprender a utilizar aplicaciones basadas en Linux y escritorios Linux.
Hardware no compatible: varios fabricantes de hardware permiten que los controladores de dispositivos de Linux sean accesibles para sus productos, pero otros no lo hacen.
Diseño del sistema operativo Linux
Varios desarrolladores de código abierto admiten que el núcleo Linux no fue desarrollado, sino que evolucionó a partir de la selección natural. Un sistema basado en Linux es un sistema operativo compatible similar a Unix, que deriva gran parte de su diseño común de los principios establecidos en Unix durante los años 1970 y 1980.
Un sistema de este tipo aplica el núcleo Linux, un núcleo monolítico que administra los sistemas de archivos, el acceso a los periféricos, las redes y el control de procesos. Los controladores de dispositivos están integrados directamente con el núcleo o se incluyen como módulos que se cargan mientras el dispositivo está activo.
Los componentes del sistema Linux instalados incluyen los siguientes:
Gestor de arranque
Por ejemplo, systemd-boot, SYSLINUX, LILO y GNU GRUB. Es un programa que puede cargar el núcleo de Linux en la memoria principal de la computadora al ejecutarse en la computadora después de iniciar sesión en el firmware y cuando se enciende.
Programa init
Como el tradicional sysvinit y los más nuevos Upstart, OpenRC y systemd, es el primer proceso anunciado por el núcleo de Linux y la raíz del árbol de procesos. En otras palabras, todos los procesos se abren desde init. Inicia procesos como solicitudes de inicio de sesión y servicios del sistema (ya sea en modo terminal o gráfico).
Bibliotecas de software
Que incluyen código que puede ser aplicado por procesos en ejecución. El enlazador dinámico que maneja el uso de bibliotecas dinámicas se llama Id-linux.so en sistemas Linux con archivos ejecutables en formato ELF.
Además, se agregarán archivos de encabezado para definir la interfaz de las bibliotecas instaladas si el sistema está configurado para que el usuario recopile el software por sí mismo. Además, la biblioteca de software más utilizada es la biblioteca GNU C (glibc) en sistemas Linux. Existen otras bibliotecas como Mesa y SDL.
La biblioteca estándar de C: Es necesaria para ejecutar programas en C en un sistema que utilice la biblioteca C de GNU como estándar. Se han desarrollado alternativas como uClibc (desarrollada para uClinux), EGLIBC (una bifurcación de glibc utilizada por Debian en su momento) y musl. Sin embargo, las dos primeras no reciben mantenimiento en la actualidad. Android utiliza su biblioteca C, conocida como Bionic .
Interfaz de usuario
También se denomina interfaz de usuario (shell). Puede ser una GUI (interfaz gráfica de usuario), una CLI (interfaz de línea de comandos) o controles adjuntos al hardware relacionado, lo que es normal en los sistemas integrados. La interfaz de usuario predeterminada es gráfica para los sistemas de escritorio. Sin embargo, la CLI está disponible mediante ventanas de emulador de terminal o en una consola virtual aislada.
Los shells de interfaz de línea de comandos son IU basadas en texto, que utilizan texto tanto para la salida como para la entrada. El shell dominante es bash (Bourne-Again Shell) utilizado en Linux, diseñado originalmente para el proyecto GNU.
Casi todos los componentes de bajo nivel de Linux, incluidas varias partes del espacio de usuario, utilizan exclusivamente la CLI. En particular, la CLI es compatible con la automatización de tareas repetitivas o retrasadas y proporciona una comunicación entre procesos muy sencilla.
- Los shells GUI son las interfaces de usuario más famosas en los sistemas de escritorio, incluidas en una amplia variedad de entornos de escritorio como Xfce, Pantheon, LXDE, Cinnamon, MATE, GNOME y KDE Plasma, aunque hay disponible una variedad de interfaces de usuario.
- La mayoría de las interfaces de usuario más famosas funcionan con el concepto del sistema X Window, conocido como «X» .
- Ofrece transparencia de red y permite que una aplicación gráfica activa en un sistema se muestre en otro en el que un usuario puede colaborar con la aplicación.
- Aunque ciertas extensiones del sistema X Window no pueden funcionar en la red.
- Hay muchos servidores de visualización X disponibles con el servidor X.Org, siendo la implementación de referencia la más famosa.
Infraestructura de entrada de vídeo
Actualmente, Linux cuenta con dos API de espacio de usuario del núcleo para gestionar dispositivos de entrada de vídeo: la API DVB para recepción de TV y la API V4L2 para transmisiones de radio y vídeo.
Esta infraestructura debe evolucionar para adaptarse mejor a otros dispositivos debido a la diversidad y complejidad de los diferentes dispositivos y a la gran cantidad de estándares y formatos gestionados por esas API. Una mejor biblioteca de dispositivos de espacio de usuario también es la clave del éxito para tener aplicaciones de espacio de usuario que puedan funcionar con todos los formatos compatibles con los dispositivos.
Usos del sistema operativo Linux
Varios estudios cuantitativos sobre software libre o de código abierto se centran en temas como la fiabilidad y la cuota de mercado, y muchos de ellos examinan específicamente Linux. El mercado de Linux está en pleno desarrollo y se espera que el tamaño del mercado de sistemas operativos Linux crezca un 19,2 % en 2027, alcanzando los 15 640 millones de dólares, frente a los 3890 millones de 2019. Los defensores y analistas atribuyen el éxito asociativo de Linux a su libertad, bajo coste, fiabilidad y seguridad frente a la dependencia de un proveedor.
Servidores web
W3Cook publica estadísticas que utilizan los 1.000.000 de dominios principales de Alexa, que estiman que el 96,55% de los servidores web utilizan Linux, el 1,73% utilizan Windows.
Notebooks y PC
La cuota de mercado estimada de Linux ronda el 4% en ordenadores de sobremesa. Microsoft Windows incluye una cuota de mercado de aproximadamente el 72%, mientras que OS X tiene alrededor del 15%.
Los dispositivos móviles
Android se han convertido en el sistema operativo líder para teléfonos inteligentes, basado en el kernel de Linux. El 72 % de los teléfonos inteligentes de todo el mundo que utilizan Internet usaban Android. Además, Android es un sistema operativo famoso para tabletas, siendo responsable de más del 60 % de las ventas de tabletas.
Producción cinematográfica
Linux ha sido la plataforma preferida en la industria cinematográfica durante años. La primera gran película estrenada en un servidor Linux fue Titanic en 1997. Desde entonces, grandes estudios, entre ellos Industrial Light & Magic, Weta Digital, Pixar y DreamWorks Animation, se han trasladado a Linux.
Las distribuciones de Linux para uso gubernamental
También han ganado popularidad en varios gobiernos nacionales y locales. Kerala ha llegado al extremo de exigir que todas las escuelas secundarias estatales utilicen Linux en sus sistemas. China utiliza Linux exclusivamente como sistema operativo para su familia de procesadores Loongson para lograr independencia tecnológica.
Algunas regiones han integrado su distribución de Linux en España, que se utiliza ampliamente en instituciones oficiales y educativas. Además, Alemania y Francia han dado pasos hacia la adopción de Linux. El sistema operativo Red Star de Corea del Norte se basa en una versión de Fedora Linux desarrollada desde 2002.
Sistemas integrados:
Además, Linux se ejecuta en muchos sistemas integrados, es decir, dispositivos cuyo sistema operativo normalmente está diseñado en el firmware y está extremadamente personalizado para el sistema. Incluye naves espaciales (el rover Perseverance, la cápsula tripulada Dragon y el cohete Falcon 9), automóviles (Toyota, Hyundai, Mercedes-Benz, Audi y Tesla), televisores (televisores inteligentes LG y Samsung), consolas de videojuegos, dispositivos domésticos inteligentes, controles de automatización y enrutadores.
Linux en funcionamiento
El sistema operativo Linux sigue un diseño estándar que es la clave de sus diversas distribuciones y variantes. Cada distribución de Linux se basa en el núcleo de Linux, pero puede diferir en función de factores como:
Versión del kernel:
Las distribuciones se pueden configurar con versiones más recientes para agregar nuevos aspectos o con versiones anteriores para que sean más equilibradas.
Módulos del núcleo:
son programas que se pueden descargar y cargar en la funcionalidad de desarrollo del núcleo sin necesidad de reiniciar. A menudo, los módulos del núcleo se utilizan para respaldar:
- Controladores de dispositivos, que utilizan código que administra cómo funcionan los dispositivos vinculados.
- Controladores del sistema de archivos, que utilizan código que administra cómo funciona el núcleo con distintos sistemas de archivos.
- Llamadas del sistema, que utilizan código que administra cómo los programas reclaman servicios a través del kernel.
Opciones de configuración:
Los núcleos unificados con opciones de configuración configuradas para agregar solo controladores de dispositivos o del sistema de archivos se utilizan para unas pocas distribuciones especializadas; por ejemplo, compilar el núcleo para cualquier dispositivo inalámbrico sin controladores de dispositivos de red cableados.
El núcleo es lo único que todos los sistemas que ejecutan Linux tienen en común. Linux funciona mediante:
- Arrancar y cargar el kernel de Linux.
- El núcleo maneja todas las entradas y salidas del sistema una vez iniciado. El sistema se inicia y se pueden inicializar los procesos.
- El sistema se puede utilizar para procesos que contienen comandos ingresados interactivamente mediante la línea de comandos, funciones de servidor de red, aplicaciones de escritorio o cualquier programa o aplicación a medida que se inician los procesos del sistema.
La experiencia del usuario puede variar mucho, dependiendo de cómo se utilice el sistema Linux, mientras que el núcleo puede ser casi idéntico con algunas diferencias de compilación y divergencias en la configuración. Por ejemplo, algunos casos de uso de Linux con experiencias de usuario distintas son:
Sistemas de productividad de escritorio
como los que utilizan los desarrolladores de software o varios otros profesionales. Las estaciones de trabajo de desarrollo de software pueden mejorarse para mejorar el rendimiento, mientras que los escritorios pueden mejorarse para el uso de herramientas de productividad de escritorio para profesionales administrativos.
Es posible que los servidores de red
ni siquiera agreguen una ventana de línea de comandos para el acceso directo. De forma remota, estos servidores sin interfaz gráfica se manejan mediante sesiones de Windows o terminales de red. Los servidores pueden ser utilizados por varias personas, pero solo los administradores de sistemas autorizados deben acceder directamente a ellos.
Los clientes ligeros
permiten a los usuarios utilizar un entorno de escritorio completo con un dispositivo liviano. Entre ellos se incluyen los sistemas de una sola tarjeta de Google Chromebooks y Raspberry Pi.
Linux funciona de forma muy similar a cualquier sistema operativo basado en interfaz gráfica de usuario cuando se utiliza como interfaz gráfica de usuario con un entorno de escritorio. Se pueden iniciar aplicaciones y muchos otros recursos presionando íconos, y se pueden eliminar, copiar o mover archivos usando un panel táctil o un mouse.
No te detengas, sigue avanzando
Aquí tienes un propósito que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera! El mundo necesita más hackers…
- Cómo conseguir trabajo de hacker en 2024
- Trabaja remoto e internacionalmente como Hacker en 2024
- Se necesitan más Hackers – Hechos y estadísticas de 2024
- Se Necesitan más Hackers – La escasez de habilidades en ciberseguridad está empeorando
- El salario de un hacker – Cuanto se gana como Pentesters/ Infosec
- Las empresas te estan buscando para hacerle frente a los ciberataques
- Cómo convertirse en analista de ciberseguridad
- Inicia en hacking y ciberseguridad como analista SOC
- DevOps vs DevSecOps para Hackers
- DevOps vs DevSecOps para Empresas
¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?
Sobre los autores
Álvaro Chirou
Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes seguirme en mis redes:
Laprovittera Carlos
Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:
Hacker de 0 a 100 desde las bases hasta conseguir empleo
¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/hacker-de-0-a-100-desde-las-bases-hasta-conseguir-empleo/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.
Hemos creado una ruta de 0 a 100. Un plan de desarrollo que va desde las bases: cómo aprender hacking, qué aprender, en qué orden; pasando por las areas técnicas necesarias como Linux, Redes, Programación y los conocimientos necesarios en ciber seguridad, hacking, pentesting hasta la práctica y el inicio laboral: Crear tu propio laboratorio, certificaciones, adquirir experiencia e iniciarse laboralmente.
Este es un mega post. Una guía con más de 250 artículos que te llevaran por el camino del hacker. Esta guía es gratuita y esta creada gracias al esfuerzo y al trabajo combinado de Alvaro Chirou y mío (Laprovittera Carlos).
Creamos esta guía (futuro curso) para que puedas iniciarte en este mundo. Puedes arrancar ahora, GRATIS, solo necesitas un PC, conexión a internet y paciencia (Ser hacker NO ES un camino de la noche a la mañana).
El Hacking y la ciberseguridad es una carrera divertida, emocionante y gratificante que te recompensará y desafiará por igual. Sin embargo, para quienes buscan adentrarse en este campo en auge y en constante evolución, puede resultar difícil saber por dónde empezar. ¡Ahí es donde entra en juego nuestra guía en ciberseguridad!
Esta es la hoja de ruta hacia el trabajo de ciberseguridad de tus sueños. Te ayudará a entender qué conocimientos, habilidades y certificados son necesarios para alcanzar tus metas profesionales y tener una carrera próspera. Si quieres ser consultor de ciberseguridad, analista de malware, evaluador de penetración, analista de SOC o cualquier otro puesto de ciberseguridad, esta guía es lo que necesitas.
SIGUE APRENDIENDO GRATIS CON NUESTRAS GUIAS
- Cómo Iniciarse en Hacking y Ciberseguridad en 2024
- Hacker de 0 a 100 desde las bases hasta conseguir empleo
- Curso de Redes para Hackers
- Curso Gratis de Programación
- Curso Gratis Linux – Capitulo 1 – Introducción a Linux
- Curso Gratis de Redes – Capitulo 1 – Tipos de redes y servicios
- Guía de Hacking y Pentesting capitulo 1: Introducción al Pentesting
- Como iniciarse en TRY HACK ME – Complete Beginner #1
- OSINT #1 Más de 200 Search Tools
- Curso Gratis de Java para Hackers
- Hardware para Hackers – Los mejores 40 Dispositivos de Hacking
- Guía de Flipper Zero – Qué es y para qué sirve
- SIGUE APRENDIENDO GRATIS EN NUESTRO BLOG
Aprende con nuestros más de 100 cursos que tenemos disponibles para vos
Compartimos estos recursos para ayudar a la comunidad de hacking y ciberseguridad. COMPARTE y Siéntete libre de agregar más sugerencias en los comentarios a continuación, respondemos todos y cada uno de los comentarios.
Saludos amigos y happy hacking!!!