Android — в чем разница в разрешениях на обычных и рутированных устройствах

Android — в чем разница в разрешениях на обычных и рутированных устройствах

У меня два телефона на Android, один с root-правами, другой нет. Когда я запускаю следующий код, не спрашивая root-прав на двух телефонах,

system("echo \"abc\" > /data/a.txt\n");

рутированный телефон возвращает мне ошибку-2 (512); обычный телефон возвращает ошибку-1 (256, разрешение отклонено). Так что мой вопрос в том, в чем эта разница.

решение1

По крайней мере, на моем настольном Linux-системе errno 2 — ENOENT, то есть, нет такого файла или каталога. Вы можете узнать это с помощью errnoкоманды (хотя, возможно, на телефоне ее нет).

Это может означать, что у вас нет /data на этом телефоне (что было бы странно). Мой рутированный телефон (Galaxy Nexus, работающий на стоковой Jelly Jean 4.2.2) выдает сообщение об отказе в доступе, когда я пытаюсь сделать это в оболочке (не в программе на C, как вы, судя по всему, делаете)

Предлагаю ls -ld /dataначать, а может и which echoпосмотреть, что там по-другому. Или у вас нет оболочки; работает system("true")?

Связанный контент