0

作为普通用户,我可以看到我安装的相机gio mount

user@localhost $ gio mount -l
Volume(0): NIKON DSC D3200
  Type: GProxyVolume (GProxyVolumeMonitorGPhoto2)
  Mount(0): NIKON DSC D3200 -> gphoto2://%5Busb%3A002,007%5D/
    Type: GProxyShadowMount (GProxyVolumeMonitorGPhoto2)
Mount(1): NIKON DSC D3200 -> gphoto2://%5Busb%3A002,007%5D/
  Type: GDaemonMount

但是切换到root,它变得不可见

root@localhost $ gio mount -l
Volume(0): Filesystem root
  Type: GUnixVolume
  Mount(0): Filesystem root -> file:///
    Type: GUnixMount

所以以root身份运行脚本,我无法使用以下命令卸载相机,

gio mount -s gphoto2
4

1 回答 1

1

这是因为 GIO 在以 root 身份运行时使用不同的后端来枚举挂载,因为提供(例如)gphoto2 支持的 GVFS 守护进程在用户会话(在 D-Bus 会话总线上)而不是系统范围内运行。所以root不能和他们说话。

以非 root 用户身份运行您的脚本,否则您必须进行一些检查才能让您的脚本显式访问您的 D-Bus 会话总线(但它仅在您的用户会话处于活动状态时才有效)。

您不需要 root 权限来列出或卸载 GIO 挂载:该权限由 polkit 控制,如果默认情况下不允许,您应该获得授权提示。

于 2020-02-27T10:22:42.263 回答