Napraw błąd „M_FORBIDDEN: Nie masz uprawnień” w panelu administracyjnym Matrix Room

Próbujesz zmienić ustawienia pokoju w Matrix, usunąć użytkownika, zablokować kogoś, edytować uprawnienia lub wykonać inną czynność administracyjną i otrzymujesz M_FORBIDDEN: You do not have permission… Dla nowicjusza wiadomość może być myląca, ponieważ „admin” może oznaczać dwie różne rzeczy w Matrix: administrator serwera kontroluje serwer domowy, a administrator pokoju ma wystarczającą władzę w jednym konkretnym pokoju. To są oddzielne systemy uprawnień.

Niezawodnym rozwiązaniem jest zidentyfikowanie warstwy uprawnień, która zablokowała akcję, przed wprowadzeniem jakichkolwiek zmian. Autoryzacja pokoju w systemie Matrix opiera się na poziomach mocy : liczbach przechowywanych w stanie pokoju, które określają, kto może zapraszać, wyrzucać, banować, redagować wiadomości, zmieniać ustawienia pokoju lub edytować same poziomy mocy. Aktualna specyfikacja systemu Matrix definiuje te reguły w specyfikacji API Matrix Client-Server . Synapse oddzielnie dokumentuje, że administrator serwera różni się od administratora pokoju w dokumentacji API Synapse Admin .

Ekran pokoju typu Matrix w stylu elementu reprezentatywnego pokazujący błąd uprawnień M_FORBIDDEN
Odpowiedź M_FORBIDDENoznacza, że ​​serwer domowy odrzucił próbę wykonania działania. Dokładny powód zależy od działania, stanu członkostwa i poziomu mocy w pomieszczeniu.

Zanim cokolwiek zmienisz: poznaj cztery wartości, które mają znaczenie

Zazwyczaj potrzebne są cztery informacje:

  • Na przykład Twój identyfikator użytkownika Matrix@alice:example.com .
  • Na przykład identyfikator pokoju!abc123:example.com . Alias ​​pokoju, taki jak , #team:example.comjest łatwiejszy do odczytania, ale wiele interfejsów API działa na wewnętrznym identyfikatorze pokoju.
  • Twój stan członkostwa . W większości przypadków musisz być dołączony do pokoju, aby móc wykonywać czynności związane z zarządzaniem pokojem.
  • Twój poziom mocy i poziom wymagany do wykonania akcji .

W Element Web lub na komputerze stacjonarnym identyfikator i wersję pokoju można znaleźć w Ustawieniach pokoju w sekcji Zaawansowane. Aktualna dokumentacja Elementu również umieszcza zarządzanie pokojami w sekcji Ustawienia pokoju → Role i uprawnienia . Zobacz przewodnik po ustawieniach pokoju w Element .

Krok 1: Potwierdź, że faktycznie dołączyłeś do pokoju

Matrix rozróżnia kilka stanów członkostwa, w tym zaproszenie, dołączenie, opuszczenie i zablokowanie. Użytkownik zazwyczaj potrzebuje joinstanu członkostwa, aby wysyłać zdarzenia dotyczące pokoju lub zarządzać pokojem. Ma to znaczenie, ponieważ konto administratora serwera domowego może nadal nie wykonać standardowej akcji dotyczącej pokoju, jeśli nie uczestniczy w nim.

Jeśli korzystasz z klienta Matrix, takiego jak Element, otwórz pokój i upewnij się, że wyświetla się on jako aktywny pokój, do którego dołączyłeś, a nie tylko jako zaproszenie lub pokój historyczny. Jeśli korzystasz z Synapse i potrzebujesz ścieżki odzyskiwania dla administratora serwera, Synapse udostępnia punkt końcowy administratora do dołączania użytkownika lokalnego do pokoju, ale nadal dokumentuje wymagania dotyczące uprawnień związane z tą operacją. Zobacz Administracja członkostwem w pokoju w Synapse .

