Nokia N9 tips & tricks cz. 21 — dostęp przez SSH z prawami roota
30.11.2011 | aktual.: 14.12.2011 03:37
W tym odcinku chciałbym przedstawić jak połączyć się z Nokią N9 za pośrednictwem protokołu SSH z uprawnieniami roota, czyli konta które daje pełną kontrolę nad systemem.
Po co w ogóle takie uprawnienia? Wiele opisywanych przeze mnie modyfikacji polega na edycji bądź podmianie plików niewidocznych normalnie dla użytkownika, bo znajdujących się w zakamarkach folderów systemowych. Wykorzystując menedżery plików na telefonie takie jak np. File Manager lub Filebox, czy łącząc się z poziomu komputera programem WinSCP mamy co prawda dostęp do takich plików, ale jedynie w trybie odczytu. Żeby coś zmodyfikować musimy użyć Terminala, uzyskać prawa roota i żmudnie wklepywać komendy kopiowania, przenoszenia itp. podając przy tym pełne ścieżki... Na dłuższą metę zajeżdża masochizmem ;) Teoretycznie zadanie to mógłby ułatwić Midnight Commander*, ale czemu nie pójść krok dalej?
Ten krok dalej to właśnie dostęp przez SSH z prawami roota. Dzięki temu będziemy mogli z poziomu komputera, przy pomocy programu WinSCP i sieci bezprzewodowej, wygodnie zarządzać plikami w telefonie bez żadnych ograniczeń. Zamiast np. kopiować jakiś zmodyfikowany plik konfiguracyjny do /home/user/MyDocs/, a następnie z poziomu Terminala jeszcze raz ten sam plik przenosić do docelowego folderu systemowego, będzie można od razu wgrać go tam gdzie trzeba. Wygoda takiego rozwiązania, szczególnie dla osób przyzwyczajonych do filozofii dwupanelowego interfejsu a'la Norton/Total Commander, jest bezdyskusyjna. Efektem tej modyfikacji będzie naturalnie też możliwość wywoływania na komputerze Terminala Nokii N9, od razu z pełnymi uprawnieniami.
Gotowi? Zatem zaczynamy. Niezbędny będzie Terminal i jakiś prosty edytor tekstowy np. Nano. Na początek kwestia bezpieczeństwa. Otwierając możliwość logowania się na konto z najwyższymi uprawnieniami musimy obowiązkowo zmienić hasło roota, domyślne rootme jest bowiem powszechnie znane. Tymczasem po przeprowadzeniu tej modyfikacji wystarczyłoby wiedzieć jaki jest adres IP naszego telefonu aby uzyskać pełny dostęp do jego zasobów. Uruchamiamy więc Terminal i wpisujemy:
devel-su Password: rootme passwd root New password: [wybranehasło] Re-enter new password: [wybranehasło]
Uwaga: Podczas wpisywania hasła niezbędnego do uzyskania uprawnień roota litery nie pojawiają się. Nowe hasło roota wpisujemy bez nawiasów.
Hasło powinno być długie i skomplikowane, aby nie można go było łatwo złamać metodą słownikową. Gdy zostanie już pomyślnie zmienione, kolejnym krokiem jest edycja pliku konfiguracyjnego SSH aby zezwolić na logowanie jako root. Wpisujemy zatem:
nano /etc/ssh/sshd_config
Na ekranie wyświetli się nam plik konfiguracyjny sshd_config. Korzystając z okazji można w nim zmienić domyślny port SSH — nie jest to co prawda obowiązkowe, ale warto to zrobić ze względów bezpieczeństwa. Przechodzimy do linii Port 22 znajdującej się zaraz na początku i wpisujemy inną wartość z zakresu od 0 do 65535, najlepiej jakąś wysoką. Niezbędne będą kursory, jeżeli nie macie ich włączonych w pasku nad klawiaturą wirtualną można to zrobić dotykając okno Terminala w prawym górnym rogu i wybierając z menu opcję Toolbar -> Arrows.
Następnie w dalszej części pliku odszukujemy sekcję # Authentication i w linii PermitRootLogin zmieniamy no na yes. Na koniec zapisujemy plik wciskając Ctrl+O, potwierdzamy nadpisanie Enterem i Ctrl+X aby wyjść.
# Authentication: LoginGraceTime 120 PermitRootLogin no StrictModes yes
W przypadku systemów zaktualizowanych do wersji PR 1.1, gdzie logowanie jako root zostało zablokowane nawet w przypadku włączenia go w pliku konfiguracyjnym, trzeba będzie jeszcze wpisać w Terminalu:
echo -e 'mkdir -m 0755 -p /var/run/sshd\nexec /usr/sbin/sshd $SSHD_OPTS' >> /etc/default/ssh pkill -9 /usr/sbin/sshd
Zamykamy Terminal, restartujemy telefon i gotowe!
Na komputerze uruchamiamy WinSCP, w polu Host name wpisujemy adres IP telefonu, w polu Port number numer portu, a w polu User name "root". Klikamy Login i sprawdzamy czy wszystko jest OK. Szerzej o połączeniach przy pomocy WinSCP pisałem w odcinku Nokia N9 tips & tricks cz. 2 — dostęp do plików przez WiFi.
Analogicznie postępujemy przy dostępie terminalowym przy pomocy PuTTY (Windows). W przypadku systemowego Terminala (Linux, Mac OS) wydajemy komendę ssh root@adres_IP_telefonu -p nr_portu. Szerzej na temat dostępu terminalowego pisałem w odcinku Nokia N9 tips & tricks cz. 20 — Terminal z poziomu komputera.
I tradycyjnie na koniec: jeżeli po jakimś czasie chcielibyście zablokować logowanie na konto roota przy połączeniach przez SSH, wystarczy ponownie wyedytować plik sshd_config i zmienić wartość parametru PermitRootLogin na no.
* Menedżer plików plików pracujący w trybie tekstowym, który można uruchomić z konsoli. Niestety na mojej Nokii N9 nie udało mi się go zainstalować...
Uwaga!
Porada nie jest kierowana do początkujących użytkowników. Dostęp z prawami roota przez SSH został nieprzypadkowo fabrycznie zablokowany obniża bowiem poziom bezpieczeństwa. Operacje na plikach systemowych należy wykonywać z wielką ostrożnością — przypadkowe skasowanie jakiegoś pliku czy folderu może skutkować problemami z funkcjonowaniem bądź uruchomieniem telefonu.