требование корневых привилегий для функций libpcap - PullRequest
2 голосов
/ 03 февраля 2011

pcap_lookupdev() заполняет переменную errbuf при запуске от имени пользователя без полномочий root, а те же функции возвращают значение первого доступного сетевого интерфейса при запуске от имени пользователя root.

Отключает ли этот доступОС или библиотека.Я думаю, что это ОС.Какой правильный ответ?

Это не домашнее задание

Ответы [ 2 ]

6 голосов
/ 03 февраля 2011

В целом, когда дело доходит до доступа к файлам, устройствам и другим службам, предоставляемым ОС, модели доступа в Unix (и, следовательно, в Linux) реализуются в ОС.

Ожидается, что пользовательские программы будут просто пытаться делать то, что они хотят, и изящно обрабатывать любые ошибки, например. информирование пользователя с помощью сообщения.

Это имеет несколько преимуществ:

  • Поддерживаемость: принудительное применение политики доступа остается за ОС и может быть настроено единообразно. Администратор, который хочет ограничить доступ к ресурсу, делает это один раз , вместо того, чтобы настраивать эту библиотеку здесь, а не эту библиотеку там, а затем ...

  • Конфигурируемость: администратор может настроить простую или сложную политику доступа, которая ему нужна, без ограничения каждой реализацией пользовательского пространства.

  • Безопасность. В общем случае программам на пользовательском пространстве нельзя доверять применение политики доступа. Это как если бы волк охранял овец.

EDIT:

В вашем случае pcap требуется низкоуровневый доступ к сетевому интерфейсу. Из-за последствий для безопасности (захват сетевого трафика, создание произвольных сетевых пакетов и т. Д.) Такой доступ ограничен только привилегированными пользователями. В Linux, например, pcap требует, чтобы CAP_NET_RAW возможность была доступна пользователю.

0 голосов
/ 03 февраля 2011

Многие функции pcap требуют прав root для корректной работы. Может ли это быть проблемой?

...