Envato Elements - pobieraj co chcesz, ile chcesz

Ostatnio postanowiłem cofnąć CyanogenMod z wersji 14.1 (Android 7.1) do wersji 13 (Android 6.0.1), oczywiście z próbą zachowania danych, co jak podejrzewałem łatwe nie będzie i może skończyć się krachem systemu – i oczywiście tak się stało, a do tego zrobiona kopia zapasowa okazała się wadliwa.

W tej sytuacji postanowiłem przywrócić system z wcześniejszej kopii zapasowej i niezbędne dane (katalog /data/data/katalog-aplikacji) skopiować ręcznie, tak jak to już kiedyś robiłem. Niestety zapomniałem, że chyba od Androida 4.3 Google w system wmontowało potworka (w tym kontekście jest to prawdziwy potworek ;-)) w postaci SELinuxa, który od Androida 4.4 został przełączony w tryb restrykcyjny…

Android i Security-Enhanced Linux (SELinux)

O ile sam SELinux ma swoje zalety (głównie związane z podniesieniem bezpieczeństwa zarówno całego systemu, jak i poszczególnych jego elementów/komponentów), to w tym przypadku okazał się diabełkiem, który sprawił, że jakakolwiek modyfikacja w strukturze plików (w tym przypadku podmiana plików odpowiedzialnych za ustawienia poszczególnych aplikacji, np. bazy zawierającej SMSy) powodowała albo krach całego systemu, albo – w przypadku podmiany plików tylko kilku wybranych aplikacji – krach danej aplikacji, bo podpis/etykiety plików się nie zgadzają, nawet jeśli są z tego samego telefonu.

Enforcing vs Permissive

By zweryfikować podejrzenia, że to na pewno kwestia SELinuxa postanowiłem z poziomu konsoli (w końcu po coś ten root jest ;-)) sprawdzić w jakim trybie działa SELinux w moim telefonie, i czy zmiana z trybu „restrykcyjnego” (enforcing) na tryb „pobłażliwy” (permissive) rozwiąże mój problem:

Sprawdzenie trybu (tak, można to też zrobić przez ustawienia telefonu):

su
getenforce

W odpowiedzi otrzymałem „enforcing”, a więc tryb „restrykcyjny”. Szybka zmiana na „permissive” (pobłażliwy):

setenforce 0

Z tego co kojarzę, to taka zmiana jest możliwa dzięki temu, że tryb pracy urządzenia to „userdebug”, co można sprawdzić za pomocą polecenia:

getprop ro.build.type

Po tej zmianie aplikacje z podmienionymi plikami zaczęły działać, a więc przyczyna potwierdzona, choć powyższa komenda nie rozwiązuje problemu, gdyż po każdym restarcie telefonu system automatycznie przechodzi w tryb „restrykcyjny”.

Co nie zadziałało

Podczas rozmowy ze znajomym doszliśmy do wniosku, że można albo spróbować wyłączyć SELinuxa na stałe (wiązałoby się to prawdopodobnie z wgraniem jądra systemu bez tego zabezpieczenia), lub skorzystać z opcji „relabel”, czyli ponownego podpisywania plików.

Pierwsza próba – korekta uprawnień z poziomu Recovery (TWRP) niestety nic zmieniła, aplikacje jak nie działały, tak nie działały dalej.

W kolejnym kroku w głównej partycji systemu postanowić utworzyć plik „.autorelabel”, dzięki które miałem nadzieję, że nastąpi – tak jak to ma miejsce w systemach serwerowych/desktopowych – ponowne katalogowanie/podpisywanie plików:

su
mount -o rw,remount /
touch /.autorelabel

Niestety ta metoda również zawiodła, choć podczas uruchamiania system jakieś dodatkowe operacje wykonał…

Może jakiś skrypt

Kolejną metodą, którą postanowiłem sprawdzić, to jakiś prosty skrypt, który w odpowiednim miejscu podstawi 0 (zero), tym samym przełączając tryb pracy/działania SELinuxa:

echo 0 > /sys/fs/selinux/enforce

Niestety kilka różnych prób nie przyniosło spodziewanego efektu (skrypt musi zadziałać z uprawnieniami roota, a zarazem musi wykonać się po systemowym sprawdzeniu i ew. przełączeniu trybu SELinuxa na „restrykcyjny”).

SELinuxModeChanger

Szybkie wyszukiwanie w Google i trafiłem na aplikację „SELinuxModeChanger”, która dawała szansę na szybkie i skuteczne rozwiązanie mojego problemu z trybem pracy SELinuxa, gdyż wg opisu autora pilnuje wybranego trybu pracy również po restarcie/uruchomieniu telefonu.

Apliakcja kiedyś dostępna w Google Play, ale z niego wyleciała. Teraz znajdziecie ją do pobrania m.in. w serwisie F-Droid.

Oczywiście Google przy standardowo włączonej weryfikacji instalowanych aplikacji wyświetli nam ostrzeżenie, o tym, że „aplikacja może trwale uszkodzić urządzenie” (dlatego instalujecie aplikację, jak i robicie wszystkie inne wymienione operacje na własną odpowiedzialność):

Dalsza obsługa aplikacji wydaje się prostsza niż instalacja, gdyż sprowadza się do kliknięcia w odpowiedni przycisk, za pomocą którego wybieramy tryb pracy SELinuxa:

A co najważniejsze – jak autor obiecał, tak się dzieje, i odpowiedni/wybrany tryb pracy SELinuxa jest automatycznie ustawiany po każdym uruchomieniu telefonu.

(!) Zgłoś błąd na stronie
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!
Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!
Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.
Młody Szymon powiedział tacie o promocji dla czytelników WebInsider.pl i zaoszczędzili 80% na księgowości internetowej wFirma
WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które – w miarę możliwości – spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. „linki partnerskie”, co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte… :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.
Janusz i Janusz dzięki motywowi Divi od Elegant Themes koszą siano robiąc strony