Ver planes
ESEN

Permisos de archivos y carpetas: 644, 755 y por qué nunca 777

· 6 min de lectura · por el equipo técnico de VPS Argentina

En un sitio web los archivos van en 644 y las carpetas en 755. Eso alcanza para que el servidor los lea y los muestre, y para que nadie más pueda escribirlos. El 777 —que todo el mundo pueda leer, escribir y ejecutar— es lo que sugieren muchos tutoriales para salir del paso y es la puerta de entrada favorita de quien sube un archivo malicioso: cualquier proceso del servidor puede dejar algo ahí. Los errores 403 y varios 500 son casi siempre un permiso mal puesto.

Qué dicen los números

Cada archivo tiene tres permisos —leer, escribir y ejecutar— para tres grupos: el dueño, el grupo y el resto del mundo. Cada permiso vale un número: leer 4, escribir 2, ejecutar 1. La suma da el dígito de cada grupo.

ValorQué permiteDónde se usa
644El dueño lee y escribe; el resto solo lee.Archivos del sitio: .php, .html, imágenes.
755El dueño lee, escribe y entra; el resto lee y entra.Carpetas.
600Solo el dueño, y nadie más.Archivos con contraseñas, como wp-config.php.
777Cualquiera lee, escribe y ejecuta.Ninguno. Nunca.

En carpetas, el permiso de ejecutar significa poder entrar a la carpeta: sin él, el servidor no puede llegar a los archivos de adentro.

Corregirlos en masa

Cuando un sitio quedó con permisos desparejos —típico después de una migración—, se arreglan de una vez separando archivos de carpetas. Desde la consola del VPS, parado en la carpeta del sitio:

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

Y después, los archivos que guardan credenciales, más cerrados todavía:

chmod 600 wp-config.php

El dueño importa tanto como el permiso

Un permiso correcto con el dueño equivocado no sirve. Si subís archivos como root a un sitio que corre con otro usuario, el sitio no va a poder escribir ahí aunque el número esté bien.

En un VPS con DirectAdmin, todo lo que hay dentro de la cuenta tiene que pertenecer a su usuario:

chown -R usuario:usuario /home/usuario/domains/tudominio.com/public_html

Los errores que produce un permiso mal puesto

ErrorCausa habitual
403 ForbiddenLa carpeta no tiene permiso de entrada (755) o falta el archivo índice.
500 Internal Server ErrorUn .htaccess o un script con permisos de escritura para todos: Apache se niega a usarlos.
El sitio no puede subir imágenesLa carpeta de subidas no es escribible por el usuario del sitio.
Cambios que no se guardanEl proceso web no puede escribir el archivo de configuración.

Antes de aflojar un permiso para que algo funcione, revisá el dueño: nueve de cada diez veces el problema es ese.

Proteger una carpeta con contraseña

Para una carpeta que no tiene que ser pública —un entorno de pruebas, una carpeta de descargas internas— el panel ofrece protección con usuario y contraseña. Es el aviso que pide el navegador antes de mostrar nada, y funciona incluso si la aplicación de adentro no tiene control de acceso propio.

No reemplaza a la seguridad de la aplicación, pero suma una puerta más y deja afuera a los robots que buscan instalaciones a medio terminar.

Preguntas frecuentes

Un tutorial me dice que ponga 777 para que funcione

Es el atajo que evita entender el problema real, que casi siempre es el dueño del archivo. Con 777 cualquier proceso del servidor puede escribir ahí, incluido un script subido por alguien más. Corregí el dueño con chown y dejá 644 y 755.

¿Qué permisos necesita WordPress?

Los mismos: 644 en archivos y 755 en carpetas, con wp-config.php en 600. La carpeta wp-content/uploads necesita pertenecer al usuario del sitio para que se puedan subir imágenes, pero no necesita 777.

Cambié los permisos y ahora tengo un 500

Fijate en el .htaccess: si quedó con permiso de escritura para todos, Apache lo rechaza y devuelve 500. Dejalo en 644.

¿Cómo veo los permisos actuales?

Con ls -l en la consola, o en el Administrador de archivos del panel, que los muestra en una columna. El primer carácter indica si es carpeta (d) o archivo (-).

¿Esto aplica a un VPS o a un hosting?

A los dos. En hosting compartido lo hacés desde el panel y en un VPS desde la consola, pero los números y la lógica son los mismos.

Seguí leyendo