Permisos de archivos en tu hosting: 644, 755 y por qué nunca 777
En pocas palabras
Casi cualquier sitio funciona con 755 en las carpetas y 644 en los archivos. Los que guardan claves, como el wp-config.php de WordPress, pueden bajar a 600 o 640, porque solo los lee PHP, que corre como tu usuario. El 777 que recomiendan tantos foros habilita a cualquier usuario del servidor a escribir ahí: no resuelve nada que 755 no resuelva y, en servidores con suPHP, hace que la página devuelva un error 500. Cuando algo no se deja modificar aunque los números estén bien, el problema es el dueño del archivo, y eso no se arregla desde el panel.
Cómo leer rwxr-xr-x sin memorizar nada
El administrador de archivos y los clientes de FTP muestran los permisos de dos maneras: con letras, como rwxr-xr-x, o con tres números, como 755. Dicen lo mismo. Las letras vienen en tres grupos de tres: el primero es para el dueño del archivo, el segundo para su grupo y el tercero para todos los demás. En cada grupo, r es leer, w es escribir y x es ejecutar; un guion es un permiso que falta.
Para pasar de letras a números, cada permiso tiene un valor y se suman: r vale 4, w vale 2 y x vale 1.
| Letras | Número | Qué permite |
|---|---|---|
| rwx | 7 | Leer, escribir y ejecutar |
| rw- | 6 | Leer y escribir |
| r-x | 5 | Leer y ejecutar |
| r-- | 4 | Solo leer |
| --- | 0 | Nada |
rwxr-xr-x es 7, 5 y 5: el dueño hace todo y el resto lee y entra. rw-r--r-- es 644.
En una carpeta, las letras significan otra cosa
En un archivo, x quiere decir que se puede ejecutar como programa. En una carpeta quiere decir que se puede atravesar: entrar y llegar a lo que hay adentro. Una carpeta sin x deja inaccesible todo su contenido, aunque cada archivo tenga los permisos perfectos, y el servidor web responde con un 403.
La r de una carpeta permite listar lo que contiene, y la w, crear, renombrar y borrar cosas adentro. De ahí sale una sorpresa frecuente: poder borrar un archivo no depende de los permisos del archivo, sino de los de la carpeta que lo contiene.
Qué valor lleva cada cosa
| Qué | Permiso | Por qué |
|---|---|---|
| Carpetas del sitio | 755 | Tu usuario escribe; el servidor web entra y lee |
| Archivos PHP, HTML, CSS, JS e imágenes | 644 | Tu usuario los modifica; el servidor web los lee |
| wp-config.php, configuration.php de Joomla, .env | 600 o 640 | Tienen claves y solo los lee PHP, que corre como tu usuario |
| .htaccess | 644 | Lo lee el servidor web, no PHP |
| Carpeta de subidas del CMS | 755 | El CMS escribe como tu usuario: no necesita más |
| Script de una tarea programada | 644 | Alcanza si el cron lo llama con php delante; 755 solo si se ejecuta directo |
Cuidado con aplicar 600 a imágenes, hojas de estilo o scripts del navegador. Esos archivos los entrega directamente el servidor web, que no corre como tu usuario: si no los puede leer, responde 403 y la página se ve rota.
Por qué 777 no arregla lo que parece arreglar
El 777 le da a cualquier usuario del servidor permiso para leer, modificar y ejecutar. Los foros lo recomiendan porque "destraba" subidas que fallaban, pero en un hosting con PHP corriendo como tu usuario esa subida ya funcionaba con 755: si fallaba, el motivo era otro, casi siempre el dueño.
Además de no hacer falta, tiene dos costos. En servidores con suPHP o suEXEC, PHP se niega a ejecutar lo que está en carpetas o archivos que cualquiera puede modificar, y devuelve un error 500. Y donde sí funciona, dejaste la puerta abierta: un archivo malicioso que llega a una carpeta en 777 puede quedarse ahí y ejecutarse. El aislamiento entre sitios del hosting reduce ese riesgo, pero los permisos son la primera capa y no conviene saltearla.
Cambiarlos desde el administrador de archivos de DirectAdmin
- En el panel, abrí el administrador de archivos (File Manager, dentro de System Info & Files).
- Entrá a la carpeta del sitio: domains, el nombre de tu dominio y public_html.
- Marcá los archivos o carpetas que querés cambiar. Podés elegir varios a la vez y reciben el mismo valor.
- Usá la opción de permisos, escribí el número de tres dígitos y aplicá.
- Mirá la columna de permisos: si no cambió, no es un problema de números sino de dueño, y conviene escribirnos.
Con FileZilla, carpetas y archivos por separado
Un cliente de FTP resuelve lo que en el administrador de archivos es incómodo: aplicar un valor a las carpetas y otro a los archivos de todo un árbol. Conectate con el acceso cifrado, como se explica en subir tu sitio por FTP o SFTP, y después:
- Clic derecho sobre public_html y elegí la opción de permisos de archivo (File permissions).
- Escribí 755 en el valor numérico, activá la opción recursiva (Recurse into subdirectories) y elegí aplicarlo solo a directorios. Aceptá.
- Repetí sobre la misma carpeta con 644, recursivo, aplicado solo a archivos.
- Refrescá la vista y revisá un par de carpetas y archivos al azar.
Con acceso a la consola, cuatro líneas
El hosting no tiene SSH: ahí los permisos se cambian desde el administrador de archivos o el cliente FTP. En un VPS con DirectAdmin, o en cualquier servidor donde tengas consola, find hace las dos pasadas sin errores de tipeo. Primero las carpetas, después los archivos y, al final, la excepción del archivo de configuración:
cd ~/domains/tudominio.com.ar/public_html
find . -type d -exec chmod 755 {} +
find . -type f -exec chmod 644 {} +
chmod 600 wp-config.phpCuando el problema es el dueño
Cada archivo tiene un dueño además de permisos. En un hosting con DirectAdmin, todo lo que está dentro de tu cuenta tiene que pertenecer a tu usuario del panel: así PHP, que corre como ese usuario, escribe sin necesidad de permisos abiertos. Si una restauración hecha por consola o un script ejecutado con otro usuario dejó archivos a nombre de otro, aparecen fallas sin lógica aparente: un archivo imposible de borrar, subidas que fallan en una sola carpeta, un WordPress que pide datos de FTP para actualizarse.
Desde File Manager se tocan los permisos, nunca el dueño, y ningún número lo resuelve. Se corrige del lado del servidor: escribinos por ticket con la ruta que falla. En un VPS lo hacés vos, con chown -R usuario:usuario sobre la carpeta.
Del error al permiso
| Lo que ves | Lo más probable | Qué hacer |
|---|---|---|
| 403 en todo el sitio | public_html o una carpeta superior sin permiso de entrada | Carpetas en 755 |
| 403 solo en imágenes o estilos | Archivos estáticos en 600 o 640 | Llevarlos a 644 |
| 500 después de cambiar permisos | Algo quedó en 777 en un servidor con suPHP | Volver a 755 y 644 |
| WordPress pide datos de FTP para actualizar | Archivos a nombre de otro usuario | Corregir el dueño, por ticket |
| No se puede borrar un archivo en 644 | La carpeta que lo contiene no tiene escritura, o el dueño es otro | Revisar la carpeta y después el dueño |
Un 500 también puede venir de una línea inválida en el .htaccess. Si tocaste ese archivo hace poco, empezá por ahí.
Preguntas frecuentes
¿Qué permiso le pongo a wp-config.php?
600 o 640. WordPress lo lee a través de PHP, que corre como tu usuario, así que nadie más necesita leerlo. Algunos lo dejan en 400 o 440, de solo lectura, y lo cambian a mano cuando hay que editarlo.
¿Tengo que tocar permisos después de usar el instalador de aplicaciones?
No. El instalador del panel deja cada archivo y cada carpeta con el valor correcto y con tu usuario como dueño. Si algo falla después de instalar, el motivo suele ser otro.
¿Por qué los archivos que subo por FTP quedan con otro permiso?
El servidor de FTP aplica una máscara al crear cada archivo, que normalmente da 644 a los archivos y 755 a las carpetas. Si ves otros valores, revisá tu cliente: algunos intentan copiar los permisos que el archivo tenía en tu computadora.
Un plugin me pide 777 en una carpeta, ¿se lo doy?
No. Probá con 755 y, si el plugin sigue sin poder escribir, el problema es el dueño de la carpeta. Un plugin que solo funciona con 777 es una buena razón para buscar otro.
Seguí leyendo
Cómo subir tu sitio al hosting por FTP, FTPS o SFTP
Crear la cuenta en DirectAdmin, configurar FileZilla con cifrado, en qué carpeta va cada archivo y cómo resolver los errores de conexión más comunes.
7 min de lectura
Endurecer WordPress: los ajustes que protegen sin sumar plugins
Actualizaciones, cuentas, wp-config.php, carpeta de subidas y acceso al escritorio: lo que de verdad frena los ataques a WordPress y lo que es maquillaje.
6 min de lectura
Me hackearon el sitio: qué hacer, en qué orden y qué no tocar
Cómo contener un sitio hackeado, encontrar por dónde entraron, restaurarlo o limpiarlo y evitar que vuelva a pasar, paso a paso y sin perder la evidencia.
6 min de lectura
