Android - root-права и другие особенности

всё относительно мобильных гаджетов и приложений

Модераторы: Olej, adminn, vikos

Правила форума
Все сообщения не по теме форума будут, без каких либо уведомлений, удаляться, а их авторы - убираться из регистрации.
Язык сообщений - исключительно русский.
Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Android - root-права и другие особенности

Непрочитанное сообщение Olej » 04 сен 2012, 14:37

Вопрос такой:
1. как управлять правами записи в каталоги Android?
2. как добавлять туда необходимые файлы? (не приложения Android, а файлы Linux)

Вопрос переплыл вот отсюда: Подключение модемов напрямую через PPP при помощи скриптов.
dmitriev писал(а): И там и там файловая система RO.

Несколько лет назад, когда в моде был Knoppix, c ним было то же самое (RO). Но там легко побеждалось командой

Код: Выделить всё

# mount -o remount rw /dev/X
И далее:
dmitriev писал(а):
Olej писал(а): вам его нужно поместить в /system/bin Android, а для этого вам нужен adb ...
Скажите, пожалуйста, прежде чем я начну осваивать adb, а нужно ли иметь права root'a на планшете, для применения к нему adb (добавление файлов в системные директории)?
Вот с этого и начнём плясать...
А почему тема так "заумно" названа: не только root-права, но и ещё какие-то другие загадочные "особенности".
А потому, что разбирательство это обязательно затронет попутные вопросы:
- особенности иерархии файловой системы Android...
- как туда отображаются NAND, SD-карты, USB-накопители...
- как (какими приёмами) переносить файлы между Android и Linux...
И т.д.
Не заводить же под всё это отдельные темы? ;-)

dmitriev
Писатель
Сообщения: 461
Зарегистрирован: 12 янв 2009, 19:36
Контактная информация:

Re: Android - root-права и другие особенности

Непрочитанное сообщение dmitriev » 04 сен 2012, 14:56

У меня получается порочный круг: мне нужна adb чтобы зарутить планшет, а для программы adb нужны права root...
потому как для меня это само по себе поинтереснее будет, чем PPP и т.п.
Это радует, так как подает надежду на разрешение задачи!
# mount -o remount rw /dev/X
Это я наврал, на самом деле так:

Код: Выделить всё

# mount -o remount,rw /dev/X

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Android - root-права и другие особенности

Непрочитанное сообщение Olej » 04 сен 2012, 15:17

dmitriev писал(а):У меня получается порочный круг: мне нужна adb чтобы зарутить планшет, а для программы adb нужны права root...
у adb есть такой параметр запуска:

Код: Выделить всё

$ adb root 

dmitriev писал(а): Это я наврал, на самом деле так:

Код: Выделить всё

# mount -o remount,rw /dev/X
Только хотел написать, вот я проделал:

Код: Выделить всё

# su -
su -
# busybox mount -o remount,rw /system
busybox mount -o remount,rw /system
# echo 12345 > /system/XXX
echo 12345 > /system/XXX
# ls -l  /system/XXX
ls -l  /system/XXX
-rw-rw-rw- root     root            6 2012-09-04 03:16 XXX
- меняется /system на RW + записывается туда файл.

Сделайте и покажите сюда на вашей железке

Код: Выделить всё

# mount | grep /dev/block

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Android - root-права и другие особенности

Непрочитанное сообщение Olej » 04 сен 2012, 15:22

dmitriev писал(а):У меня получается порочный круг: мне нужна adb чтобы зарутить планшет, а для программы adb нужны права root...
Вообще-то, я пока не понимаю, что значит "зарутить планшет"?
При входе из adb на моём планшете имеем:

Код: Выделить всё

# busybox whoami
busybox whoami
whoami: unknown uid 0
uid = 0 - это и есть root.
Кроме того, беспарольно:

Код: Выделить всё

# su -
su -

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Android - root-права и другие особенности

Непрочитанное сообщение Olej » 04 сен 2012, 15:45

Olej писал(а): Только хотел написать, вот я проделал:

Код: Выделить всё

# busybox mount -o remount,rw /system
busybox mount -o remount,rw /system
Большую путаницу создаёт то, что у вас есть (почти наверняка) 2 набора команд, являющихся аналогами GNU shell + утилит:
1. toolbox
2. busybox

