Bug 216391 - [fusefs] fs mounted with option default_permissions + allow_other not doing permission check as expected
Summary: [fusefs] fs mounted with option default_permissions + allow_other not doing p...
Status: Closed FIXED
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 11.0-RELEASE
Hardware: Any Any
: --- Affects Some People
Assignee: Alan Somers
URL:
Keywords:
Depends on: 236291
Blocks:
  Show dependency treegraph
 
Reported: 2017-01-23 03:13 UTC by hiyorin
Modified: 2021-07-31 09:48 UTC (History)
5 users (show)

See Also:
asomers: mfc-stable12+


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description hiyorin 2017-01-23 03:13:43 UTC
## Environment
# uname -a
FreeBSD bsd_test 11.0-RELEASE-p1 FreeBSD 11.0-RELEASE-p1 #0 r306420: Thu Sep 29 01:43:23 UTC 2016 root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64

Tested on both real hardware and a VirtualBox VM. The VM is a fresh install of default FreeBSD 11.

## Description
According to manual of mount.fuse, mounted filesystem with option "default_permission" should let the OS to do file permission checking using the file mode and "allow_other" should allow access of mounted data by other user.

However it seems the permission check is not working as expected on FreeBSD. I have tried to reproduce it on CentOS7 and it works as expected. 

Note: unionfs is used in How-To-Repeat section as an example only. I also tried encfs and it has the same problem too. Since both of unionfs and encfs seems not implemented any of permission check by itself. I believe it is the problem in the fuse implementation of FreeBSD.


## How-To-Repeat
=> as root user
# cd /_test
# mkdir a
# mkdir b
# echo "1" > a/1
# echo "2" > a/2
# chmod 600 a/1
# mkdir u
# unionfs -o default_permissions,allow_other a=RW:b=RO u
# ll u
total 8
-rw-------  1 root  wheel  2 Jan 18 21:23 1
-rw-r--r--  1 root  wheel  2 Jan 18 21:23 2
# cat a/1
1

# Problem
=> as normal user
% cd /_test
% cat a/1
cat: a/1: Permission denied
% cat u/1
1

# Expected
=> as normal user
% cd /_test
% cat a/1
cat: a/1: Permission denied
% cat u/1
cat: u/1: Permission denied
Comment 1 jpicalau+freebsd_bugzilla 2018-09-23 19:36:01 UTC
I'm seeing the same issue using fuse-sshfs.

I don't actually know anything about the freebsd kernel code, but my best guess, looking at https://svnweb.freebsd.org/base/head/sys/fs/fuse/fuse_internal.c?view=markup&pathrev=330354#l169 , is that default_permission is not actually handled at all. The "/* Let the kernel handle this. */" comment is probably meant as a TODO.
Comment 2 commit-hook freebsd_committer freebsd_triage 2019-03-18 18:05:49 UTC
A commit references this bug:

Author: asomers
Date: Mon Mar 18 18:05:21 UTC 2019
New revision: 345277
URL: https://svnweb.freebsd.org/changeset/base/345277

Log:
  fuse(4): add tests for some mount options.

  This commit adds tests for the default_permissions and push_symlinks_in
  mount options.  It doesn't add tests for allow_other, because I'm not sure
  how that will interact with Kyua (the test will need to drop privileges).
  All of the other mount options are undocumented.

  PR:		216391
  Sponsored by:	The FreeBSD Foundation

Changes:
  projects/fuse2/tests/sys/fs/fuse/Makefile
  projects/fuse2/tests/sys/fs/fuse/access.cc
  projects/fuse2/tests/sys/fs/fuse/default_permissions.cc
  projects/fuse2/tests/sys/fs/fuse/mockfs.cc
  projects/fuse2/tests/sys/fs/fuse/mockfs.hh
  projects/fuse2/tests/sys/fs/fuse/readlink.cc
  projects/fuse2/tests/sys/fs/fuse/utils.cc
  projects/fuse2/tests/sys/fs/fuse/utils.hh
Comment 3 Alan Somers freebsd_committer freebsd_triage 2019-03-21 20:28:15 UTC
Testing this bug will be easier once 236291 is fixed, so I'm marking this bug as blocked by 236291
Comment 4 commit-hook freebsd_committer freebsd_triage 2019-04-10 17:31:06 UTC
A commit references this bug:

