Linux

Linux es un sistema operativo de código abierto y gratuito basado en el núcleo de Linux. Fue creado inicialmente por Linus Torvalds en 1991 y ha sido desarrollado colaborativamente por una comunidad de programadores de todo el mundo desde entonces. Su diseño modular y flexible lo ha convertido en uno de los sistemas operativos más populares en una amplia gama de dispositivos y entornos, desde computadoras personales hasta servidores, dispositivos móviles y sistemas integrados.


En términos generales, Linux es una plataforma que permite a los usuarios interactuar con una computadora y realizar tareas como ejecutar programas, navegar por internet, gestionar archivos y realizar diversas actividades informáticas. A diferencia de otros sistemas operativos más comerciales, Linux se destaca por las siguientes características clave:

  • Código abierto: La mayor parte de Linux, incluido el núcleo, está disponible públicamente en forma de código fuente. Esto significa que cualquiera puede ver, modificar y distribuir el sistema operativo según los términos de sus licencias de software.
  • Personalización y variedad: Existen muchas distribuciones de Linux (también conocidas como "distros") desarrolladas por diferentes grupos o empresas, cada una con su enfoque y conjunto de aplicaciones preinstaladas. Esto permite a los usuarios elegir la distribución que mejor se adapte a sus necesidades y preferencias.
  • Estabilidad y seguridad: Linux ha ganado una reputación de ser un sistema operativo estable y seguro. La comunidad de desarrollo y las actualizaciones frecuentes contribuyen a solucionar problemas y mejorar la seguridad del sistema.
  • Terminal y línea de comandos: Aunque las distribuciones de Linux generalmente proporcionan interfaces gráficas, también se puede acceder y controlar el sistema a través de la terminal o línea de comandos, lo que ofrece a los usuarios un alto nivel de control y flexibilidad.
  • Multitarea y multiusuario: Linux está diseñado para permitir la ejecución simultánea de múltiples procesos y múltiples usuarios pueden acceder al sistema al mismo tiempo de manera segura.
  • Licencia GNU GPL: La mayoría de las distribuciones de Linux están licenciadas bajo la Licencia Pública General de GNU (GPL), lo que significa que el software puede ser utilizado, copiado y distribuido libremente con ciertas restricciones.

Linux ha ganado popularidad en numerosos campos, desde servidores web y sistemas embebidos hasta supercomputadoras y dispositivos móviles. También ha sido la base para el desarrollo de sistemas operativos populares como Android, que se utiliza en una gran cantidad de smartphones y tabletas en todo el mundo. En resumen, Linux representa una opción sólida y versátil para aquellos que buscan un sistema operativo potente, flexible y de código abierto.

Linux, Windows y macOS

Linux, Windows y macOS son tres sistemas operativos diferentes que tienen enfoques distintos, características únicas y bases de usuarios específicas. Aquí hay algunas diferencias clave entre ellos:


  • Tipo de licencia:
    • Linux: Es un sistema operativo de código abierto, lo que significa que su código fuente es accesible para todos, y se puede modificar, distribuir y utilizar libremente.
    • Windows: Es un sistema operativo propietario desarrollado por Microsoft. Los usuarios deben adquirir una licencia para utilizarlo, y el código fuente no es accesible públicamente.
    • macOS: Es también un sistema operativo propietario desarrollado por Apple y está diseñado para funcionar exclusivamente en hardware de Apple.

  • Interfaz de usuario:
    • Linux: Existen diversas interfaces gráficas en las diferentes distribuciones de Linux, como GNOME, KDE, Xfce, entre otras. Los usuarios pueden elegir la que mejor se adapte a sus preferencias.
    • Windows: Tiene una interfaz de usuario coherente a lo largo de las versiones, con el menú Inicio y la barra de tareas como elementos característicos.
    • macOS: Se destaca por su diseño elegante y su enfoque en la usabilidad, con la barra de menús en la parte superior de la pantalla y el dock para acceder a aplicaciones frecuentes.

  • Disponibilidad de software:
    • Linux: Cuenta con una amplia selección de software gratuito y de código abierto disponible en los repositorios oficiales de las distribuciones, lo que facilita la instalación y actualización de programas.
    • Windows: Ofrece una gran cantidad de software comercial y gratuito, con una amplia gama de aplicaciones y juegos disponibles. La tienda de aplicaciones de Microsoft también proporciona acceso a una variedad de software.
    • macOS: Dispone de una tienda de aplicaciones oficial llamada App Store y también admite la instalación de software desde otras fuentes.

  • Compatibilidad de hardware:
    • Linux: Ha mejorado significativamente en términos de compatibilidad de hardware, pero aún puede haber problemas con ciertos componentes más nuevos o especializados.
    • Windows: Es conocido por su amplia compatibilidad con hardware, ya que muchos fabricantes de hardware desarrollan controladores específicamente para Windows.
    • macOS: Funciona exclusivamente en hardware de Apple, lo que garantiza una alta integración y compatibilidad con sus dispositivos.

  • Uso en servidores y dispositivos móviles:
    • Linux: Es ampliamente utilizado en servidores debido a su estabilidad, seguridad y capacidad de personalización. Además, Android, un sistema operativo móvil basado en Linux, es el más popular en dispositivos móviles.
    • Windows: También se utiliza en servidores, especialmente en entornos corporativos, pero Linux es más dominante en este ámbito. Windows Phone fue el intento de Microsoft de entrar en el mercado de dispositivos móviles, pero no logró una gran cuota de mercado.
    • macOS: Aunque no es comúnmente utilizado en servidores, macOS es popular en el ámbito creativo y educativo, y es el sistema operativo predeterminado en las computadoras Mac de Apple.

