
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 sudo
para executar o ifconfig
comando, apenas certifique-se de que /sbin
esteja no seu PATH .
como um usuário sem privilégios execute:
export PATH=$PATH:/sbin
ifconfig
Responder3
Para novos usuários do Linux; o pacote
sudo
fornece 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.O programa
ifconfig
tem 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.ifconfig
está protegido por outro programa chamadonetdevice
. Este programa fornece acesso de baixo nível a dispositivos de rede Linux. Verman netdevice
. O erro que foi lançadoSIOCSIFFLAGS: Permissão negadaé porque o programaifconfig
está marcado como privilegiado e requer um ID de usuário efetivo de 0 ('root' <==> 'uid=0') ou aCAP_NET_ADMIN
capacidade. Se não for o caso,EPERM
será devolvido.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 queEPERM
é, temos que lerman setuid
. OEPERM
erro é gerado quando o usuário não é privilegiado (Linux: não tem capacidadeCAP_SETUID
) E o uid não corresponde ao UID real ou ao set-user-ID salvo do processo de chamada.Não é possível simplesmente adicionar o seu ‘nome de usuário’ ao grupo ‘root’. Exemplo para distros Ubuntu:
sudo adduser username root
não fornecerá o UID 0 necessário para passar em todas as verificações de segurançanetdevice
exigidas. Sevisudo
estiver disponível no sistema, pode-se ver que a entradaDefaults secure_path=""
não inclui um caminho para o programanetdevice.h
. Portanto, é improvável que a modificação das permissões sudo (usandovisudo
) doifconfig
programa resulte no desvio do controle de segurança fornecido pelonetdevice
.
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 sudo
privilégios. O sudo chmod 4755 /sbin/ifconfig
comando é uma maneira simples de modificar seu sistema de forma que um script de inicialização como esse ifconfig eth0 down
possa 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.