Author: asomers
Date: Wed Apr 10 17:31:01 UTC 2019
New revision: 346088
URL: https://svnweb.freebsd.org/changeset/base/346088

Log:
  fusefs: WIP supporting -o default_permissions

  Normally all permission checking is done in the fuse server.  But when -o
  default_permissions is used, it should be done in the kernel instead.  This
  commit adds appropriate permission checks through fusefs when -o
  default_permissions is used.  However, sticky bit checks aren't working yet.
  I'll handle those in a follow-up commit.

  There are no checks for file flags, because those aren't supported by our
  version of the FUSE protocol.  Nor is there any support for ACLs, though
  that could be added if there were any demand.

  PR:		216391
  Reported by:	hiyorin@gmail.com
  Sponsored by:	The FreeBSD Foundation

Changes:
  projects/fuse2/sys/fs/fuse/fuse_internal.c
  projects/fuse2/sys/fs/fuse/fuse_internal.h
  projects/fuse2/sys/fs/fuse/fuse_vnops.c
  projects/fuse2/tests/sys/fs/fusefs/default_permissions.cc
  projects/fuse2/tests/sys/fs/fusefs/destroy.cc
  projects/fuse2/tests/sys/fs/fusefs/lookup.cc
  projects/fuse2/tests/sys/fs/fusefs/setattr.cc
  projects/fuse2/tests/sys/fs/fusefs/unlink.cc
  projects/fuse2/tests/sys/fs/fusefs/utils.cc
  projects/fuse2/tests/sys/fs/fusefs/utils.hh
  projects/fuse2/tests/sys/fs/fusefs/xattr.cc
Comment 5 commit-hook freebsd_committer freebsd_triage 2019-04-11 21:01:26 UTC
A commit references this bug:

Author: asomers
Date: Thu Apr 11 21:00:41 UTC 2019
New revision: 346135
URL: https://svnweb.freebsd.org/changeset/base/346135

Log:
  fusefs: Finish supporting -o default_permissions

  I got most of -o default_permissions working in r346088.  This commit adds
  sticky bit checks.  One downside is that sometimes there will be an extra
  FUSE_GETATTR call for the parent directory during unlink or rename.  But in
  actual use I think those attributes will almost always be cached.

  PR:		216391
  Sponsored by:	The FreeBSD Foundation

Changes:
  projects/fuse2/sys/fs/fuse/fuse_node.h
  projects/fuse2/sys/fs/fuse/fuse_vnops.c
  projects/fuse2/tests/sys/fs/fusefs/default_permissions.cc
  projects/fuse2/tests/sys/fs/fusefs/destroy.cc
  projects/fuse2/tests/sys/fs/fusefs/rename.cc
  projects/fuse2/tests/sys/fs/fusefs/rmdir.cc
  projects/fuse2/tests/sys/fs/fusefs/unlink.cc
Comment 6 Alan Somers freebsd_committer freebsd_triage 2019-04-19 22:31:38 UTC
This is complete on the fuse2 branch.
Comment 7 commit-hook freebsd_committer freebsd_triage 2019-05-01 00:01:22 UTC
A commit references this bug:

Author: asomers
Date: Wed May  1 00:00:50 UTC 2019
New revision: 346979
URL: https://svnweb.freebsd.org/changeset/base/346979

Log:
  fusefs: fix some permission checks with -o default_permissions

  When mounted with -o default_permissions fusefs is supposed to validate all
  permissions in the kernel, not the file system.  This commit fixes two
  permissions that I had previously overlooked.

  * Only root may chown a file
  * Non-root users may only chgrp a file to a group to which they belong

  PR:		216391
  Sponsored by:	The FreeBSD Foundation

Changes:
  projects/fuse2/sys/fs/fuse/fuse_vnops.c
  projects/fuse2/tests/sys/fs/fusefs/default_permissions.cc
  projects/fuse2/tests/sys/fs/fusefs/utils.cc
  projects/fuse2/tests/sys/fs/fusefs/utils.hh
Comment 8 commit-hook freebsd_committer freebsd_triage 2019-05-01 17:25:45 UTC
A commit references this bug:

Author: asomers
Date: Wed May  1 17:24:53 UTC 2019
New revision: 346997
URL: https://svnweb.freebsd.org/changeset/base/346997

Log:
  fusefs: fix a memory leak from r346979

  PR:		216391
  Sponsored by:	The FreeBSD Foundation

Changes:
  projects/fuse2/sys/fs/fuse/fuse_vnops.c
