第1轮

第1轮

核心问题是: 任何gnome 会话不在实际的物理/本机显示器上 — — 或者阴影化该显示器(即 NXserver 的阴影模式) — — 具有错误的权限。即使以 root 身份运行!

关于如何修复 VNC/非影子 NX 会话的问题行为,您有什么意见吗?


很长一段时间后,我正在升级我的家用 Ubuntu 无头服务器,遇到了很多问题,我不记得这些问题在以前的 Ubuntu 版本中存在过。

一些细节:

  • 我从 ubuntu-11.04-server-amd64.iso 开始,然后在其上安装了 ubuntu-desktop。
  • uname -a: Linux MiddleEarth 2.6.38-8-server #42-Ubuntu SMP 2011 年 4 月 11 日星期一 03:49:04 UTC x86_64 x86_64 x86_64 GNU/Linux
  • 硬件是 Intel D920、2GB Ram,gfx 是一些无风扇 nvidia 6600、3xGigabit、1x100mbit,没有连接显示器、键盘、鼠标。

第1轮

当我用显示器进行测试/设置时随附的,一切都很顺利,无论是坐在显示器前面还是从我的台式机通过 VNC 连接(进入 vino)时。

如果没有监视器,就会出现问题:

[未解/已放弃]

第一个问题是葡萄酒固执己见,不喜欢在 GDM 之前/期间加载。但由于这是一个无头系统,我实际上并不需要它默认以 X 启动(即更改 init 级别),所以这有点没意义。然而,我清楚地记得这非常容易做到在较旧的 ubuntu 版本中(我认为是 v9.04)。它运行良好;但现在不行了!?... 无论如何,我完全放弃了这个想法。

[解决了]

然后是Unity/effects 混乱 VNC(解决了通过作弊)。

[未解]

我最初切换到 NXserver,希望以下问题可能是 tightvnc 或 vino 问题,但没有那么幸运。(注:请阅读第二轮)

通过 VNC(或 NXserver)进行远程控制时,我的用户帐户失去了挂载/卸载 HDD 的能力。

屏幕截图:无法安装 750GB_RAID1

通过 VNC(或 NXserver)远程控制时,我的用户帐户无法访问某些特权配置选项,
例如:

  • 无法在“系统 -> 管理 -> 用户和组”中执行任何操作(即“添加”用户或“高级设置”)。
  • 无法在“系统 -> 管理 -> 登录屏幕”中使用“解锁”。
  • gparted 无法获取有关文件系统的任何信息。
  • 等等(其他各种管理/配置对话框也无法正常工作)

我只能猜测,这与未连接实际物理监控设备时未正确分配用户权限有关。我不知道
为什么在 ubuntu 11.04 中,当它处于无头状态时会发生这种情况;我不记得在以前的 ubuntu 版本中出现过这种行为。

请注意,对于内置/静态硬盘来说,硬盘安装问题不是问题(我只是将它们添加到 fstab,因为它们无论如何都是静态的)。但对于可移动 USB 介质来说,这确实是一个很大的麻烦。

其余的问题,我还没有想出如何解决...
我知道你在想什么...登录 ssh,sudo su,然后完全在 root 下运行 vncserver?

屏幕截图:(以 root 身份)gparted 无法找到 fs 信息

惊喜!root 的 gui 也坏了:gparted 无法获取信息,用户和组完全变灰(这与我的普通用户的行为不同)。奇怪的是,登录屏幕管理程序似乎运行良好。


第二轮

