Solucionar el error "M_FORBIDDEN: No tienes permiso" en Matrix Room Admin

Intentas cambiar la configuración de una sala de Matrix, eliminar un usuario, bloquear a alguien, editar permisos o realizar otra acción administrativa y recibes un error M_FORBIDDEN: You do not have permission. Para un recién llegado, el mensaje puede resultar confuso porque "admin" puede significar dos cosas diferentes en Matrix: un administrador de servidor controla el servidor principal, mientras que un administrador de sala tiene suficiente poder dentro de una sala específica. Son sistemas de permisos distintos.

La solución más fiable consiste en identificar qué capa de permisos bloqueó la acción antes de realizar cualquier cambio. La autorización de salas de Matrix se basa en niveles de poder : números almacenados en el estado de la sala que determinan quién puede invitar, expulsar, bloquear, censurar mensajes, cambiar la configuración de la sala o editar los propios niveles de poder. La especificación actual de Matrix define estas reglas en la especificación de la API cliente-servidor de Matrix . Synapse documenta por separado que un administrador de servidor es distinto de un administrador de sala en la documentación de la API de administración de Synapse .

Pantalla de sala de Matrix de estilo Elemento Representativo que muestra un error de permiso M_FORBIDDEN
Una M_FORBIDDENrespuesta significa que el servidor principal rechazó la acción intentada. El motivo exacto depende de la acción, el estado de membresía y los niveles de energía de la sala.

Antes de cambiar nada: conoce los cuatro valores que importan.

Normalmente necesitas cuatro datos:

  • Tu ID de usuario de Matrix , por ejemplo @alice:example.com.
  • El ID de la sala , por ejemplo !abc123:example.com. Un alias de sala como #team:example.comes más fácil de leer, pero muchas API operan con el ID interno de la sala.
  • Su estado de membresía . En la mayoría de los casos, debe unirse a la sala antes de poder realizar acciones de administración de la misma.
  • Tu nivel de poder y el nivel requerido para la acción .

En Element Web o Desktop, el ID y la versión de la sala se encuentran en Configuración de la sala, dentro de Avanzado. La documentación actual de Element también ubica la administración de salas en Configuración de la sala → Roles y permisos . Consulte la guía de configuración de salas de Element .

Paso 1: Confirma que realmente estás conectado a la sala.

Matrix distingue varios estados de membresía, como invitado, unido, abandonado y expulsado. Un usuario generalmente necesita el joinestado de membresía para enviar eventos a la sala o administrarla. Esto es importante porque una cuenta de administrador del servidor puede fallar en una acción normal de la sala si no participa en ella.

Si utiliza un cliente Matrix como Element, abra la sala y confirme que aparece como una sala activa a la que se ha unido, no solo como una invitación o una sala histórica. Si utiliza Synapse y necesita una ruta de recuperación de administrador del servidor, Synapse proporciona un punto final de administración para unir a un usuario local a una sala, pero aún así documenta los requisitos de permisos relacionados con esa operación. Consulte la administración de membresía de salas de Synapse .

Evite este error: no dé por sentado que poseer un token de API de Synapse Admin otorga automáticamente los mismos privilegios de sala a la cuenta. La administración del servidor y la administración de la sala son intencionadamente distintas.

Paso 2: Comprueba tu rol y el nivel de poder requerido para la acción.

Element presenta los niveles de poder comunes como roles familiares, tales como Miembro, Moderador y Administrador. Internamente, Matrix evalúa números en lugar de etiquetas. La especificación Matrix recomienda la interpretación habitual de usuarios ordinarios por debajo del umbral de evento de estado, moderadores por encima de ese umbral y administradores en o por encima del nivel requerido para editar m.room.power_levels. Las salas típicas suelen usar 0 para miembros, 50 para moderadores y 100 para administradores, pero una sala puede personalizar esos valores.

Vista de roles de sala de elementos representativos que muestra las categorías Administrador, Moderador, Miembro e Invitado.
Las etiquetas de cliente, como Administrador y Moderador, ofrecen una representación legible de los niveles de poder de Matrix. Siempre revise los permisos reales de la sala, ya que las salas personalizadas pueden usar umbrales diferentes.

