El sistema de ficheros, directorios y permisos es el corazón de Linux. Entenderlo es la diferencia entre ser un usuario que «algo funciona» y alguien que realmente comprende y controla su sistema. Todo en Linux gira alrededor de archivos: tus documentos, la configuración del sistema, los dispositivos de hardware e incluso los procesos en ejecución. Y el sistema de permisos — elegante, potente y con más de 50 años de historia — es lo que mantiene todo seguro y organizado. Esta guía te llevará desde el concepto fundacional de «todo es un archivo» hasta los permisos especiales avanzados, con comandos reales que puedes practicar ahora mismo en tu terminal.
📂 En Linux, todo es un archivo
Si tuvieras que resumir la filosofía de Linux en una sola frase, sería esta: «en Linux, todo es un archivo». Este principio, heredado directamente de Unix, significa que Linux trata casi todo — documentos, directorios, dispositivos de hardware, procesos del sistema, conexiones de red — como si fuera un archivo que puedes leer, escribir o manipular con las mismas herramientas.
¿Por qué es esto tan importante? Porque significa que no necesitas aprender herramientas diferentes para cada tarea. Los mismos comandos que usas para trabajar con un documento de texto también te sirven para consultar la temperatura de tu CPU, ver cuánta memoria RAM tienes disponible, o comprobar qué dispositivos USB están conectados. Esta uniformidad hace que Linux sea extraordinariamente potente y consistente.
Tu disco duro es un archivo (/dev/sda). Tu cámara web es un archivo (/dev/video0). La información de tu CPU es un archivo (/proc/cpuinfo). La memoria RAM disponible es un archivo (/proc/meminfo). Incluso la nada es un archivo (/dev/null, el «agujero negro» de Linux donde envías datos que quieres descartar). Y cada directorio es en realidad un archivo especial que contiene una lista de los archivos que hay dentro de él.
🌳 La estructura del sistema de archivos
A diferencia de Windows, donde cada disco tiene su propia letra (C:\, D:\, E:\), en Linux existe un único árbol de directorios que comienza en la raíz (/). Todo — absolutamente todo — cuelga de este punto. Los discos adicionales, las memorias USB y las particiones se «montan» en puntos específicos dentro de este árbol, integrándose de forma transparente.
Conocer los directorios principales es esencial para navegar el sistema con confianza. Cada uno tiene un propósito específico definido por el estándar FHS (Filesystem Hierarchy Standard):
| Directorio | Contenido | Ejemplo de uso |
|---|---|---|
/ | Raíz del sistema. Todo cuelga de aquí | cd / |
/home | Carpetas personales de los usuarios | /home/ana/Documentos/ |
/root | Carpeta personal del superusuario | Solo accesible por root |
/etc | Archivos de configuración del sistema | /etc/hostname, /etc/fstab |
/var | Datos variables: logs, bases de datos, correo | /var/log/syslog |
/tmp | Archivos temporales (se borran al reiniciar) | Descargas temporales |
/usr | Programas y recursos del usuario del sistema | /usr/bin/python3 |
/bin | Comandos esenciales (ls, cp, mv, cat...) | /bin/bash |
/sbin | Comandos de administración del sistema | /sbin/fdisk |
/dev | Dispositivos de hardware como archivos | /dev/sda (disco duro) |
/proc | Sistema de archivos virtual del kernel | /proc/cpuinfo |
/mnt | Punto de montaje para discos temporales | Montar USB manualmente |
/opt | Software de terceros opcional | Google Chrome, Zoom |
/boot | Kernel y archivos de arranque | GRUB, vmlinuz |
/home: /home/ana, /home/pedro, etc. Es el único lugar del sistema donde un usuario normal puede crear, modificar y borrar archivos libremente. El símbolo ~ (tilde) es un atajo que representa tu directorio home. Las carpetas estándar dentro del home incluyen Documentos, Descargas, Imágenes, Música, Vídeos y Escritorio, siguiendo la especificación XDG de freedesktop.org.
Es importante entender que Linux distingue estrictamente entre mayúsculas y minúsculas en nombres de archivos y directorios. Para Linux, Documento.txt, documento.txt y DOCUMENTO.TXT son tres archivos completamente diferentes. Esto es una diferencia fundamental con Windows, donde los nombres son insensibles a mayúsculas. Los archivos y directorios que comienzan con un punto (.) son ocultos: no aparecen con ls normal sino con ls -a. Los archivos de configuración de usuario suelen ser ocultos: .bashrc, .ssh/, .config/.
🧭 Rutas absolutas y relativas
Para moverse por el sistema de archivos, necesitas entender dos conceptos fundamentales: las rutas absolutas y las rutas relativas. Son como dos formas de dar indicaciones para llegar a un sitio: puedes dar la dirección completa desde la ciudad, o puedes decir «dos calles a la derecha desde donde estás».
Una ruta absoluta siempre comienza desde la raíz (/) y especifica la ubicación completa de un archivo o directorio. Es como dar una dirección postal completa: /home/ana/Documentos/informe.pdf. No importa dónde estés en el sistema de archivos: una ruta absoluta siempre te lleva al mismo sitio. Son infalibles pero pueden ser largas de escribir.
Una ruta relativa parte desde tu ubicación actual (el directorio en el que estás, que puedes ver con pwd). Usa dos símbolos especiales: . (punto, el directorio actual) y .. (dos puntos, el directorio padre, es decir, «un nivel arriba»). Si estás en /home/ana, puedes acceder a tu informe simplemente con Documentos/informe.pdf en vez de escribir la ruta completa. Y con ../pedro puedes ir a la carpeta de otro usuario (subes un nivel a /home y bajas a pedro).
📄 Comandos esenciales de ficheros
Estos son los comandos que usarás a diario para trabajar con archivos en Linux. Todos vienen del Unix original de los años 70 y siguen siendo la forma más eficiente de gestionar archivos:
rm, desaparece para siempre. No va a ninguna papelera de reciclaje. Por eso es buena práctica usar rm -i (que pide confirmación) y, sobre todo, nunca ejecutar rm -rf / o variantes que borran el sistema completo. Los administradores experimentados usan alias como alias rm='rm -i' para protegerse.
📁 Comandos esenciales de directorios
🃏 Comodines y patrones (globbing)
Los comodines (wildcards) permiten seleccionar múltiples archivos con un solo patrón. Son una herramienta imprescindible que multiplica tu productividad en la terminal:
| Comodín | Significado | Ejemplo | Coincide con |
|---|---|---|---|
* | Cualquier secuencia de caracteres | ls *.pdf | informe.pdf, tesis.pdf, a.pdf |
? | Un solo carácter cualquiera | ls foto?.jpg | foto1.jpg, fotoA.jpg (no foto12.jpg) |
[abc] | Un carácter de la lista | ls foto[123].jpg | foto1.jpg, foto2.jpg, foto3.jpg |
[a-z] | Un carácter en el rango | ls [A-Z]*.txt | Archivos .txt que empiezan por mayúscula |
[!abc] | Cualquier carácter NO en la lista | ls foto[!0-9].jpg | fotoA.jpg, fotoX.jpg (no foto1.jpg) |
🔐 El sistema de permisos rwx
El sistema de permisos es una de las características más importantes de Linux y la base fundamental de su seguridad. Heredado directamente de Unix, este sistema ha protegido servidores y estaciones de trabajo durante más de 50 años. Cada archivo y directorio tiene tres tipos de permisos asignados a tres categorías de usuarios. Comprender esto es absolutamente esencial para cualquier persona que use Linux, desde el principiante que quiere proteger sus archivos personales hasta el administrador de sistemas que gestiona servidores de producción.
La genialidad del sistema reside en su simplicidad: con solo nueve bits de información (tres permisos × tres categorías), Linux define exactamente quién puede hacer qué con cada uno de los millones de archivos de un sistema. No necesita bases de datos complejas de permisos ni sistemas de autenticación sofisticados: todo está almacenado directamente en los metadatos del archivo, accesible instantáneamente por el kernel.
Cuando ejecutas ls -l, la primera columna muestra los permisos en un formato como este:
Los tres tipos de permisos son:
| Permiso | Letra | Valor numérico | En archivos | En directorios |
|---|---|---|---|---|
| Lectura | r | 4 | Leer el contenido | Listar el contenido (ls) |
| Escritura | w | 2 | Modificar el contenido | Crear/borrar archivos dentro |
| Ejecución | x | 1 | Ejecutar como programa | Entrar en el directorio (cd) |
Los permisos se asignan a tres categorías: propietario (u/user), grupo (g/group) y otros (o/others). Esto permite un control granular: por ejemplo, que el propietario pueda leer y escribir, que los miembros de su grupo puedan leer, y que el resto no tenga ningún acceso.
🔧 Cambiar permisos con chmod
El comando chmod (change mode) es el que usarás para modificar los permisos de archivos y directorios. Es uno de los comandos más importantes de Linux y lo usarás constantemente como administrador. Tiene dos formas de uso: la notación simbólica (más intuitiva y autoexplicativa) y la notación octal (más rápida cuando la dominas y la preferida por los profesionales).
Notación simbólica
Notación octal (numérica)
Cada permiso tiene un valor: r=4, w=2, x=1. Se suman para cada categoría:
👤 Cambiar propietario con chown y chgrp
Mientras chmod cambia los permisos (qué acciones se permiten), chown (change owner) cambia quién es el propietario del archivo (a quién pertenece). Solo root (o sudo) puede cambiar el propietario de un archivo, lo cual es una medida de seguridad lógica: si cualquier usuario pudiera «regalar» sus archivos a root, podría escalar privilegios en el sistema.
En la práctica, chown es fundamental para la administración de servidores. Un escenario muy común: cuando configuras un servidor web Apache, los archivos de la web deben pertenecer al usuario www-data (o al grupo www-data) para que el servidor pueda leerlos. Pero al mismo tiempo, quieres que tu usuario pueda editarlos. La combinación correcta de chown y chmod es lo que permite que ambas cosas funcionen sin comprometer la seguridad.
El comando chgrp es un caso especial: cambia solo el grupo de un archivo, sin modificar el propietario. Es útil cuando quieres que un equipo de trabajo comparta acceso a ciertos archivos sin cambiar quién es el dueño.
⚡ Permisos especiales: SUID, SGID y Sticky
Además de los permisos básicos rwx, Linux tiene tres permisos especiales que permiten comportamientos avanzados de seguridad:
| Permiso | Octal | Efecto en archivos | Efecto en directorios |
|---|---|---|---|
| SUID (Set User ID) | 4000 | Se ejecuta con los permisos del propietario, no del usuario que lo lanza | Sin efecto estándar |
| SGID (Set Group ID) | 2000 | Se ejecuta con los permisos del grupo | Los archivos creados dentro heredan el grupo del directorio |
| Sticky bit | 1000 | Sin efecto estándar | Solo el propietario puede borrar sus archivos (usado en /tmp) |
El ejemplo más conocido de SUID es el comando passwd: necesita escribir en /etc/shadow (que solo root puede modificar), pero cualquier usuario debe poder cambiar su propia contraseña. SUID permite que passwd se ejecute temporalmente con permisos de root aunque lo lance un usuario normal. Este mecanismo es elegante pero debe usarse con extrema precaución: un programa con SUID mal diseñado es un riesgo de seguridad.
🎭 umask: permisos por defecto
¿Te has preguntado por qué los archivos que creas tienen permisos 644 y los directorios 755 sin que tú hayas hecho nada? La respuesta es umask (user mask), una máscara que define qué permisos se eliminan de los permisos máximos al crear un nuevo archivo o directorio. Los permisos máximos son 666 para archivos (sin ejecución por seguridad) y 777 para directorios (necesitan ejecución para poder entrar con cd).
El valor de umask se resta de estos máximos. Con la umask estándar de 022: para archivos obtienes 666 - 022 = 644 (rw-r--r--), y para directorios 777 - 022 = 755 (rwxr-xr-x). En un entorno empresarial donde la seguridad es crítica, podrías usar una umask más restrictiva como 077, que haría que solo el propietario pueda acceder a los archivos y directorios recién creados.
📝 Ejercicios prácticos
Enlaces simbólicos y duros: atajos inteligentes
Linux ofrece dos tipos de «atajos» o enlaces que son extremadamente útiles para organizar archivos y crear referencias entre diferentes ubicaciones del sistema de archivos.
Un enlace simbólico (symlink) es como un acceso directo de Windows: es un archivo especial que apunta a otro archivo o directorio. Si el archivo original se borra, el enlace queda «roto». Los enlaces simbólicos pueden cruzar sistemas de archivos y apuntar a directorios. Son el tipo de enlace más usado.
Un enlace duro (hard link) es diferente: crea otro nombre para el mismo contenido en el disco. El archivo solo se borra cuando se eliminan todos sus enlaces duros. No pueden apuntar a directorios ni cruzar sistemas de archivos, pero son más resistentes porque no dependen de una ruta.
Los enlaces simbólicos son omnipresentes en Linux: el sistema los usa para mantener compatibilidad entre versiones de librerías (/usr/lib/libfoo.so → libfoo.so.3.2.1), para alternar entre versiones de software (/usr/bin/python → python3), y para la estructura de servicios de systemd. Entender cómo funcionan te ayudará a diagnosticar problemas y a organizar mejor tus proyectos.
Ejercicio 1: Navegación y gestión de archivos (Básico)
Crea la siguiente estructura de directorios y archivos en tu carpeta home. Luego navega entre ellos usando rutas absolutas y relativas.
Ver solución
Ejercicio 2: Configurar permisos para un proyecto web (Intermedio)
Imagina que administras un servidor web. Configura los permisos para que el usuario www-data (servidor web) pueda leer archivos pero no modificarlos, y que solo el propietario pueda editarlos.
Ver solución
Ejercicio 3: Auditoría de permisos peligrosos (Avanzado)
En un servidor de producción, encontrar archivos con permisos peligrosos (SUID, escritura para todos, etc.) es una tarea de seguridad habitual. Escribe los comandos para auditar permisos en tu sistema.
Ver solución
Estos comandos son parte esencial de cualquier auditoría de seguridad en Linux. Los archivos SUID deben revisarse periódicamente porque si un atacante compromete uno de estos programas, obtiene privilegios de root. Los archivos con escritura global son potenciales vectores de ataque, y los archivos huérfanos pueden indicar que un usuario fue eliminado dejando archivos sin propietario válido.
Recuerda que la práctica es la mejor maestra. Abre una terminal, crea archivos de prueba, experimenta con los permisos, y observa cómo cambia el comportamiento del sistema cuando modificas propietarios y modos. El sistema de permisos de Linux lleva más de 50 años demostrando su eficacia, desde los laboratorios Bell donde nació Unix hasta los millones de servidores que sostienen Internet hoy. Comprenderlo te convierte en un usuario que realmente controla su sistema operativo.
❓ Preguntas frecuentes sobre Ficheros, Directorios y Permisos en Linux: guía completa
Las dudas más comunes respondidas de forma clara y directa.
💬 Foro de discusión
¿Tienes dudas sobre Ficheros, Directorios y Permisos en Linux: guía completa? Comparte tu pregunta con la comunidad.
Todavía no hay mensajes. ¡Sé el primero en participar!
🎓 ¿Se puede aprender Linux con un curso bonificado por FUNDAE?
Sí. Todo lo que estás practicando en la terminal se puede llevar a un curso tutorizado de Bash y Shell Script bonificable al 100 % por FUNDAE si trabajas por cuenta ajena en España. Ciberaula es centro acreditado desde 1997.
Bash Scripting y Terminal Linux: Automatización de Sistemas (70 h) →
También te puede encajar: Administración de Sistemas Linux y Shell Script para Empresas → · Administración de Servidores Linux para Empresas: de Cero a Nivel Avanzado →
Ver todos los cursos de Linux bonificados del catálogo → · Ciberaula · Centro acreditado FUNDAE (Reg. 99000171) · 91 530 33 87 · admision@ciberaula.com