Articles

Permisos de WordPress – Cómo configurar los sistemas de archivos y las titularidades adecuadas

  • 12 min read
  • WordPress,Servidores,Seguridad,Técnicas (WP)
  • Saved for offline reading
  • Share on Twitter, LinkedIn

Cuando la gente habla de la seguridad de WordPress, los permisos y la propiedad de los archivos suelen ser lo último en lo que piensan. Instalar plugins de seguridad es una buena práctica y una necesidad para cada sitio web de WordPress. Sin embargo, si los permisos de su sistema de archivos no están configurados correctamente, la mayoría de sus medidas de seguridad podrían ser fácilmente eludidas por los intrusos.

Cuando la gente habla de la seguridad de WordPress, los permisos y la propiedad de los archivos suelen ser lo último en lo que piensan. Instalar plugins de seguridad es una buena práctica y una necesidad para cada sitio web de WordPress. Sin embargo, si los permisos de su sistema de archivos no están configurados correctamente, la mayoría de sus medidas de seguridad podrían ser fácilmente eludidas por los intrusos.

wordpress permissions

Los permisos y la propiedad son bastante importantes en las instalaciones de WordPress. Configurarlos correctamente en su servidor web debería ser lo primero que haga después de instalar WordPress. Tener un conjunto incorrecto de permisos podría causar errores fatales que detengan su sitio web. Los permisos incorrectos también pueden comprometer su sitio web y hacerlo propenso a ataques.

Más lecturas en SmashingMag:

  • Qué hacer cuando su sitio web se cae
  • Cómo mantener su flujo de trabajo de codificación organizado
  • Cómo averiguar por qué su sitio web dejó de funcionar
  • 9 pasos para una relación feliz con su proveedor de alojamiento

Además de las preocupaciones de seguridad, una serie de otros problemas pueden derivarse de tener un conjunto incorrecto de permisos y propiedad. ¿Alguna vez se ha encontrado con una pantalla blanca en blanco al intentar cargar su sitio web por primera vez? ¿O ha recibido alguna vez mensajes de error al intentar cargar imágenes en el cargador de medios? Corregir los permisos y la propiedad de sus archivos y carpetas suele solucionar este tipo de problemas.

En este artículo, le enseñaremos todo sobre los permisos y la propiedad del sistema de archivos de WordPress: qué son, por qué son importantes y cómo configurarlos. Usted aprenderá algunos principios básicos que sigo para mantener mi sistema de archivos intacto. También cubriremos las dos configuraciones más comunes del servidor de WordPress. Explicaremos en qué se diferencian y, lo que es más importante, cómo establecer los permisos y la propiedad adecuados para cada una.

Terminal Vs. Cliente FTP

Durante el curso de este artículo, vamos a utilizar el terminal para cambiar los permisos y la propiedad. ¿Por qué no usar un cliente FTP en su lugar? La razón es que FTP es un poco limitado para nuestras necesidades. FTP se puede utilizar para transferir archivos y cambiar los permisos de archivos y carpetas, pero no se puede utilizar para cambiar la configuración de la propiedad.

Para llevar a cabo los comandos que se enumeran en este artículo, usted tendrá que estar conectado a su servidor utilizando el comando SSH. Si no está familiarizado con la terminal y SSH, puede aprender sobre ellos en el artículo «Introducción a los comandos de Linux».

Usuarios y grupos

Antes de nada, tenemos que hablar rápidamente de lo que son los usuarios y los grupos, porque estos van de la mano a la hora de definir los permisos.

Para decirlo de forma sencilla, un usuario es una cuenta que tiene acceso al ordenador, y un grupo sólo es un identificador para un determinado conjunto de usuarios. Esto significa que cada vez que transfieres archivos usando FTP, estás usando una cuenta de usuario en tu servidor. Y dependiendo de cómo su anfitrión haya configurado su cuenta, usted (el usuario) podría pertenecer a uno o más grupos. Los usuarios y los grupos son como los usuarios y los roles en WordPress. Ambos son conceptualmente lo mismo, excepto que el primero se utiliza en su servidor.

