更改主机名会扰乱系统和桌面环境(如 KDE、Gnome 等)...我该怎么做才能允许它发生?

更改主机名会扰乱系统和桌面环境(如 KDE、Gnome 等)...我该怎么做才能允许它发生?

很久以前,我开始用 C++ 开发某种隐身模式恶魔。其中一部分是仅以 root 身份运行,另一部分是将主机名更改为随机生成的主机名。我经历过,对我的主机名的任何更改(通过虚拟终端或通过我的 Stealthdemon 或通过 dhcp 功能)都会以某种方式扰乱系统。一个例子是,突然间所有 KDE 应用程序都无法启动,无论是通过快捷方式还是通过单击都无法启动。如果我将主机名重置为原始主机名,那么一切似乎都很完美。

我的问题是:

  1. 通过 bash 发出主机名时还会调用什么?
  2. 在 c/c++ 代码中发出主机名时还会调用什么?
  3. 奇怪行为的原因是什么? (虽然我猜想,xorg 或 kde 本身可能以某种方式链接到旧主机名,但在更改后它们不再链接)
  4. 可以做什么来保持系统稳定,但仍然允许通过 shell 或代码更改主机名?

提前谢谢。

答案1

  1. X auth 文件(~/.Xauthority/tmp/xauth-*等)包含系统主机名。如果它与实际主机名不同(如 所示hostname(1)),X 应用程序将不会启动。

就我而言,它打印“未指定协议无法连接到显示器:0”。但将 X auth 文件中的主机名更改为实际值可以解决问题。 (我使用十六进制编辑器来测试它;好吧,应该有更好的方法来改变它)

答案2

我在 KDE 4.13.3 上也遇到了同样的问题。我做了很多事情来修复它(有些可能是多余的,但这绝对对我有用)。当 KDE 未运行时,您可能必须从命令行执行这些操作。

  1. 删除.Xauthority主目录中的文件。
  2. 转到.kde主目录中的文件夹。
  3. 重命名cache-<your old hostname>cache-<your new hostname>.
  4. 重命名socket-<your old hostname>socket-<your new hostname>.
  5. 重命名tmp-<your old hostname>tmp-<your new hostname>.删除该目录中的所有文件。
  6. .kde目录中导航至.kde/share/config/.删除所有kwin*文件,例如使用rm kwin*.
  7. 在同一目录中删除该session目录。

重新启动 X 服务器(或计算机),KDE 应该可以工作。

相关内容