⚠ Nie uruchamiamy komend w konsoli jako root (nie ma takiej potrzeby), bo możemy mieć problemy

Próbuję zxaktualizować bramkę:


klikam ZAINSTALUJ TERAZ AKTUALIZACJE
i wyskakuje na dole ekranu komunikat:
Failed to call service ais_updater/execute_upgrade. Command 'rm -rf /data/data/pl.sviete.dom/files/usr/tmp/* ’ returned non-zero exit status 1.
a po 2 sekundach znika.

Jak sobie z tym poradzić?

Chyba po poprawce - czyszczenie tmp przed aktualizacją mamy regresję

Sprawdzmy to. Zrób tak:

  1. przejdz do konsoli

  2. wylistuj co masz w tmp komendą

ls -la /data/data/pl.sviete.dom/files/usr/tmp/

image

Prześlij nam co zwraca punkt 2 ?

Mam taki katalog:

drwx------ 3 root root 4096 Apr 24 00:01 v8-compile-cache-0

a w srodku:\total 368

drwx------ 2 root root 4096 Apr 24 00:01 .
drwx------ 3 root root 4096 Apr 24 00:01 …
-rw------- 1 root root 343212 Apr 24 00:01 zSdatazSdatazSpl.sviete.domzSfileszSusrzSlibzSnode_moduleszSpm2zSbinzSpm2.BLOB
-rw------- 1 root root 21398 Apr 24 00:01 zSdatazSdatazSpl.sviete.domzSfileszSusrzSlibzSnode_moduleszSpm2zSbinzSpm2.MAP

Czyli problemem jest to, że to użytkownik root dodał coś do tmp a teraz zwykły użytkownik (procesy odpalamy z uprawnieniami zwykłego użytkownika) nie jest w stanie usunąć tego, co dodał root… bo nie ma takich uprawnień.

Czy odpalałeś jakieś komendy w konsoli jako root? Np przez sudo?

:warning: Nie uruchamiamy żadnych komend jako root.:warning:
Nie ma takiej potrzeby, bo w Android każdy użytkownik jest izolowany i w swojej przestrzeni (/data/data/pl.sviete.dom/) może robić wszystko bez potrzeby przełączania się na root-a.

Wprowadziliśmy na to poprawkę, zdalnie.

Wywołaj jeszcze raz aktualizację, powinno pojawić się nowa wersja Linux i aktualizacja powinna się udać


PS
Jeżeli dalej będzie coś nie tak i eksperymentowałeś (przyklejając jakieś komendy z sieci i wykonując, coś z poziomu root-a) to możliwe, że popsułeś coś jeszcze. W takim wypadku polecamy procedurę pełnego resetu aplikacji:

Moje pierwsze podejście do Jolki i też popsułem bo eksperymentowałem z roota :wink: Teraz jestem już mądrzejszy :slight_smile:

Zdajemy sobie sprawę, że to jest… trochę skomplikowane, ale postaramy się wyjaśnić o co chodzi:

  • Aplikacje na Androida działają w piaskownicy i mają własny identyfikator użytkownika systemu Linux oraz etykietę SELinux.
    Czyli w uproszczeniu w Android każda aplikacja to taki osobny użytkownik Linux.

  • AIS dom nie jest wyjątkiem - wszystko jest wykonywane z tym samym identyfikatorem użytkownika

  • Każda aplikacja w Android znajduje się w osobnym folderze /data/data/identyfikator.pakietu.aplikacji
    W przypadku AIS jest w /data/data/pl.sviete.dom (bo tak nazywa się nasz pakiet w Android)

  • Zwykły użytkownik ma swobodny dostęp do odczytu i zapisu tylko w swoim folderze z aplikacją
    Główny system plików dla użytkownika to lokalizacja /data/data/pl.sviete.dom/

Dzięki temu Android jest bezpieczny i teoretycznie nie można zepsuć systemu, bo jedna aplikacja nie ma dostępu do innej aplikacji (bo są innymi użytkownikami Linux i nie moją dostępu do systemu plików poza swoim pakietem). Dodatkowo partycje systemowe są tylko do odczytu.

root to użytkownik który ma dostęp wszędzie (począwszy od korzenia struktury folderów - czyli lokalizacji / ) i może wszystko. Czyli dla root-a główny system plików zaczyna się w lokalizacji / z niej może przejść do danych każdej aplikacji /data/data/… Na bramkach deweloperskich jest to konto dostępne dla programistów którzy wiedzą jak to działa. Mają wielką moc z którą wiąże się wielka odpowiedzialność :wink: Jak będziemy mieli wersje “dla końcowego użytkownika” to zablokujemy root-a, bo jak widać tak - trzeba to zrobić, dla dobra ludzkości :wink:

Pamiętajcie proszę - nie używajcie root-a… for the love of god don’t do it! *

:slight_smile:

Miłego weekendu

* no chyba że tworzycie jakiś własny pakiet binarny i wiecie co robicie…

Spoko, wiem co robię, może nie do końca :wink:
Jestem administratorem serwerów Unix/Linux.
Zmylilo mnie tylko to, że nie sprawdziłem, że manager pm2 nie działa jako root a jako u0_a16:

u0_a38 5727 0.2 1.2 166400 23020 ? S<sl Aug06 16:59 PM2 v2.10.2: God Daemon (/data/data/pl.sviete.dom/files/home/.pm2)

Próbowałem odpalic autossh pos pm2 aby stworzyc dodatkowy tunel do bramki z zewnątrz. Problem w tym, że przelogowalem sie jako root i probowalem sprawdzic status pm2. Pociagnelo to za sobą zalozenie kilku katalogów tymczasowych w katalogu /data/data/pl.sviete.dom :slight_smile:

Już wszystko naprawiłem/pozamiatałem. Tunel reverse ssh stworzylem na routerze tak więc problem rozwiązałem.

1 polubienie

Wszystko posprzatalem i aktualizacja ruszyła :slight_smile:
Dzieki za info.
Będę uważał na tego root-a :slight_smile:

dzięki za info :slight_smile:
w kolejnej wersji dodamy małe ostrzeżenie w konsoli - żeby to było bardziej jasne
na razie jest tak jak na obrazku poniżej… ale prace trwają nad ostatecznym tekstem :wink:
image

A jak właściwie działa konsola w przegladarce? Na jakiej zasadzie?

Mam od jakiegoś czasu dziwny efekt, jak kliknę na KONSOLA w Narzedziach developerskich to wyskakuje mi strona www w oknie dla konsoli.

konsola działa tylko jak połączenie jest lokalne:

usługę konsoli w przeglądarce nazwaliśmy webssh i utrzymuje ją pm2:
image

to co robi webssh to mniej więcej coś takiego:

ttyd -p 8888 bash

czyli wystawia powłokę bash na porcie 8888

w ten sam sposób możesz uruchomić dowolny program działający na bramce w przeglądarce, np.:

ttyd -p 7777 htop

1 polubienie

He He zabawne, przypadkowo uruchomiłem tunel ssh na 8888 porcie i stad to okno w oknie :slight_smile:

tak też myśleliśmy, że samo się to nie stało :wink:


PS
dodajemy info o usłudze działającej na porcie 8888 do naszej tabelki