toolbox:

Код: Выделить всё

# ls -l /system/bin | grep toolbox
ls -l bin | grep toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 ifconfig -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 umount -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 id -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 renice -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 mkdir -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 ls -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 getprop -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 setconsole -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 cmp -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 ioctl -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 log -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 vmstat -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 wipe -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 rm -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 sync -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 top -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 uptime -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 dmesg -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 rmmod -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 ln -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 mv -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 getevent -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 df -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 date -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 chown -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 hd -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 newfs_msdos -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 setprop -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 reboot -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 start -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 sleep -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 mount -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 notify -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 chmod -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 sendevent -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 ps -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 printenv -> toolbox
-rwxr-xr-x root     shell       73228 2010-10-12 13:32 toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 smd -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 netstat -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 dd -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 schedtop -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 lsmod -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 watchprops -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 stop -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 route -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 kill -> toolbox
lrwxr-xr-x root     shell             2010-10-12 13:32 cat -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 insmod -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 iftop -> toolbox
lrwxr-xr-x root     shell             2010-10-12 12:18 rmdir -> toolbox
Все команды являются ссылками, кроме 1-й - toolbox.

busybox:

Код: Выделить всё

# ls -l /system/bin | grep busybox
ls -l /system/bin | grep busybox
lrwxr-xr-x root     shell             2010-10-12 12:18 unzip -> busybox
-rwxr-xr-x root     shell     1745016 2010-09-20 05:43 busybox
lrwxr-xr-x root     shell             2010-10-12 12:18 grep -> busybox
lrwxr-xr-x root     shell             2010-10-12 12:18 cp -> busybox
lrwxr-xr-x root     shell             2010-10-12 12:18 vi -> busybox
lrwxr-xr-x root     shell             2010-10-12 12:18 tar -> busybox
Все те же команды, что и toolbox, может выполнять busybox:

Код: Выделить всё

# busybox
busybox
BusyBox v1.8.1 (2007-11-14 10:11:37 EST) multi-call binary
Copyright (C) 1998-2006 Erik Andersen, Rob Landley, and others.
Licensed under GPLv2. See source distribution for full notice.

Usage: busybox [function] [arguments]...
   or: [function] [arguments]...

        BusyBox is a multi-call binary that combines many common Unix
        utilities into a single executable.  Most people will create a
        link to busybox for each function they wish to use and BusyBox
        will act like whatever it was invoked as!

