В общем случае, когда речь заходит о доступе к файлам, устройствам и другим услугам, предоставляемым ОС, модели доступа в Unix (и, таким образом, Linux) реализованы в ОС.
Ожидается, что программы пользовательского пространства просто попробуют все, что они хотят, и грациозно обработать любое условие ошибки, например. информируя пользователя с сообщением.
Это имеет ряд преимуществ:
ремонтопригодность: применение политики доступа остается с операционной системой и может быть настроен равномерно. Администратор, который хочет, чтобы ограничить доступ к ресурсу, делает это раз, вместо того, чтобы настроить эту библиотеку здесь, чем эта библиотека есть, то ...
Конфигурируемости: Администратор может настроить в качестве простого или сложного апа политики доступа, в которых они нуждаются, не ограничиваясь каждой реализацией пользовательского пространства.
Безопасность: Программе пользовательского доступа вообще не следует доверять обеспечению политики доступа. Это было бы похоже на то, что волка охраняет овец.
EDIT:
В вашем случае, pcap
необходим низкоуровневый доступ к сетевому интерфейсу. Из-за последствий безопасности (захват сетевого трафика, создание произвольных сетевых пакетов и т. Д.) Такой доступ ограничивается только привилегированными пользователями. В Linux, например, pcap
нуждается в CAP_NET_RAW
capability, который будет доступен для пользователя.
Ну, это точно мой вопрос. Зачем ему нужны привилегии _root_? Во всяком случае, это ответ, я должен сказать, довольно красиво, по thkala –