como posso dar a um usuário normal acesso de gravação a uma interface de rede?

3

Eu tenho um programa que lê e grava pacotes para / de interfaces de rede, e normalmente eu me adicionava no arquivo sudoers e rodava o programa assim:

sudo ./bridge

Mas agora preciso de vários usuários para executar este programa, mas sem dar a eles direitos de sudo, de modo que eles possam executar o programa da seguinte forma:

./bridge

Alguém sabe como posso fazer isso? Estou executando o Scientific Linux 6.1 em uma plataforma de 64 bits.

    
por Claudiu 20.02.2012 / 13:21

3 respostas

1

Adicione uma regra sudo para permitir que o usuário execute seu script. Execute visudo e adicione algo assim ao arquivo sudoers :

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

Note que ele permite que os usuários passem qualquer argumento para o programa /path/to/bridge . Adicione "" no final da linha para proibir a transmissão de quaisquer argumentos.

Para facilitar o gerenciamento de usuários, você pode preferir definir um grupo de usuários com permissão para controlar a ponte. Substitua alice, bill por %bridgers , em que bridgers é o nome do grupo.

Dentro do programa bridge , $SUDO_UID é o ID do usuário que chamou sudo . Se o programa exigir que o usuário esteja na variável USER , escreva um script de shell pequeno que defina USER=$SUDO_UID .

    
por 21.02.2012 / 02:16
3

Você pode restringir sudoers os comandos que podem ser executados com o sudo.

Escreva um pequeno script ./bridge que chama sudo ./real-bridge e dê aos usuários o direito de executar ./real-bridge como root via sudo.

    
por 20.02.2012 / 13:42
2

Não tenho certeza se funciona com dispositivos eth, mas esse pessoal faz com dispositivos tun.

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

Veja - GROUP="mygoodusers", MODE="0660" - nessa linha. Claro que você tem que colocar cada usuário nesse grupo.

udevadm control --reload-rules

mas, até a reinicialização, você precisa chmod / chown manualmente.

    
por 20.02.2012 / 13:35