socket: Operation not permitted

Причина

Читаем man:

      Under Linux:
              You  must  be  root  or tcpdump must be installed setuid to root
              (unless your distribution has a kernel that supports  capability
              bits such as CAP_NET_RAW and code to allow those capability bits
              to be given to particular accounts and to cause those bits to be
              set  on  a  user’s  initial processes when they log in, in which
              case  you   must  have  CAP_NET_RAW  in  order  to  capture  and
              CAP_NET_ADMIN  to  enumerate  network devices with, for example,
              the -D flag).

Т.е., пользователь должен быть root'ом, или процесс должен иметь флаг совместимости CAP_NET_RAW.

Решение

Версии: Ubuntu 9.04/Jaunty, libcap2-bin-2.11-2.

Выполняем:

$ sudo aptitude install libcap2-bin
$ sudo setcap 'cap_net_raw=ep' /usr/sbin/tcpdump

Проверяем:

$ getcap /usr/sbin/tcpdump
/usr/sbin/tcpdump = cap_net_raw+ep
$ tcpdump -n
...

В пакет libcap2-bin также входит модуль для PAM - pam_cap.so. При его использовании флаги совместимости можно задавать на уровне пользователей в файле /etc/security/capability.conf (пример конфигурации находится в /usr/share/doc/libcap2-bin/examples/capability.conf).

Дискуссия

Enter your comment
 
 
soft/tcpdump/socket_operation_not_permitted.txt · Последние изменения: 16.11.2009 21:26 (внешнее изменение)
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
наращивание ресниц, имидж-студиях .
покер на деньги