Как пользователь без полномочий 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)
И это должно работать.