Chaning permissão do dispositivo sem fio wlan0

0

Eu quero poder alterar a permissão do wlan0 para que eu possa usar o tcpdump para ouvi-lo sem me elevar para o root.

Atualmente:

tcpdump -i wlan0

dá:

tcpdump: wlan0: You don't have permission to capture on that device

quando faço:

sudo tcpdump -i wlan0 

funciona como esperado.

    
por user130349 24.05.2013 / 04:05

1 resposta

1

Uma pequena explicação: não é o dispositivo wlan0 que está impedindo você de capturá-lo como um usuário não-root. Este é o comportamento do kernel e é por razões de segurança. É a mesma razão pela qual você não pode fazer dd if=/dev/zero of=/dev/sda como um usuário não-root; isso limparia seu disco rígido. Dito isso, existem maneiras de substituir o comportamento padrão do kernel (ah, a beleza do Linux) para obter a funcionalidade que você deseja.

Você pode fazer uma das duas coisas:

Eu recomendaria editar seu arquivo sudoers para não exigir uma senha para que você possa sudo tcpdump -i wlan0 sem exigir que uma senha seja inserida todas as vezes. Ao editar o arquivo sudoers, você garante que você e somente você são capazes de fazer isso e todos os outros usuários do sistema serão excluídos.

Para fazer isso:

sudo visudo

Em seguida, adicione as seguintes linhas ao arquivo:

Cmnd_Alias TCPDUMP_WLAN0 = /usr/bin/tcpdump -i wlan0
[username] ALL= NOPASSWD: TCPDUMP_WLAN0 #Be sure to replace [username] with your username

Isso ainda requer que você digite "sudo" todas as vezes, mas você pode definir um alias de bash para isso também, de modo que tudo que você fizer é digitar tcpdump e executar sudo tcpdump -i wlan0 . Para fazer isso, basta editar o arquivo ~ / .bashrc e adicionar a linha: alias tcpdump="/usr/bin/tcpdump -i wlan0"

Usar o arquivo sudoers é a maneira mais consciente de fazer as coisas. Agora, se você é realmente inflexível sobre não usar sudo what-so-ever, então eu vou te dar o que você quiser. No entanto, o comando a seguir concederá a todos os usuários a capacidade de executar este programa com os recursos necessários, portanto, não há controle de usuário preciso.

Tenha em mente que isso não foi testado, mas deve funcionar. Se não, eu tenho uma terceira solução abaixo.

sudo setcap cap_net_admin+ep /usr/bin/tcpdump

Finalmente, se isso não funcionar, você pode setuid no próprio arquivo. O que isto faz é que ele executa o programa como o proprietário do arquivo (neste caso, root). Como acima, qualquer um que execute este arquivo se tornará root para executá-lo. Você só deve usar isso como último recurso e somente se confiar plenamente que o programa não é explorável e que não pode, de forma alguma, ser usado como alavanca para comprometer seu sistema.

sudo chmod u+s /usr/bin/tcpdump
    
por Chuck R 24.05.2013 / 05:10