É provável que entre em contato com o serviço do Network Manager usando o D-Bus, e o serviço Network Manager seja executado como root.
~ ps -o pid,user,cmd -C NetworkManager
PID USER CMD
894 root /usr/sbin/NetworkManager --no-daemon
No meu sistema, para descobrir a qualidade do sinal wifi conectado, eu teria que executar sudo iwconfig wlp6s0
onde wlp6s0
é o nome da interface do dispositivo que estou usando para conectar ao wifi. A saída não mostra a qualidade do link ou o nível do sinal se eu não executar o comando com sudo
. No entanto, posso obter a força do sinal do Wi-Fi usando nmcli
sem usar sudo
, por exemplo. nmcli dev wifi
.
Executando sudo strace iwconfig wlp6s0
, descobri que ele usa ioctl
chamada do sistema, conforme indicado na linha strace
output:
ioctl(3, SIOCGIWSTATS, 0x7ffd1bd7e960) = 0
Mas acontece que strace nmcli dev wifi
não usa a mesma chamada de sistema para obter a força do sinal wifi ou informações relevantes.
Eu quero saber como nmcli
obtém as informações necessárias para exibir a intensidade do sinal de Wi-Fi sem usar sudo
.
EDIT: Saída de ambos os strace
s:
É provável que entre em contato com o serviço do Network Manager usando o D-Bus, e o serviço Network Manager seja executado como root.
~ ps -o pid,user,cmd -C NetworkManager
PID USER CMD
894 root /usr/sbin/NetworkManager --no-daemon
Eu sou não executando o gerenciador de rede, e /sbin/iw wlan0 station dump
pode mostrar a intensidade do sinal muito bem sem ser raiz.
Se eu fizer um strace
, vejo que ele cria um soquete NETLINK e parece obter os dados desse soquete. Para mais detalhes, suponho que se deve ler a fonte de iw
.
Tags linux wifi strace networkmanager