Los usuarios y grupos son importantes porque ayudan a identificar los privilegios para todos nuestros archivos y carpetas. Los propietarios de un archivo normalmente tendrían privilegios completos sobre él; otros usuarios que pertenecen al mismo grupo tendrían menos privilegios sobre él; mientras que todos los demás podrían no tener privilegios sobre él. Estos privilegios son lo que llamamos permisos.

¿Qué son los permisos de los archivos?

Los permisos dictan lo que los usuarios pueden hacer con un archivo. Un permiso está representado por un conjunto de números, como 644 o 777, denominado modo de permiso. Si ha utilizado plugins en WordPress antes, lo más probable es que alguno de ellos le haya pedido que cambie los permisos de un archivo o directorio porque el plugin no puede escribir en él. Al cambiar los permisos del archivo, estás permitiendo que el servidor web acceda a ese archivo o carpeta.

Piensa en un modo de permiso como un conjunto de declaraciones «quién puede hacer qué», en el que cada dígito corresponde a la parte «quién» de la declaración:

  • Primer dígito. Lo que puede hacer el usuario de la cuenta propietaria del fichero
  • Segundo dígito. Lo que pueden hacer las cuentas de los demás usuarios del grupo del propietario
  • Tercer dígito. Lo que pueden hacer las cuentas de usuario de todos los demás (incluidos los visitantes del sitio web)

A continuación, el número corresponde a la parte «qué» del enunciado y es una suma de una combinación de cualquiera de estos dígitos:

  • 4 Leer un archivo, o leer los nombres de los archivos de una carpeta
  • 2 Escribir o modificar un archivo, o modificar el contenido de una carpeta
  • 1 Ejecutar o ejecutar un archivo, o acceder a los archivos de una carpeta

Estos dígitos son los privilegios que se asignan al «quién» en el modo de permiso. Observe en la lista anterior que los privilegios significan algo diferente para los archivos y las carpetas.

Usar el modo de permiso correcto es bastante importante. Para ilustrar mejor esto, piense de nuevo en los usuarios y los roles en WordPress. En un sitio web de WordPress, los colaboradores y los administradores tienen diferentes conjuntos de capacidades. Los colaboradores pueden crear nuevas entradas en el blog, pero no pueden añadir plugins. Los administradores, por otro lado, pueden añadir plugins y también crear entradas de blog. Los administradores pueden incluso cambiar el aspecto del sitio web si lo desean. Una línea clara separa lo que los usuarios con diferentes roles pueden hacer. Esto es lo mismo con los modos de permiso, excepto que en lugar de tratar con las entradas del blog y las opciones del tema, estamos tratando con archivos y carpetas en el servidor.

Cambiar los modos de permiso

Los clientes FTP suelen proporcionar una interfaz donde se puede cambiar convenientemente el modo de permiso de sus archivos y carpetas. Aquí hay una captura de pantalla de la interfaz en mi cliente FTP:

Example of a permission mode interface.
Ejemplo de una interfaz de modo de permiso.

Si tiene acceso a la terminal de su servidor, también puede utilizar el comando chmod para cambiar el modo de permiso de un archivo o carpeta:

sudo chmod 644 <file>

Para cambiar los modos de permiso de todos los archivos o carpetas, utilice chmod junto con el comando find. Por ejemplo, puede usar esto para cambiar todos los archivos a 644:

sudo find . -type f -exec chmod 644 {} +

O use esto para cambiar todas sus carpetas a 755:

sudo find . -type d -exec chmod 755 {} +

Consulte «Cambiando los permisos de los archivos en el Códice de WordPress» para una guía para cambiar los modos de permiso.

La diferencia entre 644 y 777

Veamos algunos modos de permiso y cómo afectan a nuestro sitio web.

¿Qué significaría un script PHP con un modo de permiso de 644? Siguiendo la explicación anterior de cómo funcionan los modos de permiso, podemos descifrar lo que este modo permite a los usuarios hacer con nuestro script:

  • Los privilegios del propietario son «lectura» (4) + «escritura» (2) = 6
  • Los privilegios del grupo del propietario son «lectura» (4) = 4
  • Los privilegios de todos los demás son «lectura» (4) = 4

En lenguaje llano, esto significa que:

  • si somos dueños del script, podemos leerlo y modificarlo;
  • todos los demás sólo pueden leerlo.