Comment 9 commit-hook freebsd_committer freebsd_triage 2019-05-04 16:28:23 UTC
A commit references this bug:

Author: asomers
Date: Sat May  4 16:27:59 UTC 2019
New revision: 347128
URL: https://svnweb.freebsd.org/changeset/base/347128

Log:
  fusefs: only root may set the sticky bit on a non-directory

  PR:		216391
  Reported by:	pjdfstest
  Sponsored by:	The FreeBSD Foundation

Changes:
  projects/fuse2/sys/fs/fuse/fuse_vnops.c
  projects/fuse2/tests/sys/fs/fusefs/Makefile
  projects/fuse2/tests/sys/fs/fusefs/default_permissions.cc
  projects/fuse2/tests/sys/fs/fusefs/default_permissions_privileged.cc
Comment 10 commit-hook freebsd_committer freebsd_triage 2019-08-07 00:39:43 UTC
A commit references this bug:

Author: asomers
Date: Wed Aug  7 00:38:28 UTC 2019
New revision: 350665
URL: https://svnweb.freebsd.org/changeset/base/350665

Log:
  fusefs: merge from projects/fuse2

  This commit imports the new fusefs driver. It raises the protocol level
  from 7.8 to 7.23, fixes many bugs, adds a test suite for the driver, and
  adds many new features. New features include:

  * Optional kernel-side permissions checks (-o default_permissions)
  * Implement VOP_MKNOD, VOP_BMAP, and VOP_ADVLOCK
  * Allow interrupting FUSE operations
  * Support named pipes and unix-domain sockets in fusefs file systems
  * Forward UTIME_NOW during utimensat(2) to the daemon
  * kqueue support for /dev/fuse
  * Allow updating mounts with "mount -u"
  * Allow exporting fusefs file systems over NFS
  * Server-initiated invalidation of the name cache or data cache
  * Respect RLIMIT_FSIZE
  * Try to support servers as old as protocol 7.4

  Performance enhancements include:

  * Implement FUSE's FOPEN_KEEP_CACHE and FUSE_ASYNC_READ flags
  * Cache file attributes
  * Cache lookup entries, both positive and negative
  * Server-selectable cache modes: writethrough, writeback, or uncached
  * Write clustering
  * Readahead
  * Use counter(9) for statistical reporting

  PR:		199934 216391 233783 234581 235773 235774 235775
  PR:		236226 236231 236236 236291 236329 236381 236405
  PR:		236327 236466 236472 236473 236474 236530 236557
  PR:		236560 236844 237052 237181 237588 238565
  Reviewed by:	bcr (man pages)
  Reviewed by:	cem, ngie, rpokala, glebius, kib, bde, emaste (post-commit
  		review on project branch)
  MFC after:	3 weeks
  Relnotes:	yes
  Sponsored by:	The FreeBSD Foundation
  Pull Request:	https://reviews.freebsd.org/D21110

Changes:
_U  head/
  head/MAINTAINERS
  head/UPDATING
  head/etc/mtree/BSD.tests.dist
  head/sbin/mount_fusefs/mount_fusefs.8
  head/sbin/mount_fusefs/mount_fusefs.c
  head/share/man/man5/fusefs.5
  head/sys/fs/fuse/fuse.h
  head/sys/fs/fuse/fuse_device.c
  head/sys/fs/fuse/fuse_file.c
  head/sys/fs/fuse/fuse_file.h
  head/sys/fs/fuse/fuse_internal.c
  head/sys/fs/fuse/fuse_internal.h
  head/sys/fs/fuse/fuse_io.c
  head/sys/fs/fuse/fuse_io.h
  head/sys/fs/fuse/fuse_ipc.c
  head/sys/fs/fuse/fuse_ipc.h
  head/sys/fs/fuse/fuse_kernel.h
  head/sys/fs/fuse/fuse_main.c
  head/sys/fs/fuse/fuse_node.c
  head/sys/fs/fuse/fuse_node.h
  head/sys/fs/fuse/fuse_param.h
  head/sys/fs/fuse/fuse_vfsops.c
  head/sys/fs/fuse/fuse_vnops.c
  head/sys/sys/param.h
  head/tests/sys/fs/Makefile
  head/tests/sys/fs/fusefs/
Comment 11 commit-hook freebsd_committer freebsd_triage 2019-09-15 04:15:27 UTC
A commit references this bug:

