Re: [Network] Простой ICMP запрос
возвращаясь к цитате.
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
participants (1)
-
Андрей Найдин