Execute ifconfig sem sudo

Execute ifconfig sem sudo

Eu tenho um Linux embarcado rodando em uma plataforma imx6. Este é um Linux embarcado em escala livre. O problema é que não existe sudo disponível para este linux, mas preciso ativar e desativar o dispositivo wlan0 por um usuário. Tentei adicionar o usuário à raiz do grupo sem sucesso. Também tentei adicionar o comando inteiro ao arquivo /etc/busybox.conf, mas também não teve efeito.

Como posso executar este comando como usuário sem ter o sudo?

user@touch:~$ /sbin/ifconfig eth0 down
SIOCSIFFLAGS: Permission denied

Responder1

Se qualquer usuário não root for confiável para fazer isso, você pode simplesmente adicionar um sinalizador setuid em ifconfig exec:

chmod 4755 /sbin/ifconfig

Ele concederá privilégios de root para execução deste executável a qualquer pessoa. Claro, você precisa ter acesso root para executar o chmod.

Responder2

Você não precisa usar sudopara executar o ifconfigcomando, apenas certifique-se de que /sbinesteja no seu PATH .

como um usuário sem privilégios execute:

export PATH=$PATH:/sbin
ifconfig

Responder3

  1. Para novos usuários do Linux; o pacote sudofornece a um usuário sem privilégios um número predefinido de minutos para fazer coisas no sistema que somente o Administrador do Sistema ('root' == 'uid=0') pode fazer.

  2. O programa ifconfigtem muitos problemas de segurança associados a sistemas operacionais Linux que estão em servidores públicos. Para servidores desktop e domésticos que possuem conexões KVM, não exigem acesso SSH e não desejam conectividade com a Internet 24 horas por dia, 7 dias por semana, este programa possui requisitos de segurança mais baixos.

  3. ifconfigestá protegido por outro programa chamado netdevice. Este programa fornece acesso de baixo nível a dispositivos de rede Linux. Ver man netdevice. O erro que foi lançadoSIOCSIFFLAGS: Permissão negadaé porque o programa ifconfigestá marcado como privilegiado e requer um ID de usuário efetivo de 0 ('root' <==> 'uid=0') ou a CAP_NET_ADMINcapacidade. Se não for o caso, EPERMserá devolvido.

  4. Para descobrir o que CAP_NET_ADMINé, temos que lercapacidades(7) — Página de manual do Linux. A informação importante aqui é "CAP_NET_ADMIN: Execute várias operações relacionadas à rede, como configuração de interface". Para descobrir o que EPERMé, temos que ler man setuid. O EPERMerro é gerado quando o usuário não é privilegiado (Linux: não tem capacidade CAP_SETUID) E o uid não corresponde ao UID real ou ao set-user-ID salvo do processo de chamada.

  5. Não é possível simplesmente adicionar o seu ‘nome de usuário’ ao grupo ‘root’. Exemplo para distros Ubuntu: sudo adduser username rootnão fornecerá o UID 0 necessário para passar em todas as verificações de segurança netdeviceexigidas. Se visudoestiver disponível no sistema, pode-se ver que a entrada Defaults secure_path=""não inclui um caminho para o programa netdevice.h. Portanto, é improvável que a modificação das permissões sudo (usando visudo) do ifconfigprograma resulte no desvio do controle de segurança fornecido pelo netdevice.

Supondo que você não esteja executando um servidor público, a resposta fornecida por @tonioc é a maneira mais fácil de ligar e desligar as interfaces de uma distribuição Linux (como o Ubuntu que habilita automaticamente todas as interfaces Ethernet após uma reinicialização) sem usar sudoprivilégios. O sudo chmod 4755 /sbin/ifconfigcomando é uma maneira simples de modificar seu sistema de forma que um script de inicialização como esse ifconfig eth0 downpossa desligar uma interface (sem inserir uma senha). Para desktops/servidores que possuem redes de intranet e de Internet conectadas (multi-NIC), é fundamental para a segurança que as redes de Internet permaneçam desligadas quando não forem necessárias.

informação relacionada