LINUX.ORG.RU

Operation not permitted - как лечить?

 liboping


0

1

Использую liboping для отправки ICMP пакетов пингования из своей программы. На строке if(ping_host_add(pingobj, host_name.c_str())) break; условие выполняется и пинг не работает :(

ping_get_error говорит что «Operation not permitted»

Есть ли способ чтобы на компе пользователю было разрешено слать ICMP пакеты? Правильно ли я понимаю что проблема связана именно с правами оступа для текущего юзера?

ls -l /bin/ping
-rwsr-xr-x 1 root root 34248 Окт 14 2010 /bin/ping

видиш флажок s ?
грубо говоря - простым пользователям это запрешено вообще

ae1234 ★★
()
Ответ на: комментарий от lazyklimm

а в системных каких-то разрешениях это можно настроить? в группую какую-нибудь добавить или еще что-то сделать? я же могу от пользователя просто ping запустить, а мой софт чем хуже? :)

это в принципе можно настроить или обойти каким-либо образом?

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Дать вашей программе chown root:wheel, а потом chmod ug+s.

[arrest@zoidberg ~]$ cat test.c 
#include <stdio.h>
#include <unistd.h>

int main(int argc, char* argv[]){
	int uid = geteuid(); //effective uid
	printf("%d\n", uid);
	return 0;
}
[arrest@zoidberg ~]$ gcc -otest test.c 
[arrest@zoidberg ~]$ ./test 
1001
[arrest@zoidberg ~]$ sudo chown root:wheel test
[arrest@zoidberg ~]$ sudo chmod ug+s test
[arrest@zoidberg ~]$ ./test
0

Arrest
()
Ответ на: комментарий от Arrest

Правда это будет потенциальная дыра в безопасности. Если в вашей программе будет какая-нибудь уязвимость типа переполнения буфера, то злоумышленник-юзер сможет получить root-привилегии.

KivApple ★★★★★
()
Ответ на: комментарий от KivApple

о, тогда памятник ему при жизни раз с тачскрина хакнул комп :)

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от Arrest

sudo chown root:wheel test

что тут «wheel»? название группы? я указал свою

когда я сделал sudo chmod ug+s - эта программа в упор не хочет видеть .so-шку, которая по LD_LIBRARY_PATH - перестала видеть, возможно не только одну .so на которой споткнулось, но и другие такие те что LD_LIBRARY_PATH от текущего пользователя видятся

и это при том что ldd всё видит - ЧЯДНТ? :)

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от KivApple

добавляя к выше написанному, я заметил что если запускать эту прогу, которая хочет посылать ICMP пакеты, из под sudo - она точно так же не видит мои локальные *.so-шки те что я по LD_LIBRARY_PATH гружу

а если вообще сделать sudo su то зарабатываю вот что:

No protocol specified
No protocol specified
v4l2_client: cannot connect to X server :0

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Это не баг, это фича - сами представьте, что могло бы произойти, можно было бы подсунуть произвольную библиотеку в контекст приложения, работающего от другого пользователя, в том числе root.

Вам остается лишь делать симлинки на нужные библиотеки в стандартных местах поиска библиотек. Ну или линковать статически.

Arrest
()
Ответ на: комментарий от Arrest

понял... стало быть fping мое решение в данной ситуации, его легко распарсить

I-Love-Microsoft ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.