Conceptos básicos de Linux y Unix

Fundamentos esenciales del sistema operativo que impulsa la mayoría de servidores del mundo

Módulo 1 ⏱️ 25-30 min 🖥️ Terminal 🐧 Linux 📚 Principiante

¿Qué es Unix y Linux?

Unix es un sistema operativo multitarea y multiusuario desarrollado en 1969 en los Laboratorios Bell de AT&T. Se convirtió en la base de muchos sistemas operativos modernos y estableció estándares fundamentales para la informática.

Linux es un sistema operativo tipo Unix de código abierto creado por Linus Torvalds en 1991. Técnicamente, Linux es el kernel (núcleo del sistema), mientras que las distribuciones como Ubuntu, CentOS, y Debian incluyen el kernel Linux junto con herramientas y aplicaciones adicionales.

¿Sabías que?

Más del 96% de los servidores web más potentes del mundo ejecutan alguna variante de Unix/Linux. Android, que ejecutan más de 2.5 billones de dispositivos, también está basado en Linux.

Filosofía Unix

La filosofía Unix se basa en varios principios fundamentales:

  • Hacer una cosa y hacerla bien: Cada programa debe tener una función específica y ejecutarla perfectamente.
  • Todo es un archivo: Dispositivos, procesos, directorios - todo se trata como un archivo.
  • Programas que trabajan juntos: La salida de un programa puede ser la entrada de otro.
  • Interfaz de texto: Las interfaces de línea de comandos son poderosas y eficientes.
  • Configuración en texto plano: Los archivos de configuración son legibles y editables.

Estructura del Sistema de Archivos

El sistema de archivos Linux sigue el estándar FHS (Filesystem Hierarchy Standard):

Estructura de directorios principales
/                    # Directorio raíz
├── bin/            # Binarios esenciales del sistema
├── boot/           # Archivos del bootloader
├── dev/            # Archivos de dispositivos
├── etc/            # Archivos de configuración del sistema
├── home/           # Directorios personales de usuarios
├── lib/            # Bibliotecas compartidas esenciales
├── media/          # Puntos de montaje para medios removibles
├── mnt/            # Puntos de montaje temporales
├── opt/            # Software opcional
├── proc/           # Sistema de archivos virtual del kernel
├── root/           # Directorio personal del usuario root
├── run/            # Datos de tiempo de ejecución
├── sbin/           # Binarios de administración del sistema
├── srv/            # Datos de servicios
├── sys/            # Sistema de archivos virtual del kernel
├── tmp/            # Archivos temporales
├── usr/            # Programas de usuario
└── var/            # Datos variables
Importante

Nunca modifiques directamente archivos en /proc o /sys a menos que sepas exactamente lo que estás haciendo. Estos son sistemas de archivos virtuales que representan el estado del kernel.

Usuarios y Grupos

Linux es un sistema multiusuario. Cada archivo y proceso pertenece a un usuario y grupo específicos.

Tipos de Usuarios

  • root (superusuario): Tiene acceso completo al sistema (UID 0)
  • Usuarios normales: UID típicamente >= 1000
  • Usuarios del sistema: UID 1-999, para servicios y daemons
# Ver información del usuario actual
$ whoami
usuario

# Ver ID de usuario y grupos
$ id
uid=1000(usuario) gid=1000(usuario) groups=1000(usuario),4(adm),24(cdrom),27(sudo)

# Ver todos los usuarios del sistema
$ cat /etc/passwd | head -5
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

Permisos Básicos

Cada archivo y directorio tiene permisos que determinan quién puede leer, escribir o ejecutar el archivo.

# Ver permisos detallados
$ ls -la
drwxr-xr-x  2 usuario grupo 4096 oct 15 10:30 directorio/
-rw-r--r--  1 usuario grupo 1024 oct 15 10:25 archivo.txt
-rwxr-xr-x  1 usuario grupo  512 oct 15 10:20 script.sh

# Formato: tipo de archivo + permisos del propietario + permisos del grupo + permisos de otros

Tipos de Permisos

  • r (read/lectura): Permite ver el contenido del archivo
  • w (write/escritura): Permite modificar el archivo
  • x (execute/ejecución): Permite ejecutar el archivo como programa
Notación Octal

Los permisos también se pueden expresar en notación octal:

  • rwx = 4+2+1 = 7
  • r-x = 4+0+1 = 5
  • r-- = 4+0+0 = 4

Ejemplo: chmod 755 archivo = rwxr-xr-x

Procesos y Servicios

Un proceso es una instancia de un programa en ejecución. Linux gestiona todos los procesos de forma jerárquica.

# Ver procesos en ejecución
$ ps aux | head -5
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.1 169404 11344 ?        Ss   10:00   0:01 /sbin/init
root           2  0.0  0.0      0     0 ?        S    10:00   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   10:00   0:00 [rcu_gp]

# Ver árbol de procesos
$ pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─bash───pstree
        └─systemd───(sd-pam)

Historia de Linux

Cronología Importante

  • 1969: Nacimiento de Unix en Bell Labs
  • 1983: Richard Stallman inicia el proyecto GNU
  • 1991: Linus Torvalds crea Linux
  • 1993: Primera distribución Debian
  • 1994: Red Hat Linux
  • 2004: Ubuntu Linux

Distribuciones Populares

  • Ubuntu: Fácil de usar, ideal para principiantes
  • Red Hat/CentOS: Enfoque empresarial
  • Debian: Estable y seguro
  • SUSE: Orientado a empresas
  • Arch: Para usuarios avanzados

Ejercicio Práctico

Exploración del Sistema

Ejecuta estos comandos en tu terminal para familiarizarte con tu sistema:

Comandos de exploración Copiar
# 1. ¿Qué distribución estás usando?
cat /etc/os-release

# 2. ¿Cuál es tu usuario actual?
whoami

# 3. ¿En qué directorio estás?
pwd

# 4. ¿Qué hay en el directorio raíz?
ls -la /

# 5. ¿Cuánto espacio libre tienes?
df -h

# 6. ¿Qué procesos están ejecutándose?
ps aux | head -10