Abre Configuración de la sala → Roles y permisos . Verifica tu rol y la acción exacta que intentas realizar. La documentación actual de Element enumera acciones comunes como cambiar la configuración, eliminar usuarios, bloquear usuarios, cambiar la visibilidad del historial y cambiar permisos, cada una con su nivel de privilegios requerido.

Por ejemplo, supongamos que su cuenta tiene un nivel de poder de 50 y la sala requiere 100 para cambiar los permisos. Aún puede ser moderador y realizar algunas tareas administrativas, pero al intentar editar el modelo de permisos se devolverá correctamente M_FORBIDDEN.

Paso 3: Compruebe el usuario objetivo, así como su propia potencia.

Esta es una de las reglas de Matrix más fáciles de pasar por alto. Para las operaciones de expulsión y bloqueo, alcanzar el umbral de acción no siempre es suficiente. Las reglas de autorización de Matrix también requieren que el usuario objetivo tenga un nivel de poder inferior al de la persona que realiza la acción.

Ejemplo: tu cuenta es de nivel 50, el kickumbral de la sala es 50 y otro moderador también es de nivel 50. Cumples con el umbral de expulsión, pero aún no puedes expulsar al moderador de tu mismo nivel. Las reglas de autorización rechazan la operación porque el objetivo no está por debajo de ti.

Vista de permisos de sala de la Matriz Representativa que muestra los diferentes requisitos para configuraciones, invitaciones, mensajes y alias.
Los permisos se evalúan para cada acción. Un usuario puede tener permiso para invitar a miembros o enviar mensajes, pero carecer del nivel necesario para modificar la configuración de la sala o administrar a otro usuario con privilegios.

Este mismo principio explica muchos fallos de moderación confusos. El administrador de la sala debería inspeccionar ambos lados de la comparación:

  • Tu nivel de poder actual.
  • El requisito kicko banumbral.
  • El nivel de potencia actual del usuario objetivo.

Si el usuario objetivo es un administrador del mismo nivel, otro administrador del mismo nivel normalmente no puede simplemente revocarle sus privilegios. La documentación de gestión avanzada de salas de Element advierte explícitamente que los administradores no pueden revocar los permisos de administrador de otros administradores en el flujo de trabajo habitual del cliente. Consulte la documentación de gestión avanzada de salas de Element .

Paso 4: Utilice un administrador de sala existente cuando haya uno disponible.

La solución más sencilla suele ser organizativa más que técnica. Si existe otro administrador de sala activo con suficiente autoridad, pídale que promueva su cuenta a través de Configuración de la sala → Roles y permisos .

Esto es preferible a manipular manualmente el estado de la sala, ya que el cliente muestra el modelo de rol actual y aplica las mismas reglas de autorización que cualquier otro cliente de Matrix. Tras la promoción, vuelva a intentar la acción original.

Si aún así falla, compare la acción exacta con el umbral de permisos en lugar de asumir que "Administrador" significa que todas las acciones están permitidas automáticamente. Los eventos de nivel de permisos personalizados pueden asignar umbrales inusuales a tipos de eventos específicos.

Paso 5: Si no queda ningún administrador de sala utilizable, recupérese a través de Synapse.

Si usted administra el servidor principal de Synapse y una sala se ha quedado sin un administrador activo, utilice las API de recuperación compatibles de Synapse en lugar de editar la base de datos o fabricar eventos de sala. Synapse proporciona una API para crear un administrador de sala :

POST /_synapse/admin/v1/rooms/<room_id_or_alias>/make_room_admin

{
  "user_id": "@alice:example.com"
}

Autentique esa solicitud con el token de acceso de un administrador del servidor Synapse . La documentación oficial de la API de administración de salas está disponible en Synapse Rooms Admin API . El punto final otorga al usuario local seleccionado el máximo nivel de privilegios disponible para un usuario local en esa sala; si es necesario y posible, puede invitar a ese usuario primero.

Lista representativa de salas de administración de Synapse con varias salas Matrix disponibles para inspección.
Un administrador de servidor doméstico puede utilizar las API de sala compatibles con Synapse para identificar la sala afectada y recuperar la administración a nivel de sala cuando no quede ningún administrador de sala adecuado.