Como podemos ver, 644 es un buen modo de permiso para nuestro script PHP. Podemos hacer cambios en él, y nuestro servidor web puede leerlo.

Ahora veamos las carpetas. ¿Qué pasaría si tuviéramos una carpeta con un modo de permiso de 777? Este modo de permiso se puede desglosar de la siguiente manera:

  • Los privilegios del propietario son «lectura» (4) + «escritura» (2) + «ejecución» (1) = 7
  • Los privilegios del grupo del propietario son «lectura» (4) + «escritura» (2) + «ejecución» (1) = 7
  • Los privilegios de todos los demás son «leer» (4) + «escribir» (2) + «ejecutar» (1) = 7

Esto significa que

  • cualquiera puede obtener una lista de los nombres de los archivos de nuestra carpeta;
  • cualquiera puede crear, modificar y borrar cualquier archivo de nuestra carpeta;
  • cualquiera puede acceder a los archivos de nuestra carpeta.

Es obvio que 777 es un mal modo de permiso para cualquier cosa en nuestro sitio web de WordPress porque cualquier visitante sería capaz de añadir archivos a nuestro directorio o incluso eliminar scripts. Peor aún, cualquiera podría meter código malicioso y comprometer nuestro sitio web.

Configuraciones del servidor de WordPress

Ahora ya conocemos los permisos y cómo leerlos. Pero antes de proceder a cambiar todos nuestros permisos, tenemos que entender cómo está configurado nuestro servidor. Debido a que los permisos se ocupan de las cuentas de usuario y grupos, tenemos que saber cómo se ejecuta nuestro sitio web de WordPress.

Existen muchas configuraciones de servidor diferentes. Diferentes configuraciones necesitan diferentes conjuntos de modos de permiso para que WordPress funcione correctamente y de forma segura. Hablaremos sólo de las dos configuraciones más comunes y de los permisos adecuados para ellas:

  • Configuración estándar del servidor:
    • Tienes una cuenta de usuario.
    • Tu servidor web se ejecuta como otra cuenta de usuario.
  • Configuración del servidor compartido o suEXECconfiguración:
    • Tiene una cuenta de usuario.
    • Otras personas que utilizan el servidor tienen cuentas de usuario y podrían compartir el mismo grupo con su cuenta de usuario.
    • Su servidor web se ejecuta como el propietario de sus archivos de WordPress.

La principal diferencia entre estos dos está en cómo se ejecuta el servidor Web.

Permisos para una configuración estándar del servidor WordPress

Las configuraciones estándar de WordPress requieren un poco más de trabajo que las configuraciones de servidores compartidos porque el servidor Web no tiene relación con nuestra cuenta de usuario.

Propiedad de archivos y carpetas para WordPress

En primer lugar, tenemos que ajustar la propiedad de archivos y carpetas de nuestros archivos de WordPress. Tendremos que asegurarnos de lo siguiente:

  • que tu cuenta de usuario sea la propietaria de todos los archivos y carpetas de WordPress,
  • que tu cuenta de usuario y la del servidor web pertenezcan al mismo grupo.

Para conocer los grupos a los que pertenece su cuenta de usuario, puede utilizar este comando en el terminal de su servidor:

groups

Entonces, para conocer los grupos a los que pertenece su servidor web, puede insertar temporalmente este fragmento de PHP en uno de sus scripts de WordPress:

echo exec( 'groups' );

Si tu usuario y el servidor web no pertenecen al mismo grupo, puedes utilizar el siguiente comando en el terminal para añadir tu usuario a uno de los grupos de tu servidor web:

sudo usermod -a -G <a-common-group-name> myuser

Por último, para asegurarnos de que todo lo que hay en nuestra carpeta de WordPress pertenece a nuestra cuenta de usuario y tiene el grupo compartido que acabamos de añadir, realiza este comando en tu carpeta de WordPress:

sudo find . -exec chown myuser:a-common-group-name {} +

Permisos para WordPress

Todos nuestros archivos y carpetas deberían tener ahora la propiedad correcta. Ahora es el momento de ajustar los modos de permiso. Para simplificar las cosas, sólo tendrá que recordar lo siguiente:

  • Todos los archivos deben ser 664.
  • Todas las carpetas deben ser 775.
  • wp-config.php deben ser 660.