Kali Linux

Kali Linux es una distribución de Linux especializada en seguridad informática y pruebas de penetración. Fue desarrollada y es mantenida por Offensive Security, una empresa de seguridad cibernética. Kali Linux se basa en Debian y está diseñada para ser una potente y completa herramienta para profesionales de la seguridad, investigadores y entusiastas interesados en evaluar y mejorar la seguridad de sistemas y redes.


Características principales de Kali Linux:

  • Herramientas de seguridad: Kali Linux viene preinstalada con una amplia variedad de herramientas de seguridad, más de 600, que abarcan desde análisis de vulnerabilidades, explotación, auditoría inalámbrica, ingeniería inversa, hasta pruebas de penetración y análisis forense digital.
  • Enfoque en pruebas de penetración: Kali Linux está diseñada específicamente para pruebas éticas de seguridad, lo que significa que debe utilizarse en entornos autorizados y con fines legales para identificar y corregir posibles vulnerabilidades en sistemas y redes.
  • Actualizaciones regulares: La distribución se actualiza regularmente para incluir las últimas herramientas y parches de seguridad, asegurando que los profesionales de seguridad tengan acceso a las últimas técnicas y tecnologías.
  • Compatibilidad con hardware y virtualización: Kali Linux es compatible con una amplia variedad de hardware y también se puede utilizar en entornos de virtualización, lo que permite a los usuarios ejecutarla de forma segura en máquinas virtuales para pruebas y experimentos.
  • Amplia comunidad de usuarios: Kali Linux cuenta con una comunidad activa de usuarios, foros y recursos en línea que facilitan el aprendizaje y el intercambio de conocimientos sobre seguridad informática.

Es importante destacar que debido a la naturaleza de sus herramientas y enfoque, Kali Linux está dirigida principalmente a usuarios con conocimientos técnicos y experiencia en seguridad informática. Si bien es una herramienta poderosa para los profesionales en el campo, también debe utilizarse con responsabilidad y ética, evitando cualquier actividad ilegal o no autorizada.

Comandos de Linux

La CLI (Command Line Interface) de Linux es una interfaz de línea de comandos que permite a los usuarios interactuar con el sistema operativo mediante comandos de texto. Es una forma poderosa y eficiente de realizar tareas, administrar archivos, configurar el sistema y ejecutar programas sin necesidad de una interfaz gráfica.

