
Índice
La importancia real de los permisos en archivos Linux
Toda la seguridad de un servidor web descansa en un concepto que a veces pasamos por alto: el control de acceso. Configurar bien los permisos archivos linux no es simplemente una tarea más de mantenimiento. Es la valla principal que tienes contra las vulnerabilidades. Si eres demasiado generoso con los permisos, estás invitando a un atacante a inyectar código o robar datos. Pero ojo, si te pasas de restrictivo, el servidor se ahoga: no sirve contenido, el software no puede escribir logs y la base de datos falla al intentar conectar.
En el ecosistema Linux, cada archivo y cada directorio tiene sus propias reglas. Saber leerlas es obligatorio. En RedServicio vemos a diario cómo un simple error en estos valores deriva en problemas de rendimiento y agujeros de seguridad. Dominar esto no es opcional si quieres que tu proyecto online se mantenga en pie.
La lógica del sistema: Usuarios, Grupos y Otros
Antes de empezar a escribir comandos, tienes que entender cómo piensa Linux. No es complicado, pero hay que tenerlo claro. El acceso se gestiona en tres niveles:
- Usuario (User/Owner): Es el dueño. Normalmente es quien creó el archivo. Este suele tener la mano libre para hacer lo que quiera con él.
- Grupo (Group): Un equipo de usuarios que comparten acceso. Muy útil para desarrolladores que necesitan tocar los mismos recursos.
- Otros (Others): Todo el que no sea el dueño ni esté en el grupo. Aquí es donde hay que poner el ojo avizor, porque aquí entra el usuario del servidor web (como www-data o apache) y, potencialmente, cualquier desconocido.
Cada uno de estos niveles tiene tres opciones:
- Read (r – 4): Leer el contenido o listar qué hay dentro de un directorio.
- Write (w – 2): Modificar el archivo o borrar y crear cosas en el directorio.
- Execute (x – 1): Ejecutar el archivo como programa o, tratándose de carpetas, poder entrar y navegar por ellas.
Las herramientas clave: chmod y chown
Para manejar todo esto usamos dos comandos básicos en la terminal: chmod (change mode) y chown (change owner). Si los usas bien, tienes el control total de quién hace qué en tu sistema.
Ajustar permisos con chmod
Con chmod cambias los permisos de lectura, escritura y ejecución. Puedes hacerlo con letras (modo simbólico) o con números (octal). La verdad es que la forma numérica es la que más se ve en scripts y configuraciones rápidas porque es más directa.
La lógica numérica es una suma simple: Read (4), Write (2) y Execute (1).
- 0: Nada de permisos.
- 6 (4+2): Leer y escribir.
- 7 (4+2+1): Todo: leer, escribir y ejecutar.
Un ejemplo. Para dar al dueño todos los permisos (7), al grupo lectura y ejecución (5) y a los demás solo lectura (4), escribirías:
chmod 754 archivo.txt
También puedes aplicar cambios recursivamente con el flag -R. Esto afecta al directorio y a todo lo que hay dentro. Es muy potente, pero ten cuidado. Es fácil romper cosas si lo usas sin pensar.
chmod -R 755 /var/www/html/mi-sitio
Cambiar de dueño con chown
A veces definir quién es el dueño es más importante que los permisos en sí. El comando chown se encarga de cambiar el usuario y el grupo propietario.
Para cambiar solo el usuario:
chown usuario archivo
Para cambiar usuario y grupo a la vez (separados por dos puntos):
chown usuario:grupo archivo
Igual que con chmod, la opción -R lo aplica a todo el árbol de directorios. Es fundamental cuando migras archivos de un servidor a otro y necesitas reasignar la propiedad al usuario correcto del servicio web.
Seguridad en servidores web
En un entorno de hosting típico, sea compartido o VPS, donde corren cosas como WordPress, Joomla o webs a medida en PHP o Python, hay una configuración estándar que busca el equilibrio entre seguridad y funcionalidad.
La idea es clara: el servidor web (pongamos www-data) debe leer los archivos para servírselos al visitante, pero no debería poder modificarlos a menos que sea estrictamente necesario (carpetas de subidas o caché). El usuario de FTP o SSH (el dueño real) es quien debe tener el control total.
El estándar para archivos
Los archivos estáticos (imágenes, CSS, JS, PHP) no necesitan permiso de ejecución para el servidor web la mayoría de las veces. Solo ser leídos. Pero para simplificar la gestión y evitar errores 403 molestos, el estándar de la industria es:
- 644: El dueño lee y escribe (6). El grupo y los demás solo leen (4).
Así evitas que un script vulnerable en otro sitio del mismo servidor pueda sobrescribir tu código PHP, ya que el «otro» no tiene permiso de escritura.
Y para las carpetas
Los directorios son distintos. Necesitan permiso de ejecución para que el servidor web pueda «entrar» en ellos y ver la lista de archivos.
- 755: El dueño tiene todo (7). El grupo y los demás pueden leer y navegar (5).
755 en carpetas y 644 en archivos. Esa es la línea base de seguridad para cualquier sitio web en Linux.
Cómo arreglarlo todo (Paso a paso)
Aquí tienes un procedimiento práctico para corregir permisos en un sitio web típico en /var/www/html/sitio. Vamos a asumir que el usuario dueño es miusuario y el grupo del servidor web es www-data.
- Entra por SSH.
- Ve a la raíz de tu web:
cd /var/www/html/sitio - Establece el dueño correcto de forma recursiva. Así te aseguras control total como administrador.
chown -R miusuario:www-data .
Nota: Al añadir el archivo al grupo www-data, permitimos que el servidor tenga el acceso que definamos para el grupo. - Pon 755 en todas las carpetas:
find . -type d -exec chmod 755 {} +
Esto busca solo directorios (-type d) y les aplica el permiso. - Pon 644 en todos los archivos:
find . -type f -exec chmod 644 {} +
Este busca solo archivos (-type f) y ajusta sus permisos. - Excepciones para carpetas de escritura. Si tu web tiene carpetas donde el servidor debe escribir (como /wp-content/uploads en WordPress o caché), debes dar permiso de escritura al grupo. Una solución limpia es mantener los archivos como 644 y asegurarte de que el dueño sea el servidor web para esas carpetas, o usar ACLs. Para algo rápido:
chmod -R 775 wp-content/uploadschown -R www-data:www-data wp-content/uploads
Consejo de seguridad: Nunca uses permisos 777 (lectura, escritura y ejecución para todos) para arreglar un error. Eso deja la puerta abierta de par en par. Si un archivo necesita escritura, identifica exactamente qué usuario la necesita y limítalo a ese usuario o grupo.
El caso de WordPress
WordPress es el CMS más usado y, por desgracia, uno de los que más sufren por malas configuraciones. Si ves errores al subir plugins, actualizar temas o imágenes, casi siempre es porque el servidor web no tiene permiso de escritura en los archivos.
- Archivos: 644
- Carpetas: 755
- El archivo wp-config.php: 600 o 640 (solo lectura para el dueño, nadie más debería verlo).
El dueño de los archivos debe ser tu usuario de FTP/SFTP, no el del servidor web (www-data). Pero el grupo sí debe ser www-data. Esto permite que, si los permisos de grupo están bien, WordPress pueda actualizarse solo vía SSH o FTP directos configurados en wp-config.php, o escribiendo en carpetas concretas cuando hace falta.
A modo de cierre
Saber manejar los permisos archivos linux es lo que separa a un novato de alguien que sabe lo que hace. No se trata solo de que el sitio «funcione», sino de que funcione sin peligrar. El uso indiscriminado de comandos recursivos o dar privilegios de más puede abrir brechas de seguridad difíciles de cerrar. Si sigues la regla de oro (755 para directorios y 644 para archivos) y aseguras que la propiedad sea la correcta, logras ese equilibrio perfecto entre funcionalidad y protección.
Si después de todo esto notas comportamientos raros o necesitas una auditoría a fondo, en RedServicio (redservicio.net) estamos para ayudar. Resolvemos problemas técnicos y optimizamos la infraestructura de tus proyectos.
Preguntas Frecuentes
¿Qué pasa si pongo permisos 777 a todo?
Es el error más grave que puedes cometer. Cualquier usuario en el servidor, incluidos los scripts maliciosos, podrá modificar, borrar o ejecutar lo que quiera en tu sitio.
¿Cómo sé qué usuario ejecuta mi servidor web?
Usa ps aux | grep -E 'apache|httpd|nginx'. Así ves bajo qué usuario corren los procesos. Lo normal es que sea www-data, apache o nginx.
¿Es seguro usar chown -R en la raíz del servidor?
Para nada. Cambiar el dueño de archivos del sistema (/bin, /etc, /var) puede dejar tu servidor inoperable y sin arranque. Usa chown solo en los directorios de tus webs (/var/www, /home/user).