Author: asomers
Date: Sun Sep 15 04:14:33 UTC 2019
New revision: 352351
URL: https://svnweb.freebsd.org/changeset/base/352351

Log:
  MFC the new fusefs driver

  MFC r350665, r350990, r350992, r351039, r351042, r351061, r351066, r351113, r351560, r351961, r351963, r352021, r352025, r352230

  r350665:
  fusefs: merge from projects/fuse2

  This commit imports the new fusefs driver. It raises the protocol level
  from 7.8 to 7.23, fixes many bugs, adds a test suite for the driver, and
  adds many new features. New features include:

  * Optional kernel-side permissions checks (-o default_permissions)
  * Implement VOP_MKNOD, VOP_BMAP, and VOP_ADVLOCK
  * Allow interrupting FUSE operations
  * Support named pipes and unix-domain sockets in fusefs file systems
  * Forward UTIME_NOW during utimensat(2) to the daemon
  * kqueue support for /dev/fuse
  * Allow updating mounts with "mount -u"
  * Allow exporting fusefs file systems over NFS
  * Server-initiated invalidation of the name cache or data cache
  * Respect RLIMIT_FSIZE
  * Try to support servers as old as protocol 7.4

  Performance enhancements include:

  * Implement FUSE's FOPEN_KEEP_CACHE and FUSE_ASYNC_READ flags
  * Cache file attributes
  * Cache lookup entries, both positive and negative
  * Server-selectable cache modes: writethrough, writeback, or uncached
  * Write clustering
  * Readahead
  * Use counter(9) for statistical reporting

  PR:		199934 216391 233783 234581 235773 235774 235775
  PR:		236226 236231 236236 236291 236329 236381 236405
  PR:		236327 236466 236472 236473 236474 236530 236557
  PR:		236560 236844 237052 237181 237588 238565
  Reviewed by:	bcr (man pages)
  Reviewed by:	cem, ngie, rpokala, glebius, kib, bde, emaste (post-commit
  		review on project branch)
  Relnotes:	yes
  Sponsored by:	The FreeBSD Foundation
  Pull Request:	https://reviews.freebsd.org/D21110

  r350990:
  fusefs: add SVN Keywords to the test files

  Reported by:	SVN pre-commit hooks
  MFC-With:	r350665
  Sponsored by:	The FreeBSD Foundation

  r350992:
  fusefs: skip some tests when unsafe aio is disabled

  MFC-With:       r350665
  Sponsored by:   The FreeBSD Foundation

  r351039:
  fusefs: fix intermittency in the default_permissions.Unlink.ok test

  The test needs to expect a FUSE_FORGET operation. Most of the time the test
  would pass anyway, because by chance FUSE_FORGET would arrive after the
  unmount.

  MFC-With:	350665
  Sponsored by:	The FreeBSD Foundation

  r351042:
  fusefs: Fix the size of fuse_getattr_in

  In FUSE protocol 7.9, the size of the FUSE_GETATTR request has increased.
  However, the fusefs driver is currently not sending the additional fields.
  In our implementation, the additional fields are always zero, so I there
  haven't been any test failures until now.  But fusefs-lkl requires the
  request's length to be correct.

  Fix this bug, and also enhance the test suite to catch similar bugs.

  PR:		239830
  MFC-With:	350665
  Sponsored by:	The FreeBSD Foundation

  r351061:
  fusefs: fix the 32-bit build after 351042

  Reported by:	jhb
  MFC-With:	351042
  Sponsored by:	The FreeBSD Foundation

  r351066:
  fusefs: fix conditional from r351061

  The entirety of r351061 was a copy/paste error.  I'm sorry I've been
  comitting so hastily.

  Reported by:	rpokala
  Reviewed by:	rpokala
  MFC-With:	351061
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D21265

  r351113:
  fusefs: don't send the namespace during listextattr

  The FUSE_LISTXATTR operation always returns the full list of a file's
  extended attributes, in all namespaces. There's no way to filter the list
  server-side. However, currently FreeBSD's fusefs driver sends a namespace
  string with the FUSE_LISTXATTR request. That behavior was probably copied
  from fuse_vnop_getextattr, which has an attribute name argument. It's
  been there ever since extended attribute support was added in r324620. This
  commit removes it.

  Reviewed by:	cem
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D21280

  r351560:
  fusefs: Fix some bugs regarding the size of the LISTXATTR list

  * A small error in r338152 let to the returned size always being exactly
    eight bytes too large.

  * The FUSE_LISTXATTR operation works like Linux's listxattr(2): if the
    caller does not provide enough space, then the server should return ERANGE
    rather than return a truncated list.  That's true even though in FUSE's
    case the kernel doesn't provide space to the client at all; it simply
    requests a maximum size for the list.  We previously weren't handling the
    case where the server returns ERANGE even though the kernel requested as
    much size as the server had told us it needs; that can happen due to a
    race.

  * We also need to ensure that a pathological server that always returns
    ERANGE no matter what size we request in FUSE_LISTXATTR won't cause an
    infinite loop in the kernel.  As of this commit, it will instead cause an
    infinite loop that exits and enters the kernel on each iteration, allowing
    signals to be processed.

  Reviewed by:	cem
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D21287

  r351961:
  Coverity fixes in fusefs(5)

  CID 1404532 fixes a signed vs unsigned comparison error in fuse_vnop_bmap.
  It could potentially have resulted in VOP_BMAP reporting too many
  consecutive blocks.

  CID 1404364 is much worse. It was an array access by an untrusted,
  user-provided variable. It could potentially have resulted in a malicious
  file system crashing the kernel or worse.

  Reported by:	Coverity
  Reviewed by:	emaste
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D21466

  r351963:
  fusefs: coverity cleanup in the tests

  Address the following defects reported by Coverity:

  * Structurally dead code (CID 1404366): set m_quit before FAIL, not after

  * Unchecked return value of sysctlbyname (CID 1404321)

  * Unchecked return value of stat(2) (CID 1404471)

  * Unchecked return value of open(2) (CID 1404402, 1404529)

  * Unchecked return value of dup(2) (CID 1404478)

  * Buffer overflows. These are all false positives caused by the fact that
    Coverity thinks I'm using a buffer to store strings, when in fact I'm
    really just using it to store a byte array that happens to be initialized
    with a string. I'm changing the type from char to uint8_t in the hopes
    that it will placate Coverity. (CID 1404338, 1404350, 1404367, 1404376,
    1404379, 1404381, 1404388, 1404403, 1404425, 1404433, 1404434, 1404474,
    1404480, 1404484, 1404503, 1404505)

  * False positive file descriptor leak. I'm going to try to fix this with
    Coverity modeling, but I'll also change an EXPECT to ASSERT so we don't
    perform meaningless assertions after the failure. (CID 1404320, 1404324,
    1404440, 1404445).

  * Unannotated file descriptor leak. This will be followed up by a Coverity
    modeling change. (CID 1404326, 1404334, 1404336, 1404357, 1404361,
    1404372, 1404391, 1404395, 1404409, 1404430, 1404448, 1404451, 1404455,
    1404457, 1404458, 1404460)

  * Uninitialized variables in C++ constructors (CID 1404327, 1404346). In the
    case of m_maxphys, this actually led to part of the FUSE_INIT's response
    being set to stack garbage during the WriteCluster::clustering test.

  * Uninitialized sun_len field in struct sockaddr_un (CID 1404330, 1404371,
    1404429).

  Reported by:	Coverity
  Reviewed by:	emaste
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D21457

  r352021:
  fusefs: suppress some Coverity resource leak CIDs in the tests

  The fusefs tests deliberately leak file descriptors.  To do otherwise would
  add extra complications to the tests' mock FUSE server.  This annotation
  should hopefully convince Coverity to shut up about the leaks.

  Reviewed by:	uqs
  Sponsored by:	The FreeBSD Foundation

  r352025:
  mount_fusefs: fix a segfault on memory allocation failure

  Reported by:	Coverity
  Coverity CID:	1354188
  Sponsored by:	The FreeBSD Foundation

  r352230:
  fusefs: Fix iosize for FUSE_WRITE in 7.8 compat mode

  When communicating with a FUSE server that implements version 7.8 (or older)
  of the FUSE protocol, the FUSE_WRITE request structure is 16 bytes shorter
  than normal. The protocol version check wasn't applied universally, leading
  to an extra 16 bytes being sent to such servers. The extra bytes were
  allocated and bzero()d, so there was no information disclosure.

  Reviewed by:	emaste
  MFC-With:	r350665
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D21557