Currently defined functions:
        [, [[, addgroup, adduser, adjtimex, ar, arp, arping, ash,
        awk, basename, bunzip2, bzcat, bzip2, cal, cat, catv,
        chattr, chgrp, chmod, chown, chpasswd, chpst, chroot,
        chrt, chvt, cksum, clear, cmp, comm, cp, cpio, crond,
        crontab, cryptpw, cut, date, dc, dd, deallocvt, delgroup,
        deluser, df, dhcprelay, diff, dirname, dmesg, dnsd, dos2unix,
        du, dumpkmap, dumpleases, echo, ed, egrep, eject, env,
        envdir, envuidgid, ether-wake, expand, expr, fakeidentd,
        false, fbset, fdflush, fdformat, fdisk, fgrep, find, fold,
        free, freeramdisk, fsck, fsck.minix, ftpget, ftpput, fuser,
        getopt, getty, grep, gunzip, gzip, halt, hdparm, head,
        hexdump, hostid, hostname, httpd, hwclock, id, ifconfig,
        ifdown, ifup, inetd, init, insmod, install, ip, ipaddr,
        ipcalc, ipcrm, ipcs, iplink, iproute, iprule, iptunnel,
        kbd_mode, kill, killall, killall5, klogd, last, length,
        less, linux32, linux64, linuxrc, ln, loadfont, loadkmap,
        logger, login, logname, logread, losetup, ls, lsattr,
        lsmod, lzmacat, makedevs, md5sum, mdev, mesg, microcom,
        mkdir, mkfifo, mkfs.minix, mknod, mkswap, mktemp, modprobe,
        more, mount, mountpoint, mt, mv, nameif, nc, netstat,
        nice, nmeter, nohup, nslookup, od, openvt, passwd, patch,
        pgrep, pidof, ping, ping6, pipe_progress, pivot_root,
        pkill, poweroff, printenv, printf, ps, pscan, pwd, raidautorun,
        rdate, readlink, readprofile, realpath, reboot, renice,
        reset, resize, rm, rmdir, rmmod, route, rpm, rpm2cpio,
        run-parts, runlevel, runsv, runsvdir, rx, sed, seq, setarch,
        setconsole, setkeycodes, setlogcons, setsid, setuidgid,
        sh, sha1sum, slattach, sleep, softlimit, sort, split,
        start-stop-daemon, stat, strings, stty, su, sulogin, sum,
        sv, svlogd, swapoff, swapon, switch_root, sync, sysctl,
        syslogd, tail, tar, taskset, tcpsvd, tee, telnet, telnetd,
        test, tftp, time, top, touch, tr, traceroute, true, tty,
        ttysize, udhcpc, udhcpd, udpsvd, umount, uname, uncompress,
        unexpand, uniq, unix2dos, unlzma, unzip, uptime, usleep,
        uudecode, uuencode, vconfig, vi, vlock, watch, watchdog,
        wc, wget, which, who, whoami, xargs, yes, zcat, zcip
Но это совершенно разные команды:

Код: Выделить всё

# toolbox mount --help
toolbox mount --help
unknown option -- -mount: invalid option --

Код: Выделить всё

# busybox mount --help
busybox mount --help
BusyBox v1.8.1 (2007-11-14 10:11:37 EST) multi-call binary

Usage: mount [flags] DEVICE NODE [-o options,more-options]

Mount a filesystem. Filesystem autodetection requires /proc be mounted.

Options:
        -a              Mount all filesystems in fstab
        -r              Read-only mount
        -t fs-type      Filesystem type
        -w              Read-write mount (default)

-o option:
        loop            Ignored (loop devices are autodetected)
        [a]sync         Writes are asynchronous / synchronous
        [no]atime       Disable / enable updates to inode access times
        [no]diratime    Disable / enable atime updates to directories
        [no]dev         Allow use of special device files / disallow them
        [no]exec        Allow use of executable files / disallow them
        [no]suid        Allow set-user-id-root programs / disallow them
        [r]shared       Convert [recursively] to a shared subtree
        [r]slave        Convert [recursively] to a slave subtree
        [r]private      Convert [recursively] to a private subtree
        [un]bindable    Make mount point [un]able to be bind mounted
        bind            Bind a directory to an additional location
        move            Relocate an existing mount point
        remount         Remount a mounted filesystem, changing its flags
        ro/rw           Mount for read-only / read-write

There are EVEN MORE flags that are specific to each filesystem
You'll have to see the written documentation for those filesystems
1-й не умеет remount, а 2-й умеет!
но 1-й вызывается по дефаулту (через ссылку), а 2-й нужно вызывать явно.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Android - root-права и другие особенности

Непрочитанное сообщение Olej » 04 сен 2012, 15:57

Olej писал(а): Вообще-то, я пока не понимаю, что значит "зарутить планшет"?
У меня тут пока другая напасть вылезла ... при запуске adb из комплекта SDK Android:

Код: Выделить всё

[olej@nvidia platform-tools]$ ./adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
????????????	no permissions
bash-4.2$ ./adb version
Android Debug Bridge version 1.0.29
Это на той железке, где несколько месяцев назад (до каких-то переустановок) всё работало ОК.

И я вам открою такой небольшой секрет ;-) : всё показанное выше с adb получено в ... Windows XP, запуском adb.exe, взятом по указке вот отсюда: http://kenzo.net.od.ua/droid/.
До такого (зайти в Windows XP) можно только от очень большого отчаяния :lol: :twisted:
... но это значит, что с самим планшетом всё ОК, и придётся разбираться что происходит ... а это замедлит все разборки с root.

Вот это же устройство (Android):

Код: Выделить всё

c:\Distribut\X5A\root_X5A>adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
0123456789ABCDEF        device
c:\Distribut\X5A\root_X5A>adb version
Android Debug Bridge version 1.0.26 (NILEZON X-MOD)
P.S. Или они там (в SDK) с версиями перемудрили?

dmitriev
Писатель
Сообщения: 461
Зарегистрирован: 12 янв 2009, 19:36
Контактная информация:

Re: Android - root-права и другие особенности

Непрочитанное сообщение dmitriev » 04 сен 2012, 16:10

Код: Выделить всё

app_58@android:/ $ su -
su: uid 10058 not allowed to su
Это по вопросу о root.

Код: Выделить всё

app_58@android:/ $ mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/mtdblock8 /system ext3 ro,noatime,nodiratime,barrier=0,data=ordered 0 0
/dev/block/mtdblock6 /data ext3 rw,nosuid,nodev,noatime,nodiratime,errors=continue,barrier=0,data=ordered 0 0
/dev/block/mtdblock5 /cache ext3 rw,nosuid,nodev,noatime,nodiratime,errors=continue,barrier=0,data=ordered 0 0
/sys/kernel/debug /sys/kernel/debug debugfs rw,relatime 0 0
/dev/block/vold/179:1 /mnt/external_sd vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block/vold/31:9 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block/vold/31:9 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
А это по поводу mount, решил дать вам полный вывод для полноты картины.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Android - root-права и другие особенности

Непрочитанное сообщение Olej » 04 сен 2012, 16:22

Olej писал(а):P.S. Или они там (в SDK) с версиями перемудрили?
Пойду по-другому ;-) :

- Fedora 17:

Код: Выделить всё

bash-4.2$ yum list all android-*
...
Доступные пакеты
android-tools.i686                             20120510gitd98c87c-1.fc17                              updates

Код: Выделить всё

bash-4.2$ sudo yum install android-*
...
Выполнено!
New leaves:
  android-tools.i686

Код: Выделить всё

bash-4.2$ which adb
/usr/bin/adb
bash-4.2$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
0123456789ABCDEF	device
Цирк! ;-)

