使用 ConsolKit 验证 VNC 会话?

使用 ConsolKit 验证 VNC 会话?

我的橱柜里有一台运行 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

您误解了方式execck-launch-session工作。

  1. 每次ck-launch-session使用都会创建一个新的会话。这意味着您不能将它添加到 Xstartup 的每一行中 – 而是必须使用 启动整个 Xstartup 脚本ck-launch-session

    例如,你可以将脚本重命名xsessionxsession-real,然后像这样运行它:

    exec ck-launch-session ~/.vnc/xsession-real
    
  2. 每次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
    

相关内容