как я могу дать нормальный пользовательский доступ на запись к сетевому интерфейсу?

У меня есть программа, которая считывает и записывает пакеты в / из сетевых интерфейсов, и обычно я добавляю себя в файл sudoers и запускаю программу следующим образом:

sudo ./bridge 

Но теперь мне нужно несколько пользователей для запуска этой программы, но без предоставления им прав sudo, чтобы они могли запускать программу следующим образом:

 ./bridge 

Кто-нибудь знает, как я могу это сделать? Я использую Scientific Linux 6.1 на 64-битной платформе, если это помогает.

Спасибо, Клаудиу

Добавьте правило sudo, чтобы этот пользователь мог запустить ваш скрипт. Запустите visudo и добавьте что-то подобное в файл sudoers :

 Defaults!/path/to/bridge env_reset alice, bill ALL = (root) /path/to/bridge 

Обратите внимание, что он позволяет пользователям передавать любой аргумент программе /path/to/bridge . Добавьте "" в конце строки, чтобы запретить передавать какие-либо аргументы.

Для упрощения управления пользователями вы можете определить группу пользователей, которым разрешено управлять мостом. Замените alice, bill на %bridgers где bridgers называют имя группы.

Внутри программы bridge $SUDO_UID – это идентификатор пользователя, который вызвал sudo . Если программе требуется, чтобы пользователь находился в переменной USER , напишите небольшой сценарий оболочки оболочки, который устанавливает USER=$SUDO_UID .

Вы можете ограничить в sudoers командами, которым разрешено работать с sudo.

Напишите небольшой скрипт ./bridge который вызывает sudo ./real-bridge и дает пользователям право запускать ./real-bridge как root через sudo.

Я не уверен, что он работает с этими устройствами, но эти люди работают с тюнерами.

 $ tail -n1 /etc/udev/rules.d/20-kvm.rules KERNEL=="tun", NAME="net/%k", GROUP="mygoodusers", MODE="0660" 

См. – GROUP = "mygoodusers", MODE = "0660" – на этой строке. Конечно, вы должны поместить каждого пользователя в эту группу.

 udevadm control --reload-rules 

но до перезагрузки вы должны выполнить chmod / chown вручную.