如何以 root 身份卸载 gphoto2 设备
How to unmount gphoto2 device as root
作为普通用户,我可以通过 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
这是因为当 运行以 root 身份运行时,GIO 使用不同的后端来枚举挂载,因为提供(例如)gphoto2 支持的 GVFS 守护进程在用户会话中(在D-Bus 会话总线)而不是系统范围的。所以 root 无法与他们交谈。
运行 你的脚本是非 root 用户,否则你将不得不做一些管道来让你的脚本显式访问你的 D-Bus 会话总线(但只有当你的用户会话处于活动状态)。
你不需要 root 权限来列出或卸载 GIO 挂载:它的权限由 polkit 控制,如果默认情况下不允许,你应该得到一个授权提示。
作为普通用户,我可以通过 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
这是因为当 运行以 root 身份运行时,GIO 使用不同的后端来枚举挂载,因为提供(例如)gphoto2 支持的 GVFS 守护进程在用户会话中(在D-Bus 会话总线)而不是系统范围的。所以 root 无法与他们交谈。
运行 你的脚本是非 root 用户,否则你将不得不做一些管道来让你的脚本显式访问你的 D-Bus 会话总线(但只有当你的用户会话处于活动状态)。
你不需要 root 权限来列出或卸载 GIO 挂载:它的权限由 polkit 控制,如果默认情况下不允许,你应该得到一个授权提示。