Muestra una cadena de caracteres en consola, en este caso: '¡Hola, mundo!'
Muestra el contenido de una carpeta.
Muestra el contenido de una carpeta, incluyendo archivos y carpetas ocultas.
Muestra la ruta en la que nos encontramos.
Escribe un texto dentro de un archivo.
Crea un archivo vacío.
Instala las herramientas de Kali Linux. Es importante tener en mente que algunos comandos necesitan privilegios de administrador, por lo que se necesita hacer uso de sudo antes de un comando.
Actualiza el sistema por completo.
Actualiza la distribución de Linux a su última versión (Se necesita ejecutar antes sudo apt update para actualizar la lista de paquetes disponibles).
Instala un programa o herramienta disponible en los repositorios de Linux.
Instala un programa una librería o herramienta de python.
Muestra el contenido de un archivo.
El comando batcat se utiliza para mostrar el contenido de un archivo en la terminal con formato (Puede que se necesite instalar antes batcat).
Para poder realizar una segunda acción sobre un comando, se hace uso de la tubería o pipe |. En este ejemplo, se copiará en el portapapeles el contenido de un archivo para que pueda ser pegado en otra parte (Puede que se necesite instalar antes xclip).
Moverte entre carpetas.
Regresar a la carpeta anterior.
Crea un directorio.
Crea un árbol de directorios.
Copia un archivo a el lugar donde estamos posicionados en la CLI.
Mueve una carpeta y su contenido a otra ruta.
Mueve un archivo a la ruta en la que estamos posicionados.
Cambia el nombre de un archivo.
Mueve un archivo a la carpeta anterior.
Borra un archivo.
Borra una carpeta y su contenido.
Borra todos los archivos de la carpeta en la que nos encontramos.
Desinstala un programa.
Te convierte en el usuario con máximos privilegios al proporcionar la contraseña (Esto permite acceder y modificar cualquier parte del sistema, lo que es esencial para tareas de configuración, instalación y mantenimiento críticas. Ser root otorga control total sobre el sistema operativo, pero también conlleva el riesgo de causar daños irreparables si se usan mal esos poderes).
Determina la ubicación de un ejecutable específico en el sistema, en este caso, Python 3.
Busca directorios y archivos que tengan un nombre clave.
Muestra información sobre el hostname.
Muestra información sobre la memoria del sistema.
Busca todos los archivos contenidos en ruta actual de manera recursiva.
Busca un "archivo.txt" partiendo del punto actual.
Busca un "archivo.txt" partiendo de la raíz del sistema.
Muestra el contenido de un archivo, haciendo uso del paginado (con / se puede filtrar palabras dentro del archivo).
Compara dos archivos dentro de dos directorios distintos.
Muestra el árbol de directorios o carpetas completo.
Comprime varios archivos.
Comprime una carpeta.
Descomprime un zip (Existen otras herramientas para comprimir y descomprimir, como: gunzip, tar y 7z).
Abre el editor de texto en consola (con ctrl + o se guardan los cambios y con ctrl + x se sale del modo edición).
Proporciona información sobre las interfaces de red activas, incluyendo sus direcciones IP, máscaras de red, estado y otra información relevante.
Muestra los procesos del sistema:
Buscar procesos relacionados con Apache:
Muestra los procesos del sistema en tiempo real:
Muestra los puertos en los que los servicios están escuchando:
Muestra información sobre un puerto:
Ver qué proceso usa un puerto:
Muestra todos los servicios (systemd):
Muestra solo servicios activos (systemd):
Mata un proceso que no se quiera cerrar.
Mata un proceso que no se quiera cerrar, por ejemplo, Chrome.
Mata un proceso que no se quiera cerrar, al seleccionarlo con el puntero del mouse.
Descargar un archivo llamado "archivo.zip" desde una URL
Descargar el mismo archivo "archivo.zip" desde una URL
Este comando se utiliza para realizar una solicitud HTTP GET a una URL y recuperar los datos de una web. La opción -s significa "silent" o "quiet", lo que suprime la salida adicional.
Este comando se utiliza para realizar una solicitud HTTP POST a una URL con encabezados personalizados. La opción -H se usa para agregar encabezados HTTP a la solicitud. Enviar datos a un servidor web con una solicitud POST y encabezados personalizados.
Este comando se utiliza para cargar un archivo a través de FTP o SCP usando curl. La opción -u se utiliza para proporcionar credenciales de usuario. Cargar un archivo a un servidor remoto a través de FTP.
Cambia los permisos de un archivo para que se pueda ejecutar.


    Permisos

    Existen tres roles dentro de Linux que son útiles para poder administrar el sistema y los archivos que se encuentran dentro, tales como son:

  • Root (Superusuario):
    • ∘ En Linux, "root" es el usuario con el máximo nivel de privilegios en el sistema, también conocido como el superusuario.
    • ∘ El usuario "root" tiene control total sobre el sistema y puede acceder, modificar y eliminar cualquier archivo, directorio o configuración, así como instalar y desinstalar programas.
    • ∘ Debido a su amplio alcance, se debe usar con precaución, ya que los cambios realizados por "root" pueden afectar negativamente al sistema si se hacen de manera incorrecta.
    • ∘ Las tareas administrativas críticas, como la instalación de software o la configuración del sistema, a menudo requieren permisos de "root".
  • Grupo:
    • ∘ En Linux, los usuarios pueden agruparse en categorías llamadas grupos para facilitar la gestión de permisos y accesos.
    • ∘ Los grupos permiten que varios usuarios tengan los mismos permisos en ciertos archivos y directorios, lo que simplifica la administración de permisos para conjuntos de usuarios relacionados.
    • ∘ Por ejemplo, si un archivo necesita ser accesible para un equipo de desarrollo, el administrador puede crear un grupo llamado "desarrollo" y agregar a todos los miembros del equipo a ese grupo.
    • ∘ Luego, se pueden configurar los permisos de ese archivo para que solo los miembros del grupo "desarrollo" tengan acceso a él.
  • Usuario:
    • ∘ Los usuarios en Linux son cuentas individuales que utilizan el sistema operativo.
    • ∘ Cada usuario tiene su propio espacio de trabajo, directorio de inicio, configuraciones y permisos de acceso a archivos y directorios.
    • ∘ Cuando un usuario inicia sesión en el sistema, se identifica mediante un nombre de usuario (username) y una contraseña (password) únicos.
    • ∘ Los usuarios no tienen permisos de administrador predeterminados, lo que significa que no pueden realizar cambios críticos en el sistema sin proporcionar credenciales de "root".
    • ∘ Los usuarios pueden pertenecer a uno o varios grupos, lo que les otorga permisos adicionales en archivos y directorios compartidos con esos grupos.

