comment puis-je donner à un user normal l'access en écriture à une interface réseau?

J'ai un programme qui lit et écrit les packages vers / depuis les interfaces réseau, et normalement je me rappendais dans le file sudoers et lancerais le programme comme ceci:

sudo ./bridge 

Mais maintenant, j'ai besoin de plusieurs users pour exécuter ce programme, mais sans leur donner de droits sudo, afin qu'ils puissent exécuter le programme comme ceci:

 ./bridge 

Est-ce que quelqu'un sait comment puis-je accomplir ceci? Je cours Scientific Linux 6.1 sur une plate-forme 64 bits, si cela aide.

Merci, Claudiu

Ajoutez une règle sudo pour permettre à cet user d'exécuter votre script. Exécutez visudo et ajoutez quelque chose comme ceci au file sudoers :

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

Notez que son permet aux users de passer n'importe quel argument au programme /path/to/bridge . Ajouter "" à la fin de la ligne pour interdire de passer des arguments.

Pour faciliter la gestion des users, vous pouvez préférer définir un groupe d'users autorisés à contrôler le pont. Remplacez alice, bill par %bridgersbridgers est le nom du groupe.

Dans le programme de bridge , $SUDO_UID est l'ID user de l'user qui a appelé sudo . Si le programme requirejs que l'user soit dans la variable USER , écrivez un petit script shell wrapper qui définit USER=$SUDO_UID .

Vous pouvez limiter dans sudoers les commands autorisées à s'exécuter avec sudo.

Écrivez un petit script ./bridge qui appelle sudo ./real-bridge et donnez aux users le droit d'exécuter ./real-bridge en tant que root via sudo.

Je ne suis pas sûr si cela fonctionne avec des périphériques eth, mais ces gens le font avec des appareils tun.

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

Voir – GROUP = "mygoodusers", MODE = "0660" – sur cette ligne. Bien sûr, vous devez mettre chaque user dans ce groupe.

 udevadm control --reload-rules 

mais jusqu'au redémarrage, vous devez chmod / chown manuellement.