![尽管设置了 polkit 策略,但网络管理器中的权限不足](https://linux22.com/image/1334254/%E5%B0%BD%E7%AE%A1%E8%AE%BE%E7%BD%AE%E4%BA%86%20polkit%20%E7%AD%96%E7%95%A5%EF%BC%8C%E4%BD%86%E7%BD%91%E7%BB%9C%E7%AE%A1%E7%90%86%E5%99%A8%E4%B8%AD%E7%9A%84%E6%9D%83%E9%99%90%E4%B8%8D%E8%B6%B3.png)
当以普通用户身份运行时,nm-applet 不允许我选择无线网络,提示“权限不足”。但我已经编辑了 polkot 策略文件
/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy
对所有事情都使用 <allow_any>yes</allow_any>。为了更加确定,我还使用了 <allow_active>yes</allow_active> 和 <allow_inactive>yes</allow_inactive>。
所有这些都是在 Fedora 17(polkit-0.104、NetworkManager-0.9.4)上,没有运行 gnome3,只有 gnome-settings-daemon。
polkitd、dbus-daemon 和 dbus-launch 都在运行。可能是什么原因?
答案1
正如关联,在OP的评论中列出:
解决方案在这里:blog.falconindy.com/articles/… 通过 startx 和 polkit 手动启动 X 并不酷 :) 但是你说“startx -- vt01”,那么一切都会好起来。 – Daniel 2012 年 10 月 19 日 15:54
当用户X
从控制台启动服务器时,如果startx
不带任何参数,则经过身份验证的会话可能会出现许多问题;显然,新终端是通过 Xserver 会话启动的,其中控制台会话中建立的身份验证不会“转移”到新创建的 X 会话。
由于这种“身份验证丢失”,非特权用户不允许“与特权进程对话”和/或请求身份验证。
建议的解决方法是从控制台启动X
服务器,并将当前 VT 编号作为参数传递,例如:
xinit -- vt01
这将导致在同一终端(使用经过身份验证的会话)内xinit
启动服务器,而不是启动新的 TTY。X
同样,根据对此的评论参考文章,systemd-logind
将适当的 vt 放入环境变量中$XDG_VTNR
;因此,可以创建一个简短的脚本,或者alias
通过包含以下内容来促进正确的 xinit 进程
exec /usr/bin/X -nolisten tcp vt$XDG_VTNR "$@"
笔记
根据博客文章, Arch-linux 的版本xorg-xinit
自 起默认包含此行xorg-xinit-1.3.2-3
blog.falconindy.com