我有一个使用 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 ...