Android Basics: Μια διαφορετική εξήγηση για το root για αρχάριους χρήστες του Android
Το root είναι ένας όρος που υπάρχει πολύ πριν γεννηθεί το Android και στην πραγματικότητα έχει περισσότερες από μία έννοιες, οι οποίες μπερδεύουν ακόμη και σήμερα τους πολλούς από εμάς. Διάβαζα πρόσφατα το "επεξηγηματικό" άρθρο για το root που γράψαμε κάποτε και κατάλαβα ότι δεν εξηγεί απολύτως τίποτα στον αρχάριο Android χρήστη. Έτσι λοιπόν σήμερα πιάνουμε ξανά την κουβέντα για το root, σωστά και με παραδείγματα που θα καταλάβει και ο πιο άσχετος με το Android.
Το root ως γενικός όρος
Root σημαίνει ρίζα στα ελληνικά και ο όρος δεν είναι καθόλου τυχαίος, καθώς χρησιμοποιήθηκε για πρώτη φορά για να δοθεί μία ονομασία στον αρχικό (ριζικό) φάκελο ενός δίσκου αποθήκευσης. Ριζικός είναι ο πρώτος φάκελος που μπαίνουμε όταν ανοίγουμε ένα σκληρό δίσκο, ένα στικάκι, ένα CD / DVD και γενικά ένα μέσο αποθήκευσης και δε διαγράφεται καθώς δεν περιέχεται σε κάποιον άλλο φάκελο.
Για να το καταλάβετε καλύτερα, βάλτε ένα στικάκι USB στον υπολογιστή σας και ανοίξτε το. Θα δείτε μέσα τους φακέλους και τα αρχεία που έχετε αποθηκεύσει, τα οποία βρίσκονται όλα χύμα μέσα στο στικάκι, σωστά; Αυτό το "χύμα" είναι ο φάκελος root. Ας πούμε επίσης ότι μόλις έχουμε αγοράσει ένα στικάκι και το βάζουμε για πρώτη φορά στον υπολογιστή. Αυτό που θα δούμε ανοίγοντάς το είναι ένας κενός φάκελος. Αυτό και πάλι είναι ο root φάκελος. Σε όποιον φάκελο και να μπούμε μέσα σε ένα δίσκο, μπορούμε να βγούμε από αυτόν πηγαίνοντας προς τα πίσω. Όταν φτάσουμε στο φάκελο root που είναι ο τελευταίος και περιέχει όλους τους υπόλοιπους, απλά βγαίνουμε από το δίσκο.
Κάθε φάκελος πρέπει να έχει μία ονομασία για να μπορεί ο υπολογιστής μας να τον βρει και τον βρίσκει ακολουθώντας τη διαδρομή που έχει αποθηκευτεί, από έξω προς τα μέσα. Για παράδειγμα ας πούμε ότι έχω έναν φάκελο με το όνομα "boot", όπου μέσα του έχω δημιουργήσει το φάκελο "grub" και μέσα σε αυτόν το φάκελο "fonts". Για την υπολογιστή μου ο "fonts" βρίσκεται στη διαδρομή "/boot/grub/fonts". O πρώτος φάκελος που δημιούργησα ("boot") βρίσκεται λογικά στο αρχικό φάκελο root, ο οποίος όπως βλέπουμε στη διαδρομή δεν έχει καμία ονομασία, αλλά εμφανίζεται πάντα με το σύμβολο "/".
Το root στο Linux
Ο όρος root όπως τον γνωρίζουμε σήμερα ήρθε από το Linux, στο οποίο βασίζεται και το Android. Το Linux λοιπόν όπως και το Android, επιτρέπει στους χρήστες να έχουν πρόσβαση μόνο σε συγκεκριμένους φακέλους και αυτό για να μη μολύνεται το σύστημα από ιούς που ενδεχομένως θα κατεβάσει ο χρήστης χρησιμοποιώντας τον υπολογιστή του. Για να αποκτήσεις πρόσβαση στους υπόλοιπους φακέλους, πρέπει να έχεις πρώτα πρόσβαση στο root φάκελο, τον πρώτο φάκελο δηλαδή, που περιλαμβάνει όλους τους υπόλοιπους.
Στο Linux το δικαίωμα πρόσβασης στο root φάκελο είναι προεγκατεστημένο και το αποκτάς καλώντας το εργαλείο "su", ανοίγοντας το τερματικό και δίνοντας την εντολή:
sudo su
Με το "sudo" λέμε στο σύστημα ότι θέλουμε να εκτελέσουμε μία εργασία ως root χρήστης και η εργασία που θέλουμε να κάνουμε είναι το "su", να γίνουμε δηλαδή ο root χρήστης. Το σύστημα ζητάει τον κωδικό μας, ελέγχει αν έχουμε τέτοιο δικαίωμα και τέλος μας δίνει την πρόσβαση. Προσέξτε στην εικόνα, όπου στην πρώτη εντολή είμαι ο χρήστης "ubuntu", ενώ στην τελευταία ο χρήστης "root".
To root στο Android
Στο Android λοιπόν όταν λέμε "θα κάνω root", εννοούμε ότι θα αποκτήσουμε πρόσβαση στο root φάκελο και αυτό γίνεται προσθέτοντας το su το οποίο λείπει από το Android και εγκαθιστώντας μία εφαρμογή σαν το SuperSU, η οποία λειτουργεί αντί για password. Κάνουμε root κυρίως για να επέμβουμε στον φάκελο system που περιέχει τη ROM της συσκευής για να προσθέσουμε ή να αφαιρέσουμε τα πράγματα που θέλουμε σε αυτήν.
Σκεφτείτε τη συσκευή μας σαν μία μονοκατοικία στην οποία έχουμε κλειδωθεί απ' έξω. Μπορούμε να πάμε σε κάποιους χώρους όπως τη βεράντα (cache partition) και την αυλή (data partition), αλλά για να μπούμε στο σπίτι χρειαζόμαστε ένα κλειδί. Το κλειδί είναι η μέθοδος root που θα ακολουθήσουμε και είναι φτιαγμένο για μία συγκεκριμένη κλειδαριά. Η κλειδαριά είναι το κενό ασφαλείας (exploit) που εκμεταλλεύεται η συγκεκριμένη μέθοδος και μπορεί να μη λειτουργεί μετά από λίγο καιρό γιατί ο ιδιοκτήτης (Google) μας έχει πάρει χαμπάρι και έχει αλλάξει την πόρτα (ΟΤΑ update).
Μόλις ξεκλειδώσουμε την πόρτα μπορούμε πλέον να πάμε σε όλα τα δωμάτια, αλλά μας ενδιαφέρει κυρίως το σαλόνι (system partition) όπου βρίσκονται τα πιο ενδιαφέροντα πράγματα. Μπορούμε να πετάξουμε ότι θέλουμε (bloatware), να βάψουμε τους τοίχους (theme), ακόμη και να το γκρεμίσουμε για να το φτιάξουμε όπως ακριβώς μας αρέσει (custom ROM), υπάρχει όμως ένα πρόβλημα.
Ο ιδιοκτήτης του σπιτιού (Google) έχει κάνει συμφωνία με τον εργολάβο (π.χ. Samsung) να έρχεται κάθε χρόνο και να βελτιώνει το σπίτι (update), αλλά αν έχουμε κάνει εμείς κάποιες αλλαγές, ο εργολάβος δεν το αναλαμβάνει (σφάλμα εγκατάστασης update). Αυτό συμβαίνει γιατί ο εργολάβος δε γνωρίζει πλέον τι αλλαγές έχουμε κάνει στη στατικότητα του κτιρίου και αν επέμβει μπορεί αυτό να γκρεμιστεί τελείως (bootloop), κάτι για το οποίο δεν έχει δώσει τη συγκατάθεσή του (απώλεια εγγύησης). Έτσι λοιπόν εμείς πρέπει είτε να επαναφέρουμε το σπίτι την αρχική του κατάσταση (εγκατάσταση stock ROM), είτε να το αναβαθμίζουμε και να το προσέχουμε μόνοι μας.
Εν κατακλείδι
Το root λοιπόν είναι μία ευρεία έννοια που έχει πολλές σημασίες, αλλά πάντα λίγο έως πολύ σημαίνει πρόσβαση στο σύνολο του αποθηκευτικού χώρου μια συσκευής. Κάνοντας root στο Android γινόμαστε κλειδοκράτορες της συσκευής μας και αυτό δεν είναι πάντα καλό γιατί αν ένας ιός μπει στο κινητό μας και αποκτήσει τέτοιου είδους δικαιώματα, μπορεί να αχρηστεύσει τελείως τη συσκευή μας και ακόμα χειρότερα να μας παρακολουθεί και να κλέβει τα δεδομένα μας χωρίς να το καταλαβαίνουμε.