Risolvi il problema "M_FORBIDDEN: Non hai l'autorizzazione" in Matrix Room Admin

Si tenta di modificare un'impostazione di una stanza Matrix, rimuovere un utente, bannare qualcuno, modificare i permessi o eseguire un'altra azione amministrativa e si riceve un messaggio di M_FORBIDDEN: You do not have permissionerrore. Per un nuovo utente, questo messaggio può essere fonte di confusione perché "admin" può avere due significati diversi in Matrix: un amministratore del server controlla l'homeserver, mentre un amministratore di stanza ha i poteri necessari all'interno di una stanza specifica. Si tratta di sistemi di permessi separati.

La soluzione più affidabile consiste nell'identificare quale livello di autorizzazione ha bloccato l'azione prima di apportare qualsiasi modifica. L'autorizzazione delle stanze Matrix si basa sui livelli di autorizzazione : numeri memorizzati nello stato della stanza che determinano chi può invitare, espellere, bannare, oscurare messaggi, modificare le impostazioni della stanza o modificare i livelli di autorizzazione stessi. L'attuale specifica Matrix definisce queste regole nella specifica API client-server di Matrix . Synapse documenta separatamente che un amministratore del server è distinto da un amministratore della stanza nella documentazione dell'API di amministrazione di Synapse .

Schermata rappresentativa della stanza Matrix in stile Element che mostra un errore di autorizzazione M_FORBIDDEN
Una M_FORBIDDENrisposta significa che l'homeserver ha rifiutato l'azione tentata. Il motivo esatto dipende dall'azione, dallo stato di appartenenza e dai livelli di potenza della stanza.

Prima di cambiare qualsiasi cosa: conosci i quattro valori che contano

In genere sono necessarie quattro informazioni:

  • Il tuo ID utente Matrix , ad esempio @alice:example.com.
  • L'ID della stanza , ad esempio !abc123:example.com. Un alias della stanza come #team:example.comè più facile da leggere, ma molte API operano sull'ID interno della stanza.
  • Il tuo stato di iscrizione . Nella maggior parte dei casi, devi essere iscritto alla stanza prima di poter eseguire azioni di gestione della stanza.
  • Il tuo livello di potenza e il livello richiesto per l'azione .

In Element Web o Desktop, l'ID della stanza e la versione della stanza si trovano in Impostazioni stanza, nella sezione Avanzate. La documentazione attuale di Element indica inoltre che la gestione delle stanze si trova in Impostazioni stanza → Ruoli e autorizzazioni . Consultare la guida alle impostazioni delle stanze di Element .

Passaggio 1: Verifica di essere effettivamente connesso alla stanza

Matrix distingue diversi stati di appartenenza, tra cui invitato, iscritto, uscito e bannato. Un utente in genere ha bisogno di uno joinstato di appartenenza per inviare eventi di stanza o amministrare la stanza. Questo è importante perché un account amministratore di homeserver può comunque non riuscire a eseguire una normale azione di stanza se non partecipa alla stanza.

Se si utilizza un client Matrix come Element, aprire la stanza e verificare che appaia come una stanza attiva a cui si è partecipato, e non solo come una stanza invitata o storica. Se si utilizza Synapse e si necessita di un percorso di ripristino per l'amministratore del server, Synapse fornisce un endpoint amministrativo per aggiungere un utente locale a una stanza, ma documenta comunque i requisiti di autorizzazione relativi a tale operazione. Vedere Amministrazione dell'appartenenza alle stanze di Synapse .

Evitate questo errore: non date per scontato che il possesso di un token API di amministrazione di Synapse conferisca automaticamente gli stessi privilegi a livello di stanza. L'amministrazione del server e l'amministrazione della stanza sono volutamente distinte.

Passaggio 2: Verifica il tuo ruolo e il livello di potere richiesto per l'azione.

Element presenta i livelli di autorizzazione comuni come ruoli familiari quali Membro, Moderatore e Amministratore. Dietro le quinte, Matrix valuta i numeri anziché le etichette. La specifica Matrix raccomanda l'interpretazione familiare degli utenti ordinari al di sotto della soglia di stato-evento, dei moderatori al di sopra di tale soglia e degli amministratori al livello o superiore a quello richiesto per la modifica m.room.power_levels. Le stanze tipiche utilizzano comunemente 0 per i membri, 50 per i moderatori e 100 per gli amministratori, ma una stanza può personalizzare questi valori.

