如何使用 dconf 锁定系统范围的设置

如何使用 dconf 锁定系统范围的设置

我想“锁定” 中的特定键/值组合dconf,以便只有超级用户才能修改该特定设置。为了实现这一点,需要向系统数据库添加“锁”,以便更高级别的数据库(在配置文件中dconf)中列出的等效键/值不能优先。

有关配置文件概念dconf和相关“关键文件”的详细说明,请参阅 Gnome 系统管理员维基百科

来自系统管理员 Wiki:

通过在密钥文件目录 (即:/etc/dconf/db/local.d/locks) 中创建“locks”子目录来支持锁定。此目录中包含的文件包含要锁定的密钥列表,每行一个。

我的密钥文件目录显示为“ibus.d”,而不是示例中的“local.d”:

:/etc/dconf/db/ibus.d$

通过检查dconf个人资料/etc/dconf/profile/ibus,这看起来是正确的:

‘ibus’文件的内容:user-db:user \ system-db:ibus

根据维基百科

  1. 创建适当的密钥文件:

    ==> /etc/dconf/db/ibus.d/00-media-handling ==<

    [org/gnome/desktop/media-handling]

    automount=false

  2. 创建“locks”子目录并添加适当的文件:

    ==> /etc/dconf/db/ibus.d/locks/00_media-handling-lock ==<

    /org/gnome/desktop/media-handling/automount

automount就我而言,我已将架构的密钥设置并锁定org.gnome.desktop.media-handling为“false”。

最后运行sudo dconf update。为了保险起见,我还重启了机器。

连接 USB 驱动器后,预期的行为是设备不会自动挂载。但事实并非如此。如果我连接 USB 驱动器并运行df

/dev/sdb1 983344 192 983152 1% /media/user/xxxx-xxxx

假设是我的错;我已经多次从“零”开始,每次都遵循来自不同来源的(相同)说明,包括本网站提供的示例;示例。每次都无济于事。请问您能指点一下我哪里出错了吗?(Ubuntu 16.04)

答案1

配置文件必须是 /etc/dconf/profile/user

来自 man 7 dconf:

On startup, dconf consults the DCONF_PROFILE environment variable.
If set, dconf will attempt to open the named profile, aborting if that fails.
If the environment variable is not set, it will attempt to open the profile named "user"
and if that fails, it will fall back to an internal hard-wired configuration.

我已经添加了该文件:

cat /etc/dconf/profile/user
user-db:user
system-db:local

然后我将我的锁定文件放入 /etc/dconf/db/local.d/lock

最后我运行 dconf update

由于我使用的是硬连线配置,因此我不得不注销并重新登录。现在一切正常。

相关内容