Но!
- Fedora 15:

Код: Выделить всё

[olej@nvidia ~]$ yum list all android-*
...
Ошибка: Совпадений среди пакетов не найдено
Так что, похоже, пакетно включили SDK только в самых последних версиях дистрибутивов, а так - нужно ставить из оригинального SDK ... да оно и к лучшему. ;-)

dmitriev
Писатель
Сообщения: 461
Зарегистрирован: 12 янв 2009, 19:36
Контактная информация:

Re: Android - root-права и другие особенности

Непрочитанное сообщение dmitriev » 04 сен 2012, 16:32

Код: Выделить всё

$ which adb
/bin/adb

Код: Выделить всё

$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
ничего не найдено!

Вот как примонтировался планшет:

Код: Выделить всё

$ ls /run/media/ya/OYSTERST8A4
Alarms   dk.pihl.portal  launcher  mount.txt  Notifications  Ringtones
Android  documents       LOST.DIR  Movies     Pictures
DCIM     Download        media     Music      Podcasts
Наверное, это и есть ответ на вопрос "Что такое рутованный планшет". У меня не рутованный.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Android - root-права и другие особенности

Непрочитанное сообщение Olej » 04 сен 2012, 16:45

Olej писал(а): 1-й не умеет remount, а 2-й умеет!
но 1-й вызывается по дефаулту (через ссылку), а 2-й нужно вызывать явно.
А вот уж совсем любопытно - это после перезагрузки Android и из Linux:

Код: Выделить всё

bash-4.2$ adb root
adbd is already running as root
bash-4.2$ adb devices
List of devices attached 
0123456789ABCDEF	device

Код: Выделить всё

bash-4.2$ adb shell
# pwd
/
# cd system
# ls -l XXX*
-rw-rw-rw- root     root            6 2012-09-04 04:18 XXXX
# mount | grep /dev/block
/dev/block/mtdblock2 /system yaffs2 ro 0 0
/dev/block/mtdblock5 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock4 /cache yaffs2 rw,nosuid,nodev 0 0
/dev/block/ndda1 /nand vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
# 
- т.е. созданный ранее файл /system/XXXX - как был, на месте...
- но сам /system смонтирован опять RO.

Ответить

Вернуться в «Android»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей