Gibt es eine Möglichkeit, die aktuelle WLAN-SSID ohne Root-Berechtigung zu erhalten?linux: Wie bekomme ich Wireless SSID ohne Root-Berechtigung?
iwconfig sagt mir ESSID, aber nur wenn ich es als root ausführen.
Gibt es eine Möglichkeit, die aktuelle WLAN-SSID ohne Root-Berechtigung zu erhalten?linux: Wie bekomme ich Wireless SSID ohne Root-Berechtigung?
iwconfig sagt mir ESSID, aber nur wenn ich es als root ausführen.
Wenn Sie einen Blick auf den Quellcode des nehmen iwconfig
(wireless_tools), werden Sie diese Zeile sehen:
iwconfig.c:639: if(iw_get_ext(skfd, ifname, SIOCGIWESSID, &wrq) < 0)
Diese Linie ist für die get von ESSID (wireless.h). Und ich denke, dass nur root Berechtigungen (out of the Box), dies zu tun, so die Funktion iw_get_ext
(definiert in iwlib.h
von wireless_tools
Paket), die ioctl
aufrufen wird EPERM
(Operation not permitted
) zurückgeben.
/*------------------------------------------------------------------*/
/*
* Wrapper to extract some Wireless Parameter out of the driver
*/
static inline int
iw_get_ext(int skfd, /* Socket to the kernel */
const char * ifname, /* Device name */
int request, /* WE ID */
struct iwreq * pwrq) /* Fixed part of the request */
{
/* Set device name */
strncpy(pwrq->ifr_name, ifname, IFNAMSIZ);
/* Do the request */
return(ioctl(skfd, request, pwrq));
}
Sie haben 2 Lösungen:
die setuid
Verwenden Sie dem Benutzer zu ermöglichen iwconfig
Befehl zu verwenden:
sudo chmod u+s /sbin/iwconfig
Sie können auch mit etwas Hacking zu tun versuchen, die CAP_NET_ADMIN
Fähigkeit, die bestimmte Fähigkeiten für einen bestimmten Benutzer ermöglichen. Hier einige Links zu CAP_NET_ADMIN
:
http://packetlife.net/blog/2010/mar/19/sniffing-wireshark-non-root-user/
http://www.lids.org/lids-howto/node48.html
http://lwn.net/Articles/430462/
Schließlich können Sie strace
verwenden, um alle Systemaufrufe zu verfolgen und zu bestätigen, dass ioctl
Anruf Dort sponsible hierfür:
als root
dies tun:
#strace /sbin/iwconfig your_interface_name > strace_iwconfig_root.log
Und die gleichen wie normaler Benutzer:
$strace /sbin/iwconfig your_interface_name > strace_iwconfig_normal.log
und die Ergebnisse vergleichen.
Großartig! chmod u + s oder machen etwas mit CAP_NET_ADMIN und CAP_NET_ADMIN beide funktionieren sehr gut. Vielen Dank! – npcode
@npcode: ok danke, gern geschehen. – TOC
Sie können das umgehen, wenn 'network-manager' auf dem System installiert ist. Dann kannst du (abhängig von der Version) 'nm-tool' oder' nmctl' verwenden. Meine Geolocation-Bibliothek hat Beispielcode, siehe: https://github.com/privatwolke/geolocation –
Was passiert, wenn Sie es als normaler Benutzer ausführen? Welche Linux-Distribution verwenden Sie? Auch finden Sie [unix.se] eine geeignetere Seite für solche Fragen. –