Subject: Re: bug#21142: Sshfs-fuse requires fuse

From: [email-masked] (Ludovic Courtès)
Date: Sun, 29 Nov 2015 12:18:45 +0100

Mark H Weaver <[email-masked]> skribis:

> Claes Wallin (韋嘉誠) <[email-masked]> writes:
>
>> On 27-Jul-2015 5:06 pm, "Andreas Enge" <[email-masked]> wrote:
>>>
>>> Hello,
>>>
>>> when trying to execute sshfs from the sshfs-fuse package, I obtain
>>> fuse: failed to exec fusermount: No such file or directory
>>>
>>> I think that fuse should be a propagated input of sshfs-fuse.
>>
>> Maybe it's less intrusive toward the user to wrap sshfs to add fuse to
>> its PATH?
>
> Or patch the reference to 'fusermount' to be an absolute path?

This what libfuse does by default in lib/mount.c:

--8<---------------cut here---------------start------------->8---
static void exec_fusermount(const char *argv[])
{
	execv(FUSERMOUNT_DIR "/" FUSERMOUNT_PROG, (char **) argv);
	execvp(FUSERMOUNT_PROG, (char **) argv);
}
--8<---------------cut here---------------end--------------->8---

However, we explicitly patch it because in practice the ‘fusermount’
binary must be at least set-user-gid to fuse, per mount.fuse(8):

--8<---------------cut here---------------start------------->8---
    ;; This hack leads libfuse to search for 'fusermount' in
    ;; $PATH, where it may find a setuid-root binary, instead of
    ;; trying solely $out/sbin/fusermount and failing because
    ;; it's not setuid.
    (substitute* "lib/Makefile"
      (("-DFUSERMOUNT_DIR=[[:graph:]]+")
       "-DFUSERMOUNT_DIR=\\\"/var/empty\\\""))
--8<---------------cut here---------------end--------------->8---

On GuixSD, this is addressed by having ‘fusermount’ setuid-root in
/run/setuid-programs, so things just work.

On foreign distros, there’s not much we can do: Users have to set add a
setuid ‘fusermount’ in their PATH.

Closing this bug as “wontfix.”

Ludo’.