在Ubuntu中定义的Nautilus中使用的这些特殊URI在哪里?
recent:///
trash:///
x-nautilus-desktop:///
computer:///
burn:///
通过在路径栏中输入特殊位置,它们可以立即在Nautilus中打开特殊位置。
为什么当我以根用户身份打开Nautilus时,这些功能不起作用(这是我第一次看到根用户没有权限执行某项操作时)?
在Ubuntu中定义的Nautilus中使用的这些特殊URI在哪里?
recent:///
trash:///
x-nautilus-desktop:///
computer:///
burn:///
通过在路径栏中输入特殊位置,它们可以立即在Nautilus中打开特殊位置。
为什么当我以根用户身份打开Nautilus时,这些功能不起作用(这是我第一次看到根用户没有权限执行某项操作时)?
Answers:
编辑经过更多的挖掘之后,我发现您可以以root身份启动nautilus并使用dbus来访问特殊的URI。该命令将是
sudo dbus-launch nautilus
然后,所有URI都可用。坦白地说,我并不是100%可以这样做,但我在下面发现的一些原始信息可能仍然会有所帮助。
这些URI存在的原因是因为Nautilus使用了一个称为Gnome虚拟文件系统(gvfs)的虚拟文件系统,该文件系统建立在另一个名为FUSE的虚拟文件系统之上。具体来说,这些URI是在/usr/lib/gvfs/
名为gvfsd- * 的目录中配置的。这些是二进制文件,因此请勿尝试对其进行编辑。
使用Nautilus挂载Samba共享时,它会使用gvfsd-mount命令(存储在中/usr/bin
)来挂载您指定的共享。然后将共享安装在/run/user/<UID>/gvfs/
您的用户ID所在的位置(对于单用户系统,通常为1000)。
至于root能够使用这些URI,Ubuntu和我假设其他发行版都配置了保险丝,以便出于安全原因root不能使用虚拟文件系统。您会发现该/run/user
文件夹中的root用户没有0目录。/etc/fuse.conf
默认情况下,该文件未配置为允许root用户访问。这意味着,如果您的用户装载共享,则即使没有配置Fuse允许共享,root用户也无法查看共享。
我还没有实际测试过授予对Fuse文件系统或特殊URI的根访问权限,但是您可能很幸运如本链接中所述配置它,或者通读Fuse手册页。
对不起,RTFM答案,但是我找不到一个确定的解决方案,它取决于您所使用的Ubuntu版本,因为某些目录/命令在最新版本中已更改。
数量不多,但适合所有人:
在终端或按Alt + F2键:
gksudo dbus-launch nautilus computer:///
在根系统上,您不需要“ gksudo”或“ dbus-launch”
一些例子:
computer:/// - objects for each mounted device, plus the network
network:/// - available networks to browse
burn:/// - a virtual folder for burning data CDs/DVDs
smb:/// - available windows/samba network resources
x-nautilus-desktop:/// - desktop objects and icons
file:/// - local files
trash:/// - local trash directory
themes:/// - displays all the themes that are available in the GNOME Desktop
fonts:/// - shows fonts
recent:/// - shows recent files
另一方面,该站点显示了如何为在firefox和gnome上运行的脚本或程序创建URI。有一个很酷的示例脚本,您可以根据需要将其用作参考。
x-nautilus-desktop
未在/usr/lib/gvfs/
其他地方定义/配置并浪费时间吗?我使用Ubuntu 13.10,没有调用gvfsd-x-nautilus-desktop
in的文件/usr/lib/gvfs/
,但是此URI(x-nautilus-desktop:///
)仍然有效。从此开始,也许我可以找到一种定义新URI的方法。这是我的最终目标...