возвращаясь к цитате.

>> Socket(2) is restricted to the group range specified in
>> "/proc/sys/net/ipv4/ping_group_range" (or the owner of CAP_NET_RAW).  It
>> is "1 0" by default, meaning that nobody except root may create ping
>> sockets.  Setting it to "100 100" would gain permissions to the single
>> group, "0 65535" would enable it for the world.
>>

попробовал у себя сделать следующий финт ушами по подмене значений в   /proc/sys/net/ipv4/ping_group_range
выставил значения "0 65535" - ничего не поменялось, все так же требует права рута наш пример. Перезагрузил систему - значения сбросились. Более детально решил не капать. Для себя решил, что без прав суперпользователя пинг не получится реализовать.

Я думаю, что разработчики просто сделали требование на права суперпользователя для raw-сокетов, так как их применение потенциально опасно. Напихать в пакет можно что угодно.  На сколько я помню забиндить диапазон портов  <1024  сокетом так же требует прав суперпользователя.  Так же логично, что б стандартные порты сервисов (www,  ssh, ftp) нельзя было слегонца забиндить и выдать себя клиентам за веб-сервер.



22 ноября 2014 г., 0:44 пользователь Ivan Riabtsov <ivriabtsov@gmail.com> написал:
обеими руками за идею с git, хотя не очень умею с ним работать.

22.11.14, Ivan Riabtsov<ivriabtsov@gmail.com> написал(а):
> ну вообще привелегии root нужны, просто обычно /bin/ping с битом Suid:
> $ cd /bin
> ivr@debian:/bin
> $ ll | grep ping
> -rwsr-sr-x 1 root root  36K Apr 12  2011 ping
> -rwsr-xr-x 1 root root  37K Apr 12  2011 ping6
>
>
> 22.11.14, Naydin Andrey<naydinav@gmail.com> написал(а):
>>
>> Привет Alex. Может имеет смысл создать репозиторий на github или еще
>> где. Что б можно было сразу примеры-задачки сливать, собирать, вносить
>> правки. Я это предлагаю в контексте
>>> Кто что думает об этом коде? Что можно улучшить?
>> Что б можно было создавать бранчи с решениям, которые по мнению
>> конкретного взятого разработчика улучшают код. И затем обсуждать.
>> И всегда можно будет в переписке ссылаться на нужный коммит/ветку.
>> Это только предложение. А не условие.
>>
>> Анализируя пристегнутый код письму могу только пока предложить вариант
>> ответа к следующему вопросу
>>> Кто-нибудь может ясно объяснить, почему для корректной работы он
>>> требует права root?
>> Тут я немного схитрил, что б получить ответ.
>> Рута запрашивает на
>>   sd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
>>
>> А стандартный системный ping - нет. Поэтому не долго думая, слил
>> исходники пакета busybox (очень советую скачать всем, кто хочет в полной
>> мере на примере изучать разработку  системного ПО) и начал сравнивать
>> нашей реализации Ping с тем что представлено в нем.
>>
>> Сокет создается там примерно так же. Но идет проверка, что если сокет не
>> создался, то идет проверка на права доступа со следующей припиской.
>> /* We don't have root privileges.  Try SOCK_DGRAM instead.//
>> //         * Linux needs net.ipv4.ping_group_range for this to work.//
>> //         * MacOSX allows ICMP_ECHO, ICMP_TSTAMP or ICMP_MASKREQ//
>> //         *///
>> /Гугл по запросу /ping_group_range
>>
>> Выдал такой результат.
>> /
>>
>> Socket(2) is restricted to the group range specified in
>> "/proc/sys/net/ipv4/ping_group_range" (or the owner of CAP_NET_RAW).  It
>> is "1 0" by default, meaning that nobody except root may create ping
>> sockets.  Setting it to "100 100" would gain permissions to the single
>> group, "0 65535" would enable it for the world.
>>
>>
>>
>>
>>
>>
>
_______________________________________________
Kernel-russian mailing list
Kernel-russian@kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernel-russian