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:
-
Define las variables:
WPUSERes el nombre de usuario yWPPATHes la ruta de instalación de WordPress. - Permisos de directorios: Establece 755 en todas las carpetas.
- Permisos de archivos: Establece 644 en todos los archivos.
- Propietario: Asigna el usuario y grupo correctos a todos los archivos y carpetas.
- wp-config.php: Restringe a 400 para proteger las credenciales de la base de datos.
- .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)