Cómo corregir permisos de WordPress en servidores Linux

Los permisos incorrectos en WordPress pueden causar errores como "No se pudo crear el directorio", problemas al subir archivos, o vulnerabilidades de seguridad. Esta guía explica cómo restaurar los permisos correctos rápidamente.

Permisos recomendados para WordPress

Elemento Permiso Descripción
Directorios 755 Lectura y ejecución para todos, escritura solo para el propietario
Archivos 644 Lectura para todos, escritura solo para el propietario
wp-config.php 400 Solo lectura para el propietario (protege credenciales)
.htaccess 444 Solo lectura para todos (previene modificaciones)

Script para corregir permisos

Reemplace username con el usuario del hosting:

WPUSER="username";WPPATH="/home/$WPUSER/public_html"
find -L "$WPPATH" -type d -exec chmod 755 {} +
find -L "$WPPATH" -type f -exec chmod 644 {} +
chown -R "$WPUSER:$WPUSER" "$WPPATH"
find -L "$WPPATH" -name wp-config.php -exec chmod 400 {} +
find -L "$WPPATH" -name .htaccess -exec chmod 444 {} +

Versión en una sola línea

Para copiar y pegar rápidamente:

WPUSER="username";WPPATH="/home/$WPUSER/public_html";find -L "$WPPATH" -type d -exec chmod 755 {} +;find -L "$WPPATH" -type f -exec chmod 644 {} +;chown -R "$WPUSER:$WPUSER" "$WPPATH";find -L "$WPPATH" -name wp-config.php -exec chmod 400 {} +;find -L "$WPPATH" -name .htaccess -exec chmod 444 {} +

Explicación del script

El script ejecuta las siguientes acciones en orden:

  1. Define las variables: WPUSER es el nombre de usuario y WPPATH es la ruta de instalación de WordPress.
  2. Permisos de directorios: Establece 755 en todas las carpetas.
  3. Permisos de archivos: Establece 644 en todos los archivos.
  4. Propietario: Asigna el usuario y grupo correctos a todos los archivos y carpetas.
  5. wp-config.php: Restringe a 400 para proteger las credenciales de la base de datos.
  6. .htaccess: Restringe a 444 para prevenir modificaciones no autorizadas.

Notas importantes

¿Por qué se usa -L en find?

La opción -L permite que find siga enlaces simbólicos. Esto es necesario porque en algunos servidores public_html es un enlace simbólico a otra ubicación. Sin esta opción, el script no encontraría los archivos.

¿Por qué no usar USER como variable?

USER es una variable reservada del sistema que contiene el usuario actual de la sesión. Si intenta asignarle otro valor, el sistema lo sobrescribirá. Por eso usamos WPUSER.

Verificar los permisos aplicados:

Después de ejecutar el script, verifique con:

ls -la /home/username/public_html/

Debería ver:

  • Directorios con drwxr-xr-x (755)
  • Archivos con -rw-r--r-- (644)
  • wp-config.php con -r-------- (400)
  • .htaccess con -r--r--r-- (444)