Tras la llamada de recuperación, únase o vuelva a abrir la sala con la cuenta promocionada y vuelva a intentar la acción en el cliente Matrix.

Caso especial: versión de habitación 12 y posteriores

La versión 12 de Matrix Room modifica la representación de los creadores. El creador posee un nivel de poder prácticamente ilimitado e inmutable, y no aparece en el usersmapa como un usuario común m.room.power_levels. El creador no puede ser degradado mediante un evento de nivel de poder normal. Este comportamiento está documentado en la especificación de la versión 12 de Matrix Room .

Esto significa que una técnica de solución de problemas copiada de una versión anterior de la sala podría no ser aplicable sin modificaciones a una sala de la versión 12. Verifique la versión de la sala antes de intentar una recuperación avanzada o editar los niveles de energía.

Cómo inspeccionar directamente los niveles de potencia

Para la resolución de problemas avanzados, el evento de estado de la sala relevante es m.room.power_levels. Contiene campos como:

{
  "users_default": 0,
  "state_default": 50,
  "invite": 0,
  "kick": 50,
  "ban": 50,
  "redact": 50,
  "users": {
    "@alice:example.com": 100,
    "@bob:example.com": 50
  }
}

Si tu cuenta no aparece en la lista users, su nivel normalmente vuelve a users_default. Para la mayoría de las salas, eso significa 0. Ciertos tipos de eventos también pueden anular el estado general o los umbrales de mensajes a través del eventsmapa.

No reemplace el evento de nivel de poder completo con un objeto parcial pequeño a menos que sepa exactamente qué información conservará el cliente o la API. El estado del nivel de poder puede contener varios campos importantes, y eliminarlos accidentalmente puede modificar más permisos de los previstos.

Qué no hacer

  • No otorgue privilegios de administrador de servidor a una cuenta de Synapse solo para solucionar un problema común de roles de sala. Utilice el mínimo privilegio necesario.
  • No modifique las filas de la base de datos de Synapse para cambiar los niveles de potencia de las salas. La autorización de la sala se representa mediante eventos de sala firmados, no simplemente mediante un indicador de usuario en la base de datos.
  • No reinicie Synapse como solución rutinaria M_FORBIDDEN. Los fallos de autorización suelen ser decisiones deterministas del estado del sistema, no problemas de procesos obsoletos.
  • No asuma que borrar la caché del cliente modifica los permisos. El servidor principal aplica la regla de autorización.
  • No muestres los tokens de acceso en el historial de la consola, capturas de pantalla, tickets de soporte ni URL. Es preferible usar un Authorization: Bearer ...encabezado al utilizar las API.

Tabla de diagnóstico rápido

Lo que vesLo más probable es que lo compruebeSiguiente paso
M_FORBIDDENal cambiar la configuración de la habitaciónTu nivel frente al nivel de estado-evento o configuración requeridoHaz que un administrador de sala con privilegios suficientes te ascienda o ajuste el umbral.
M_FORBIDDENal expulsar o prohibirUmbral de acción y nivel del usuario objetivoTu nivel debe cumplir con el umbral y superar el nivel del usuario objetivo.
El administrador del servidor no puede gestionar la sala en el cliente.Distinción entre administrador de servidor y administrador de salaÚnete a la sala y utiliza la make_room_adminAPI de recuperación compatible si procede.
No queda administración de sala activaRuta de recuperación sinápticaUtilice la API de administración de Make Room con un token de administrador del servidor.
Las instrucciones antiguas se comportan de manera diferente.Versión de habitaciónComprueba si la sala es la versión 12 o posterior antes de editar los niveles de potencia.

Verificación final

La solución se completa cuando la cuenta que necesita administrar la sala se une, tiene un nivel de privilegios lo suficientemente alto para la acción prevista y puede realizarla sin recibir un M_FORBIDDENerror 403. Para las acciones de moderación, verifique también que el nivel de privilegios del usuario objetivo sea inferior al requerido por las reglas de autorización de Matrix.

Para un nuevo administrador de Matrix, el modelo mental más útil es simple: primero, identifique si se trata de permisos de servidor principal o de sala . Luego, revise la membresía, su nivel de poder, el umbral de acción y el nivel del usuario objetivo. Esta secuencia resuelve la mayoría de los errores de permisos sin necesidad de realizar cambios innecesarios en el servidor.

