aboutsummaryrefslogtreecommitdiff
path: root/util
AgeCommit message (Collapse)Author
2019-12-31Make ioctl prototype conditional on FUSE_USE_VERSION. (#482)Bill Zissimopoulos
Define FUSE_USE_VERSION < 35 to get old ioctl prototype with int commands; define FUSE_USE_VERSION >= 35 to get new ioctl prototype with unsigned int commands. Fixes #463.
2019-09-15Whitelist UFSD (#451)tenzap
2019-07-09Install init script in /etc/ instead of $sysconfdirNikolaus Rath
sysconfdir defaults to /usr/local/etc which is almost always the wrong choice. Fixes: #427
2019-07-04Add build option to skip steps requiring root permissionsDrDaveD
2019-06-15Fix build with IGNORE_MTAB (#425)Michael Forney
chdir_to_parent and check_is_mount are used by should_auto_mount, added in fuse-3.3.0, regardless of whether IGNORE_MTAB is defined.
2019-05-05add defines for missing SECBITs on older kernels (#409)DrDaveD
2019-04-03Whitelist smb2 (#392)Peter Lemenkov
See also https://bugzilla.redhat.com/1694552#c7 Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
2019-03-09Add HFS+ to filesystem whitelist (#347)1c7718e7
2019-03-09Correctly include config.h ("" vs <>)Nikolaus Rath
This isn't a system header. Fixes: #349
2019-03-08fusermount: drop privileges for chdir()Sam Huffman
cd to mountpoint's parent directory using unprivileged rather than privileged access. This is to ensure that unmount works on mountpoints where root may not have privileged access. Fixes: #376
2019-01-04Added OpenAFS to type whitelistNikolaus Rath
Fixes: #336.
2018-11-19examples: add copy_file_range() support to passthrough(_fh)Niels de Vos
The passthrough example filesystem can be used for validating the API and the implementation in the FUSE kernel module.
2018-11-06Avoid double unmount on normal unmount in auto_unmount mode.Kevin Vigor
If a fuse filesystem was mounted in auto_unmount mode on top of an already mounted filesystem, we would end up doing a double-unmount when the fuse filesystem was unmounted properly. Make the auto_unmount code less eager: unmount only if the mounted filesystem has proper type and is returning 'Transport endpoint not connected'.
2018-10-19Add SpectrumScale/GPFS and Lustre to FS whitelistValentin Plugaru
Fixes: #304 Signed-off-by: Valentin Plugaru <valentin.plugaru@uni.lu>
2018-10-09Add unprivileged option in `mount.fuse3`Mattias Nissler
The unprivileged option allows to run the FUSE file system process without privileges by dropping capabilities and preventing them from being re-acquired via setuid / fscaps etc. To accomplish this, mount.fuse sets up the `/dev/fuse` file descriptor and mount itself and passes the file descriptor via the `/dev/fd/%u` mountpoint syntax to the FUSE file system.
2018-09-17Don't special-case bulid of mount_util.c.Nikolaus Rath
We already support out of source builds without this.
2018-08-31Do not hardcode /etc/fuse.conf path.Nikolaus Rath
2018-08-09Add bcachefs to mountpoint file system whitelistDaniel Fullmer
2018-08-05Add FAT to mountpoint file system whitelistBenjamin Barenblat
2018-08-05Realphabetize and re-document mountpoint file system whitelistBenjamin Barenblat
2018-07-31Add autofs to mountpoint file system whitelistRobo Shimmer
2018-07-23fusermount: Fix memory leaksRostislav Skudnov
2018-07-18fusermount: whitelist known-good filesystems for mountpointsJann Horn
Before: $ _FUSE_COMMFD=1 priv_strace -s8000 -e trace=mount util/fusermount3 /proc/self/fd mount("/dev/fuse", ".", "fuse", MS_NOSUID|MS_NODEV, "fd=3,rootmode=40000,user_id=379777,group_id=5001") = 0 sending file descriptor: Socket operation on non-socket +++ exited with 1 +++ After: $ _FUSE_COMMFD=1 priv_strace -s8000 -e trace=mount util/fusermount3 /proc/self/fd util/fusermount3: mounting over filesystem type 0x009fa0 is forbidden +++ exited with 1 +++ This patch could potentially have security impact on some systems that are configured with allow_other; see https://launchpad.net/bugs/1530566 for an example of how a similar issue in the ecryptfs mount helper was exploitable. However, the FUSE mount helper performs slightly different security checks, so that exact attack doesn't work with fusermount; I don't know of any specific attack you could perform using this, apart from faking the SELinux context of your process when someone's looking at a process listing. Potential targets for overwrite are (looking on a system with a 4.9 kernel): writable only for the current process: /proc/self/{fd,map_files} (Yes, "ls -l" claims that you don't have write access, but that's not true; "find -writable" will show you what access you really have.) writable also for other owned processes: /proc/$pid/{sched,autogroup,comm,mem,clear_refs,attr/*,oom_adj, oom_score_adj,loginuid,coredump_filter,uid_map,gid_map,projid_map, setgroups,timerslack_ns}
2018-07-18fusermount: refuse unknown optionsJann Horn
Blacklists are notoriously fragile; especially if the kernel wishes to add some security-critical mount option at a later date, all existing systems with older versions of fusermount installed will suddenly have a security problem. Additionally, if the kernel's option parsing became a tiny bit laxer, the blacklist could probably be bypassed. Whitelist known-harmless flags instead, even if it's slightly more inconvenient.
2018-07-18fusermount: bail out on transient config read failureJann Horn
If an attacker wishes to use the default configuration instead of the system's actual configuration, they can attempt to trigger a failure in read_conf(). This only permits increasing mount_max if it is lower than the default, so it's not particularly interesting. Still, this should probably be prevented robustly; bail out if funny stuff happens when we're trying to read the config. Note that the classic attack trick of opening so many files that the system-wide limit is reached won't work here - because fusermount only drops the fsuid, not the euid, the process is running with euid=0 and CAP_SYS_ADMIN, so it bypasses the number-of-globally-open-files check in get_empty_filp() (unless you're inside a user namespace).
2018-07-18fusermount: don't feed "escaped commas" into mount optionsJann Horn
The old code permits the following behavior: $ _FUSE_COMMFD=10000 priv_strace -etrace=mount -s200 fusermount -o 'foobar=\,allow_other' mount mount("/dev/fuse", ".", "fuse", MS_NOSUID|MS_NODEV, "foobar=\\,allow_other,fd=3,rootmode=40000,user_id=1000,group_id=1000") = -1 EINVAL (Invalid argument) However, backslashes do not have any special meaning for the kernel here. As it happens, you can't abuse this because there is no FUSE mount option that takes a string value that can contain backslashes; but this is very brittle. Don't interpret "escape characters" in places where they don't work.
2018-07-18fusermount: prevent silent truncation of mount optionsJann Horn
Currently, in the kernel, copy_mount_options() copies in one page of userspace memory (or less if some of that memory area is not mapped). do_mount() then writes a null byte to the last byte of the copied page. This means that mount option strings longer than PAGE_SIZE-1 bytes get truncated silently. Therefore, this can happen: user@d9-ut:~$ _FUSE_COMMFD=10000 fusermount -o "$(perl -e 'print ","x4000')" mount sending file descriptor: Bad file descriptor user@d9-ut:~$ grep /mount /proc/mounts /dev/fuse /home/user/mount fuse rw,nosuid,nodev,relatime,user_id=1000,group_id=1000 0 0 user@d9-ut:~$ fusermount -u mount user@d9-ut:~$ _FUSE_COMMFD=10000 fusermount -o "$(perl -e 'print ","x4050')" mount sending file descriptor: Bad file descriptor user@d9-ut:~$ grep /mount /proc/mounts /dev/fuse /home/user/mount fuse rw,nosuid,nodev,relatime,user_id=1000,group_id=100 0 0 user@d9-ut:~$ fusermount -u mount user@d9-ut:~$ _FUSE_COMMFD=10000 fusermount -o "$(perl -e 'print ","x4051')" mount sending file descriptor: Bad file descriptor user@d9-ut:~$ grep /mount /proc/mounts /dev/fuse /home/user/mount fuse rw,nosuid,nodev,relatime,user_id=1000,group_id=10 0 0 user@d9-ut:~$ fusermount -u mount user@d9-ut:~$ _FUSE_COMMFD=10000 fusermount -o "$(perl -e 'print ","x4052')" mount sending file descriptor: Bad file descriptor user@d9-ut:~$ grep /mount /proc/mounts /dev/fuse /home/user/mount fuse rw,nosuid,nodev,relatime,user_id=1000,group_id=1 0 0 user@d9-ut:~$ fusermount -u mount I'm not aware of any context in which this is actually exploitable - you'd still need the UIDs to fit, and you can't do it if the three GIDs of the process don't match (in the case of a typical setgid binary), but it does look like something that should be fixed. I also plan to try to get this fixed on the kernel side.
2018-07-04Source LSB init functionsLaszlo Boszormenyi (GCS)
2018-05-11add_arg(): check for overflowNikolaus Rath
Fixes: #222.
2018-05-08Fix compile-time warnings on IGNORE_MTABTomohiro Kusumi
Silence below warnings which appear if IGNORE_MTAB is defined. [59/64] Compiling C object 'util/fusermount3@exe/fusermount.c.o'. ../util/fusermount.c:493:12: warning: function declaration isn't a prototype [-Wstrict-prototypes] static int count_fuse_fs() ^~~~~~~~~~~~~ ../util/fusermount.c: In function 'unmount_fuse': ../util/fusermount.c:508:46: warning: unused parameter 'quiet' [-Wunused-parameter] static int unmount_fuse(const char *mnt, int quiet, int lazy) ^~~~~
2018-03-28Add example configuration file (#216)admorgan
Add a configuration file with all options disabled that includes all valid options and their description.
2017-12-01Handle mount ... -o nofail (#221)Josh Soref
Accept (and ignore) nofail mount option
2017-10-20make udevrulesdir configurableJoerg Thalheim
on nixos we install fuse in its own hierarchy independent from systemd.
2017-08-24Dropped support for building with autotoolsNikolaus Rath
It's just too much pain to keep it working.
2017-08-14Fixed udev rules directory.Nikolaus Rath
2017-08-02Ask pkgconfig where we should install udev rulesHeiko Becker
2017-07-07Don't use emacs' python-mode for meson filesNikolaus Rath
There is a proper meson-mode now.
2017-06-21Install init script in $DESTDIR/etc, not $prefix/$sysconfdirNikolaus Rath
Fixes: #178.
2017-01-12Added experimental support for building with Meson+NinjaNikolaus Rath
2016-11-28Rename more things from fuse to fuse3Przemysław Pawełczyk
2016-10-28Fix memory leak in fusermount.Nikolaus Rath
2016-10-28Renamed fusermount / mount.fuse to fusermount3 / mount.fuse3Nikolaus Rath
2016-10-27Removed obsolete FUSE_DEV_OLDNikolaus Rath
2016-10-15Removed -o nonempty optionNikolaus Rath
This brings the default behavior in-line with that of the regular `mount` command.
2014-07-15fusermount, libfuse: send value as unsigned in "user_id=" and "group_id="Miklos Szeredi
...options. Uids/gids larger than 2147483647 would result in EINVAL when mounting the filesystem. This also needs a fix in the kernel.
2013-08-26Merge remote-tracking branch 'origin/fuse_2_9_bugfix'Miklos Szeredi
2013-08-26Add missing includesDaniel Thau
This allows compiling fuse with musl.
2013-07-26Print help on stdout instead of stderrMiklos Szeredi
2013-07-25ulockmgr: strip ulockmgr support from this source packageMiklos Szeredi
Distribute ulockmgr separately. It is not needed for the building of libfuse, only fusexmp_fh. Check ulockmgr library in ./configure and if not disable remote-lock suport in fusexmp_fh.
2013-07-24libfuse: remove "-D_FILE_OFFSET_BITS=64" from fuse.pcMiklos Szeredi
add AC_SYS_LARGEFILE to your configure.ac instead.