X-Git-Url: http://git.samba.org/?p=samba.git;a=blobdiff_plain;f=selftest%2Ftarget%2FSamba3.pm;h=70c320bc0e7576b34a6bb14efde250358a606fb6;hp=c78c1d643130f0f3206e64bf64fb1af68f7c7553;hb=212b3ec1a0a593a5684dfe9cbefc4f3b728f120b;hpb=702e35ac6d4225049e948f2e20595f2a7f56639b diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm old mode 100644 new mode 100755 index c78c1d64313..70c320bc0e7 --- a/selftest/target/Samba3.pm +++ b/selftest/target/Samba3.pm @@ -12,13 +12,11 @@ use POSIX; use target::Samba; sub new($$) { - my ($classname, $bindir, $binary_mapping, $srcdir, $exeext, $server_maxtime) = @_; - $exeext = "" unless defined($exeext); + my ($classname, $bindir, $binary_mapping, $srcdir, $server_maxtime) = @_; my $self = { vars => {}, bindir => $bindir, binary_mapping => $binary_mapping, srcdir => $srcdir, - exeext => $exeext, server_maxtime => $server_maxtime }; bless $self; @@ -91,10 +89,16 @@ sub setup_env($$$) { my ($self, $envname, $path) = @_; + if (defined($self->{vars}->{$envname})) { + return $self->{vars}->{$envname}; + } + if ($envname eq "s3dc") { return $self->setup_s3dc("$path/s3dc"); } elsif ($envname eq "secshare") { return $self->setup_secshare("$path/secshare"); + } elsif ($envname eq "maptoguest") { + return $self->setup_maptoguest("$path/maptoguest"); } elsif ($envname eq "ktest") { return $self->setup_ktest("$path/ktest"); } elsif ($envname eq "secserver") { @@ -112,7 +116,7 @@ sub setup_env($$$) } return $self->setup_member("$path/member", $self->{vars}->{s3dc}); } else { - return undef; + return "UNKNOWN"; } } @@ -231,7 +235,7 @@ sub setup_admember($$$$) $ctx->{realm} = $dcvars->{REALM}; $ctx->{dnsname} = lc($dcvars->{REALM}); $ctx->{kdc_ipv4} = $dcvars->{SERVER_IP}; - Samba::mk_krb5_conf($ctx); + Samba::mk_krb5_conf($ctx, ""); $ret->{KRB5_CONFIG} = $ctx->{krb5_conf}; @@ -278,16 +282,39 @@ sub setup_plugin_s4_dc($$$$) my $plugin_s4_dc_options = " workgroup = $dcvars->{DOMAIN} realm = $dcvars->{REALM} - security=ads + + security = ads + domain logons = yes passdb backend = samba4 auth methods = guest samba4 - domain logons = yes - rpc_server:epmapper = external - rpc_server:lsass = external + server signing = on + + rpc_server:epmapper = disabled + rpc_server:rpcecho = disabled + rpc_server:dssetup = disabled + rpc_server:svctl = disabled + rpc_server:ntsvcs = disabled + rpc_server:eventlog = disabled + rpc_server:initshutdown = disabled + + rpc_server:winreg = embedded + rpc_server:srvsvc = embedded + rpc_server:netdfs = embedded + rpc_server:wkssvc = embedded + rpc_server:spoolss = embedded + rpc_server:lsarpc = external rpc_server:netlogon = external rpc_server:samr = external - server signing = on + + rpc_daemon:epmd = disabled + rpc_daemon:lsasd = disabled + rpc_daemon:spoolssd = disabled + + rpc_server:tcpip = no + +[IPC\$] + vfs objects = dfs_samba4 "; my $ret = $self->provision($prefix, @@ -309,7 +336,7 @@ sub setup_plugin_s4_dc($$$$) chmod 0777, "$prefix/share"; $self->check_or_start($ret, - "no", "yes", "yes"); + "no", "no", "yes"); $self->wait_for_start($ret); @@ -394,6 +421,7 @@ sub setup_ktest($$$) realm = ktest.samba.example.com security = ads username map = $prefix/lib/username.map + server signing = required "; my $ret = $self->provision($prefix, @@ -412,7 +440,7 @@ sub setup_ktest($$$) $ctx->{realm} = "KTEST.SAMBA.EXAMPLE.COM"; $ctx->{dnsname} = lc($ctx->{realm}); $ctx->{kdc_ipv4} = "0.0.0.0"; - Samba::mk_krb5_conf($ctx); + Samba::mk_krb5_conf($ctx, ""); $ret->{KRB5_CONFIG} = $ctx->{krb5_conf}; @@ -426,11 +454,7 @@ $ret->{USERNAME} = KTEST\\Administrator #Samba4 DC with the same parameters as are being used here. The #domain SID is S-1-5-21-1071277805-689288055-3486227160 - if (defined($ENV{BUILD_TDB2})) { - system("cp $self->{srcdir}/source3/selftest/ktest-secrets.tdb2 $prefix/private/secrets.tdb"); - } else { - system("cp $self->{srcdir}/source3/selftest/ktest-secrets.tdb $prefix/private/secrets.tdb"); - } + system("cp $self->{srcdir}/source3/selftest/ktest-secrets.tdb $prefix/private/secrets.tdb"); chmod 0600, "$prefix/private/secrets.tdb"; #This uses a pre-calculated krb5 credentials cache, obtained by running Samba4 with: @@ -464,6 +488,11 @@ $ret->{USERNAME} = KTEST\\Administrator system("cp $self->{srcdir}/source3/selftest/ktest-krb5_ccache-3 $prefix/krb5_ccache-3"); chmod 0600, "$prefix/krb5_ccache-3"; + # We need world access to this share, as otherwise the domain + # administrator from the AD domain provided by ktest can't + # access the share for tests. + chmod 0777, "$prefix/share"; + $self->check_or_start($ret, "yes", "no", "yes"); if (not $self->wait_for_start($ret)) { @@ -472,6 +501,36 @@ $ret->{USERNAME} = KTEST\\Administrator return $ret; } +sub setup_maptoguest($$) +{ + my ($self, $path) = @_; + + print "PROVISIONING maptoguest..."; + + my $options = " +map to guest = bad user +"; + + my $vars = $self->provision($path, + "maptoguest", + 7, + "maptoguestpass", + $options); + + $vars or return undef; + + $self->check_or_start($vars, + "yes", "no", "yes"); + + if (not $self->wait_for_start($vars)) { + return undef; + } + + $self->{vars}->{s3maptoguest} = $vars; + + return $vars; +} + sub stop_sig_term($$) { my ($self, $pid) = @_; kill("USR1", $pid) or kill("ALRM", $pid) or warn("Unable to kill $pid: $!"); @@ -501,7 +560,7 @@ sub read_pid($$) return $pid; } -sub check_or_start($$$$) { +sub check_or_start($$$$$) { my ($self, $env_vars, $nmbd, $winbindd, $smbd) = @_; unlink($env_vars->{NMBD_TEST_LOG}); @@ -521,6 +580,8 @@ sub check_or_start($$$$) { $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP}; $ENV{NSS_WRAPPER_WINBIND_SO_PATH} = $env_vars->{NSS_WRAPPER_WINBIND_SO_PATH}; + $ENV{UID_WRAPPER} = "1"; + if ($nmbd ne "yes") { $SIG{USR1} = $SIG{ALRM} = $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub { my $signame = shift; @@ -565,6 +626,8 @@ sub check_or_start($$$$) { $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP}; $ENV{NSS_WRAPPER_WINBIND_SO_PATH} = $env_vars->{NSS_WRAPPER_WINBIND_SO_PATH}; + $ENV{UID_WRAPPER} = "1"; + if ($winbindd ne "yes") { $SIG{USR1} = $SIG{ALRM} = $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub { my $signame = shift; @@ -587,7 +650,7 @@ sub check_or_start($$$$) { @preargs = split(/ /, $ENV{WINBINDD_VALGRIND}); } - print "Starting winbindd with config $env_vars->{SERVERCONFFILE})\n"; + print "Starting winbindd with config $env_vars->{SERVERCONFFILE}\n"; exec(@preargs, Samba::bindir_path($self, "winbindd"), "-F", "--no-process-group", "--stdout", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start winbindd: $!"); } @@ -611,6 +674,8 @@ sub check_or_start($$$$) { $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP}; $ENV{NSS_WRAPPER_WINBIND_SO_PATH} = $env_vars->{NSS_WRAPPER_WINBIND_SO_PATH}; + $ENV{UID_WRAPPER} = "1"; + if ($smbd ne "yes") { $SIG{USR1} = $SIG{ALRM} = $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub { my $signame = shift; @@ -855,6 +920,7 @@ sub provision($$$$$$$) map readonly = no store dos attributes = yes create mask = 755 + dos filemode = yes vfs objects = $vfs_modulesdir_abs/xattr_tdb.so $vfs_modulesdir_abs/streams_depot.so printing = vlp @@ -868,10 +934,21 @@ sub provision($$$$$$$) lpq cache time = 0 ncalrpc dir = $prefix_abs/ncalrpc - rpc_server:epmapper = embedded + rpc_server:epmapper = external + rpc_server:spoolss = external + rpc_server:lsarpc = external + rpc_server:samr = external + rpc_server:netlogon = external + rpc_server:tcpip = yes + + rpc_daemon:epmd = fork + rpc_daemon:spoolssd = fork + rpc_daemon:lsasd = fork resolv:host file = $dns_host_file + # The samba3.blackbox.smbclient_s3 test uses this to test that + # sending messages works, and that the %m sub works. message command = mv %s $shrdir/message.%m # Begin extra options @@ -888,6 +965,7 @@ sub provision($$$$$$$) print CONF " [tmp] path = $shrdir + comment = smb username is [%U] [tmpguest] path = $shrdir guest ok = yes @@ -929,6 +1007,11 @@ sub provision($$$$$$$) copy = print1 [lp] copy = print1 +[xcopy_share] + path = $shrdir + comment = smb username is [%U] + create mask = 777 + force create mode = 777 [print\$] copy = tmp ";