Subject: bug#44519: Qemu fails to start Samba server

From: [email-masked]
Date: Sun, 08 Nov 2020 23:52:00 +0900

Hey Guix,

Having trouble getting the Samba directory share in qemu to work as advertised:

    $ qemu-system-x86_64 -netdev user,id=net0,smb=/share ...

Running something like the above with samba installed should spin up `smbd`;
however, this doesn't happen. I see no smbd processes started. Qemu does create
/tmp/qemu-smb.XXXXXX/smb.conf, however.

Am I just missing something obvious? Can your reproduce?

Digging through the qemu repo[0], it looks like qemu calls out to a samba
daemon with an invocation that resolves to this:

    $ smbd -l /tmp/qemu-smb.XXXXXX -s /tmp/qemu-smb.XXXXXXX/smb.conf

Manually running the above results in silent failure, though. To be clear,
running the above with --foreground makes no difference.

For good measure, I am attaching the smb.conf that qemu generates, in case you
want to directly try the smbd command without spinning up qemu. Note, you may
need to edit the 'path=/shared' line to an existing directory on your machine.

Throwing strace at the above shows that the daemon is getting EPERM when trying
to bind() the priviledged ports 445 and 139.

Indeed, running the daemon under sudo works as expected, and I am able to
access the shared directory from the guest machine as intended. Given the
permission issues, I did try adding <samba>/sbin/smbd to my setuid-programs,
but that seems to make no difference.

Is this a PEBKAC issue or a legitimate bug?

[0]:https://github.com/qemu/qemu/blob/7f368aed672117980f7f09933e1eb3e1139caae6/net/slirp.c