Отправка данных в интерфейс Linux без использования sudo
Я пытаюсь настроить модульные тесты для моих сетевых сценариев. Поскольку модульные тесты выполняются пользователем без полномочий root (обычно «jenkins»), я хочу иметь возможность настроить сетевой интерфейс, который может использоваться jenkins только для проверки пакетов, отправляемых из моей сети скрипты. Программа, которую я тестирую, использует сетевой интерфейс в «беспорядочном» режиме и, в конечном счете, запускается от имени пользователя root в качестве службы Linux. Тем не менее, я хочу, чтобы функциональный модуль тестировался, не требуя root-входа или интерактивного ввода - пользователь jenkins не является интерактивным пользователем в системе.
Я могу настроить интерфейс подключения (CentOS 7.x) следующим образом:
sudo ip tuntap add tap0 mode tap user jenkins sudo ifconfig tap0 promisc up
Это вызывает интерфейс, который я вижу, используя ifconfig
, но это не «РАБОТАЕТ».
Я могу отправить данные в него, запустив мою программу с помощью sudo XXXX
, так что моя программа работает, как ожидалось. Однако, если я запускаю программу через учетную запись jenkins, пакеты не проходят - я могу временно переключить учетную запись пользователя jenkins на «интерактивную», чтобы попробовать это. Я использую Wireshark для просмотра пропускной способности на этом интерфейсе.
Я пробовал это, используя мою собственную учетную запись пользователя и другие учетные записи, но работает только учетная запись root.
Я чувствую, что есть некоторый вызов командной строки, который я могу использовать, чтобы позволить пользователю без полномочий root использовать (частный, принадлежащий пользователю) сетевой интерфейс, но я ничего не могу найти.
Я мог бы разработать систему с использованием разрешений sudo
и / или suid ( chmod 4755 XXX
), которые позволили бы запускать модульные тесты с привилегиями суперпользователя, но мне кажется, что я должен иметь возможность запускать автоматические тесты без необходимости проходить через этот несколько извилистый процесс.
Кто-нибудь знает, как я могу использовать интерфейс крана из учетной записи пользователя?
Примечание: В конце концов, моя программа использует libpcap
«S, pcap_inject
чтобы ввести пакет в интерфейс.
Кроме того, я могу внедрить пакеты как пользователь без полномочий root в мой реальный сетевой интерфейс, и это работает, но несколько опасно пропускать мои пакеты (которые могут быть ошибочными) в реальную сеть. Кажется неуместным, что пользователь может использовать реальный интерфейс, но не использовать интерфейс «касания» для тестирования.
Если это принципиально невозможно, то есть ли у кого-нибудь предложение, как выполнить модульное тестирование (на одной машине) моего сетевого пакета инъекцией другим способом?
0 ответов на вопрос
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
2
Windows 7 Home Premium запоминает пароли общего доступа к сети?
-
3
Каковы различия между оконными менеджерами Linux?
-
5
Поделитесь XP сетевым подключением без перезагрузки?
-
5
Как мне сказать Windows использовать 802.11 вместо 3G?