
Hay tres ajustes básicos que todo WordPress en un servidor compartido debería tener, y que suelen quedar olvidados al crear una cuenta o migrar un sitio. endurecer-wordpress.sh los aplica a todos los sitios a la vez y no toca lo que ya está bien, así que se puede correr las veces que quieras.
Antes de empezar
- Necesitas un VPS o servidor dedicado con cPanel/WHM y acceso root (desde WHM → Terminal basta).
- Los scripts se probaron en AlmaLinux 10 con cPanel 138, PHP 8.3 de EasyApache (
/opt/cpanel/ea-php83) y WP-CLI instalado en/usr/local/bin/wp. Si tu servidor usa otra versión de PHP, cambia la rutaea-php83en el script. - Pruébalos primero en un horario tranquilo y lee lo que hace cada uno antes de ejecutarlo. Se comparten tal cual, sin garantía: adáptalos a tu servidor.
Qué hace
- Desactiva el editor de archivos del panel de WordPress (
DISALLOW_FILE_EDIT): si alguien entra al panel con una contraseña robada, no puede inyectar código desde ahí. - Deja
wp-config.phpcon permisos 600: solo el dueño de la cuenta puede leer las contraseñas de la base de datos. - Deja
public_htmlen 750 con gruponobody: el servidor web puede mostrar el sitio, pero una cuenta no puede leer los archivos de otra.
Instalación
Entra a WHM → Terminal (como root) y pega este bloque completo de una vez. El siguiente código crea el archivo /root/endurecer-wordpress.sh, le da permisos y comprueba que quedó bien escrito:
cat > /root/endurecer-wordpress.sh <<'EOF'
#!/bin/bash
PHPCLI=/opt/cpanel/ea-php83/root/usr/bin/php
for cfg in /home/*/public_html/wp-config.php; do
W=$(dirname "$cfg"); U=$(stat -c %U "$W")
if grep -q "DISALLOW_FILE_EDIT" "$cfg"; then
echo "$U: editor ya desactivado"
else
sudo -u "$U" -- $PHPCLI /usr/local/bin/wp --path="$W" --skip-plugins --skip-themes \
config set DISALLOW_FILE_EDIT true --raw --type=constant >/dev/null 2>&1 \
&& echo "$U: editor desactivado" || echo "$U: ERROR al desactivar el editor, revisar"
fi
[ "$(stat -c %a "$cfg")" != "600" ] && chmod 600 "$cfg" && echo "$U: wp-config.php ajustado a 600"
done
for d in /home/*/public_html; do
U=$(stat -c %U "$d")
if [ "$(stat -c '%a %G' "$d")" != "750 nobody" ]; then
chgrp nobody "$d" && chmod 750 "$d" && echo "$U: public_html ajustado a 750 nobody"
fi
done
echo "Revision terminada"
EOF
chmod 700 /root/endurecer-wordpress.sh && bash -n /root/endurecer-wordpress.sh && echo SCRIPT_OK
Si al final aparece SCRIPT_OK, el script está listo. Si no aparece, el bloque se pegó incompleto o con comillas cambiadas: vuelve a pegarlo.
Cómo usarlo
/root/endurecer-wordpress.sh
Cómo leer el resultado
- Por cada cuenta indica qué ajustó («editor desactivado», «wp-config.php ajustado a 600», «public_html ajustado a 750 nobody») o «editor ya desactivado» si no había nada que hacer.
- Termina con «Revision terminada». Si aparece «ERROR al desactivar el editor», revisa esa cuenta a mano.
Cuándo usarlo
- Después de crear una cuenta nueva con WordPress.
- Después de migrar un sitio al servidor.
- Si el chequeo completo marca «Editor desactivado: NO».
Los permisos 750 con grupo nobody funcionan cuando PHP corre con el usuario de cada cuenta (PHP-FPM, el modo por defecto en cPanel moderno). Pruébalo primero en un sitio y confirma que sigue cargando.





