digitalização iwlist sem privilégios de root

2

Estou escrevendo o aplicativo onde preciso digitalizar uma das interfaces sem fio. No passado, meu programa era executado com sudo e eu usei (no código):

iwlist wlanX scan

Mas agora eu quero permitir a execução de programas sem privilégios de root. Será relativamente seguro se eu alterar os recursos de /sbin/iwlist para cap_net_admin+eip ? Iwlist é apenas para mostrar informações sem fio detalhadas, portanto, um acesso mais amplo a esse comando provavelmente não é muito perigoso, certo?

    
por trivelt 21.11.2014 / 11:25

3 respostas

2

Você pode configurar sudo para que os membros de um grupo possam executar um comando sem uma senha. Use visudo para editar o arquivo sudoers :

# visudo

Adicione algo semelhante a:

%mygroup ALL = (root) NOPASSWD: iwlist wlanX scan

na parte inferior do arquivo (em que mygroup é o nome do seu grupo precedido por um símbolo de porcentagem).

Você também pode permitir que um único usuário execute isso alterando %mygroup para myuser , onde myuser é o nome de usuário (observe a falta de um símbolo de porcentagem).

Você pode permitir que todos os usuários façam a varredura substituindo %mygroup por ALL .

O uso de capabilities permite que cap_net_admin para todos os comandos iwlist usando sudo configurado como acima limita-o a apenas um comando com opções específicas. Isso tem que ser mais seguro.

Outro motivo (geral) é que a configuração de sudo seria mais portável do que usar capabilites , embora isso não seja relevante nesta instância se você estiver apenas usando o Linux.

    
por 21.11.2014 / 13:04
1

Você pode configurar sudo para não solicitar uma senha.

Digite visudo e adicione linhas como esta:

myuser ALL=(root) NOPASSWD: /sbin/iw wlan0 scan
myuser ALL=(root) NOPASSWD: /sbin/iwlist wlan0 scan

ou

%mygroup ALL=(root) NOPASSWD: /sbin/iw wlan0 scan
%mygroup ALL=(root) NOPASSWD: /sbin/iwlist wlan0 scan

Observe que você precisa especificar o caminho completo para iw e que ainda precisa ser executado usando sudo , mas agora não será solicitada sua senha.

sudo iw wlan0 scan

Agradecemos @garethTheRed por parte dessa resposta.

    
por 06.09.2016 / 14:19
0

A solução que encontrei para isso, um one-liner, foi definir o setuid bit no binário que eu queria executar (no meu caso, iwconfig ):

sudo chmod u+s /sbin/iwconfig
    
por 07.06.2017 / 17:11