Acasă
» ADMIN. REȚEA
»
Remediază eroarea „M_FORBIDDEN: Nu aveți permisiuni” în Matrix Room Admin
Remediază eroarea „M_FORBIDDEN: Nu aveți permisiuni” în Matrix Room Admin
Încerci să modifici o setare a camerei Matrix, să elimini un utilizator, să interzici pe cineva, să editezi permisiuni sau să efectuezi o altă acțiune administrativă și primești [error] M_FORBIDDEN: You do not have permission. Pentru un nou-venit, mesajul poate fi confuz, deoarece „admin” poate însemna două lucruri diferite în Matrix: un administrator de server controlează serverul de acasă, în timp ce un administrator de cameră are suficientă putere într-o anumită cameră. Acestea sunt sisteme de permisiuni separate.
Soluția fiabilă este identificarea stratului de permisiuni care a blocat acțiunea înainte de a schimba ceva. Autorizarea camerei Matrix se bazează pe nivelurile de putere : numere stocate în starea camerei care determină cine poate invita, elimina, interzice, redacta mesaje, modifica setările camerei sau edita nivelurile de putere în sine. Specificația Matrix actuală definește aceste reguli în specificația API-ului Matrix Client-Server . Synapse documentează separat faptul că un administrator de server este distinct de un administrator de cameră în documentația API-ului Synapse Admin .
Un M_FORBIDDENrăspuns înseamnă că serverul principal a respins acțiunea încercată. Motivul exact depinde de acțiune, starea de apartenență și nivelurile de putere ale camerei.
Înainte de a schimba ceva: cunoaște cele patru valori care contează
De obicei, aveți nevoie de patru informații:
De exemplu, ID-ul dvs. de utilizator Matrix@alice:example.com .
ID-ul camerei , de exemplu !abc123:example.com. Un alias de cameră, cum ar fi , #team:example.comeste mai ușor de citit, dar multe API-uri funcționează pe baza ID-ului intern al camerei.
Starea calității de membru . În majoritatea cazurilor, trebuie să fii membru al sălii înainte de a putea efectua acțiuni de gestionare a sălii.
Nivelul tău de putere și nivelul necesar pentru acțiune .
În Element Web sau Desktop, ID-ul și versiunea camerei pot fi găsite în Setări cameră, sub Avansat. Documentația actuală a Element plasează, de asemenea, gestionarea camerelor în Setări cameră → Roluri și permisiuni . Consultați ghidul de setări ale camerei din Element .
Pasul 1: Confirmă că te-ai alăturat efectiv camerei
Matrix distinge mai multe stări de membru, inclusiv invitat, alăturat, părăsit și interzis. Un utilizator are nevoie, în general, de joinstarea de membru pentru a trimite evenimente în cameră sau pentru a administra camera. Acest lucru este important deoarece un cont de administrator al serverului principal poate totuși să eșueze într-o acțiune normală a camerei dacă acel cont nu participă la cameră.
Dacă utilizați un client Matrix, cum ar fi Element, deschideți camera și confirmați că apare ca o cameră activă la care v-ați alăturat, nu doar o invitație sau o cameră istorică. Dacă operați Synapse și aveți nevoie de o cale de recuperare de tip server-admin, Synapse oferă un endpoint de administrare pentru adăugarea unui utilizator local la o cameră, dar documentează în continuare cerințele de permisiune aferente acestei operațiuni. Consultați Administrarea calității de membru în camera Synapse .
Evitați această greșeală: nu presupuneți că deținerea unui token Synapse Admin API oferă automat aceleași privilegii la nivel de cameră pentru cont. Administrarea serverului și administrarea camerelor sunt intenționat distincte.
Pasul 2: Verifică-ți rolul și nivelul de putere necesar pentru acțiune
Elementul prezintă niveluri comune de putere ca roluri familiare, cum ar fi Membru, Moderator și Administrator. În interior, Matrix evaluează numerele mai degrabă decât etichetele. Specificația Matrix recomandă interpretarea familiară a utilizatorilor obișnuiți sub pragul de stare-eveniment, a moderatorilor peste acel prag și a administratorilor la sau peste nivelul necesar pentru editare m.room.power_levels. Camerele tipice folosesc de obicei 0 pentru membri, 50 pentru moderatori și 100 pentru administratori, dar o cameră poate personaliza aceste valori.
Etichetele clienților, cum ar fi Administrator și Moderator, reprezintă o prezentare lizibilă a nivelurilor de putere ale Matricei. Verificați întotdeauna permisiunile reale ale camerei, deoarece camerele personalizate pot utiliza praguri diferite.
Deschideți Setări cameră → Roluri și permisiuni . Verificați atât rolul, cât și acțiunea exactă pe care o încercați. Documentația actuală a Element listează acțiuni comune, cum ar fi modificarea setărilor, eliminarea utilizatorilor, interzicerea accesului utilizatorilor, modificarea vizibilității istoricului și modificarea permisiunilor, fiecare cu propriul nivel de putere necesar.
De exemplu, să presupunem că nivelul de putere al contului dvs. este 50, iar camera necesită 100 pentru a schimba permisiunile. Puteți fi în continuare moderator și puteți efectua unele sarcini administrative, dar încercarea de a edita modelul de permisiuni va returna corect M_FORBIDDEN.
Pasul 3: Verificați utilizatorul țintă, precum și propria putere
Aceasta este una dintre cele mai ușor de omis regulile Matrix. Pentru operațiunile de kick și ban, atingerea pragului de acțiune nu este întotdeauna suficientă. Regulile de autorizare Matrix impun, de asemenea, ca utilizatorul țintă să aibă un nivel de putere mai mic decât persoana care efectuează acțiunea.
Exemplu: contul tău are nivelul 50, pragul camerei kickeste 50, iar un alt moderator are, de asemenea, nivelul 50. Atingi pragul de eliminare, dar tot nu poți elimina moderatorul de nivel egal. Regulile de autorizare resping operațiunea deoarece ținta nu este sub nivelul tău.
Permisiunile sunt evaluate pentru fiecare acțiune în parte. Unui utilizator i se poate permite să invite membri sau să trimită mesaje, fără a avea nivelul necesar pentru a modifica setările camerei sau pentru a gestiona un alt utilizator privilegiat.
Același principiu explică multe dintre eșecurile confuze ale moderării. Un administrator de cameră ar trebui să examineze ambele părți ale comparației:
Nivelul tău actual de putere.
kickPragul necesar ban.
Nivelul actual de putere al utilizatorului țintă.
Dacă ținta este un administrator de nivel egal, un alt administrator de nivel egal nu poate, în mod normal, să elimine pur și simplu privilegiul utilizatorului respectiv. Documentația Element pentru gestionarea avansată a camerelor avertizează în mod explicit că administratorii nu pot elimina permisiunile de administrator de la alți administratori în fluxul de lucru obișnuit al clientului. Consultați Gestionarea avansată a camerelor în Element .
Pasul 4: Folosește un administrator de sală existent atunci când este disponibil unul
Cea mai simplă recuperare este de obicei organizațională, mai degrabă decât tehnică. Dacă există un alt administrator de cameră activ și are suficientă autoritate, solicitați acelui administrator să vă promoveze contul asociat prin intermediul Setări cameră → Roluri și permisiuni .
Acest lucru este preferabil manipulării manuale a stării camerei, deoarece clientul afișează modelul de rol curent și aplică aceleași reguli de autorizare ca orice alt client Matrix. După promovare, reîncercați acțiunea inițială.
Dacă eșuează în continuare, comparați acțiunea exactă cu pragul de permisiune, în loc să presupuneți că „Admin” înseamnă că fiecare acțiune este permisă automat. Evenimentele personalizate la nivel de putere pot atribui praguri neobișnuite anumitor tipuri de evenimente.
Pasul 5: Dacă nu mai există niciun administrator de cameră utilizabil, recuperați prin Synapse
Dacă operați serverul de acasă Synapse și o cameră a rămas fără un administrator activ, utilizați API-urile de recuperare acceptate de Synapse în loc să editați baza de date sau să creați evenimente de cameră. Synapse oferă un API Make Room Admin :
POST /_synapse/admin/v1/rooms/<room_id_or_alias>/make_room_admin
{
"user_id": "@alice:example.com"
}
Autentificați acea solicitare cu token-ul de acces al unui administrator de server Synapse . Documentația oficială a API-ului room-admin este disponibilă la Synapse Rooms Admin API . Punctul final acordă utilizatorului local ales cea mai mare putere de acces disponibilă unui utilizator local din camera respectivă; dacă este necesar și posibil, poate invita mai întâi utilizatorul respectiv.
Un administrator de server de acasă poate utiliza API-urile de cameră acceptate de Synapse pentru a identifica camera afectată și a recupera administrarea la nivel de cameră atunci când nu mai rămâne niciun administrator de cameră adecvat.
După apelul de recuperare, alătură-te sau redeschide camera cu contul promovat și încearcă din nou acțiunea în clientul Matrix.
Caz special: versiunea de cameră 12 și versiunile ulterioare
Versiunea 12 a camerei Matrix schimbă modul în care sunt reprezentați creatorii. Creatorul are un nivel de putere practic nelimitat și imuabil și nu este listat ca un utilizator obișnuit pe usersharta [platformei/platformei/platformei] m.room.power_levels. Creatorul nu poate fi retrogradat printr-un eveniment normal de nivel de putere. Acest comportament este documentat în specificația camerei Matrix versiunea 12 .
Asta înseamnă că o tehnică de depanare copiată dintr-o versiune mai veche a camerei s-ar putea să nu se aplice nemodificată la o cameră versiunea 12. Verificați versiunea camerei înainte de a încerca o recuperare avansată sau modificări la nivelul de performanță.
Cum se inspectează direct nivelurile de putere
Pentru depanare avansată, evenimentul relevant pentru starea camerei este m.room.power_levels. Acesta conține câmpuri precum:
Dacă contul dvs. nu este listat sub users, nivelul său scade în mod normal la users_default. Pentru majoritatea camerelor, aceasta înseamnă 0. Anumite tipuri de evenimente pot, de asemenea, să suprascrie pragurile generale de stare sau de mesaje prin intermediul eventshărții.
Nu înlocuiți întregul eveniment de nivel de putere cu un obiect parțial mic, decât dacă știți exact ce va păstra clientul sau API-ul. Starea nivelului de putere poate conține mai multe câmpuri importante, iar eliminarea accidentală a acestora poate modifica mai multe permisiuni decât este intenționat.
Ce să nu faci
Nu promovați un cont Synapse la administrator de server doar pentru a rezolva o problemă obișnuită a rolului de cameră. Folosiți cel mai mic privilegiu necesar.
Nu editați rândurile din baza de date Synapse pentru a schimba nivelurile de putere ale camerei. Autorizarea camerei este reprezentată de evenimente semnate ale camerei, nu doar de un semnalizator de utilizator în baza de date.
Nu reporniți Synapse ca soluție de rutină pentru M_FORBIDDEN. Eșecurile de autorizare sunt de obicei decizii deterministe legate de starea camerei, nu probleme legate de procesele învechite.
Nu presupuneți că ștergerea memoriei cache a clientului modifică permisiunile. Serverul principal aplică regula de autorizare.
Nu expuneți token-urile de acces în istoricul shell-ului, capturi de ecran, tichete de asistență sau adrese URL. Preferați un Authorization: Bearer ...antet atunci când utilizați API-uri.
Tabel de diagnosticare rapidă
Ceea ce vezi
Cel mai probabil, verificați
Următoarea mișcare
M_FORBIDDENcând se schimbă setările camerei
Nivelul dvs. față de nivelul necesar pentru evenimentul de stare sau setări
Roagă un administrator de cameră cu privilegii suficiente să te promoveze sau să ajusteze pragul.
M_FORBIDDENla eliminare sau interzicere
Pragul de acțiune și nivelul utilizatorului țintă
Nivelul tău trebuie să atingă pragul și să depășească nivelul utilizatorului țintă.
Administratorul serverului nu poate gestiona camera în client.
Distincția dintre administratorul serverului și administratorul camerei
Alătură-te camerei și folosește make_room_adminAPI-ul de recuperare acceptat, dacă este cazul.
Nu mai există niciun administrator activ al camerei
Calea de recuperare a sinapselor
Folosește API-ul Make Room Admin cu un token de administrator de server.
Instrucțiunile vechi se comportă diferit
Versiune de cameră
Verificați dacă încăperea are versiunea 12 sau o versiune ulterioară înainte de a edita nivelurile de putere.
Verificare finală
Remedierea este completă atunci când contul care trebuie să administreze camera este asociat, are un nivel de putere suficient de ridicat pentru acțiunea dorită și poate efectua acea acțiune fără un M_FORBIDDENrăspuns 403. Pentru acțiunile de moderare, verificați și dacă nivelul de putere al utilizatorului țintă este mai mic atunci când regulile de autorizare Matrix o impun.
Pentru un administrator Matrix nou, cel mai util model mental este simplu: mai întâi identificați dacă aveți de-a face cu autoritatea serverului principal sau cu autoritatea camerei . Apoi, verificați apartenența, nivelul de putere, pragul de acțiune și nivelul utilizatorului țintă. Această secvență rezolvă majoritatea erorilor de permisiuni fără modificări inutile ale serverului.