Unikaj tego błędu: nie zakładaj, że posiadanie tokena API administratora Synapse automatycznie daje te same uprawnienia na poziomie pokoju. Administrowanie serwerem i administrowanie pokojem są celowo odmienne.

Krok 2: Sprawdź swoją rolę i wymagany poziom mocy dla danej akcji

Element prezentuje typowe poziomy uprawnień jako znane role, takie jak Członek, Moderator i Administrator. W praktyce Matrix ocenia liczby, a nie etykiety. Specyfikacja Matrix zaleca znaną interpretację: zwykli użytkownicy poniżej progu stanu-wydarzenia, moderatorzy powyżej tego progu oraz administratorzy na poziomie wymaganym do edycji lub wyższym m.room.power_levels. Typowe pokoje zazwyczaj używają 0 dla członków, 50 dla moderatorów i 100 dla administratorów, ale pokój może dostosować te wartości.

Widok ról pokoju Element reprezentatywny pokazujący kategorie Administrator, Moderator, Członek i Gość
Etykiety klienta, takie jak Administrator i Moderator, stanowią czytelną prezentację poziomów uprawnień w Matrixie. Zawsze sprawdzaj rzeczywiste uprawnienia pokoju, ponieważ pokoje niestandardowe mogą mieć inne progi.

Otwórz Ustawienia pokoju → Role i uprawnienia . Sprawdź swoją rolę i konkretną czynność, którą podejmujesz. Aktualna dokumentacja Elementu zawiera listę typowych czynności, takich jak zmiana ustawień, usuwanie użytkowników, blokowanie użytkowników, zmiana widoczności historii i zmiana uprawnień, z których każda ma swój własny wymagany poziom mocy.

Załóżmy na przykład, że Twoje konto ma poziom mocy 50, a pokój wymaga 100 do zmiany uprawnień. Nadal możesz być moderatorem i wykonywać pewne zadania administracyjne, ale próba edycji modelu uprawnień poprawnie zwróci M_FORBIDDEN.

Krok 3: Sprawdź użytkownika docelowego i swoją własną moc

To jedna z najłatwiejszych do pominięcia zasad Matrixa. W przypadku operacji „wyrzuć i zbanuj” osiągnięcie progu akcji nie zawsze jest wystarczające. Zasady autoryzacji Matrixa wymagają również, aby użytkownik docelowy miał niższy poziom mocy niż osoba wykonująca akcję.

Przykład: Twoje konto ma poziom 50, próg pokoju kickwynosi 50, a inny moderator również ma poziom 50. Spełniasz próg wyrzucenia, ale nadal nie możesz wyrzucić moderatora o tym samym poziomie. Zasady autoryzacji odrzucają operację, ponieważ cel nie jest niższy od Ciebie.

Widok uprawnień pokoju w matrycy reprezentatywnej pokazujący różne wymagania dotyczące ustawień, zaproszeń, wiadomości i aliasów
Uprawnienia są przyznawane za każdą akcję. Użytkownik może mieć możliwość zapraszania członków lub wysyłania wiadomości, mimo że nie posiada jeszcze poziomu wymaganego do zmiany ustawień pokoju lub zarządzania innym użytkownikiem z uprawnieniami.

Ta sama zasada wyjaśnia wiele mylących błędów moderacji. Administrator pokoju powinien przeanalizować obie strony porównania:

  • Twój aktualny poziom mocy.
  • Wymagany kicklub banpróg.
  • Aktualny poziom mocy użytkownika docelowego.

Jeśli celem jest administrator o równym poziomie uprawnień, inny administrator o równym poziomie uprawnień zazwyczaj nie może po prostu odebrać mu uprawnień. Dokumentacja Element dotycząca zaawansowanego zarządzania pokojami wyraźnie ostrzega, że ​​administratorzy nie mogą odbierać uprawnień administratora innym administratorom w standardowym procesie pracy klienta. Zobacz Element – ​​zaawansowane zarządzanie pokojami .