Visualizzazione dei ruoli rappresentativi della stanza Element, che mostra le categorie Amministratore, Moderatore, Membro e Ospite.
Le etichette client come Admin e Moderator rappresentano in modo chiaro i livelli di autorizzazione di Matrix. Verifica sempre le autorizzazioni effettive della stanza, poiché le stanze personalizzate potrebbero utilizzare soglie diverse.

Apri Impostazioni stanza → Ruoli e autorizzazioni . Verifica sia il tuo ruolo che l'azione specifica che stai tentando di eseguire. La documentazione attuale di Element elenca le azioni più comuni, come la modifica delle impostazioni, la rimozione di utenti, il blocco di utenti, la modifica della visibilità della cronologia e la modifica delle autorizzazioni, ognuna con il proprio livello di autorizzazione richiesto.

Ad esempio, supponiamo che il tuo account abbia un livello di potere 50 e che la stanza richieda 100 per modificare i permessi. Puoi comunque essere un moderatore ed eseguire alcune attività amministrative, ma il tentativo di modificare il modello di permesso restituirà correttamente M_FORBIDDEN.

Passaggio 3: Controlla l'utente di destinazione e il tuo potere

Questa è una delle regole di Matrix più facili da trascurare. Per le operazioni di kick e ban, raggiungere la soglia di azione non è sempre sufficiente. Le regole di autorizzazione di Matrix richiedono inoltre che l'utente target abbia un livello di potere inferiore rispetto alla persona che esegue l'azione.

Esempio: il tuo account ha livello 50, la soglia per l'espulsione nella stanza kickè 50 e anche un altro moderatore ha livello 50. Soddisfi la soglia per l'espulsione, ma non puoi comunque espellere il moderatore di pari livello. Le regole di autorizzazione rifiutano l'operazione perché il soggetto in questione non è di livello inferiore al tuo.

Visualizzazione rappresentativa delle autorizzazioni della stanza Matrix che mostra i diversi requisiti per impostazioni, inviti, messaggi e alias
Le autorizzazioni vengono valutate per ogni singola azione. Un utente può essere autorizzato a invitare membri o inviare messaggi pur non avendo il livello necessario per modificare le impostazioni della stanza o gestire un altro utente privilegiato.

Questo stesso principio spiega molti errori di moderazione apparentemente inspiegabili. Un amministratore di stanza dovrebbe esaminare entrambi i lati del confronto:

  • Il tuo attuale livello di potenza.
  • Il requisito kicko banla soglia.
  • Livello di potenza attuale dell'utente target.

Se il destinatario è un amministratore di pari livello, un altro amministratore di pari livello normalmente non può semplicemente rimuovere i privilegi di quell'utente. La documentazione di Element sulla gestione avanzata delle sale riunioni avverte esplicitamente che gli amministratori non possono rimuovere le autorizzazioni di amministratore da altri amministratori nel normale flusso di lavoro del client. Vedere Gestione avanzata delle sale riunioni di Element .

Passaggio 4: Utilizzare un amministratore di stanza esistente, se disponibile.

La soluzione più semplice è solitamente di natura organizzativa piuttosto che tecnica. Se esiste un altro amministratore della stanza attivo e con sufficiente autorità, chiedigli di promuovere il tuo account a quello di utente connesso tramite Impostazioni stanza → Ruoli e autorizzazioni .

Questo è preferibile alla manipolazione manuale dello stato della stanza perché il client mostra il modello di ruolo corrente e applica le stesse regole di autorizzazione di qualsiasi altro client Matrix. Dopo la promozione, riprova l'azione originale.

Se il problema persiste, confronta l'azione esatta con la soglia di autorizzazione anziché presumere che "Amministratore" significhi che ogni azione sia automaticamente consentita. Gli eventi personalizzati relativi ai livelli di autorizzazione possono assegnare soglie insolite a specifici tipi di evento.

Passaggio 5: Se non rimane alcun amministratore di stanza utilizzabile, ripristinare tramite Synapse

Se gestisci il server domestico Synapse e una stanza è rimasta senza un amministratore attivo, utilizza le API di ripristino supportate da Synapse anziché modificare il database o creare eventi per la stanza. Synapse fornisce un'API per la creazione di una nuova stanza (Make Room Admin API ):

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

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

