Как пользователь без полномочий root может контролировать сетевой трафик в командной строке?

Я знаю, что gnome-system-monitor может показывать мне пропускную способность даже при открытии пользователем без полномочий root. Но для работы таких инструментов, как iftop, nethogs и т. Д., Требуется root. Как я могу позволить обычному пользователю делать то, что делает gnome-system-monitor? Приложение, для которого я работаю, представляет собой скрипт, который выводит Мбит / с вверх / вниз каждые n секунд, используемый для передачи в строку состояния.

3 ответа

Решение

Данные, которые вы хотите, доступны для всех, на /proc/net/dev, Однако вам придется рассчитывать пропускную способность самостоятельно, принимая дельту и время между двумя значениями.

Имейте в виду, однако, что эти счетчики могут переполниться, в зависимости от архитектуры вашей системы и версии ядра. Переполнение может произойти при 232-1 (достижимы в считанные секунды по Gigabit Ethernet) или 264-1 (практически не имеет значения).

Dir /sys/class/net/${interface}/statistics/ есть все что нужно.

Сценарий BASH основан на этом: check_bandwidth.sh

Предположим, вы говорите о сурках. Мы знаем, что nethogs принадлежит root, если мы ls -l $(which nethogs),

Все, что нам нужно сделать сейчас, это изменить бит SUID так, чтобы при запуске nethogs он работал с разрешениями своего владельца (т.е. root). Бежать:

sudo chmod u+s $(which nethogs)

И это должно работать.

Другие вопросы по тегам