Dejar un comentario

Cómo solucionar el problema de falta de memoria en Matrix Synapse durante la sincronización

Cómo solucionar el problema de falta de memoria en Matrix Synapse durante la sincronización

Solucione los problemas de OOM de Matrix Synapse durante /sync comprobando la presión de la memoria, ajustando cuidadosamente las cachés, aislando la sincronización inicial y supervisando los procesos de trabajo.

Cómo habilitar el cifrado del lado del servidor en Nextcloud sin una disminución notable del rendimiento.

Cómo habilitar el cifrado del lado del servidor en Nextcloud sin una disminución notable del rendimiento.

Habilite el cifrado del lado del servidor de Nextcloud de forma segura con el modo de clave maestra, el bloqueo APCu, Redis o Valkey, y un despliegue gradual que minimice el impacto en el rendimiento.

Solucionar el error "M_FORBIDDEN: No tienes permiso" en Matrix Room Admin

Solucionar el error "M_FORBIDDEN: No tienes permiso" en Matrix Room Admin

Solucione los errores de administrador de sala Matrix M_FORBIDDEN comprobando la membresía, los niveles de poder, el rango del usuario objetivo y las opciones de recuperación del administrador del servidor Synapse, como make_room_admin.

Solucionar el problema de la pantalla en blanco de Zimbra Webmail después de ingresar las credenciales

Solucionar el problema de la pantalla en blanco de Zimbra Webmail después de ingresar las credenciales

¿Tu correo web de Zimbra acepta tu inicio de sesión pero muestra una página en blanco? Separa los problemas del navegador de los fallos del buzón o del proxy, revisa los registros correspondientes y verifica la recuperación de forma segura.

Solucionar el bucle de reinicio infinito del contenedor Docker de Jitsi Meet

Solucionar el bucle de reinicio infinito del contenedor Docker de Jitsi Meet

Detecta el problema del servicio Jitsi Meet que se queda atascado reiniciándose, lee el registro de errores y soluciona las causas comunes de Docker, como contraseñas faltantes, montajes incorrectos y configuraciones incompatibles.

Cómo habilitar la autenticación y la protección con contraseña en Jitsi Meet

Cómo habilitar la autenticación y la protección con contraseña en Jitsi Meet

Aprende en qué se diferencia la autenticación de cuentas de Jitsi Meet de las contraseñas de sala, configura el método de dominio seguro heredado y verifica los controles de acceso de forma segura.

Solucionar el problema de ejecución de la tarea programada (Cron Job) de ownCloud: Configurar un temporizador systemd fiable

Solucionar el problema de ejecución de la tarea programada (Cron Job) de ownCloud: Configurar un temporizador systemd fiable

Solucione los problemas con las tareas en segundo plano de ownCloud que no se ejecutan cambiando al modo Cron y programando occ system:cron con un temporizador systemd; a continuación, verifique el temporizador y los registros.

Cómo configurar un backend de almacenamiento externo S3 en ownCloud 10

Cómo configurar un backend de almacenamiento externo S3 en ownCloud 10

Monta un bucket de Amazon S3 como almacenamiento externo en ownCloud Server 10. Habilita el backend, configura las credenciales y las opciones de punto final, restringe el acceso y verifica la conexión.

Solucionar la corrupción del índice de búsqueda de Zimbra: Cómo reindexar un buzón de correo

Solucionar la corrupción del índice de búsqueda de Zimbra: Cómo reindexar un buzón de correo

Aprenda a diagnosticar la corrupción del índice de búsqueda de buzones de Zimbra, a ejecutar zmprov rim de forma segura, a supervisar el progreso, a verificar los resultados y a saber cuándo la reindexación no es suficiente.

Cómo configurar la federación en Matrix Synapse: una guía paso a paso

Cómo configurar la federación en Matrix Synapse: una guía paso a paso

Configure la federación de Matrix Synapse con HTTPS, DNS, un proxy inverso, delegación de servidor, reglas de firewall y pruebas de federación. Incluye ejemplos de configuración verificados.