Los permisos de archivos deciden quién puede leer, escribir o ejecutar cada archivo de tu servidor, y en un hosting compartido o mal configurado, «quién» puede ser más que solo tú. Equivocarse en cualquier dirección causa problemas reales. Demasiado estrictos y WordPress no puede actualizarse. Demasiado abiertos y cualquiera que llegue al servidor puede cambiar tus archivos directamente, sin ningún inicio de sesión.

Qué significan los números

Cada permiso es un número de tres dígitos: uno para el propietario del archivo, uno para su grupo y uno para todos los demás. Cada dígito es una suma de lectura (4), escritura (2) y ejecución (1). Así, 7 es lectura, escritura y ejecución; 6 es lectura y escritura; 5 es lectura y ejecución; 4 es solo lectura.

  • 644: el propietario puede leer y escribir; el grupo y todos los demás solo pueden leer.
  • 755: el propietario puede leer, escribir y ejecutar; el grupo y todos los demás pueden leer y ejecutar.
  • 600: solo el propietario puede leer y escribir. Nadie más ve el archivo.
  • 777: todos en el servidor pueden leer, escribir y ejecutar. Es el valor con el que hay que tener cuidado.

En un directorio, «ejecutar» significa permiso para entrar en él, por eso los directorios necesitan 755 y no 644.

El esquema estándar de WordPress

  • Directorios: 755. El propietario puede añadir o quitar archivos; los demás solo pueden mirar dentro y leer.
  • Archivos: 644. El propietario puede editar; los demás solo pueden leer.
  • wp-config.php: 600 o 640. Guarda en texto plano las credenciales de tu base de datos, así que bloquéalo más que todo lo demás. La guía de wp-config.php explica cómo elegir entre ambos.

El propietario importa tanto como los números

Los permisos se aplican al propietario, al grupo y a todos los demás. Por eso la pregunta «¿puede WordPress escribir en este archivo?» depende de si la cuenta que ejecuta PHP es la propietaria del archivo. Si los archivos pertenecen a una cuenta distinta de la que ejecuta PHP, WordPress se ve como «todos los demás» y 644 no le permitirá escribir. Esa es la verdadera causa de la mayoría de los errores de subida y actualización.

La respuesta equivocada es abrirlo todo a 777, lo que arregla el síntoma dando acceso de escritura a todas las cuentas. La respuesta correcta es corregir el propietario, por ejemplo chown -R tucuenta:tucuenta /ruta/a/wordpress (en un hosting donde puedas cambiar el propietario), o preguntar a tu hosting qué cuenta ejecuta PHP. Después, el esquema estándar 644 y 755 funciona.

Por qué 777 provoca hackeos

En un hosting compartido, «todos los demás» no es hipotético. Puede incluir otras cuentas del mismo servidor. Un archivo o directorio escribible por todos significa que cualquier proceso que llegue al sistema de archivos puede modificarlo, y así es como un único plugin vulnerable en un sitio a veces sirve para escribir archivos maliciosos en uno vecino. Incluso en un servidor que controlas, un directorio en 777 permite que un fallo en cualquier servicio en ejecución plante un archivo en tu sitio.

El 777 suele ponerlo alguien que arregla rápido un error de subida, sin averiguar cuál era la corrección más estrecha. Luego se queda años. Como las subidas son un lugar común donde los atacantes dejan PHP, un wp-content/uploads escribible por todos es especialmente arriesgado.

Cómo comprobar los permisos de tu sitio

En el administrador de archivos de tu hosting, la columna Permisos muestra el valor actual de cada elemento, y la mayoría permite cambiarlo con clic derecho. Por SSH, empieza buscando problemas antes de cambiar nada:

  • Encontrar archivos escribibles por todos: find . -type f -perm /o+w
  • Encontrar directorios escribibles por todos: find . -type d -perm /o+w
  • Encontrar archivos que no son 644 o directorios que no son 755: find . -type f ! -perm 644 y find . -type d ! -perm 755

Un resultado vacío en los dos primeros es lo que quieres. Para devolver toda la instalación al esquema estándar, ejecuta estos dos comandos desde la carpeta de WordPress:

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

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

Después ajusta wp-config.php por separado con chmod 600 wp-config.php. Haz siempre una copia de seguridad antes y comprueba que estás en la carpeta correcta con pwd. Una ruta mal escrita puede aplicar permisos a más de lo previsto.

Los permisos como señal de detección

Los permisos también te dicen cuándo algo ha cambiado. Un archivo nuevo escribible por todos en una carpeta del núcleo, o un archivo PHP en uploads con permisos inusuales, merece investigarse. Combina la auditoría de permisos con la comprobación de integridad del núcleo y la lista de seguridad para tener una imagen completa.

Cómo ayuda SiftWP

SiftWP comprueba los permisos de archivos en su escaneo semanal y señala todo lo que se haya desviado del esquema estándar, incluido un 777 suelto que lleva sin notarse desde que alguien lo usó para sortear un error de subida. Escanea por SSH, sin ningún plugin en el sitio.

Empieza con créditos gratis, sin tarjeta