Cómo configurar los permisos del sistema de archivos para WordPress con BASH

  • Por:

  • 3 Marzo 2022
WordPress permisos

Todo el que quiera que su sitio web de WordPress sea más seguro definitivamente debería leer el capítulo Fortalecimiento de WordPress de la guía oficial de este CMS: es una lista extensa de contramedidas de seguridad que todo buen webmaster debería implementar (o preguntar a su administrador del sistema para implementar) no solo para fortalecer su instalación de WordPress, sino también para incrementar su conocimiento general de este sistema de gestión de contenidos. 

En este tutorial abordaremos uno de los asuntos más importantes del capítulo mencionado: los permisos de archivo. Elegir esas pautas reducirá en gran medida las posibilidades de que nuestra web sea hackeada, ya que evitaremos que nuestros atacantes tengan la oportunidad de descargar “accidentalmente” algún archivo reservado, ejecutar un script o incluso inyectar algunos comandos molestos usando un exploit de día cero. 

Establecer manualmente estos permisos puede ser problemático, especialmente en Linux, donde la mayoría de los interfaces GUI no permiten hacer eso de una forma estructurada. Al mismo tiempo, hacerlo manualmente también será ineficiente, aparte de ser propenso a errores humanos: simplemente no hay posibilidad de que no nos arriesguemos a perder algo – ya sea un archivo o una carpeta completa- aquí y allá, específicamente si tenemos una gran cantidad de plugins WP, archivos multimedia, temas, skins y datos de disco de cualquier tipo. 

Para facilitar esta tarea, presentamos este script BASH que se puede utilizar para establecer automáticamente la cantidad requerida de permisos en todo el sitio web basado en WordPress. Cortar el contenido, luego pegarlo en un nuevo archivo, guardarlo como set - wordpress - permisos . sh en una carpeta de su elección (tal como / var / www /) y ejecutarlo de la siguiente forma: 

bash set-wordpress-permissions.sh /var/www/<your_website_file_root>

Gracias a este script, cualquier persona podrá hacer la cantidad adecuada de cambios de ACL en unos segundos: además de eso, podrá repetir exactamente la misma tarea en cualquier otro sitio web, asegurando así que cada uno de ellos adoptará el mismo conjunto de permisos

Sin más preámbulos, aquí está el guión:

#!/bin/bash
#
# This script configures WordPress file permissions based on recommendations
# from http://codex.wordpress.org/Hardening_WordPress#File_permissions
#
# execute it with the following command:
# bash set-wordpress-permissions.sh /var/www/<site_folder>
#
OWNER=apache # <-- wordpress owner
GROUP=www # <-- wordpress group
ROOT=$1 # <-- wordpress root directory

# reset to safe defaults
find ${ROOT} -exec chown ${OWNER}:${GROUP} {} \;
find ${ROOT} -type d -exec chmod 755 {} \;
find ${ROOT} -type f -exec chmod 644 {} \;

# allow wordpress to manage wp-config.php (but prevent world access)
chgrp ${GROUP} ${ROOT}/wp-config.php
chmod 660 ${ROOT}/wp-config.php

# allow wordpress to manage wp-content
find ${ROOT}/wp-content -exec chgrp ${GROUP} {} \;
find ${ROOT}/wp-content -type d -exec chmod 775 {} \;
find ${ROOT}/wp-content -type f -exec chmod 664 {} \;

Siéntase libre de cambiarlo para que se adapte mejor a su escenario específico.

Para ejecutarlo, escriba lo siguiente: 

bash set-wordpress-permissions.sh <site_folder>

El script necesitará algunos minutos para hacer el trabajo: ten paciencia y deja que termine.