Код: Выделить всё
Permission deniedКод: Выделить всё
online_socket = socket(AF_INET, SOCK_DGRAM, 0);
Обратите внимание, что ошибка возникает еще до привязки сокета.
Я думаю, есть некоторые настройки безопасности, которые необходимо настроить. ? Кто-нибудь может сказать мне, где искать?
В данном случае ОС на самом деле является Android, но я думаю, что проблема действительно связана с Linux (поскольку Android основан на ядро Linux).
Для тех, кому интересно: это специальная программа, работающая в полном (
Код: Выделить всё
debootstrapОбновление
Я узнал, что ядро Android имеет специальное расширение CONFIG_ANDROID_PARANOID_NETWORK, которое разрешает доступ к сети только пользователям в группах AID_INET и AID_NET_RAW.
Однако даже после добавления пользователя в эти группы вызов socket() по-прежнему отклоняется (и ping, похоже, имеет ту же проблему, кстати).
Код: Выделить всё
uid=5(imp) gid=51(imp) groups=51(imp),3003(aid_inet),3004(aid_net_raw),3005(aid_admin),3001(aid_bt),3002(aid_bt_net)
Обновление 2
Я обнаружил, что оба root и также мои непривилегированные пользователь имп может на самом деле успешно вызвать метод socket() - по крайней мере, с настройкой групп, описанной выше.
Однако вызов того же процесса от имени пользователя root и последующее переключение на имп с помощью
Код: Выделить всё
seteuid()Подробнее здесь: https://stackoverflow.com/questions/364 ... nied-error
Мобильная версия