Baza danych pozwoleń w Firefox'ie (permissions.sqlite)

Spis treści

Praktycznie każda przeglądarka, w tym też i Firefox, oferuje możliwość nadania określonym domenom praw dostępu do zasobów systemowych. Chodzi generalnie o wykorzystywanie wtyczek, np. flash, które są aktywowane na danej stronie internetowej jeśli ta ich potrzebuje. Po części też sprawa dotyczy korzystania z urządzeń takich jak wbudowane w laptop kamera i mikrofon oraz szeregu dodatkowych rzeczy, np. ciasteczka, pop-up'y i inne takie. Obecnie Firefox standardowo blokuje dostęp do pluginów, a gdy zachodzi potrzeba skorzystania z któregoś z nich, to zostaje nam zaprezentowane okienko, w którym możemy zdecydować co zrobić. Gdy często odwiedzamy daną witrynę, to naturalnie prosimy naszą przeglądarkę, by ta zapisała ustawienia dla tej strony. Firefox robi to przez dodanie wyjątku w pliku permissions.sqlite . W sporej części przypadków będziemy mogli cofnąć pozwolenia w dość prosty sposób. Niemniej jednak, nie we wszystkich z nich da się to tak łatwo zrobić.

Nadawanie i odbieranie pozwoleń domenom w Firefox'ie

Odpalmy sobie zatem czysty profil Firefox'a i wejdźmy w jego opcje. Konkretnie to udajemy się pod Add-ons -> Plugins. Mamy tutaj wypisane wszystkie wtyczki, które zostały wykryte przez naszą przeglądarkę:

firefox-plugins-wtyczki-konfiguracja-pozwolenia

Każda strona w internecie może uzyskać do nich dostęp jeśli będzie chciała. Zwróćmy zatem szczególną uwagę na przyciski przy każdej z wtyczek i upewnijmy się, że mamy tam Ask to Acticate . W ten sposób każdy taki plugin trzeba będzie aktywować ręcznie za każdym razem, gdy strona będzie chciała z niego korzystać. Przejdźmy teraz na stronę Adobe, gdzie przetestujemy sobie ten mechanizm aktywacji na wtyczce flash. Na samej stronie powinniśmy ujrzeć szereg obrazków podobnych do tego poniżej:

firefox-strona-test-aktywacja-wtyczki

Każdy taki obrazek oznacza, że strona chciała skorzystać z danej wtyczki ale Firefox zablokował te żądania. Informacje o tym jaka wtyczka jest potrzebna, znajduje się na widocznym wyżej obrazku. Jeśli faktycznie chcemy aktywować daną wtyczkę na tej stronie, to klikamy w taki obrazek i po chwili pojawia nam się taki oto pop-up:

firefox-pop-up-allow-and-remember

Mamy tutaj widoczne dwa przyciski: Allow Now oraz Allow and Remember . W przypadku wybrania pierwszej opcji, strona będzie mogła skorzystać z pluginu flash ale tylko tymczasowo. Gdy z kolei wybierzemy drugą opcję, to do pliku permissions.sqlite zostanie dodany wyjątek i w późniejszym czasie nie będziemy musieli sobie głowy zawracać aktywacją tej konkretnej wtyczki na tej stronie.

Problem natomiast zaczyna się w chwili odbierania tych uprawnień. O ile znamy adres domeny, to po jej załadowaniu możemy wybrać z menu kontekstowego View Page Info :

firefox-uprawnienia-strony-wtyczki

W okienku, które nam się pojawi, przechodzimy do Permissions i tutaj już mamy wyszczególnione informacje na temat wszystkich zezwoleń dotyczących danego serwisu www:

firefox-uprawnienia-strony-wtyczki

Wszędzie tam, gdzie status różni się od Use Default są tworzone wyjątki, a informacje o nich wędrują do pliku permissions.sqlite .

Czyszczenie pliku permissions.sqlite

Wyobraźmy sobie teraz, że przez parę lat przeglądamy strony www i dodajemy całą masę wyjątków dla różnych domen zmieniając te powyższe ustawienia. Jednym z problemów będzie nadmierny rozrost pliku permissions.sqlite . Choć to jeszcze nie jest najgorsza rzecz jaka może nas spotkać. Załóżmy teraz, że jakaś domena wygasła i dla tej domeny mieliśmy specyficzną konfigurację uprawnień. Jeśli kto inny zarejestruje sobie tę domenę, to zwyczajnie odziedziczy ona uprawnienia, które nadaliśmy jej kilka lat wstecz, a to nie jest zbytnio bezpieczne.

W przypadku domen, których adresy są nam znane, dostosowanie uprawnień nie powinno stanowić większego problemu. Co jednak w przypadku tych zapomnianych stron, które nawet nie figurują w naszych ulubionych zakładach? Skąd mamy wiedzieć, czy daną domenę odwiedzaliśmy już i czy zmienialiśmy jej uprawnienia? Oczywiście można to wyciągnąć z informacji o stronie ale kto by się w to bawił. Jako, że w pliku permissions.sqlite znajduje się lista wyjątków, to przydałoby się podejrzeć ten plik i usunąć wszystkie zbędne wpisy. Problem w tym, że Firefox nie umożliwia nam tego. Zatem zostają nam z grubsza dwie opcje: zmiana zezwoleń dla każdej pojedynczej strony oraz zwyczajne usunięcie tego pliku z katalogu profilu ( ~/.mozilla/firefox/12345678.default/permissions.sqlite ).

Edytowanie pliku permissions.sqlite przez SQLite Manager

Może i Firefox nie umożliwia nam ręcznej edycji pliku permissions.sqlite ale są dostępne dodatki, które operują bezpośrednio na nim. Jednym z nich jest SQLite Manager. Przy pomocy tego dodatku jesteśmy w stanie uzyskać dostęp do tabeli z uprawnieniami, gdzie mamy ładnie opisane domeny. Poniżej przykład:

firefox-sql-manager-add-on

W kolumnie permission mamy dwie wartości: 1 lub 2 . Wartość 1 oznacza zezwolenie dostępu, zaś 2 odmowę dostępu. Każde ustawienie, które mogliśmy zmienić przez View Page Info na danej stronie, będzie miało w tej tabeli osobny wpis. Jeśli chcemy teraz cofnąć wszystkim domenom prawa do korzystania z pluginu flash, to wystarczy kliknąć na odpowiednich pozycjach prawym przyciskiem myszki i wybrać Delete :

firefox-sql-manager-add-on

Można także wykonać zwykłe zapytanie do bazy danych i przy jego pomocy usunąć konkretne rekordy. Dla przykładu przechodzimy na zakładkę Execute SQL i wybieramy Data Manipulation > DELETE . Następnie wpisujemy to poniższe zapytanie:

DELETE FROM moz_perms WHERE type='plugin:flash'

Zapytanie powinno wykonać się bez błędów, a z tabeli uprawnień powinny zniknąć wszystkie wpisy, które miały w kolumnie type wartość plugin:flash :

firefox-sql-manager-add-on

Po edycji bazy danych musimy jeszcze uruchomić ponownie przeglądarkę.

Mikhail Morfikov avatar
Mikhail Morfikov
Po ponad 10 latach spędzonych z różnej maści linux'ami (Debian/Ubuntu, OpenWRT, Android) mogę śmiało powiedzieć, że nie ma rzeczy niemożliwych i problemów, których nie da się rozwiązać. Jedną umiejętność, którą ludzki umysł musi posiąść, by wybrnąć nawet z tej najbardziej nieprzyjemniej sytuacji, to zdolność logicznego rozumowania.