Как запустить подпрограммы с рут-правами на iOS?
С помощью Android SDK я могу запускать процесс как суперпользователь, вызывая su
а затем запустить мой код. Как я могу сделать то же самое на iOS?
Вот что я использую на Android:
// Elevate to root
Process localProcess = Runtime.getRuntime().exec( "su");
// Now run some command as root
DataOutputStream localDataOutputStream = new DataOutputStream( localProcess.getOutputStream());
localDataOutputStream.writeBytes( "chmod 666 file.name\n");
localDataOutputStream.writeBytes( "exit\n");
localDataOutputStream.flush();
Я пробовал следующие команды C, но я получаю сообщение об ошибке, указывающее, что мой пароль неверен.
system( "ls -l /System/Library/TextInput/TextInput_zh.bundle/Keyboard-zh.plist"); // read start permissions
system( "sudo -s alpine | chmod 666 /System/Library/TextInput/TextInput_zh.bundle/Keyboard-zh.plist"); // trying change permissions
system( "ls -l /System/Library/TextInput/TextInput_zh.bundle/Keyboard-zh.plist"); // read changes
Журнал выглядит так:
-rw-r - r-- 1 корневое колесо 7813 16 декабря 10:47 /System/Library/TextInput/TextInput_zh.bundle/Keyboard-zh.plist
chmod: изменение разрешений для `/System/Library/TextInput/TextInput_zh.bundle/Keyboard-zh.plist': операция не разрешена
Мы верим, что вы получили обычную лекцию от местного системного администратора. Обычно это сводится к этим трем вещам:
#1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility.
Пароль:
-rw-r - r-- 1 корневое колесо 7813 16 декабря 10:47 /System/Library/TextInput/TextInput_zh.bundle/Keyboard-zh.plist
Как программно запустить любой скрипт с правами root на iOS? Я ищу ответ, который будет работать на взломанных устройствах, но был бы доволен тем, что также работает на стандартных устройствах, если это возможно.
2 ответа
Одной из основных функций IOS является песочница, которая означает, что приложения находятся в собственной файловой системе, которая не видна другим приложениям. То, что вы хотите сделать, идет вразрез с защитным дизайном IOS.
Если вам нужно разрешить множеству приложений общаться друг с другом и обмениваться данными, есть способы и средства сделать это с помощью общих типов документов, экспортированных UTI и класса DocumentInteraction,
Ваш sudo
команда искажена:
sudo -s alpine | chmod 666 /System/Library/TextInput/TextInput_zh.bundle/Keyboard-zh.plist
Что интерпретируется как:
sudo -s <sudo-command> | <non-sudo-command>
Это пытается запустить alpine
команда с sudo
и передать его вывод в chmod
что не имеет смысла. поскольку chmod
не запускается от имени root, выводит:
chmod: changing permissions of `/System/Library/TextInput/TextInput_zh.bundle/Keyboard-zh.plist': Operation not permitted
We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
И с тех пор sudo
не был предоставлен пароль (-S
аргумент), он запрашивает пароль, выводя:
Password:
Я думаю, что вы намеревались сделать:
echo <password> | sudo -S <command>
Где я полагаю, что вы намеревались использовать alpine
в качестве пароля, который будет:
echo 'alpine' | sudo -S chmod 666 /System/Library/TextInput/TextInput_zh.bundle/Keyboard-zh.plist
Смотрите man(8) sudo для получения дополнительной информации о sudo
,