Krok 4: Użyj istniejącego administratora pokoju, jeśli jest dostępny

Najprostsze odzyskiwanie jest zazwyczaj bardziej organizacyjne niż techniczne. Jeśli istnieje inny aktywny administrator pokoju i ma wystarczające uprawnienia, poproś go o awansowanie Twojego konta w Ustawieniach pokoju → Role i uprawnienia .

Jest to lepsze rozwiązanie niż ręczne manipulowanie stanem pokoju, ponieważ klient pokazuje aktualny model i stosuje te same reguły autoryzacji, co każdy inny klient Matrix. Po awansie należy ponowić pierwotną akcję.

Jeśli nadal się nie uda, porównaj dokładną akcję z progiem uprawnień, zamiast zakładać, że „Admin” oznacza, że ​​każda akcja jest automatycznie dozwolona. Niestandardowe zdarzenia na poziomie mocy mogą przypisywać nietypowe progi do określonych typów zdarzeń.

Krok 5: Jeśli nie ma już dostępnego administratora pokoju, odzyskaj dostęp za pomocą Synapse

Jeśli korzystasz z serwera domowego Synapse i pokój pozostał bez aktywnego administratora, skorzystaj z obsługiwanych przez Synapse interfejsów API odzyskiwania zamiast edytować bazę danych lub tworzyć zdarzenia w pokoju. Synapse udostępnia interfejs API „Make Room Admin” :

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

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

Uwierzytelnij to żądanie za pomocą tokena dostępu administratora serwera Synapse . Oficjalna dokumentacja API room-admin jest dostępna w sekcji Synapse Rooms Admin API . Punkt końcowy przyznaje wybranemu użytkownikowi lokalnemu najwyższą dostępną mu w danym pokoju moc dostępu do pokoju; w razie potrzeby i możliwości może zaprosić tego użytkownika jako pierwszego.

Lista reprezentatywnych pomieszczeń administracyjnych Synapse z kilkoma pokojami Matrix dostępnymi do wglądu
Administrator serwera domowego może użyć obsługiwanych przez Synapse interfejsów API pokoi, aby zidentyfikować pokój, którego dotyczy problem, i odzyskać administrację na poziomie pokoju, gdy nie ma już odpowiedniego administratora pokoju.

Po zakończeniu połączenia odzyskiwania dołącz do pokoju lub otwórz go ponownie przy użyciu promowanego konta i spróbuj wykonać czynność ponownie w kliencie Matrix.

Przypadek szczególny: wersja pokoju 12 i nowsze

Wersja 12 pokoju Matrix zmienia sposób reprezentacji twórców. Twórca ma praktycznie nieograniczony, niezmienny poziom mocy i nie jest wyświetlany na mapie jak zwykły użytkownik users. m.room.power_levelsTwórcy nie można zdegradować poprzez normalne zdarzenie zmiany poziomu mocy. To zachowanie jest udokumentowane w specyfikacji pokoju Matrix w wersji 12 .

Oznacza to, że technika rozwiązywania problemów skopiowana ze starszej wersji pokoju może nie mieć zastosowania w wersji 12. Sprawdź wersję pokoju przed podjęciem próby zaawansowanego odzyskiwania lub edycji poziomu mocy.

Jak bezpośrednio sprawdzić poziom mocy

W przypadku zaawansowanego rozwiązywania problemów, odpowiednie zdarzenie stanu pokoju to m.room.power_levels. Zawiera ono pola takie jak:

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

Jeśli Twoje konto nie jest wymienione w kategorii users, jego poziom zazwyczaj spada do users_default. Dla większości pokoi oznacza to 0. Określone typy zdarzeń mogą również nadpisywać ogólny stan lub progi wiadomości za pośrednictwem eventsmapy.