En resumen, el "root" es el superusuario con poderes elevados para administrar todo el sistema, los grupos permiten agrupar usuarios para una gestión más sencilla de permisos, y los usuarios individuales tienen sus propios espacios y permisos en el sistema. La combinación de estos roles permite una administración segura y eficiente del sistema Linux.


Muestra a que grupos pertenece un usuario.

El comando chmod en Linux se utiliza para cambiar los permisos de archivos y directorios. Puedes modificar los permisos para permitir o restringir diferentes acciones a usuarios, grupos y otros en el sistema. La sintaxis básica del comando es la siguiente:


  • Notación numérica:
    • ⋆ 4: Lectura (r)
    • ⋆ 2: Escritura (w)
    • ⋆ 1: Ejecución (x)
    Para dar permisos de lectura y escritura al propietario, y solo permiso de lectura a otros (El primer número se refiere al usuario root, el segundo número al grupo y el tercero al usuario):
    Para dar permisos de lectura, escritura y ejecución al propietario, y solo permiso de ejecución a otros:


  • Notación alfabética:
    • ⋆ u: Usuario (propietario)
    • ⋆ g: Grupo
    • ⋆ o: Otros (usuarios que no son el propietario ni están en el grupo)
    • ⋆ a: Todos (equivalente a ugo)
    Para dar permisos de escritura al usuario y al grupo:
    Para quitar el permiso de escritura a otros:


  • Opciones adicionales:
    • ⋆ '+': Añadir permiso.
    • ⋆ '-': Quitar permiso.
    • ⋆ '=': Establecer los permisos exactamente como se especifiquen, eliminando los permisos previos.

    Por favor, ten en cuenta que cambiar los permisos incorrectamente podría afectar el funcionamiento normal de los archivos y directorios, así que asegúrate de saber lo que estás haciendo antes de utilizar chmod. Siempre es recomendable tener cuidado al cambiar los permisos en el sistema.

    Conclusión

    Si bien las interfaces gráficas son más accesibles para usuarios no técnicos, aprender la CLI es una habilidad valiosa para aquellos que desean profundizar en el funcionamiento interno de los sistemas y maximizar su productividad. A través de la práctica y la familiarización con los comandos más comunes, los usuarios pueden adquirir confianza y aprovechar al máximo el potencial de la línea de comandos.

    La CLI es una herramienta imprescindible para cualquier entusiasta de la tecnología, desarrollador o profesional de la informática que busque mejorar su eficiencia y conocimientos en el manejo de sistemas operativos y aplicaciones. A medida que se avanza en el dominio de la línea de comandos, se descubre un mundo de posibilidades y se adquiere una valiosa habilidad que puede marcar la diferencia en el ámbito tecnológico.