Esto es lo que estamos tratando de lograr con este conjunto de modos de permiso:

  • Nuestra cuenta de usuario puede leer y modificar nuestros archivos.
  • WordPress (a través de nuestro servidor web) puede leer y modificar nuestros scripts.
  • WordPress puede crear, modificar o eliminar archivos y carpetas.
  • Otras personas no pueden ver nuestras credenciales de la base de datos en wp-config.php.

Podrías estar pensando que permitir a WordPress privilegios completos con nuestras carpetas no es seguro. No te preocupes: lo hacemos porque WordPress necesita ciertas funciones para crear y modificar archivos. WordPress nos permite subir y eliminar temas y plugins e incluso editar scripts y estilos desde el back end administrativo. Sin este tipo de permiso, tendríamos que subir manualmente temas y plugins cada vez usando FTP.

Puedes usar tu cliente FTP para cambiar los modos de permiso, o puedes usar los siguientes comandos en tu directorio de WordPress para ajustar rápidamente los permisos de todos tus archivos y carpetas:

sudo find . -type f -exec chmod 664 {} +sudo find . -type d -exec chmod 775 {} +sudo chmod 660 wp-config.php

Ten en cuenta que algunos servidores web son más estrictos que otros. Si el suyo es estricto, entonces establecer su wp-config.php a 660 podría impedir que su sitio web funcione. En este caso, simplemente déjelo como 664.

Permisos para una configuración de servidor compartido o configuración SuEXEC

Los permisos para configuraciones de servidores compartidos son más fáciles de implementar. No nos detendremos en la propiedad porque el servidor Web se ejecuta como el propietario de nuestros archivos y carpetas. Dado que nuestra cuenta de usuario y el servidor web comparten los mismos permisos (ambos son propietarios), podemos meternos de lleno en la modificación de los modos de permiso:

  • Todos los archivos deben ser 644.
  • Todas las carpetas deben ser 755.
  • wp-config.php deben ser 600.

De manera similar al conjunto anterior de modos de permiso, estos se desglosan de la siguiente manera:

  • Nuestra cuenta de usuario puede leer y modificar nuestros archivos.
  • WordPress (a través de nuestro servidor web y como propietario de la cuenta) puede leer y modificar nuestros scripts.
  • WordPress puede crear, modificar o eliminar archivos o carpetas.
  • Otras personas no pueden ver nuestras credenciales de la base de datos en wp-config.php.

De nuevo, puedes usar un cliente FTP para cambiar los modos de permiso, o puedes usar los siguientes comandos en tu directorio de WordPress para ajustar rápidamente los permisos de todos tus archivos y carpetas:

sudo find . -type f -exec chmod 644 {} +sudo find . -type d -exec chmod 755 {} +sudo chmod 600 wp-config.php

Al igual que la configuración estándar del servidor de WordPress, tu servidor puede ser más estricto que otros y no permitir que wp-config.php sea 600. En este caso, puede ajustarlo a un 640 más indulgente; si todavía no funciona, entonces use 644.

Siga siempre estas directrices y sus archivos de WordPress deberían estar a salvo de los intrusos.

Trampas comunes

Un error común que comete la gente es poner la carpeta uploads en 777. Algunos lo hacen porque obtienen un error al intentar subir una imagen a su sitio web, y 777 soluciona rápidamente este problema. Pero nunca des acceso ilimitado a todo el mundo, o harás que el servidor web sea vulnerable a los ataques. Si usted sigue las directrices cubiertas en este artículo, entonces usted no debería tener problemas para subir archivos a su sitio web.

A veces, sin embargo, un plugin le pedirá que establezca un archivo a 777. En estas ocasiones, puede ponerlo temporalmente en 777, pero asegúrese de ponerlo de nuevo en su modo de permiso original cuando haya terminado.

Conclusión

Hemos aprendido ahora sobre los permisos adecuados y la propiedad de los archivos de un sitio web de WordPress. También hemos aprendido a evitar un modo de permiso de 777 debido a cómo pone en peligro el servidor web.