Nie zastępuj całego zdarzenia poziomu mocy małym, częściowym obiektem, chyba że dokładnie wiesz, co klient lub API zachowa. Stan poziomu mocy może zawierać wiele ważnych pól, a ich przypadkowe usunięcie może zmienić więcej uprawnień niż zamierzono.

Czego nie robić

  • Nie awansuj konta Synapse na administratora serwera tylko po to, by rozwiązać zwykły problem z rolą pokoju. Użyj najmniejszych niezbędnych uprawnień.
  • Nie edytuj wierszy bazy danych Synapse, aby zmienić poziomy mocy pokoju. Autoryzacja pokoju jest reprezentowana przez podpisane zdarzenia pokoju, a nie tylko flagę użytkownika w bazie danych.
  • Nie restartuj Synapse jako rutynowej naprawy M_FORBIDDEN. Błędy autoryzacji są zazwyczaj deterministycznymi decyzjami dotyczącymi stanu pomieszczenia, a nie problemami związanymi z nieaktualnym procesem.
  • Nie zakładaj, że wyczyszczenie pamięci podręcznej klienta zmieni uprawnienia. Serwer domowy egzekwuje regułę autoryzacji.
  • Nie ujawniaj tokenów dostępu w historii powłoki, zrzutach ekranu, zgłoszeniach pomocy technicznej ani adresach URL.Authorization: Bearer ... Używając interfejsów API, preferuj nagłówek.

Szybka tabela diagnostyczna

Co widziszNajprawdopodobniej sprawdźNastępny ruch
M_FORBIDDENpodczas zmiany ustawień pokojuTwój poziom w porównaniu z wymaganym stanem-wydarzeniem lub poziomem ustawieńPoproś odpowiednio uprawnionego administratora pokoju o awans lub zmianę progu.
M_FORBIDDENpodczas kopania lub banowaniaPróg działania i poziom użytkownika docelowegoTwój poziom musi spełniać wymagania i być wyższy niż poziom użytkownika docelowego.
Administrator serwera nie może zarządzać pokojem w kliencieRozróżnienie między administratorem serwera a administratorem pokojuDołącz do pokoju i skorzystaj z obsługiwanego make_room_admininterfejsu API odzyskiwania, jeśli jest to konieczne.
Brak aktywnego administratora pokojuŚcieżka odzyskiwania synapsUżyj interfejsu API Make Room Admin z tokenem administratora serwera.
Stare instrukcje zachowują się inaczejWersja pokojuPrzed edycją poziomów mocy sprawdź, czy w pokoju jest wersja 12 lub nowsza.

Ostateczna weryfikacja

Naprawa jest zakończona, gdy konto, które musi zarządzać pokojem, jest dołączone, ma wystarczająco wysoki poziom uprawnień do wykonania zamierzonej akcji i może ją wykonać bez M_FORBIDDENodpowiedzi 403. W przypadku działań moderacyjnych należy również sprawdzić, czy poziom uprawnień użytkownika docelowego jest niższy, gdy wymagają tego reguły autoryzacji Matrix.

Dla nowego administratora Matrixa najbardziej użyteczny model myślowy jest prosty: najpierw określ, czy masz do czynienia z uprawnieniami serwera domowego , czy z uprawnieniami pokoju . Następnie sprawdź członkostwo, swój poziom uprawnień, próg akcji i poziom użytkownika docelowego. Ta sekwencja rozwiązuje większość błędów uprawnień bez zbędnych zmian na serwerze.

Zostaw komentarz

10 najlepszych narzędzi do pingowania w celu znajdowania urządzeń w sieci

10 najlepszych narzędzi do pingowania w celu znajdowania urządzeń w sieci

Porównaj 10 narzędzi do pingowania, które umożliwiają szybkie wykrywanie sieci LAN, skanowanie międzyplatformowe i zarządzanie adresami IP. Dowiedz się, co narzędzie pingujące może Ci powiedzieć, a czego nie.

