我的橱柜里有一台运行 Fedora 16 的 Linux 机器。它没有屏幕或键盘。我使用 vnc 和 ssh 的组合来连接它。
最近,更新后,我在机器上遇到了身份验证问题。
如果我通过 vnc 连接到它,kde 桌面每隔几分钟就会弹出一个错误对话框,提示Authorization failed. Failed to obtain authentication.
如果我插入 USB 驱动器,则无法安装,Dolphin 会再次报告身份验证问题。
我在寻找解决方案方面取得的成功有限。据我所知,这是因为 ConsoleKit 认为我是非本地用户,因此阻止了身份验证。
这是的输出ck-list-sessions
:
$ ck-list-sessions
Session5:
unix-user = '1000'
realname = 'steve'
seat = 'Seat6'
session-type = ''
active = FALSE
x11-display = ':1'
x11-display-device = ''
display-device = ''
remote-host-name = ''
is-local = FALSE
on-since = '2012-09-16T08:07:03.137011Z'
login-session-id = '1'
我已尝试更新我的.vnc/xstartup
脚本以包含ck-launch-session
以下内容:
$ cat ~/.vnc/xstartup
#!/bin/sh
exec ck-launch-session vncconfig -iconic &
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
export XKL_XMODMAP_DISABLE=1
OS=`uname -s`
if [ $OS = 'Linux' ]; then
case "$WINDOWMANAGER" in
*gnome*)
if [ -e /etc/SuSE-release ]; then
PATH=$PATH:/opt/gnome/bin
export PATH
fi
;;
esac
fi
if [ -x /etc/X11/xinit/xinitrc ]; then
exec ck-launch-session /etc/X11/xinit/xinitrc
fi
if [ -f /etc/X11/xinit/xinitrc ]; then
exec ck-launch-session sh /etc/X11/xinit/xinitrc
fi
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
exec ck-launch-session xsetroot -solid grey
exec ck-launch-session xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
exec ck-launch-session twm &
这并没有帮助。
我怎样才能向 ConsoleKit 验证自己的身份,或者欺骗它相信我是本地用户?
答案1
您误解了方式exec
和ck-launch-session
工作。
每次
ck-launch-session
使用都会创建一个新的会话。这意味着您不能将它添加到 Xstartup 的每一行中 – 而是必须使用 启动整个 Xstartup 脚本ck-launch-session
。例如,你可以将脚本重命名
xsession
为xsession-real
,然后像这样运行它:exec ck-launch-session ~/.vnc/xsession-real
每次
exec
使用时,它取代当前进程与新进程。如果脚本调用exec xsetroot
,则脚本的其余部分将不会被执行。这意味着您必须仅将其用于最后一个命令。&
(注意:当使用时这不适用。foo &
和exec foo &
是等效的;它们仅替换创建的子进程&
。)#!/bin/sh vncconfig -iconic & unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS export XKL_XMODMAP_DISABLE=1 OS=`uname -s` if [ $OS = 'Linux' ]; then case "$WINDOWMANAGER" in *gnome*) if [ -e /etc/SuSE-release ]; then PATH=$PATH:/opt/gnome/bin export PATH fi ;; esac fi if [ -x /etc/X11/xinit/xinitrc ]; then exec /etc/X11/xinit/xinitrc elif [ -f /etc/X11/xinit/xinitrc ]; then exec sh /etc/X11/xinit/xinitrc fi [ -r ~/.Xresources ] && xrdb ~/.Xresources xsetroot -solid grey xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & exec twm