You aren't doing anything wrong, and there's nothing to fix. /run/user/$uid/gvfs
or ~$user/.gvfs
is the mount point for the FUSE interface to GVFS. GVFS is a virtual filesystem implementation for Gnome, which allows Gnome applications to access resources such as FTP or Samba servers or the content of zip files like local directories. FUSE is a way to implement filesystem drivers as user code (instead of kernel code). The GVFS-FUSE gateway makes GVFS filesystem drivers accessible to all applications, not just the ones using Gnome libraries.
Managing trust boundaries with FUSE filesystems is difficult, because the filesystem driver is running as an unprivileged user, as opposed to kernel code for traditional filesystems. To avoid complications, by default, FUSE filesystems are only accessible to the user running the driver process. Even root doesn't get to bypass this restriction.
If you're searching for a file on local filesystems only, pass -xdev
to find
. If you want to traverse multiple local filesystems, enumerate them all.
find / /home -xdev -name ngirc
If the file has been present since yesterday, you may try locate ngirc
instead (locate
searches through a file name database which is typically updated nightly).
If you do want to traverse the GVFS mount points, you'll have to do so as the appropriate user.
find / -name ngirc -path '/run/user/*/gvfs' -prune -o -path '/home/*/.gvfs' -prune -o -name ngirc -print
for d in /run/user/*; do su "${d##*/}" -c "find $d -name ngirc -print"; done
find
command line?