我正在使用网络管理器连接到可公开访问的信息亭计算机上的安全无线网络。
问题是,如果用户设法进入桌面,非 root 用户也可以访问 nm-applet。因此,用户只需右键单击托盘图标,编辑连接设置并以纯文本形式查看无线网络的凭据。
我想要的是小程序在登录时启动(作为非根用户)并连接到互联网。但是当用户单击托盘图标时,它会提示输入 root 密码。
我已经有一段时间没有使用网络管理器了,但在以前的 RedHat 系统上,我记得单击托盘图标时会出现密码提示。我确实在 Centos 存储库上检查了 gksu 和 beesu 程序,但没有看到它们。但是,有一些程序可以执行相同的操作,因为当我单击管理程序时,会出现密码提示。
那么如何在单击 nm-applet 托盘图标时强制输入密码提示呢?
如果不可能,我可以让网络管理器登录无线网络而不启动 nm-applet 吗?
更新:
设法使用 polkit 锁定一些设置/usr/share/polkit-1/actions/
。除了窗口之外,几乎所有内容Edit Connections
似乎都列在相关的 NetworkManager 文件中。所以我只需要找出链接到该窗口的 DBus 消息。我认为它会
org.freedesktop.network-manager-settings.system.modify
在
/usr/share/polkit-1/actions/org.freedesktop.network-manager-settings.system.policy
但改变似乎没有效果。有任何想法吗?
作为解决方法,我只是将应用程序的权限更改nm-connection-editor
为 700。因此普通用户无法编辑自己保存的连接。
进一步更新
上述解决方法可防止用户通过右键单击图标来访问网络凭据,但当连接超时时,将弹出显示网络凭据的窗口。
所以还是没有合适的解决办法。
解决方案 2
因为我无法阻止网络管理员显示凭据。我完全放弃了它,转而使用 dhclient 和 wpa_supplicant 的混合体。无线网络使用没有证书的 PEAP,因此我必须在 wpa_supplicant.conf 中将其列为 LEAP。
wpa_supplicant.conf
network={
ssid="mynetworkname"
scan_ssid=1
key_mgmt=WPA-EAP
eap=LEAP
identity="XXXX"
password="XXXXX"
}
配置 wpa_supplicant 后,我只需:
#bring interface down
ifconfig wlan0 down
#start wpa_supplicant
wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlan0 -Dwext -B
#associate network name with interface
iwconfig wlan0 essid "mynetworkname"
#bring interface back up
ifconfig wlan0 up
#request IP
dhclient -r
dhclient -timeout 1000 wlan0
答案1
我的解释更wicd
相关(因为我前段时间遇到了相反的问题),但快速搜索发现nm-applet
和之间的通信network-manager
基于相同的原理。所以它很可能也适用于这种情况!
nm-applet
通过 与相关守护进程通信dbus
。也许您在 dbus-config 目录中有一个特定的配置用于这两者之间的通信。在 debian 相关系统上,这些应用程序相关的配置文件位于/etc/dbus-1/system.d/
.
您必须调整配置文件,以dbus-daemon
提供参与进程之间的连接。配置文件以应用程序命名,并且是纯 xml。您的案例中感兴趣的元素是<policy>
。在此部分中,您可以调整允许哪些用户/组进行通信以及不允许哪些用户/组进行通信。由于xml
具有易于辨认的优点,因此您可能会快速找到要删除的那些条目。
当然有更好的解释,但现在您有了找到它们所需的关键字。