slirp: Enforce host-side user of smb share
PATCH 1/1 slirp: Enforce host-side user of smb share
From: Jan Kiszka <[email protected]>
Windows 7 (and possibly other versions) cannot connect to the samba share if the exported host directory is not world-readable. This can be resolved by forcing the username used for access checks to the one under which QEMU and smbd are running.
Signed-off-by Jan Kiszka <[email protected]>
--- net/slirp.c | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-)
net/slirp.c +12 -2
@@ -26,6 +26,7 @@#include "config-host.h" #ifndef _WIN32 +#include <pwd.h> #include <sys/wait.h> #endif #include "net.h"
@@ -487,8 +488,15 @@ static int slirp_smb(SlirpState* s, const char *exported_dir,static int instance;char smb_conf[128 ];char smb_cmdline[128 ]; +struct passwd *passwd;FILE *f; + passwd =getpwuid (geteuid ()); +if (!passwd) { +error_report ("failed to retrieve user name" ); +return -1 ; + } +snprintf (s->smb_dir,sizeof (s->smb_dir),"/tmp/qemu-smb.%ld-%d" , (long )getpid (), instance++);if (mkdir (s->smb_dir,0700 ) <0 ) {
@@ -517,14 +525,16 @@ static int slirp_smb(SlirpState* s, const char *exported_dir,"[qemu]\n" "path=%s\n" "read only=no\n" -"guest ok=yes\n" , +"guest ok=yes\n" +"force user=%s\n" , s->smb_dir, s->smb_dir, s->smb_dir, s->smb_dir, s->smb_dir, s->smb_dir, - exported_dir + exported_dir, + passwd->pw_name );fclose (f);
Signature · 1 line
1.7.3.4