如何使用 GSettings cmd 获取 root 和其他用户的代理配置

如何使用 GSettings cmd 获取 root 和其他用户的代理配置

我有一个使用 sudo 权限运行的 rpm 包,该应用程序想要获取机器的代理配置(也应该获取用户级别的代理配置),众所周知,我们可以用多种方式设置代理配置。目前,我说的是当您通过系统设置 > 网络设置 > 代理配置代理时

我用gsettings 递归列出 org.gnome.system.proxycmd,它返回值,但这些值特定于当前用户(目前我正在获取当前 root 用户代理配置,因为我使用 sudo 安装了该应用程序)。我想从 root 用户访问中获取每个用户(包括 root 用户)的代理配置。

如果我得到任何针对系统执行的常见查询,那就太好了设置->网络->网络代理并获取 sudo 用户和其他用户的代理配置。如果 GSettings 不支持,请建议其他方法。

答案1

这类似于:

此命令需要目标用户的 dbus 会话,因此简单的 :su username -c "dconf load /"是不够的。但幸运的是,有一个简单的方法可以实现这一点:dconf load 应以 为前缀dbus-launch,即:

sudo su username2 -c "dbus-launch dconf load / < file"

此后唯一的问题是终止 2 个新创建的进程: dbus-daemon& dconf-service,但这是可管理的(它们的父进程是upstart调用命令的用户的进程sudo)。

阿纳托利的评论在我的一个回答中。

事情可能会发生一些变化:

  • 命令翻译为:

    sudo su username2 -c "dbus-launch gsettings list-recursively org.gnome.system.proxy"
    
  • 新创建的进程应为新 systemd init 进程的子进程。具有相同的名称dbus-daemon& dconf-service。使用以下命令进行检查:

    sudo ps -aux | grep ...
    

相关内容