¿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):
/ # 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 = 7r-x
= 4+0+1 = 5r--
= 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:
# 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