Cómo funcionan los permisos de WordPress
¿Sabías que una de las causas más habituales del error 403 o error 500 es la mala configuración de los permisos de WordPress?
WordPress utiliza un sistema de permisos que define quién puede leer, escribir o ejecutar archivos y carpetas en tu sitio web. Si estos no están configurados correctamente, es posible que tu sitio no funcione adecuadamente e, incluso peor, que pongas en riesgo su seguridad.
Por esta razón, es crucial que entiendas qué son los permisos de WordPress y cómo configurarlos correctamente en tu aplicación. Espero que esta guía te sea de ayuda :-).
Aprender a crear y gestionar los roles y permisos de usuario de WordPress es importante cuando se trabaja con varias personas en un sitio web. Familiarizarte con los diferentes accesos te permite controlar lo que un usuario puede o no puede hacer en su sitio.
Desde Administrador hasta Suscriptor, cada rol tiene un conjunto de tareas pre asignadas por defecto, que puedes personalizar. Este artículo repasará seis roles predeterminados de permisos de usuario de WordPress y cómo gestionarlos.
¿Qué son los permisos de WordPress?
Los permisos de WordPress son unos determinados atributos que controlan quién puede leer, escribir o ejecutar archivos y carpetas en tu página web.
Veamos qué funcionalidades tiene cada uno de los permisos:
- Lectura (read): permite ver el contenido de un archivo o carpeta, pero no modificarlo.
- Escritura (write): permite editar o borrar un determinado archivo o carpeta, pero no ejecutarlo.
- Ejecución (execute): en caso de ser ejecutable, permite ejecutar un archivo o acceder a una carpeta.
Si no existen permisos, el usuario no tiene acceso al directorio que quiere acceder.
Para comprender adecuadamente los permisos, es esencial familiarizarse con los tres tipos de usuarios a los que se aplican:
- Propietario (owner): usuario propietario del fichero o directorio.
- Grupo (group): usuarios que son miembros de un mismo grupo con permisos similares.
- Público o mundo (others): cualquier otro usuario.
Formato de los permisos de WordPress
Ahora que sabes qué son los permisos de WordPress, es importante que conozcas su formato y nomenclatura, que no es del todo intuitiva.
Pues bien, los permisos están representados por un número de tres dígitos, por ejemplo: 777, 755, 654…
Cada dígito indica los permisos para un usuario específico:
- Primer dígito: permisos que tiene el propietario (owner).
- Segundo dígito: permisos que tiene el grupo (group).
- Tercer dígito: permisos que tiene el público (others).
Aquí están los valores numéricos asignados a cada tipo de permiso:
- Lectura: 4
- Escritura: 2
- Ejecución: 1
Si no se desea otorgar ningún permiso, se utiliza el número 0.
La forma más sencilla de entenderlo es mediante un ejemplo:
Permiso 762:
- Primer dígito 7: el propietario puede leer (4), escribir (2) y ejecutar (1). 4+2+1=7.
- Segundo dígito 6: el grupo puede leer (4) y escribir (2). 4+2=6.
- Tercer dígito 2: el público puede escribir (2).
En el caso del siguiente permiso, tendríamos lo siguiente:
Permiso 777:
- Primer dígito 7: el propietario puede leer (4), escribir (2) y ejecutar (1). 4+2+1=7.
- Segundo dígito 7: el grupo puede leer (4), escribir (2) y ejecutar (1). 4+2+1=7.
- Tercer dígito 7: el público puede leer (4), escribir (2) y ejecutar (1). 4+2+1=7.
Esta configuración, representada como 777, es la más permisiva y, por razones de seguridad, nunca deberías emplearla.
La configuración más restrictiva sería 000. Sin embargo, en este caso, al no otorgar ningún permiso a nadie, los archivos no serían legibles, y tu sitio dejaría de funcionar por completo.
Otros formatos
Aunque es menos habitual, también es posible que veas los permisos de WordPress representados mediante estas letras y/o un guion.
- r : read, permisos de lectura.
- w : write, permisos de escritura.
- x : eXecute, permisos de ejecución.
- – : guion, sin permisos.
Por tanto, es posible que veas el permiso:
rw-ww-r–
Como ves son nueve caracteres. Los tres primeros corresponden al propietario, los 3 siguientes al grupo y los últimos tres al público.
Se traduciría de la siguiente manera:
- rw-: permisos para el propietario (lectura y escritura, sin permisos de ejecución).
ww-: permisos para el grupo (escritura, sin permisos de lectura ni ejecución).
r–: permisos para otros usuarios (lectura, sin permisos de escritura ni ejecución).
En términos numéricos, esto se expresaría como 664. Si asignamos valores numéricos a los permisos:
- r = 4
- w = 2
- x = 1
Entonces, para el propietario, tenemos 4 (lectura) + 2 (escritura) + 0 (sin ejecución) = 6. Para el grupo, tenemos 2 (escritura) + 0 (sin lectura ni ejecución) = 2. Para otros usuarios, tenemos 4 (lectura) + 0 (sin escritura ni ejecución) = 4.
Por ejemplo, ante la siguiente secuencia:
rwxrwxrwx
Tendríamos la configuración más permisiva, equivalente a 777.
Configuración correcta de permisos
Por norma general y en la mayoría de los casos, los permisos que debes estableces en tu Hosting WordPress o cualquier otro plan de alojamiento son:
- Ficheros: 644
- Carpetas: 755
Esta configuración estándar proporciona un equilibrio entre la seguridad y la funcionalidad. Puedes optar por ser más restrictivo, pero ten en cuenta que esto podría generar errores, como la imposibilidad de instalar plugins en WordPress o cambiar la plantilla.
Por otro lado, una configuración mucho más permisiva, puede suponer un problema de seguridad para tu web, ya que cualquiera podría acceder a sus archivos y carpetas, modificarlas o eliminarlas.
Importante: Si utilizas un proveedor de hosting diferente a LucusHost, te recomendaría que verifiques con su soporte cuáles son los permisos recomendados. A veces, debido a la configuración del servidor, pueden variar ligeramente.
Ocurre casi lo mismo con los roles de WordPress. ¿Le darías los privilegios de un usuario admin a un usuario suscriptor? ¿Podrías trabajar en tu web sin problema si el usuario admin tuviese los mismos privilegios que un usuario colaborador?
Por tanto, los permisos deben configurarse de modo que el propietario tenga todos los permisos para leer, escribir o ejecutar archivos o carpetas, pero el grupo others solo pueda leerlas o directamente no tenga permisos.
Cómo comprobar los permisos de WordPress
Aunque existen varios plugins, como WP Tools o iThemes Security, que te permiten revisar los permisos en tu aplicación de WordPress, te recomendaría no instalar ninguno solo para esta tarea. Desde cPanel, puedes realizar la comprobación e incluso editarlos en solo unos clics.
Primero, dirígete a la sección «Archivos» y haz clic en «Administrador de archivos».
En la columna derecha, podrás visualizar los permisos de tus archivos.
Cómo cambiar los permisos de WordPress
Si has revisado los permisos de tus archivos y carpetas y te das cuenta de que estaban mal establecidos, puedes modificarlos fácilmente. A continuación te explico cómo hacerlo.
En la misma pantalla del Administrador de archivos de cPanel, haz clic con el botón derecho del ratón sobre la carpeta o fichero que quieras hacer los cambios y selecciona la opción «Change Permissions».
A continuación, haz check en los permisos que quieres establecer a cada usuario. No olvides hacer clic en «Change Permissions» para aplicar los cambios.
En conclusión
Configurar correctamente los permisos de archivos y carpetas en WordPress es esencial para un buen funcionamiento de tu web, pero también para su seguridad.
Si estás teniendo algún error en tu web, te recomiendo que revises los permisos que tienes establecidos, especialmente si acabas de migrar de hosting. Es posible que una configuración incorrecta, esté generando los problemas.
Como has visto, aunque hay plugins que te permiten hacer esta tarea, desde cPanel no son más de 5 clics y no requiere conocimientos avanzados para hacerlo.
Eso sí, si tu web está alojada en Nicolás y necesitas ayuda para revisar o cambiar los permisos de WordPress, no dudes en contactar con el equipo de Soporte. Estamos aquí para ayudarte ???? .
10 Plugins para administrar Roles WordPress y capacidades
Los roles de WordPress y capacidades de un usuario WordPress son los accesos y permisos que otorgamos a los usuarios de nuestro sitio web para que tengan mayor o menor capacidad de acción dentro de nuestra web.
Si tenemos varios usuarios en nuestra web sería importante conocer cómo funcionan los roles en WordPress y qué capacidades otorga cada uno para saber realmente qué puede hacer un usuario y que no en un momento dado.
Ante todo, tenemos que velar por la seguridad de nuestro WordPress y si a nuestra web acceden varios usuarios, debemos tener controlado qué accesos tienen.
Definición de WordPress roles and capabilities
Tenemos 5 Roles WordPress definidos por defecto y que podemos utilizar para plantear nuestra agencia de redacción de artículos de nuestro blog.
- Super Admin: Si tenemos un red de blogs (wordpress multisite), sería el administrador de la red.
- Administrador: Tiene acceso a todo. Puede desde publicar entradas, hasta gestionar los plugins, themes, la configuración de los menús y sidebar, etc. Puede hacer cualquier cosa.
- Editor: Con el editor rol wordpress podemos publicar y editar entradas propias y de otros usuarios.
- Autor: Sólo puede publicar y editar sus propias entradas.
- Colaborador: Solo puede editar entradas pero no puede publicar.
- Suscriptor: Solo puede entrar en su página de perfil.
No creeis un usuario administrador que se llame admin. Es un agujero de seguridad.
Dentro de cada rol se especifican las capacidades que tiene cada uno y que puede ejercer dentro de nuestro sitio wordpress. Ejemplos de capacidades de un rol WordPress:
→ Publicar: publish_post
→ Moderar comentarios: moderate_comments
→ Editar usuarios: edit_users
Estos roles, con estas capacidades, se asignan en la creación del usuario.
Por defecto se asigna el rol suscriptor, ya que es el que menos permisos tiene. Pero eso lo podemos cambiar en las preferencias de nuestro sitio y que sea otro el que se asigne por defecto en la creación de nuestros usuarios.
En esta captura veis dos que seguramente no tendréis, que son el SEO Editor y el SEO Manager. Eso es porque tengo instalada la plantilla Divi y me permite gestionar esos dos roles para controlar el acceso a ciertas partes de Divi.
Si queréis saber cómo crear un nuevo rol en wordpress mediante código os explico más adelante.
10 Plugins para gestionar los roles y capacidades de WordPress
Estos son algunos plugins que podéis encontrar en el repositorio de WordPress para poder gestionar y sacarle mayor partido a los accesos y capacidades de un usuario WordPress.
Con estos roles wordpress plugins lo que conseguireis es crear roles wordpress, editar roles wordpress, y modificar las capacidades asignadas a un rol de WordPress entre otras muchas funcionalidades adicionales que incorporan algunos de ellos.
WPFront User Role Editor
Permite gestionar roles personalizados a nuestras necesidades y permite asignar capacidades a nuestro antojo para que podamos adaptarnos a cualquier modelo de negocio. Es la manera más sencilla para crear roles nuevos, editar roles wordpress, o eliminar roles.
Descarga Gratis: https://es.wordpress.org/plugins/wpfront-user-role-editor/
Descarga PRO: https://wpfront.com/user-role-editor-pro/
Multiple Roles
Con este plugin podemos asignar varios roles a un mismo usuario.
Descarga Gratis: https://es.wordpress.org/plugins/multiple-roles/
User Roles and Capabilities
Con este plugin lo que me gusta es que además de poder gestionar las capacidades de cada rol, es que podemos asignar permisos para la gestión y administración de los plugins. De esta manera podemos controlar el acceso a cada uno de los plugins y evitar que nuestros clientes toquen más de la cuenta.
Descarga: https://es.wordpress.org/plugins/user-roles-and-capabilities/
User Role Editor
Permite gestionar las capacidades de cada rol excepto del perfil administrador. Este plugin intenta facilitar la gestión permitiendo hacer asignaciones simultáneas y en su versión de pago incluye muchas funcionalidades extra como restringir acceso a la administración de widgets, menús, exportar configuración, permisos de lectura a ciertas páginas del backend, etc.
Descarga Gratis: https://es.wordpress.org/plugins/user-role-editor/
Descarga PRO: https://www.role-editor.com/
Members
El plugin de WordPress Members permite editar los roles, asignar múltiples roles a un usuario, denegar capacidades a usuarios concretos, clonar roles, gestionar permisos de contenido, crear shortcodes para controlar el acceso a los contenidos, mostrar un formlario de login como un widget y convertir tu sitio wordpress en privado.
Descarga Gratis: https://wordpress.org/plugins/members/
New User Approve
Lo bueno del plugin WordPress New User Approve es que permite gestionar el registro de usuarios de WordPress. Este plugin modifica el proceso de registro, de manera que el administrador recibirá un email cuando se produzca un registro y deberá aceptarlo o rechazarlo. Solo los usuarios que tengan aprobado su registro podrán logarse en el sitio.
Descarga Gratis: https://wordpress.org/plugins/new-user-approve/
Advanced Access Manager
Con este plugin, podrás según el autor, en administrar el acceso al contenido de tu sitio wordpress para cualquier rol, usuario individual y visitantes o, incluso, definir un acceso predeterminado para todas las publicaciones, páginas, tipos de publicaciones personalizadas, categorías y taxonomías personalizadas.
Descarga Gratis: https://wordpress.org/plugins/advanced-access-manager/
Extensiones de pago: https://aamplugin.com/
User Access Manager
De todos los plugins que os he citado os puedo hablar por experiencia del plugin UAM. Con este plugin lo que controlamos es el acceso a las páginas de nuestro sitio desde el front-end.
Página de configuración de UAM para crear grupos de usuarios.
Listado de páginas y los permisos que hemos otorgado:
Dar permisos desde una página:
Descarga Gratis: https://es.wordpress.org/plugins/user-access-manager/
Editor Menu and Widget Access
Este es un plugin que he utilizado recientemente y que es muy sencillo y útil para cuando solo quieres otorgar acceso a los widgets y menús para el rol Editor. Aunque permite gestionar algunos permisos más, su principal uso es este. Es muy sencillo de usar y con activar el plugin ya le concede permiso a los editores para editar los widgets y los menús. Todo lo que actives en la configuración, se ocultará a estos usuarios.
Descarga Gratis: https://es.wordpress.org/plugins/editor-menu-and-widget-access/
Divi Roles
Elegant Themes no tiene como tal un plugin de gestión de roles, pero sí tiene una ventana de configuración donde podemos gestionar las capacidades de nuestros usuarios para limitar el acceso a las opciones de configuración de Divi, de ahí que lo comente.
Desde el panel de opciones de Divi podemos definir las capacidades a los roles: administrador, editor, autor, colaborador, SEO Manager y SEO Editor. Estos últimos, son roles específicos de divi que nos permiten diferenciar entre dos roles para usuarios que nos vayan a gestionar el SEO de nuestro WordPress.
Descargar: https://www.javierrguez.com/recomienda/divi/
Códigos de ejemplo para trabajar con Roles WordPress
Ahora os daré algunas indicaciones básicas sobre cómo podemos trabajar con los roles wordpress haciendo uso de la API de WordPress.
Son trozos de código pequeños que podemos aplicar en nuestro plugin de funciones para dotar a nuestro WordPress de mayor funcionalidad.
Veréis que con pequeños trozos de código podemos hacer grandes cosas y os servirá de inspiración para que inventéis vosotros mismos nuevas funcionalidades.
Asignar capacidades a un usuario mediante la API de WordPress
Mediante código podemos asignar capacidades a un usuario wordpress mediante la API de WordPress. Esto es útil para realizar tus plugins personalizados y asignar roles a un usuario WordPress.
Lo que os muestro a continuación es un ejemplo de una función para asignar capacidades a un usuario concreto. Supongamos que tenemos un usuario con perfil Suscriptor, que es el rol más restrictivo que tiene WordPress. Y ahora queremos que este usuario tenga permisos especiales para poder dar de alta usuarios y poder gestionarlos. Para hacer eso, podemos usar la siguiente función que funciona de la siguiente manera.
Si un usuario se loga en nuestro sistema, la función se ejecutará automáticamente y le otorgará permisos especiales para poder gestionar usuarios.
1234567891011 | // Función para añadir capacidades al usuario conectado que no corresponden a su rol por defecto. function add_caps_user() { $user = new WP_User( get_current_user_id() ); $user ->add_cap( 'edit_users' ); $user ->add_cap( 'delete_users' ); $user ->add_cap( 'list_users' ); $user ->add_cap( 'create_users' ); } add_action( 'admin_init' , 'add_caps_user' ); |
Cómo saber el rol de un usuario WordPress
También podemos crear funciones personalizadas en función del rol de un usuario wordpress. Para obtener el rol de un usuario conectado tenemos que hacer lo siguiente. Lo ideal es que existiera una función que fuera get user role name que nos diera el nombre de los roles, pero no es así. Para saber los roles debemos obtener primero la información del usuario wordpress y después leer la propiedad roles como podemos ver en el siguiente ejemplo obtenido del Codex WordPress:
1234 | <?php $user_info = get_userdata(1); echo 'Username: ' . $user_info ->user_login . "\n" ; echo 'User roles: ' . implode( ', ' , $user_info ->roles) . "\n" ; echo 'User ID: ' . $user_info ->ID . "\n" ; ?> |
Esto nos dará como resultado:
Username: admin
User roles: administrator
User ID: 1
Y nos podrá servir como base para hacer cualquier tratamiento que necesitemos.
¿Cómo crear un rol de WordPress mediante la API?
Ahora os voy a dejar un ejemplo de cómo podemos crear un role en WordPress. Esto es aplicable si tenemos WooCommerce instalado, ya que el customer role es un rol de WooCommerce.
El siguiente código se ejecuta cuando entramos en WordPress y crea directamente el un rol nuevo que en mi caso lo llamé Distribuidor.
1234567 | // Crea el rol de usuario "Cliente Distribuidor": add_role wordpress add_action( 'init' , 'crea_rol_distribuidor' ); function crea_rol_distribuidor(){ $customer_role = get_role( 'customer' ); add_role( 'cliente_distribuidor' , __( 'Cliente Distribuidor' ), $customer_role ->capabilities ); } |
La idea de crear este rol era para poder asignarlo manualmente a los clientes que se hicieran hacer distribuidores de mis productos previa entrega de la documentación necesaria. En cuanto cumplieran todos los requisitos, le asignaría manualmente este rol nuevo, y en al zona de la tienda le mostraría los productos con un descuento por ser distribuidor.
Más información en el Codex de WordPress
En la documentación de la API de WordPress podéis encontrar más información y ejemplos:
https://codex.wordpress.org/Plugin_API
Os recomiendo la lectura de los actions y filters. Son muy útiles para personalizar nuestros plugins y personalizar nuestra web.
Así, resumidamente, os explico para qué es cada uno:
Acciones / actions: son para añadir funcionalidades nuevas, como la que os he puesto de ejemplo antes.
Filtros / filters: un filtro lo que hace es filtrar. Es hacer pasar pasar algo por un filtro y modificarlo para que podáis entenderlo. Por ejemplo, podemos pasar por el filtro el texto de un artículo de WordPress y añadirle un prefijo o un sufijo, poner todo el texto en negrita, o todo en mayúsculas, etc. Es un ejemplo. Pero puedes cambiar lo que desees.
Se pueden hacer cosas muy curiosas como la que explico en este artículo: Modificar las banderas de Polylang
https://www.javierrguez.com/cambiar-las-banderas-polylang/
Conclusiones
Como habéis podido ver, os he hecho un repaso de los principales plugins que permiten la gestión de roles wordpress y sus capacidades así como herramientas y mecanismos para crear nuestros propios plugins para hacer lo que necesitemos a nuestro gusto sin necesidad de tener que recurrir a plugins de terceros.
Espero que os sean de utilidad y podáis comenzar con el desarrollo de vuestros plugins y crear vuestras propias funciones.