X-Git-Url: http://git.samba.org/?a=blobdiff_plain;f=selftest%2Ftarget%2FSamba3.pm;h=8d59bb2690e190e03f4553dfde63f7655b803282;hb=ed7f2d8bb08f15739fd53f462d57318318bf0f1c;hp=6eeae21b6af274c8df11f24bb7d0d92424486fb9;hpb=1e8d025a3cd1b326e9660a0a5b388e67fc2d172a;p=metze%2Fsamba%2Fwip.git diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm index 6eeae21b6af2..8d59bb2690e1 100644 --- a/selftest/target/Samba3.pm +++ b/selftest/target/Samba3.pm @@ -24,8 +24,10 @@ sub binpath($$) } sub new($$) { - my ($classname, $bindir) = @_; - my $self = { bindir => $bindir }; + my ($classname, $bindir, $srcdir) = @_; + my $self = { bindir => $bindir, + srcdir => $srcdir + }; bless $self; return $self; } @@ -98,6 +100,8 @@ sub setup_env($$$) if ($envname eq "dc") { return $self->setup_dc("$path/dc"); + } elsif ($envname eq "secshare") { + return $self->setup_secshare("$path/secshare"); } elsif ($envname eq "member") { if (not defined($self->{vars}->{dc})) { $self->setup_dc("$path/dc"); @@ -132,6 +136,12 @@ sub setup_dc($$) $self->wait_for_start($vars); + $vars->{DC_SERVER} = $vars->{SERVER}; + $vars->{DC_SERVER_IP} = $vars->{SERVER_IP}; + $vars->{DC_NETBIOSNAME} = $vars->{NETBIOSNAME}; + $vars->{DC_USERNAME} = $vars->{USERNAME}; + $vars->{DC_PASSWORD} = $vars->{PASSWORD}; + $self->{vars}->{dc} = $vars; return $vars; @@ -178,9 +188,73 @@ sub setup_member($$$) return $ret; } -sub stop($) +sub setup_admember($$$$) { - my ($self) = @_; + my ($self, $prefix, $dcvars, $iface) = @_; + + print "PROVISIONING S3 AD MEMBER$iface..."; + + my $member_options = " + security = domain + server signing = on +"; + my $ret = $self->provision($prefix, + "LOCALADMEMBER$iface", + $iface, + "loCalMember${iface}Pass", + $member_options); + + $ret or die("Unable to provision"); + + my $net = $self->binpath("net"); + my $cmd = ""; + $cmd .= "SOCKET_WRAPPER_DEFAULT_IFACE=\"$ret->{SOCKET_WRAPPER_DEFAULT_IFACE}\" "; + $cmd .= "selftest/gdb_run test $net join $ret->{CONFIGURATION} $dcvars->{DOMAIN} member"; + $cmd .= " -U$dcvars->{USERNAME}\%$dcvars->{PASSWORD} -d 10 2>&1 | tee s3member-join.txt"; + + system($cmd) == 0 or die("Join failed\n$cmd"); + + $self->check_or_start($ret, + ($ENV{SMBD_MAXTIME} or 2700), + "yes", "yes", "yes"); + + $self->wait_for_start($ret); + + $ret->{DC_SERVER} = $dcvars->{SERVER}; + $ret->{DC_SERVER_IP} = $dcvars->{SERVER_IP}; + $ret->{DC_NETBIOSNAME} = $dcvars->{NETBIOSNAME}; + $ret->{DC_USERNAME} = $dcvars->{USERNAME}; + $ret->{DC_PASSWORD} = $dcvars->{PASSWORD}; + + return $ret; +} + +sub setup_secshare($$) +{ + my ($self, $path) = @_; + + print "PROVISIONING server with security=share..."; + + my $secshare_options = " + security = share + lanman auth = yes +"; + + my $vars = $self->provision($path, + "LOCALSHARE4", + 4, + "local4pass", + $secshare_options); + + $self->check_or_start($vars, + ($ENV{SMBD_MAXTIME} or 2700), + "yes", "no", "yes"); + + $self->wait_for_start($vars); + + $self->{vars}->{secshare} = $vars; + + return $vars; } sub stop_sig_term($$) { @@ -225,6 +299,7 @@ sub check_or_start($$$$$) { SocketWrapper::set_default_iface($env_vars->{SOCKET_WRAPPER_DEFAULT_IFACE}); $ENV{WINBINDD_SOCKET_DIR} = $env_vars->{WINBINDD_SOCKET_DIR}; + $ENV{NMBD_SOCKET_DIR} = $env_vars->{NMBD_SOCKET_DIR}; $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD}; $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP}; @@ -252,7 +327,7 @@ sub check_or_start($$$$$) { @preargs = split(/ /, $ENV{NMBD_VALGRIND}); } - exec(@preargs, $self->binpath("nmbd"), "-F", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start nmbd: $!"); + exec(@preargs, $self->binpath("nmbd"), "-F", "--no-process-group", "-S", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start nmbd: $!"); } write_pid($env_vars, "nmbd", $pid); print "DONE\n"; @@ -267,6 +342,7 @@ sub check_or_start($$$$$) { SocketWrapper::set_default_iface($env_vars->{SOCKET_WRAPPER_DEFAULT_IFACE}); $ENV{WINBINDD_SOCKET_DIR} = $env_vars->{WINBINDD_SOCKET_DIR}; + $ENV{NMBD_SOCKET_DIR} = $env_vars->{NMBD_SOCKET_DIR}; $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD}; $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP}; @@ -309,6 +385,7 @@ sub check_or_start($$$$$) { SocketWrapper::set_default_iface($env_vars->{SOCKET_WRAPPER_DEFAULT_IFACE}); $ENV{WINBINDD_SOCKET_DIR} = $env_vars->{WINBINDD_SOCKET_DIR}; + $ENV{NMBD_SOCKET_DIR} = $env_vars->{NMBD_SOCKET_DIR}; $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD}; $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP}; @@ -361,6 +438,7 @@ sub provision($$$$$$) my $prefix_abs = abs_path($prefix); my $bindir_abs = abs_path($self->{bindir}); + my $vfs_modulesdir_abs = ($ENV{VFSLIBDIR} or $bindir_abs); my @dirs = (); @@ -391,6 +469,9 @@ sub provision($$$$$$) my $driver64dir="$shrdir/x64"; push(@dirs,$driver64dir); + my $driver40dir="$shrdir/WIN40"; + push(@dirs,$driver40dir); + my $ro_shrdir="$shrdir/root-tmp"; push(@dirs,$ro_shrdir); @@ -404,6 +485,9 @@ sub provision($$$$$$) my $wbsockdir="$prefix_abs/winbindd"; my $wbsockprivdir="$lockdir/winbindd_privileged"; + my $nmbdsockdir="$prefix_abs/nmbd"; + unlink($nmbdsockdir); + ## ## create the test directory layout ## @@ -434,11 +518,11 @@ sub provision($$$$$$) my $conffile="$libdir/server.conf"; - my $nss_wrapper_pl = "$ENV{PERL} $RealBin/../lib/nss_wrapper/nss_wrapper.pl"; + my $nss_wrapper_pl = "$ENV{PERL} $self->{srcdir}/lib/nss_wrapper/nss_wrapper.pl"; my $nss_wrapper_passwd = "$privatedir/passwd"; my $nss_wrapper_group = "$privatedir/group"; - my $mod_printer_pl = "$ENV{PERL} $RealBin/../source3/script/tests/printing/modprinter.pl"; + my $mod_printer_pl = "$ENV{PERL} $self->{srcdir}/source3/script/tests/printing/modprinter.pl"; my @eventlog_list = ("dns server", "application"); @@ -448,7 +532,7 @@ sub provision($$$$$$) my ($max_uid, $max_gid); my ($uid_nobody, $uid_root); - my ($gid_nobody, $gid_nogroup, $gid_root); + my ($gid_nobody, $gid_nogroup, $gid_root, $gid_domusers); if ($unix_uid < 0xffff - 2) { $max_uid = 0xffff; @@ -468,6 +552,7 @@ sub provision($$$$$$) $gid_nobody = $max_gid - 1; $gid_nogroup = $max_gid - 2; $gid_root = $max_gid - 3; + $gid_domusers = $max_gid - 4; ## ## create conffile @@ -479,7 +564,7 @@ sub provision($$$$$$) netbios name = $server interfaces = $server_ip/8 bind interfaces only = yes - panic action = $RealBin/gdb_backtrace %d %\$(MAKE_TEST_BINARY) + panic action = $self->{srcdir}/selftest/gdb_backtrace %d %\$(MAKE_TEST_BINARY) workgroup = $domain @@ -519,6 +604,7 @@ sub provision($$$$$$) printcap name = /dev/null winbindd:socket dir = $wbsockdir + nmbd:socket dir = $nmbdsockdir idmap uid = 100000-200000 idmap gid = 100000-200000 winbind enum users = yes @@ -526,7 +612,10 @@ sub provision($$$$$$) # min receivefile size = 4000 + max protocol = SMB2 read only = no + server signing = auto + smbd:sharedelay = 100000 # smbd:writetimeupdatedelay = 500000 map hidden = no @@ -534,7 +623,7 @@ sub provision($$$$$$) map readonly = no store dos attributes = yes create mask = 755 - vfs objects = $bindir_abs/xattr_tdb.so $bindir_abs/streams_depot.so + vfs objects = $vfs_modulesdir_abs/xattr_tdb.so $vfs_modulesdir_abs/streams_depot.so printing = vlp print command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb print %p %s @@ -546,6 +635,8 @@ sub provision($$$$$$) queue resume command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb queueresume %p lpq cache time = 0 + rpc_server:epmapper = embedded + # Begin extra options $extra_options # End extra options @@ -560,6 +651,21 @@ sub provision($$$$$$) print CONF " [tmp] path = $shrdir +[tmpguest] + path = $shrdir + guest ok = yes +[guestonly] + path = $shrdir + guest only = yes + guest ok = yes +[forceuser] + path = $shrdir + force user = $unix_name + guest ok = yes +[forcegroup] + path = $shrdir + force group = nogroup + guest ok = yes [ro-tmp] path = $ro_shrdir guest ok = yes @@ -584,7 +690,7 @@ sub provision($$$$$$) copy = print1 [print3] copy = print1 -[print4] +[lp] copy = print1 [print\$] copy = tmp @@ -608,6 +714,7 @@ $unix_name:x:$unix_uid:$unix_gids[0]:$unix_name gecos:$prefix_abs:/bin/false print GROUP "nobody:x:$gid_nobody: nogroup:x:$gid_nogroup:nobody $unix_name-group:x:$unix_gids[0]: +domusers:X:$gid_domusers: "; if ($unix_gids[0] != 0) { print GROUP "root:x:$gid_root:"; @@ -628,9 +735,6 @@ $unix_name-group:x:$unix_gids[0]: print PWD "$password\n$password\n"; close(PWD) or die("Unable to set password for test account"); - delete $ENV{NSS_WRAPPER_PASSWD}; - delete $ENV{NSS_WRAPPER_GROUP}; - print "DONE\n"; $ret{SERVER_IP} = $server_ip; @@ -651,6 +755,7 @@ $unix_name-group:x:$unix_gids[0]: $ret{PIDDIR} = $piddir; $ret{WINBINDD_SOCKET_DIR} = $wbsockdir; $ret{WINBINDD_PRIV_PIPE_DIR} = $wbsockprivdir; + $ret{NMBD_SOCKET_DIR} = $nmbdsockdir; $ret{SOCKET_WRAPPER_DEFAULT_IFACE} = $swiface; $ret{NSS_WRAPPER_PASSWD} = $nss_wrapper_passwd; $ret{NSS_WRAPPER_GROUP} = $nss_wrapper_group; @@ -678,6 +783,9 @@ sub wait_for_start($$) system($self->binpath("smbclient") ." $envvars->{CONFIGURATION} -L $envvars->{SERVER_IP} -U% -p 139 | head -2"); system($self->binpath("smbclient") ." $envvars->{CONFIGURATION} -L $envvars->{SERVER_IP} -U% -p 139 | head -2"); + # Ensure we have domain users mapped. + system($self->binpath("net") ." $envvars->{CONFIGURATION} groupmap add rid=513 unixgroup=domusers type=domain"); + print $self->getlog_env($envvars); }