6 najlepszych narzędzi do zarządzania siecią, umożliwiających śledzenie wydajności

6 najlepszych narzędzi do zarządzania siecią, umożliwiających śledzenie wydajności

Porównaj sześć narzędzi do zarządzania siecią służących do monitorowania wydajności, obejmujących zasięg SNMP, mapowanie, alerty, modele wdrażania i kompromisy kosztów.

Ping Monitor: 7 darmowych i otwartych narzędzi do monitorowania dostępności sieci

Ping Monitor: 7 darmowych i otwartych narzędzi do monitorowania dostępności sieci

Porównaj siedem darmowych i otwartych monitorów pingów — od kompletnych pakietów sieciowych po ukierunkowane sondy opóźnień — i wybierz odpowiedni monitor pod kątem dostępności, utraty pakietów i historii.

QoS w sieciach: czym jest jakość usług i jak działa

QoS w sieciach: czym jest jakość usług i jak działa

Dowiedz się, co oznacza QoS w sieciach, w jaki sposób oznaczenia DSCP i kolejki ruchu nadają priorytet aplikacjom głosowym, wideo i biznesowym oraz czego QoS nie jest w stanie naprawić.

Najlepsze oprogramowanie serwera SFTP do bezpiecznego przesyłania plików

Najlepsze oprogramowanie serwera SFTP do bezpiecznego przesyłania plików

Porównaj niezawodne oprogramowanie serwera SFTP dla systemów Windows i Linux, w tym OpenSSH, Bitvise, SolarWinds i SFTPGo. Znajdź rozwiązanie odpowiednie dla swoich potrzeb w zakresie bezpieczeństwa i transferu plików.

7 najlepszych narzędzi do zarządzania adresami IP dla zespołów sieciowych

7 najlepszych narzędzi do zarządzania adresami IP dla zespołów sieciowych

Porównaj siedem narzędzi do zarządzania adresami IP służących do wykrywania podsieci, koordynacji DNS i DHCP, inwentaryzacji sieci i otwartego oprogramowania IPAM.

6 najlepszych narzędzi do monitorowania serwerów Windows Server zapewniających lepszą dostępność i wydajność

6 najlepszych narzędzi do monitorowania serwerów Windows Server zapewniających lepszą dostępność i wydajność

Porównaj sześć narzędzi do monitorowania systemu Windows Server pod kątem zbierania danych systemu Windows, widoczności aplikacji, modelu wdrażania i licencjonowania, aby znaleźć odpowiednie rozwiązanie.

10 najlepszych narzędzi do skanowania sieci w celu wykrywania urządzeń i adresów IP

10 najlepszych narzędzi do skanowania sieci w celu wykrywania urządzeń i adresów IP

Porównaj narzędzia do skanowania sieciowego umożliwiające szybkie wykrywanie urządzeń, skanowanie adresów IP na wielu platformach oraz zarządzanie IPAM w przedsiębiorstwie. Znajdziesz tu wskazówki dotyczące dopasowania każdej opcji do swojej sieci.

Najlepsze praktyki monitorowania sieci: co śledzić i jakich narzędzi używać

Najlepsze praktyki monitorowania sieci: co śledzić i jakich narzędzi używać

Zbuduj praktyczny monitoring sieci z przejrzystym zakresem urządzeń, przydatnymi wskaźnikami wydajności, przydatnymi alertami oraz porównaniem SolarWinds NPM, PRTG i OpManager.

Jak używać Nmap do śledzenia trasy i odczytywania ścieżki sieciowej

Jak używać Nmap do śledzenia trasy i odczytywania ścieżki sieciowej

Użyj opcji --traceroute programu Nmap, aby mapować przeskoki do autoryzowanego hosta, zrozumieć dane wyjściowe dotyczące przeskoków i czasu RTT oraz rozwiązywać problemy z brakującymi odpowiedziami bez nadmiernego skanowania.