TL;DR:已经发现了一些可能性,但是文档留下了太多未解答的问题,使我无法自信地部署它们。
我想在我们网络上的用户工作站上推出一些强制性的 GConf 设置。经过一番调查,似乎有几种更改强制性设置的选项,但每种选项都让我对如何正确应用这些设置存疑。
gconf-editor
- 方法:从 GUI 运行
gksudo gconf-editor
并选择文件 > 新建强制窗口。 - 优点:
- 绝对有效:这是我过去在较小的安装上使用过的方法。
- 缺点:
- 不是自动化的,所以不是一个真正的选择。
- 在大量设置的情况下扩展性较差。
gconftool-2
- 方法:
gconftool-2
使用 '--config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory
' 选项调用。 - 优点:
- 可以实现自动化。
- 缺点:
- 关于旗帜的使用,显然存在矛盾的指示
--direct
。 - (次要)每个单独的设置都需要单独的命令。
- 关于旗帜的使用,显然存在矛盾的指示
/etc/gconf/gconf.xml.mandatory/
- 方法:直接修改/创建下面的文件
/etc/gconf/gconf.xml.mandatory/
。 - 优点:
- 与我们现有的文件分发基础设施非常契合。
- 能很好地适应大量设置。
- 缺点:
- 似乎不是官方支持的方法。
- 不清楚如何避免不安
gconfd
。 - 停止/重新启动的包装脚本
gconfd
可能会导致用户问题。
GNOME 文档提供了一些例子所有人gconftool-2
都使用--direct
标志。然而,手册页说--direct
标志“要求 gconfd 未运行”。这与此场景无关吗(我将以 root 身份运行,而不是以登录用户身份运行),或者我是否需要检测是否gconfd
正在运行并相应地传递/不传递该标志?
我理想情况下希望/etc/
直接同步文件,但我找不到任何迹象表明守护进程可能对此做出响应(例如,它们是否会拾取不一致的设置,或者需要重新启动)。将文件更新夹在停止/重新启动命令之间gconfd
应该可以避免守护进程本身出现问题,但我想这可能会对活动用户会话造成严重破坏。
有更多 GConf 经验的人能否澄清这些问题,或提供他们使用的方法的详细信息?我们正在运行 Ubuntu 12.04 LTS,但我很高兴听到在任何平台上运行的解决方案。
答案1
考虑到您的要求,我会选择添加设置/etc/gconf/gconf.xml.mandatory
(我假设您使用的是 puppet、chef 或类似的东西)。您需要注销用户并停止 gconfd(gconftool-2 --shutdown
;它通常在注销后仍会运行几分钟)以使设置更改生效。