Autentica la richiesta con il token di accesso di un amministratore del server Synapse . La documentazione ufficiale dell'API room-admin è disponibile all'indirizzo Synapse Rooms Admin API . L'endpoint concede all'utente locale selezionato i massimi privilegi di accesso alla stanza disponibili per un utente locale in quella stanza; se necessario e possibile, può invitare prima tale utente.

Elenco rappresentativo delle sale amministrative di Synapse, con diverse sale Matrix disponibili per la consultazione.
Un amministratore di homeserver può utilizzare le API per le stanze supportate da Synapse per identificare la stanza interessata e ripristinare l'amministrazione a livello di stanza qualora non sia più disponibile un amministratore di stanza idoneo.

Dopo la chiamata di recupero, accedi o riapri la stanza con l'account promosso e riprova l'azione nel client Matrix.

Caso speciale: versione della stanza 12 e successive

La versione 12 di Matrix Room modifica il modo in cui vengono rappresentati i creatori. Il creatore ha un livello di potere effettivamente illimitato e immutabile e non viene elencato come un normale utente nella usersmappa m.room.power_levels. Il creatore non può essere declassato tramite un normale evento di livello di potere. Questo comportamento è documentato nelle specifiche della versione 12 di Matrix Room .

Ciò significa che una tecnica di risoluzione dei problemi copiata da una versione precedente della stanza potrebbe non essere applicabile senza modifiche a una stanza versione 12. Verificare la versione della stanza prima di tentare un ripristino avanzato o modifiche al livello di alimentazione.

Come controllare direttamente i livelli di potenza

Per la risoluzione avanzata dei problemi, l'evento relativo allo stato della stanza è m.room.power_levels. Contiene campi quali:

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

Se il tuo account non è elencato sotto users, il suo livello normalmente torna a users_default. Per la maggior parte delle stanze questo significa 0. Specifici tipi di eventi possono anche sovrascrivere lo stato generale o le soglie dei messaggi tramite la eventsmappa.

Non sostituire l'intero evento del livello di potenza con un piccolo oggetto parziale a meno che tu non sappia esattamente cosa il client o l'API conserveranno. Lo stato del livello di potenza può contenere diversi campi importanti e la loro eliminazione accidentale può modificare più autorizzazioni del previsto.

Cosa non fare

  • Non promuovere un account Synapse ad amministratore del server solo per risolvere un comune problema di ruoli in sala. Utilizza i privilegi minimi necessari.
  • Non modificare le righe del database di Synapse per cambiare i livelli di potenza della stanza. L'autorizzazione alla stanza è rappresentata da eventi di stanza firmati, non semplicemente da un flag utente nel database.
  • Non riavviare Synapse come soluzione di routine M_FORBIDDEN. Gli errori di autorizzazione sono solitamente dovuti a decisioni deterministiche sullo stato della stanza, non a problemi di processi obsoleti.
  • Non dare per scontato che la cancellazione della cache del client modifichi i permessi. Il server domestico applica la regola di autorizzazione.
  • Non esporre i token di accesso nella cronologia della shell, negli screenshot, nei ticket di supporto o negli URL. Preferisci Authorization: Bearer ...un'intestazione quando utilizzi le API.

Tabella di diagnosi rapida

Ciò che vediMolto probabilmente controllaProssima mossa
M_FORBIDDENquando si modificano le impostazioni della stanzaIl tuo livello rispetto al livello richiesto per stato-evento o impostazioniChiedi a un amministratore di stanza con privilegi sufficienti di promuoverti o di modificare la soglia.
M_FORBIDDENquando si espelle o si bannaSoglia di azione e livello dell'utente targetIl tuo livello deve raggiungere la soglia e superare il livello dell'utente target.
L'amministratore del server non può gestire la stanza nel clientDifferenza tra amministratore di server e amministratore di salaUnisciti alla stanza e, make_room_adminse necessario, utilizza l'API di ripristino supportata.
Non rimane alcun amministratore di stanza attivopercorso di recupero della sinapsiUtilizza l'API Make Room Admin con un token server-admin.
Le vecchie istruzioni si comportano in modo diversoVersione per cameraPrima di modificare i livelli di potenza, verificare che la stanza sia in versione 12 o successiva.

Elaborazione finale

