Εάν είσαστε Root με δικαιώματα SU, ίσως θέλετε μα μάθετε τι κρύβετε πίσω από ένα Αndroid γραφικό περιβάλλον GUI (Graphic User Interface).
Στο Root folder ( / ) έχουμε τα ονομαζόμενα sym (symbolic) links που δεν είναι τίποτα άλλο από συντομεύσεις διαδρομών (shortcut paths) φακέλων με διάφορα αρχεία πχ συστήματος ή ακόμα και
διαδρομές χώρου αποθήκευσης. Αν διαγραφεί από λάθος ένα symbolic link δεν σημαίναι ότι διαγράφονται και τα περιεχόμενα που δείχνει αυτή η συντόμευση όπως φάκελοι και αρχεία της διαδρομής.
Επίσης υπάρχουν φάκελοι με αρχεία του συστήματος, εφαρμογών, συσκευών και οδηγοί αυτών
Υπηρεσίες, packages, εγκατεστημένες εφαρμογές συστήματος και χρήστη με τις ρυθμίσεις τους,
όπως και εντολές που μπορεί ένας απλός χρήστης ή ένας Root-SU να εκτελέσει ανάλογα με τα δικαιώματα που έχει για να κάνει κάποιες εργασίες ή διαδικασίες ή ακόμη και διάγνωση σε μιά
γραμμή εντολών (CLI) χρησιμοποιώντας μια εφαρμογή Terminal.
Ακόμα στο Root folder ( / ) υπάρχουν τα ονομαζόμενα Batch Files (αρχεία διαδικασιών) που αφορούν
την εκκίνηση και αρχικοποίηση του λειτουργικού μας συστήματος.
Στην συνέχεια θα δούμε την αυτήν την δομή πως είναι και τι περιλαμβάνει ακόμα θα χρησιμοποιήσουμε και μερικές από τις εντολές του συστήματος.
*******************************************************************************
Προσοχή μην πληκτρολογείτε ποτέ εντολές αν δεν τις έχετε καταλάβει.
Το παράδειγμα που ακολουθεί είναι βασισμένο πάνω σε tablet με Android vesrion 4.2.2.
και Windows 7 (Ο τρόπος-φιλοσοφία διαδικασίας ισχύει και για όλα τα συστήματα.
Σκοπός των αναρτήσεων είναι η επίδειξη και αρχική εκμμάθηση εντολών, εργαλείων διαχείρησης όπως και μερική ορολογία στην Αγγλική για όσους δεν είχατε επαφή με το αντικείμενο και θέλετε να μάθετε.
********************************************************************************
Κατεβάστε το Android Terminal Emulator μέσα από το Play Store που βρίσκετε στα προγράμματα του Tablet σας ή κάντε το εγκατάσταση από τα παρακάτω Link από το PC σας.
https://play.google.com/store/apps/details?id=jackpal.androidterm
Αν θέλουμε να μεγαλώσουμε λίγο την γραμματοσειρά μπορούμε να την αλλάξουμε αγγίζοντας τις
τρείς κάθετες κουκίδες που βρίσκονται πάνω γωνία δεξιά της εφαρμογής, μετά πηγαίνουνε στο
Preferences -> Font Size και επιλέγουμε όποια μας βολεύει.
Όταν ανοίξουμε την εφαρμογή θα μας βγάλει στο σύμβολο # που σημαίνει ότι είμαστε στην γραμμή εντολών σαν απλοί χρήστες και εκεί μπορούμε να γράψουμε κάποια εντολή και στο τέλος της εντολής για να εκτελεστεί πρέπει να πατάμε πάντα το Carriage Return ή ώς το γνωστό Enter.
Ας πληκτρολογήσουμε για αρχή την εντολή να μας δείξει το περιεχόμενο
#ls -la -> Εμφανίζετε η παρακάτω εικόνα
Αν πληκρολογήσουμε
#SU θα μας εμφανίσει το
root@android:/# και θα μας βάλει σε Super User Mode που σημαίνει ότι μπορούμε να έχουμε πρόσβαση σε οποιαδήποτε φάκελο ή αρχείο ή συσκευή του συστήματος και να κάνουμε ότι θέλουμε.
Πώς ξεχωρίζουμε αν η ονομασία σε κάθε γραμμή αντιστοιχεί σε φάκελο ή αρχείο ή symlink.
Στην αρχή κάθε γραμμής το πρώτο γράμμα μπορεί να είναι το d (directory) φάκελος ή - (file) αρχείο
ή l (symbolic link) συντόμευση που επίσης υπάρχει και το σύμβολο -> μεταξύ της ονομασίας και της διαδρομής (path) που δείχνει η συντόμευση, b = Binary file.
Permissions (δικαιώματα σε αρχείο (file) ή σε φάκελο (directory).
Οι επόμενοι 9 χαρακτήρες προσδιορίζουν τα δικαιώματα του αρχείου. Οι κάθε τρείς χαρακτήρες αντιπροσωπεύουν τα παρακάτω.
Οι τρείς (3) πρώτοι χαρακτήρες είναι για τα δικαιώματα του κατόχου (owner) πάνω σε φάκελο ή αρχείο.
π.χ. -rwx------
Οι επόμενοι τρείς (3) χαρακτήρες είναι τα δικαιώματα της ομάδας (group) για τον φάκελο ή το αρχείο που του ανήκει.
π.χ. ----rwx---
Οι τρείς (3) τελευταίοι χαρακτήρες είναι τα δικαιώματα πρόσβασης για τον οποιανδήποτε (everyone) και όχι τμήμα της ομάδας (group).
π.χ. -------rwx
Υπάρχουν 3 πιθανά χαρακτηριστικά που συνθέτουν τα δικαιώματα πρόσβασης αρχείων.
r - Read permission. Δικαιώματα ανάγνωσης, δηλαδή αν το αρχείο μπορεί να διαβαστεί.
Στην περίπτωση ενός καταλόγου-φακέλου (directory), αυτό θα σήμαινε τη δυνατότητα να δείτε
τα περιεχόμενα του.
w - Write permission. Δικαιώματα εγγραφής, δηλαδή αν το αρχείο μπορεί να γραφτεί-αποθηκευτεί ή
να τροποποιηθεί.
Στην περίπτωση ενός καταλόγου αυτό καθορίζει αν μπορείτε να κάνετε οποιεσδήποτε αλλαγές
στο περιεχόμενο του.
Αν τα δικαιώματα εγγραφής δεν έχουν οριστεί, τότε δεν θα είστε σε θέση να διαγράψετε, να
μετονομάσετε ή να δημιουργήσετε ένα αρχείο.
x - Execute permission. Δικαιώματα εκτλελεσης, δηλαδή αν το αρχείο μπορεί να εκτελεστεί.
Στην περίπτωση ενός καταλόγου, το χαρακτηριστικό αυτό αποφασίζει εάν έχετε την άδεια να
εισέλθετε, να εκτελέσετε μια αναζήτηση μέσα από αυτόν τον κατάλογο ή να εκτελέσετε κάποιο
πρόγραμμα από αυτόν.
Επιπλέον στα δικαιώματα αρχείου, μπορείτε επίσης να τροποποιήσετε τον κάτοχο (owner) και
την ομάδα (group) του αρχείου χρησιμοποιώντας το πρόγραμμα chown (change owner).
Χρειάζετε να είστε ο κάτοχος του αρχείου ή ο διαχειριστής (Root).
Σύνταξη εντολής
chown owner-user file chown owner-user:owner-group file chown owner-user:owner-group directory chown options owner-user:owner-group file
Understanding Owner Permissions: The first command is for owner ID, the Second Command is for Group ID.
π.χ chown root:root init.rc ( First Root is owner, Second Root is Group )
Change the owner of /foo and subfiles to "root", run:
# chown -R root /u
Where -R - Recursively change ownership of directories and their contents.
Command to change file or folder permissions
Chmod 644 some file, Like Build.prop For testing & then View the Resulted Changes!
Refer to the table below as a quick reference.
Command Line for Both would look like this
chmod 644 build.prop = -rw-r--r--
\/
Chmod Guide
0 - ---
1 - --x
2 - -w-
3 - -wx
4 - r--
5 - r-x
6 - rw-
7 - rwx
Behold 2 SH Chown Guide
\/
chown root.root build.prop
root.root = Root
root.shell = Shell
Busybox SH Chown Guide
\/
chown 0.0 build.prop
0.0 = Root
0.2000 = Shell
Side Note:Always set owner ( chown ) before Setting Permissions ( Chmod )
=========================================================================5 - r-x
6 - rw-
7 - rwx
Behold 2 SH Chown Guide
\/
chown root.root build.prop
root.root = Root
root.shell = Shell
Busybox SH Chown Guide
\/
chown 0.0 build.prop
0.0 = Root
0.2000 = Shell
Side Note:Always set owner ( chown ) before Setting Permissions ( Chmod )
Πολλές φορές μπορεί να χρειαστεί να επεξεργαστούμε ένα αρχείο ή να έχουμε πρόσβαση σε έναν φάκελο που μπορεί να περιέχει αρχεία που τα χρειαζόμαστε συχνά, υπάρχει όμως ένα θέμα ότι αυτά μπορεί να βρίσκονται σε βάθος φακέλων (φάκελο μέσα σε φάκελο) ώστε η διαδρομή μέχρι να φτάσουμε κάθε φορά να είναι πολύ μεγάλη και χρονοβόρα.
Για να έχουμε γρήγορη πρόσβαση και να μην έχουμε άλλα προβλήματα πχ λάθος πληκτρολόγηση διαδρομής, ξεχάσαμε που βρίσκετε το αρχείο κτλ δημιουργούμε ένα symlink.
Πως μπορούμε να δημιουργήσουμε ένα symbolic link; πολύ απλό.
Σύνταξη εντολής: ln -s {target path} {source}
Hard Link πχ.
root@android:/# ln -s /storage/external_storage/sda1 usb_stick
root@android:/# cd /usb_stick
root@android:/storage/external_storage/sda1/# ls -la
- Γρήγορη πρόσβαση και εμφάνιση των περιεχομένων του usb stick.
root@android:/#cd /ext_sdcard
root@android:/storage/external_storage/sdcard1/# ls -la
- Γρήγορη πρόσβαση και εμφάνιση των περιεχομένων της εξωτερικής sdcard.
root@android:/# ln -s /shared/sales/data/file.txt sales.data.txt
root@android:/#vi sales.data.txt
root@android:/#ls -l sales.data.txt
- Αμμεση πρόσβαση για επεξεργασία του αρχείου με τον vi editor.
- Εμφάνιση της διαδρομής για το πού βρίσκετε το αρχείο.
Σύνταξη εντολής: rm {Link name}
rm usb_stick
rm ext_sdcard
rm sales.data.txt
=========================================================================
Structure of Android OS JB v4.2.2 (Only in english)
/acct Mount point for the acct group (control group) for user accounting.
/boot deferreddrv.ko These are kernel object modules
mali.ko Graphics processing unit for ARM http://en.wikipedia.org/wiki/Mali_%28GPU%29
ump.ko
http://javigon.com/2012/09/07/android-understanding-modifying-building-and-installing/
/cache The mount point for the /dev/block/mtdblock2.
The size of cache is Limited to the size of this partition.
/config This folder seems to be empty. Don't know the purpose of this or if it's a bug.
/dev (tmpfs) The mount point for a tmpfs file system, which defines the devices available to applications.
The /dev/cpuctl is the mount point for the cpuctl control group, using the cgroup pseudo file system.
/nmt Besides of the mounts for the Internal and External SD cards this directory serves a mount
point for other file systems.
/mnt/asec (tmpfs) Part of the Android Security.
/mnt/obb (tmpfs) Stores expansion files for apps exceed 50 MB.
/mnt/secure
May also see one or more usb devices.
/proc (procfs) This directory reflects a number of kernel data structures. The operation on these files
actually read live kernel data.
/proc/sys Contains Kernel parameters, some of which are tunable.
/proc/filesystems Use cli (cat) you will see the nodev pseudo file systems.
Progs (ps, isof & umstat) use the /proc as the source of their information.
/root The home directory for the Root account.
/sbin Contains executable programs, mostly administrative tools available only for the root
(Administrator) user.
Executable system binary files not required until /system/usr filesystem has been mounted.
/sys (sysfs) Mount point for the sysfs pseudo file system, reflection of the kernels device object structure
(directories are the objects, files are the Attributes).
When a Kernel discovers a new device it builds an object in the /sys/devices.
The Kernel uses a network socket to communicate the new device information to the udevd
daemon, which builds an entry in the /dev directory.
The /sys/fs contains the Kernel object structures for media based file systems.
The /sys/module contains objects for each loaded kernel module.
Requires understanding of the kernel device model.
/system The mount point for the /dev/block/mtdblock0.
Under this are normally directories that you see under the (/) root directory.
Includes bin, etc, lib, usr and xbin also fonts, framework, media, lost+found,
package_config, files (recovery_from_boot.p, build.prop), tts, vendor.
Symbolic Links
d -> /sys/kernel/debug (sysfs) Mount point for the acct group (control group), cgroups for user
accounting. List of the groups are in the file /proc/cgroups.
etc -> /system/etc
sdcard -> /storage/sdcard0
vendor -> /system/vendor
--------------------------------------------------------
default.prop This file defines various default properties.
init A binary program that processes the init.rc which imports the other init.*.rc files.
init.rc
init.amlogic.board.rc
init.amlogic.rc
init.amlogic.usb.rc
init.goldfish.rc
init.trace.rc
init.usb.rc
ueventd.amlogic.rc
ueventd.goldfish.rc These files have the configuration rules for the /dev.
ueventd.rc
=======================================================================
Από εδώ θα κατανοήσετε αρκετά γνωρίζοντας βασικά μέρη της δομής του λειτουργικού.
****** Μερικά βασικά για το /data & /storage *************
/data The mount point for the /dev/block/mtdblock1.
Στον φάκελο data δεν έχει πρόσβαση ο απλός χρήστης εάν δεν έχει κάνει πρώτα Root την συσκευή του. Τα περιεχόμενα του φακέλου είναι κρυφά (hidden).
Για αρχή θα δούμε τους φακέλους app,data,user που βρίσκονται μέσα στον Root φάκελο /data.
root@android:/data # ls -la
-rw------- root root 2 2014-03-18 17:37 .layout_version
drwxrwxr-x system system 2014-04-27 17:39 anr
drwxrwx--x system system 2014-04-22 20:05 app
drwx------ root root 2014-04-11 12:54 app-asec
drwxrwx--x system system 2014-04-22 20:05 app-lib
drwxrwx--x system system 2014-03-18 17:37 app-private
drwx------ system system 2014-03-18 17:38 backup
drwxrwx--x system system 2014-04-22 20:05 dalvik-cache
drwxrwx--x system system 2014-04-22 20:05 data
-rw------- system system 0 2014-03-18 17:38 defaultapk.data
drwxr-x--- root log 2014-03-18 17:37 dontpanic
drwxrwx--- drm drm 2014-03-20 00:30 drm
drwxr-x--x root root 2014-03-30 11:37 local
drwxrwx--- root root 1970-01-01 02:00 lost+found
drwxrwx--- media_rw media_rw 2014-03-18 17:37 media
drwxrwx--t system misc 2014-03-18 17:37 misc
drwx------ root root 2014-04-28 10:50 property
drwxrwx--x system system 2014-03-18 17:37 resource-cache
drwxr-x--- root shell 2014-03-18 17:37 ssh
drwxrwxr-x system system 2014-04-28 13:20 system
drwx------ system system 2014-03-25 22:08 tombstones
drwx--x--x system system 2014-04-27 17:22 user
root@android:/data #
/system/app Εκεί είναι όλες οι αρχικές εφαρμογές του συστήματος (System apk's) με κάποια
extensions (.odex).
Μερικά παραδείγματα εφαρμογών.
es_file_explore.apk, Maps.apk, Gmail2.apk
FileBrowser.apk, FileBrowser.odex
Settings.apk, Settings.odex
/data/app Εκεί είναι όλες οι εφαρμογές που εγκαθιστά ο χρήστης.
Επίσης και οι Αναβαθμίσεις-Ενημερώσεις μερικών εφαρμογών του συστήματος
(System Apk's).
Μερικά παραδείγματα εγκατεστημένων εφαρμογών.
com.estrongs.android.pop-1.apk ------->(Ενημερωμένη έκδοση εφαρμογής συστήματος)
com.google.android.apps.maps-1.apk ->(Ενημερωμένη έκδοση εφαρμογής συστήματος)
com.slideme.sam.manager-1.apk ------->(Ενημερωμένη έκδοση εφαρμογής συστήματος)
com.google.android.youtube-2.apk -->(Ενημερωμένη έκδοση εφαρμογής του χρήστη)
com.facebook.katana-2.apk ----------->(Ενημερωμένη έκδοση εφαρμογής του χρήστη)
com.skype.raider-1.apk --------->(Πρώτη εφαρμογή του χρήστη χωρίς ενημέρωση)
/data/data - Είναι μέρος του εσωτερικού χώρου αποθήκευσης όλων των εφαρμογών.
- Global & shared για όλους τους χρήστες.
- Περιέχει για κάθε εφαρμογή έναν φάκελο και μέσα σε αυτόν υπάρχουν
μερικοί φάκελοι που αφορούν την εφαρμογή όπως: cache, databases, files,
lib->, shared_prefs για το com.jrummy.apps.ad.blocker.
- Οι φάκελοι app_RestoreTracker, app_carrier_billing, app_sslcache,
app_widgets, cache, databases, lib->, shared_prefs για το
com.android.vending.
- Μέσα σε κάθε ένα φάκελο από από αυτούς, υπάρχουν φάκελοι όπως επίσης και
αρχεία σε μορφή (.xml) που αφορούν τις ρυθμίσεις (παράμετροι) της εφαρμογής.
π.χ. για το com.jrummy.apps.ad.blocker --> shared_prefs -->
com.jrummy.apps.ad.blocker_preferences.xml
- Πάντα δίπλα από την ονομασία της εφαρμογής θα βλέπετε επίσης και το
( _preferences) π.χ. vending_preferences.
Ακολουθεί παράδειγμα με μερικές βασικές εντολές του Linux όπως: ls, cd, cat.
μετά την εντολή αφήνουμε πάντα ένα κενό.
Όσοι είναι γνώστες του Linux μπορούν να χρησιμοποιήσουν και κάποιον editor, όπως τον vi
αντί για το cat π.χ. vi com.jrummy.apps.ad.blocker_preferences.xml
Aν δεν ξέρετε καλά τον vi editor, να μήν τον χρησιμοποιήσετε.
============================
root@android:/cd /data/data
root@android:/data/data # ls ή ls -la
com.adobe.flashplayer
com.adobe.reader
com.amlogic.HdmiSwitch
com.android.contacts
com.android.launcher
com.android.phone
com.android.provision
com.android.vending
com.facebook.katana
com.jrummy.apps.ad.blocker
com.keramidas.TitaniumBackup
.....................................................
root@android:/data/data #
root@android:/data/data # cd com.jrummy.apps.ad.blocker
root@android:/data/data/com.jrummy.apps.ad.blocker # ls
.........
cache
databases
files
lib -> /data/app-lib/com.
shared_prefs
root@android:/data/data/com.jrummy.apps.ad.blocker # cd shared_prefs
root@android:/data/data/com.jrummy.apps.ad.blocker/shared_prefs # ls
com.jrummy.apps.ad.blocker_preferences.xml
root@android:/data/data/com.jrummy.apps.ad.blocker/shared_prefs # cat com.jrummy.apps.ad.blocker_preferences.xml (Εμφάνιση των ρυθμίσεων εφαρμογής)
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<boolean name="adblock_enabled" value="true" />
<int name="num_of_times_started" value="15" />
<boolean name="lock_adblock_with_pin" value="false" />
<int name="riskblock_ver" value="1" />
<boolean name="casinoblock_enabled" value="true" />
<boolean name="show_pornblock_tip" value="false" />
<boolean name="adblock_check_for_updates_on_start" value="true" />
<boolean name="pornblock_enabled" value="true" />
<int name="pornblock_ver" value="1" />
<int name="adblock_ver" value="1" />
<int name="casinoblock_ver" value="1" />
<boolean name="enable_live_ad_detection" value="false" />
<boolean name="riskblock_enabled" value="true" />
<boolean name="adblock_prompt_reboot" value="true" />
<boolean name="vibrate_on_ad_block" value="true" />
<boolean name="adblocker_restored_the_transactions" value="true" />
<boolean name="adblock_check_weekly" value="false" />
</map>
root@android:/data/data/com.jrummy.apps.ad.blocker/shared_prefs # cd /
root@android:/#
==========================================================================
/data/user - Κάθε χρήστης που δημιουργείτε, γίνετε επαννεκίνηση της συσκευής.
- Ο κάθε χρήστης έχει και ένα id
πχ 0 για τον αρχικό ή Root χρήστη, 10 για τον αμέσως επόμενο, 11 κτλ
- Σε κάθε δημιουργία νέου χρήστη γίνετε αντιγραφή των φακέλων εφαρμογών από
το προφίλ του βασικού αρχικού χρήστη.
- Οτι φάκελοι μέσα στο /data/data υπάρχουν ίδιοι και στους users με id 0,10...
root@android:/# cd /data/user
root@android:/data/user# ls
0 (Root user - first user)
10 (2nd new user)
root@android:/data/user#cd 0
root@android:/data/user/0#ls
==========================================================================
/storage
- Περιέχει ένα μέρος της εσωτερικής μνήμης χώρου αποθήκευσης για τον χρήστη και
εμφανίζετε ώς sdcard0 (για την αποθήκευση των αρχείων του χρήστη, και διάφοροι φάκελοι
που δημιουργούνται κατά την εγκατάσταση των εφαρμογών)
π.χ. DCIM (φάκελος που δημιουργείται με την εφαρμογή της κάμερας και περιέχει video
και φωτογραφίες που έχει τραβήξει ο χρήστης).
Pictures -> Screenshots , Download, media, backups, RootUninstaller, myDoc.pdf κτλ.
- Περιέχει το directory external_storage και μέσα σε αυτόν εμφανίζει συσκευές όπως
sdcard1 (Εξωτερική micro sd card) και sda1 (Εξωτερικό USB Stick),
είναι οι αποσπώμενοι εξωτερικοί χώροι αποθήκευσης του χρήστη για οτιδήποτε.
- Τo περιεχόμενο του 0 και legacy directories που βρίσκονται μέσα στο emulated είναι το ίδιο
με αυτό του sdcard0.
- Τα directories αυτά είναι mount points των συσκευών χώρου αποθήκευσης.
root@android:/ # cd storage
root@android:/storage # ls
emulated
external_storage
sdcard0
root@android:/storage # cd emulated
root@android:/storage/emulated # ls
0
legacy
root@android:/storage/emulated # cd ..
root@android:/storage # cd external_storage
root@android:/storage/external_storage # ls
sdcard1
sda1
root@android:/storage/external_storage # cd /
root@android:/ #
========================================================================
Σημείωση
Αυτός είναι ο πρώτος τρόπος πρόσβασης στο CLI του λειτουγικού μέσω της εφαρμογής Terminal. Θα ακολουθήσουν άλλοι δύο τρόποι μέσω USB και WiFi με το ADB (Android debug bridge) και επίσης με άλλες δύο αξιόλογες εφαρμογές που θα είναι έκπληξη.
Συντάκτης Master Tech
======================================================================
Μεταβείτε στο tab Tablets για να δείτε το ευρετήριο των αναρτήσεων που αφορά τα Tablet.
Γίνετε μέλη του blog.
Κάθε
ανάρτηση θα είναι ενδιαφέρουσα οπότε κάντε check στο ενδιαφέρον ή
συναρπαστικό στο τέλος της κάθε ανάρτησης και click στο g+1 για να με
προτείνετε στο Google , FB, T Κτλ
Γράψτε σχόλια πώς σας φαίνετε και τι σας αρέσει σε κάθε ανάρτηση και αν σας βοήθησε,
αν έχετε επιπλέον απορίες.
Απαγορεύεται η αντιγραφή αυτού του περιεχομένου, εκτός εάν αναφέρετε την πηγή του Link
All rights reserved
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου