qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] SAMBA support in QEMU


From: Bernhard Huafbauer
Subject: Re: [Qemu-devel] SAMBA support in QEMU
Date: Tue, 21 Dec 2004 23:13:18 +0100
User-agent: KMail/1.6.2

Hello,
think I found it ... (wasn't as easy as the port thing)
short before going crazy I called smbd with strace
it showed me two socket funcion calls - the first with a
matching close
        ...
        16790 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4
        16790 ioctl(4, 0x8912, 0xbfffbdf8)      = 0
        16790 ioctl(4, 0x8915, 0xbfffbe20)      = 0
        16790 ioctl(4, 0x8913, 0xbfffbe20)      = 0
        16790 ioctl(4, 0x891b, 0xbfffbe20)      = 0
        16790 ioctl(4, 0x8915, 0xbfffbe00)      = 0
        16790 ioctl(4, 0x8913, 0xbfffbe00)      = 0
        16790 ioctl(4, 0x891b, 0xbfffbe00)      = 0
        16790 close(4)                          = 0
        ...
the second not
        ...
        16790 socket(PF_UNIX, SOCK_DGRAM, 0)    = 6
        ...
so I called smbd with gdb and set a
breakpoint to socket - continued the first time and the second
time the backtrace looked like this:
        Breakpoint 2, 0x4035ff90 in socket () from /lib/tls/libc.so.6
        (gdb) bt
        #0  0x4035ff90 in socket () from /lib/tls/libc.so.6
        #1  0x4035b12c in openlog_internal () from /lib/tls/libc.so.6
        #2  0x4035b6cb in vsyslog () from /lib/tls/libc.so.6
        #3  0x4035b24f in syslog () from /lib/tls/libc.so.6
        #4  0x081da12c in Debug1 ()
        #5  0x081da476 in dbghdr ()
        #6  0x08267784 in main ()
        (gdb) kill

by searching Debug1 in samba source I found
that by starting samba with option -i (interactive)
this syslog calls are not done and no datagram connection is opened -
but I cannot access now my share from the guest os - not so good ...

then another way - setting in the config file a entry "syslog = 0" helps
so my function "net_slirp_smb" looks now like this (and I can access 
\\10.0.2.4\qemu):
    fprintf(f, 
            "[global]\n"
            "private dir=%s\n"
            "smb ports=0\n"
            "socket address=127.0.0.1\n"
            "syslog = 0\n"
            "pid directory=%s\n"
            "lock directory=%s\n"
            "log file=%s/log.smbd\n"
            "smb passwd file=%s/smbpasswd\n"
            "security = share\n"
            "[qemu]\n"
            "path=%s\n"
            "read only=no\n"
            "guest ok=yes\n",
            smb_dir,
            smb_dir,
            smb_dir,
            smb_dir,
            smb_dir,
            exported_dir
            );


(To my sidenote from my last mail:
This will delete this "printing" directory in the /tmp/qemu-smb.xxx directory

in smb_exit before "rmdir(smb_dir);":
    snprintf(filename, sizeof(filename), "%s/%s",
             smb_dir, "printing");
    rmdir(filename);
)


Regards
Bernhard


Am Dienstag, 21. Dezember 2004 00:14 schrieb Fabrice Bellard:
> OK. 'smb ports=0' seems a good idea. Can you find why there is still a 
> datagram connection opened ?
> 
> I still wonder if the best solution would be to ship a specific smbd 
> version with QEMU...
> 
> Fabrice.
> 
> Bernhard Huafbauer wrote:
> > Hello,
> > I found nothing about disabling the opening of the ports
> > in the man page of the smb.conf.
> > The only thing I have found to prevent smbd to open a port is 
> > to give a config file with one of these lines:
> > 
> >     smb ports=" "
> >     smb ports=' '
> >     smb ports=0
> > 
> > the samba source file /source/smbd/server.c line 242 (version 3.0.2a-SUSE) 
> > look like this:
> > ...
> >                     for (ptr=ports; next_token(&ptr, tok, NULL, 
> > sizeof(tok)); ) {
> >                             unsigned port = atoi(tok);
> >                             if (port == 0) continue;
> >                             s = fd_listenset[num_sockets] = 
> > open_socket_in(SOCK_STREAM, port, 0, ifip->s_addr, True);
> > ...
> > ...
> >             for (ptr=ports; next_token(&ptr, tok, NULL, sizeof(tok)); ) {
> >                     unsigned port = atoi(tok);
> >                     if (port == 0) continue;
> >                     /* open an incoming socket */
> >                     s = open_socket_in(SOCK_STREAM, port, 0,
> > ...
> > 
> > Interesting the comparison to 0 and the continue ...
> > so setting it to 0 would be best the way?
> > 
> > with this setting a smbd called by hand doesn't open any port except this 
> > DGRAM thing
> >     address@hidden:/tmp/qemu-smb.8091> ps aux | grep smbd | grep -v grep
> >     bernhard 10087  0.0  0.5  9912 2800 ?        Ss   21:16   0:00 
> > /usr/sbin/smbd -s /tmp/qemu-smb.8091/smb.conf
> > 
> >     address@hidden:/tmp/qemu-smb.8091> netstat -anp | grep 10087
> >     unix  2      [ ]         DGRAM                    23644  10087/smbd
> > 
> > when running qemu with this setting and accessing \\10.0.2.4\qemu
> >     address@hidden:/tmp> ps aux | grep smbd
> >     bernhard 11976  0.0  0.0     0    0 ?        Z    22:02   0:00 [smbd] 
> > <defunct>
> >     bernhard 12012  0.0  0.0     0    0 ?        Z    22:03   0:00 [smbd] 
> > <defunct>
> >     bernhard 12045  0.1  0.6 10984 3492 ?        S    22:03   0:00 
> > /usr/sbin/smbd -s /tmp/qemu-smb.11876/smb.conf
> >     bernhard 12064  0.0  0.1  2648  736 pts/1    S+   22:04   0:00 grep smbd
> > 
> > and sometimes somthing like this (?):
> >     address@hidden:/tmp> netstat -anp | grep 12045
> >     tcp        0      0 127.0.0.1:1357          127.0.0.1:1356          
> > VERBUNDEN   12045/smbd
> >     udp        0      0 127.0.0.1:1156          0.0.0.0:*                   
> >         12045/smbd
> > 
> > 
> > (As a sidenote:
> > the smb_exit cleans not all of the temp directory
> > there is still a directory printing so the last rmdir
> > call fails and a /tmp/qemu-smb.10542/printing/ remains.)
> > 
> > Regards
> > Bernhard
> > 
> > 
> > Am Montag, 20. Dezember 2004 00:40 schrieb Fabrice Bellard:
> > 
> >>Hi,
> >>
> >>It would be cleaner to find a way to disable the access to the port 445 
> >>(it seems to be an uneeded feature for QEMU and your patch may not work 
> >>if several instances of QEMU are launched). Can you look at the SAMBA 
> >>documentation to see if there is an option to do that ?
> >>
> >>Fabrice.
> >>
> >>Bernhard Huafbauer wrote:
> >>
> >>>Hello,
> >>>
> >>>With this little changes to the samba configuration
> >>>file I was able to access the share from the guest os
> >>>(winxp-oem-german-nosp, samba 3.0.2a-SUSE)
> >>>
> >>>Don't know how it would affect some samba 2.x installations ...
> >>>
> >>>The entry smb ports is because smbd wants to open port 445
> >>>(an I'm not allowed to as user).
> >>>
> >>>Regards,
> >>>Bernhard
> >>>
> >>>Am Donnerstag, 9. Dezember 2004 22:34 schrieb Adrian Smarzewski:
> >>>
> >>>
> >>>>David Still wrote:
> >>>>
> >>>>
> >>>>>This could also be why SAMBA support does not appear to work on Mac OS 
> >>>>>X.  Version 10.3.6  appears to use SAMBA version 3.0.5.
> >>>>
> >>>>3.0 was released more than year ago I think...
> >>>>Maybe It's more important to support 3.0.x than 2.x now.
> >>>>
> >>>
> >>>
> >>>address@hidden:~/projekte/software/qemu> diff -Nru orig/qemu-cvs/qemu/vl.c 
> >>>qemu-cvs/qemu/vl.c
> >>>--- orig/qemu-cvs/qemu/vl.c     2004-12-17 21:10:34.000000000 +0100
> >>>+++ qemu-cvs/qemu/vl.c  2004-12-19 15:44:27.501826076 +0100
> >>>@@ -1535,6 +1535,9 @@
> >>>     }
> >>>     fprintf(f,
> >>>             "[global]\n"
> >>>+            "private dir=%s\n"
> >>>+            "smb ports=2445 2139\n"
> >>>+            "socket address=127.0.0.1\n"
> >>>             "pid directory=%s\n"
> >>>             "lock directory=%s\n"
> >>>             "log file=%s/log.smbd\n"
> >>>@@ -1548,6 +1551,7 @@
> >>>             smb_dir,
> >>>             smb_dir,
> >>>             smb_dir,
> >>>+            smb_dir,
> >>>             exported_dir
> >>>             );
> >>>     fclose(f);
> >>>
> >>>
> >>>_______________________________________________
> >>>Qemu-devel mailing list
> >>>address@hidden
> >>>http://lists.nongnu.org/mailman/listinfo/qemu-devel
> >>>
> >>>
> >>>
> >>
> >>
> >>
> >>_______________________________________________
> >>Qemu-devel mailing list
> >>address@hidden
> >>http://lists.nongnu.org/mailman/listinfo/qemu-devel
> >>
> > 
> > 
> > 
> > _______________________________________________
> > Qemu-devel mailing list
> > address@hidden
> > http://lists.nongnu.org/mailman/listinfo/qemu-devel
> > 
> > 
> > 
> 
> 
> 
> _______________________________________________
> Qemu-devel mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/qemu-devel
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]