La correzione è completa quando l'account che deve amministrare la stanza è connesso, ha un livello di autorizzazione sufficientemente elevato per l'azione prevista e può eseguire tale azione senza ricevere una M_FORBIDDENrisposta 403. Per le azioni di moderazione, verificare inoltre che il livello di autorizzazione dell'utente di destinazione sia inferiore quando le regole di autorizzazione di Matrix lo richiedono.

Per un nuovo amministratore Matrix, il modello mentale più utile è semplice: innanzitutto, identifica se hai a che fare con l'autorizzazione del server principale o con l'autorizzazione della stanza . Quindi, controlla l'appartenenza al gruppo, il tuo livello di autorizzazione, la soglia di intervento e il livello dell'utente di destinazione. Questa sequenza risolve la maggior parte degli errori di autorizzazione senza inutili modifiche al server.

Lascia un commento

6 migliori server Syslog gratuiti da provare per la registrazione centralizzata dei log

6 migliori server Syslog gratuiti da provare per la registrazione centralizzata dei log

Confronta sei server e collettori syslog gratuiti per Windows e Linux, inclusi strumenti con interfaccia grafica, opzioni open source, funzionalità di ricerca, avvisi e trasporto sicuro.

Cos'è IIS? Il server Web Windows di Microsoft e le sue alternative.

Cos'è IIS? Il server Web Windows di Microsoft e le sue alternative.

Scopri cosa fa Microsoft IIS, come funzionano la sua pipeline di richieste e i pool di applicazioni e quando Apache, NGINX o Caddy potrebbero essere più adatti alle tue esigenze di server web.

Risolvere l'elevato utilizzo della CPU in Jitsi Meet sui browser client.

Risolvere l'elevato utilizzo della CPU in Jitsi Meet sui browser client.

Diagnostica i picchi di utilizzo della CPU del browser Jitsi Meet e riduci il carico del client controllando i riquadri video, gli effetti della fotocamera, la grafica del browser e le impostazioni dell'host.

Come monitorare le metriche di Jitsi Videobridge con Prometheus e Grafana

Come monitorare le metriche di Jitsi Videobridge con Prometheus e Grafana

Monitora lo stato di salute, il carico della conferenza e il traffico di Jitsi Videobridge con il suo endpoint Prometheus integrato, quindi esplora e visualizza i dati in Grafana.

Come configurare un nome di dominio personalizzato per Jitsi Meet Docker

Come configurare un nome di dominio personalizzato per Jitsi Meet Docker

Configura un dominio personalizzato per Jitsi Meet Docker con DNS, URL pubblico, HTTPS, Let's Encrypt, porte del firewall, impostazioni NAT e verifica end-to-end.

Fix Zimbra Admin Console 404 Not Found After SSL Renewal

Fix Zimbra Admin Console 404 Not Found After SSL Renewal

Fix Zimbra Admin Console 404 errors after SSL renewal by checking the correct URL and port, proxy routing, service status, deployed certificates, and logs.

Risolvere l'avviso di Nextcloud "PHP OPcache non è configurato correttamente".

Risolvere l'avviso di Nextcloud "PHP OPcache non è configurato correttamente".

Scopri come diagnosticare e risolvere l'avviso di configurazione di PHP OPcache di Nextcloud controllando l'SAPI PHP attivo, i limiti di dimensionamento, i commenti e le impostazioni di riconvalida.

Risolvere gli errori di migrazione del database Kopano dopo un aggiornamento della versione di MySQL

Risolvere gli errori di migrazione del database Kopano dopo un aggiornamento della versione di MySQL

Risolvere i problemi di migrazione del database Kopano dopo un aggiornamento di MySQL o MariaDB verificando i backup, le versioni del server, le modalità SQL, il set di caratteri, lo stato dello schema e i log.

Come configurare l'autenticazione LDAP e Active Directory in Nextcloud

Come configurare l'autenticazione LDAP e Active Directory in Nextcloud

Collega Nextcloud a LDAP o Active Directory con trasporto sicuro, filtri per utenti e gruppi, attributi di accesso e un'implementazione collaudata.

Risolvere i problemi relativi alle notifiche di Element su Android senza i servizi Google: Guida a UnifiedPush

Risolvere i problemi relativi alle notifiche di Element su Android senza i servizi Google: Guida a UnifiedPush

Risolvi i problemi di notifiche di Element Android sui telefoni senza Google configurando UnifiedPush, le autorizzazioni Android, le impostazioni della batteria ed eseguendo test di verifica affidabili.