【问题标题】:How to unmount gphoto2 device as root如何以 root 身份卸载 gphoto2 设备
【发布时间】:2020-02-26 23:48:01
【问题描述】:

作为普通用户,我可以通过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

【问题讨论】:

    标签: mount gio libgphoto2


    【解决方案1】:

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

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

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

    【讨论】:

    • 为什么切换到普通用户,GIO 检测不到变化? sudo -i -u user bash << EOF > whoami > gio mount -l > EOF user Volume(0): Filesystem root Type: GUnixVolume Mount(0): Filesystem root -> file:/// Type: GUnixMount
    • 如果您通过sudo 启动用户会话,D-Bus 会话总线可能没有启动。
    • 谢谢!我需要export $(dbus-launch) 来启动 D-Bus;现在gio 拿起gphoto2 相机。但是如何连接到登录用户的 D-Bus 会话?
    • 以用户身份而不是 root 身份运行您的进程。你为什么要以 root 身份运行它?
    猜你喜欢
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 2013-08-15
    • 2021-12-03
    • 2019-01-29
    • 2012-11-05
    相关资源
    最近更新 更多