Changes:
_U  stable/12/
  stable/12/MAINTAINERS
  stable/12/UPDATING
  stable/12/etc/mtree/BSD.tests.dist
  stable/12/sbin/mount_fusefs/mount_fusefs.8
  stable/12/sbin/mount_fusefs/mount_fusefs.c
  stable/12/share/man/man5/fusefs.5
  stable/12/sys/fs/fuse/fuse.h
  stable/12/sys/fs/fuse/fuse_device.c
  stable/12/sys/fs/fuse/fuse_file.c
  stable/12/sys/fs/fuse/fuse_file.h
  stable/12/sys/fs/fuse/fuse_internal.c
  stable/12/sys/fs/fuse/fuse_internal.h
  stable/12/sys/fs/fuse/fuse_io.c
  stable/12/sys/fs/fuse/fuse_io.h
  stable/12/sys/fs/fuse/fuse_ipc.c
  stable/12/sys/fs/fuse/fuse_ipc.h
  stable/12/sys/fs/fuse/fuse_kernel.h
  stable/12/sys/fs/fuse/fuse_main.c
  stable/12/sys/fs/fuse/fuse_node.c
  stable/12/sys/fs/fuse/fuse_node.h
  stable/12/sys/fs/fuse/fuse_param.h
  stable/12/sys/fs/fuse/fuse_vfsops.c
  stable/12/sys/fs/fuse/fuse_vnops.c
  stable/12/sys/sys/param.h
  stable/12/tests/sys/fs/Makefile
  stable/12/tests/sys/fs/fusefs/
  stable/12/tests/sys/fs/fusefs/access.cc
  stable/12/tests/sys/fs/fusefs/allow_other.cc
  stable/12/tests/sys/fs/fusefs/bmap.cc
  stable/12/tests/sys/fs/fusefs/create.cc
  stable/12/tests/sys/fs/fusefs/default_permissions.cc
  stable/12/tests/sys/fs/fusefs/default_permissions_privileged.cc
  stable/12/tests/sys/fs/fusefs/destroy.cc
  stable/12/tests/sys/fs/fusefs/dev_fuse_poll.cc
  stable/12/tests/sys/fs/fusefs/fifo.cc
  stable/12/tests/sys/fs/fusefs/flush.cc
  stable/12/tests/sys/fs/fusefs/forget.cc
  stable/12/tests/sys/fs/fusefs/fsync.cc
  stable/12/tests/sys/fs/fusefs/fsyncdir.cc
  stable/12/tests/sys/fs/fusefs/getattr.cc
  stable/12/tests/sys/fs/fusefs/interrupt.cc
  stable/12/tests/sys/fs/fusefs/io.cc
  stable/12/tests/sys/fs/fusefs/link.cc
  stable/12/tests/sys/fs/fusefs/locks.cc
  stable/12/tests/sys/fs/fusefs/lookup.cc
  stable/12/tests/sys/fs/fusefs/mkdir.cc
  stable/12/tests/sys/fs/fusefs/mknod.cc
  stable/12/tests/sys/fs/fusefs/mockfs.cc
  stable/12/tests/sys/fs/fusefs/mockfs.hh
  stable/12/tests/sys/fs/fusefs/mount.cc
  stable/12/tests/sys/fs/fusefs/nfs.cc
  stable/12/tests/sys/fs/fusefs/notify.cc
  stable/12/tests/sys/fs/fusefs/open.cc
  stable/12/tests/sys/fs/fusefs/opendir.cc
  stable/12/tests/sys/fs/fusefs/read.cc
  stable/12/tests/sys/fs/fusefs/readdir.cc
  stable/12/tests/sys/fs/fusefs/readlink.cc
  stable/12/tests/sys/fs/fusefs/release.cc
  stable/12/tests/sys/fs/fusefs/releasedir.cc
  stable/12/tests/sys/fs/fusefs/rename.cc
  stable/12/tests/sys/fs/fusefs/rmdir.cc
  stable/12/tests/sys/fs/fusefs/setattr.cc
  stable/12/tests/sys/fs/fusefs/statfs.cc
  stable/12/tests/sys/fs/fusefs/symlink.cc
  stable/12/tests/sys/fs/fusefs/unlink.cc
  stable/12/tests/sys/fs/fusefs/utils.cc
  stable/12/tests/sys/fs/fusefs/utils.hh
  stable/12/tests/sys/fs/fusefs/write.cc
  stable/12/tests/sys/fs/fusefs/xattr.cc