(注:我不知道这是否对结果产生了影响。在第 1 轮和第 2 轮之间的某个时间点,我应用了第 21 和第 24 号帖子中提到的更改此主题

常规的 tightvnc/NXServer 会话具有相同的行为,但是...

[部分解决/实际问题仍然存在]

在 NXClient 连接设置中,当我选择“阴影”模式(阴影将您附加到本机显示,即桌面阴影)时...

本次会议中一切都进行得很顺利!

我注意到的一件事是,它立即要求我输入密钥环密码...也许整个混乱与 gnome 使用的密钥环系统有关?

但是,如果我使用常规(非影子) NX 连接或常规 vnc,它又会出现同样的问题。

PS 在我编写第 1 轮和第 2 轮之间有几天时间(我将其保存在本地的 txt 文件中)。我测试了各种建议,看看哪种可行,这就是为什么我不知道 xorg.conf VNC 设备编辑或 nomodeset 设置是否会产生影响。

[编辑 2011-06-10]

NXServer 和 GDM

在撰写本文时,我已将系统设置为自动登录,因此影子连接可以正常工作。当我后来禁用该功能并重新启动系统时,NX 出现了错误,但经过一番谷歌搜索,我发现此主题

这些是我对 /usr/NX/etc/server.cfg 所做的取消注释和更改:

EnableAdministratorLogin = "1"
EnableSessionShadowing = "1"
EnableInteractiveSessionShadowing = "1"
EnableSessionShadowingAuthorization = "0"
EnableDesktopSharing = "1"
EnableInteractiveDesktopSharing = "1"
EnableFullDesktopSharing = "1"
EnableAdministratorDesktopSharing = "1"
EnableDesktopSharingAuthorization = "0"
EnableSystemDesktopSharingAuthorization = "0"

(如果它是一个更公共的网络,即大学/大型办公室,我可能会使用更严格的设置,但这些对我来说已经足够了。)

重启后,我使用 nxclient 登录到桌面“阴影”(本机显示)设置并获得了 GDM!:D

不幸的是,剪贴板在“影子”会话中不起作用(它在其他/常规会话中工作正常)

[编辑 2011-06-11]
偶然发现贰伍但像这样使用时也会出现同样的问题:

Xvfb :2 -ac -screen 0 1280x1024x32 -pixdepths 8 24  2>&1 >/dev/null &
export DISPLAY=:2
gnome-session --session=2d-gnome 2>&1 >/dev/null &
x11vnc --display :2 --passwd blahblah

答案1

我找到了罪魁祸首。
在全新安装上测试后,确认这是一个错误。

我提交了一个错误报告

简而言之,问题是:polkit 身份验证对话框将显示在 DISPLAY:0 上,而不是 VNC/NX 会话所在的 DISPLAY:1 上。

解决方法可能是使用 libpam-keyring 在登录时自动进行身份验证。
或者...划掉它,这可能不行,将所有策略工具包设置从“auth_admin”更改为“是”可能会解决问题,当然这会让 policyKit 完全变得毫无意义......

答案2

我认为这是正确的 PolicyKit 行为。

政策积极的不活跃任何其他用户则不同,因此当您通过 NX 连接时,您不会积极的(本地控制台上的活动会话中的客户端),也不不活跃(本地控制台上处于非活动会话中的客户端),但结果却是任何用户。

您可以使用以下命令查看不同类型用户的策略控制下操作的默认策略

pkaction --verbose

如您所见,与活跃用户相比,Any 类型的用户是有限的。

为了补救,您可以修改默认策略。下面建议使用 awk 脚本来创建策略工具包文件并将其放在正确的位置。这是脚本:

#!/usr/bin/awk -f

/^[^ ]/ {
  action = substr($0, 1, length($0) - 1)
}
/^ / {
  if ($1 == "description:") {
    $1 = ""
    description = substr($0, 2)
    if (description == "")
      description = action
  } else if ($1 == "implicit") {
    if ($2 == "any:")
      any = $3
    else if ($2 == "inactive:")
      inactive = $3
    else if ($2 == "active:") {
      active = $3
      print ""
      print "[" description "]"
      print "Identity=unix-group:admin"
      print "Action=" action
      print "ResultActive="   active
      print "ResultInactive=" active
      print "ResultAny="      active
    }
  }
}

假设你将其命名为create-policy。使其可执行,然后使用以下命令执行脚本

pkaction --verbose | ./create-policy > local.pkla 

然后移动生成的文件:

sudo mv local.pkla /var/lib/polkit-1/localauthority/50-local.d/

您现在应该拥有与本地会话用户相同的权利。

答案3

我在 NX 中遇到了类似的问题并发现了以下线索:

为什么使用 NX 时我会获得 Unity 而不是 Classic?

我编辑了我的 Windows NX 客户端,因此桌面设置为 Unix 和自定义,然后将其设置为运行以下命令:

gnome-session --session=classic-gnome

并选择新的虚拟桌面.
之后我就可以出发了。

相关内容