selftest: Test creation of the dns-SERVER account during selftest
[metze/samba/wip.git] / selftest / target / Samba4.pm
index da4b626791d576390492086b746713e6483d0dd6..0303b5cb19317ebbbd5b970616e4c8934e46aa3c 100644 (file)
@@ -424,7 +424,7 @@ sub provision_raw_prepare($$$$$$$$$$)
 {
        my ($self, $prefix, $server_role, $hostname,
            $domain, $realm, $functional_level,
-           $password, $kdc_ipv4, $use_ntvfs) = @_;
+           $password, $kdc_ipv4) = @_;
        my $ctx;
        my $netbiosname = uc($hostname);
 
@@ -540,11 +540,6 @@ sub provision_raw_prepare($$$$$$$$$$)
        push (@provision_options, "--root=$ctx->{unix_name}");
        push (@provision_options, "--server-role=\"$ctx->{server_role}\"");
        push (@provision_options, "--function-level=\"$ctx->{functional_level}\"");
-       push (@provision_options, "--dns-backend=BIND9_DLZ");
-
-       if ($use_ntvfs) {
-           push (@provision_options, "--use-ntvfs");
-       }
 
        @{$ctx->{provision_options}} = @provision_options;
 
@@ -560,15 +555,18 @@ sub provision_raw_step1($$)
 
        mkdir($_, 0777) foreach (@{$ctx->{directories}});
 
+       ##
+       ## lockdir and piddir must be 0755
+       ##
+       chmod 0755, $ctx->{lockdir};
+       chmod 0755, $ctx->{piddir};
+
        unless (open(CONFFILE, ">$ctx->{smb_conf}")) {
                warn("can't open $ctx->{smb_conf}$?");
                return undef;
        }
-       my $acl = "false";
-       $acl = "true" if (defined $ENV{WITH_ACL});
        print CONFFILE "
 [global]
-       acl:search = $acl
        netbios name = $ctx->{netbiosname}
        posix:eadb = $ctx->{statedir}/eadb.tdb
        workgroup = $ctx->{domain}
@@ -589,7 +587,7 @@ sub provision_raw_step1($$)
        panic action = $RealBin/gdb_backtrace \%d
        wins support = yes
        server role = $ctx->{server_role}
-       server services = +echo +dns +smb -s3fs
+       server services = +echo +smb -s3fs
         dcerpc endpoint servers = +winreg +srvsvc
        notify:inotify = false
        ldb:nosync = true
@@ -610,6 +608,8 @@ sub provision_raw_step1($$)
        # remove this again, when our smb2 client library
        # supports signin on compound related requests
        server signing = on
+
+        idmap_ldb:use rfc2307=yes
 ";
 
        print CONFFILE "
@@ -636,6 +636,7 @@ nobody:x:65534:65533:nobody gecos:$ctx->{prefix_abs}:/bin/false
 pdbtest:x:65533:65533:pdbtest gecos:$ctx->{prefix_abs}:/bin/false
 ";
        close(PWD);
+        my $uid_rfc2307test = 65533;
 
        open(GRP, ">$ctx->{nsswrap_group}");
        print GRP "
@@ -646,6 +647,7 @@ nobody:x:65533:
 nogroup:x:65534:nobody
 ";
        close(GRP);
+        my $gid_rfc2307test = 65532;
 
        my $configuration = "--configfile=$ctx->{smb_conf}";
 
@@ -687,8 +689,10 @@ nogroup:x:65534:nobody
                SAMBA_TEST_FIFO => "$ctx->{prefix}/samba_test.fifo",
                SAMBA_TEST_LOG => "$ctx->{prefix}/samba_test.log",
                SAMBA_TEST_LOG_POS => 0,
-               NSS_WRAPPER_WINBIND_SO_PATH => Samba::bindir_path($self, "default/nsswitch/libnss-winbind.so"),
-                LOCAL_PATH => $ctx->{share}
+               NSS_WRAPPER_WINBIND_SO_PATH => Samba::nss_wrapper_winbind_so_path($self),
+                LOCAL_PATH => $ctx->{share},
+                UID_RFC2307TEST => $uid_rfc2307test,
+                GID_RFC2307TEST => $gid_rfc2307test
        };
 
        return $ret;
@@ -714,12 +718,19 @@ sub provision($$$$$$$$$)
 {
        my ($self, $prefix, $server_role, $hostname,
            $domain, $realm, $functional_level,
-           $password, $kdc_ipv4, $extra_smbconf_options, $extra_smbconf_shares, $use_ntvfs) = @_;
+           $password, $kdc_ipv4, $extra_smbconf_options, $extra_smbconf_shares,
+           $extra_provision_options) = @_;
 
        my $ctx = $self->provision_raw_prepare($prefix, $server_role,
                                               $hostname,
                                               $domain, $realm, $functional_level,
-                                              $password, $kdc_ipv4, $use_ntvfs);
+                                              $password, $kdc_ipv4);
+
+       if (defined($extra_provision_options)) {
+               push (@{$ctx->{provision_options}}, @{$extra_provision_options});
+       } else {
+               push (@{$ctx->{provision_options}}, "--use-ntvfs");
+       }
 
        $ctx->{share} = "$ctx->{prefix_abs}/share";
        push(@{$ctx->{directories}}, "$ctx->{share}");
@@ -797,7 +808,7 @@ sub provision($$$$$$$$$)
 
 [sysvol]
        path = $ctx->{statedir}/sysvol
-       read only = yes
+       read only = no
 
 [netlogon]
        path = $ctx->{statedir}/sysvol/$ctx->{dnsname}/scripts
@@ -859,7 +870,7 @@ sub provision_member($$$)
                                   "2008",
                                   "locMEMpass3",
                                   $dcvars->{SERVER_IP},
-                                  "", "", 1);
+                                  "", "", undef);
        unless ($ret) {
                return undef;
        }
@@ -924,7 +935,7 @@ sub provision_rpc_proxy($$$)
                                   "2008",
                                   "locRPCproxypass4",
                                   $dcvars->{SERVER_IP},
-                                  $extra_smbconf_options, "", 1);
+                                  $extra_smbconf_options, "", undef);
 
        unless ($ret) {
                return undef;
@@ -984,7 +995,7 @@ sub provision_rpc_proxy($$$)
        return $ret;
 }
 
-sub provision_promoted_vampire_dc($$$)
+sub provision_promoted_dc($$$)
 {
        my ($self, $prefix, $dcvars) = @_;
        print "PROVISIONING VAMPIRE DC...";
@@ -996,7 +1007,9 @@ sub provision_promoted_vampire_dc($$$)
                                               "samba.example.com",
                                               "2008",
                                               $dcvars->{PASSWORD},
-                                              $dcvars->{SERVER_IP}, 1);
+                                              $dcvars->{SERVER_IP});
+
+       push (@{$ctx->{provision_options}}, "--use-ntvfs");
 
        $ctx->{smb_conf_extra_options} = "
        max xmit = 32K
@@ -1036,16 +1049,16 @@ sub provision_promoted_vampire_dc($$$)
        $cmd .= "KRB5_CONFIG=\"$ret->{KRB5_CONFIG}\" ";
        $cmd .= "$samba_tool domain dcpromo $ret->{CONFIGURATION} $dcvars->{REALM} DC --realm=$dcvars->{REALM}";
        $cmd .= " -U$dcvars->{DC_USERNAME}\%$dcvars->{DC_PASSWORD}";
-       $cmd .= " --machinepass=machine$ret->{password} --use-ntvfs";
+       $cmd .= " --machinepass=machine$ret->{password} --use-ntvfs --dns-backend=BIND9_DLZ";
 
        unless (system($cmd) == 0) {
                warn("Join failed\n$cmd");
                return undef;
        }
 
-       $ret->{PROMOTED_VAMPIRE_DC_SERVER} = $ret->{SERVER};
-       $ret->{PROMOTED_VAMPIRE_DC_SERVER_IP} = $ret->{SERVER_IP};
-       $ret->{PROMOTED_VAMPIRE_DC_NETBIOSNAME} = $ret->{NETBIOSNAME};
+       $ret->{PROMOTED_DC_SERVER} = $ret->{SERVER};
+       $ret->{PROMOTED_DC_SERVER_IP} = $ret->{SERVER_IP};
+       $ret->{PROMOTED_DC_NETBIOSNAME} = $ret->{NETBIOSNAME};
 
        $ret->{DC_SERVER} = $dcvars->{DC_SERVER};
        $ret->{DC_SERVER_IP} = $dcvars->{DC_SERVER_IP};
@@ -1068,7 +1081,9 @@ sub provision_vampire_dc($$$)
                                               "samba.example.com",
                                               "2008",
                                               $dcvars->{PASSWORD},
-                                              $dcvars->{SERVER_IP}, 1);
+                                              $dcvars->{SERVER_IP});
+
+       push (@{$ctx->{provision_options}}, "--use-ntvfs");
 
        $ctx->{smb_conf_extra_options} = "
        max xmit = 32K
@@ -1127,7 +1142,9 @@ sub provision_subdom_dc($$$)
                                               "sub.samba.example.com",
                                               "2008",
                                               $dcvars->{PASSWORD},
-                                              undef, 1);
+                                              undef);
+
+       push (@{$ctx->{provision_options}}, "--use-ntvfs");
 
        $ctx->{smb_conf_extra_options} = "
        max xmit = 32K
@@ -1183,8 +1200,7 @@ sub provision_dc($$)
        my ($self, $prefix) = @_;
 
        print "PROVISIONING DC...";
-        my $extra_conf_options = "netbios aliases = localDC1-a
-allow dns updates = signed";
+        my $extra_conf_options = "netbios aliases = localDC1-a";
        my $ret = $self->provision($prefix,
                                   "domain controller",
                                   "localdc",
@@ -1192,7 +1208,7 @@ allow dns updates = signed";
                                   "samba.example.com",
                                   "2008",
                                   "locDCpass1",
-                                  undef, $extra_conf_options, "", 1);
+                                  undef, $extra_conf_options, "", undef);
 
        return undef unless(defined $ret);
        unless($self->add_wins_config("$prefix/private")) {
@@ -1221,7 +1237,7 @@ sub provision_fl2000dc($$)
                                   "samba2000.example.com",
                                   "2000",
                                   "locDCpass5",
-                                  undef, "", "", 1);
+                                  undef, "", "", undef);
 
        unless($self->add_wins_config("$prefix/private")) {
                warn("Unable to add wins configuration");
@@ -1243,7 +1259,7 @@ sub provision_fl2003dc($$)
                                   "samba2003.example.com",
                                   "2003",
                                   "locDCpass6",
-                                  undef, "allow dns updates = True", "", 1);
+                                  undef, "allow dns updates = nonsecure and secure", "", undef);
 
        unless($self->add_wins_config("$prefix/private")) {
                warn("Unable to add wins configuration");
@@ -1265,7 +1281,7 @@ sub provision_fl2008r2dc($$)
                                   "samba2008R2.example.com",
                                   "2008_R2",
                                   "locDCpass7",
-                                  undef, "", "", 1);
+                                  undef, "", "", undef);
 
        unless ($self->add_wins_config("$prefix/private")) {
                warn("Unable to add wins configuration");
@@ -1288,11 +1304,13 @@ sub provision_rodc($$$)
                                               "samba.example.com",
                                               "2008",
                                               $dcvars->{PASSWORD},
-                                              $dcvars->{SERVER_IP}, 1);
+                                              $dcvars->{SERVER_IP});
        unless ($ctx) {
                return undef;
        }
 
+       push (@{$ctx->{provision_options}}, "--use-ntvfs");
+
        $ctx->{share} = "$ctx->{prefix_abs}/share";
        push(@{$ctx->{directories}}, "$ctx->{share}");
 
@@ -1375,13 +1393,14 @@ sub provision_plugin_s4_dc($$)
        printing = bsd
        printcap name = /dev/null
 
-       max protocol = SMB2
+       max protocol = SMB3
        read only = no
        server signing = auto
 
        smbd:sharedelay = 100000
        smbd:writetimeupdatedelay = 500000
-       create mask = 755
+       create mask = 0777
+       directory mask = 0777
        dos filemode = yes
 
         dcerpc endpoint servers = -winreg -srvsvc
@@ -1451,7 +1470,7 @@ sub provision_plugin_s4_dc($$)
                                   "2008",
                                   "locDCpass1",
                                   undef, $extra_smbconf_options,
-                                   $extra_smbconf_shares, 0);
+                                   $extra_smbconf_shares, undef);
 
        return undef unless(defined $ret);
        unless($self->add_wins_config("$prefix/private")) {
@@ -1473,6 +1492,8 @@ sub provision_chgdcpass($$)
        my ($self, $prefix) = @_;
 
        print "PROVISIONING CHGDCPASS...";
+       my $extra_provision_options = undef;
+       push (@{$extra_provision_options}, "--dns-backend=BIND9_DLZ");
        my $ret = $self->provision($prefix,
                                   "domain controller",
                                   "chgdcpass",
@@ -1480,7 +1501,8 @@ sub provision_chgdcpass($$)
                                   "chgdcpassword.samba.example.com",
                                   "2008",
                                   "chgDCpass1",
-                                  undef, "", "", 1);
+                                  undef, "server services = -dns", "",
+                                  $extra_provision_options);
 
        return undef unless(defined $ret);
        unless($self->add_wins_config("$prefix/private")) {
@@ -1610,11 +1632,11 @@ sub setup_env($$$)
                        $self->setup_dc("$path/dc");
                }
                return $self->setup_vampire_dc("$path/vampire_dc", $self->{vars}->{dc});
-       } elsif ($envname eq "promoted_vampire_dc") {
+       } elsif ($envname eq "promoted_dc") {
                if (not defined($self->{vars}->{dc})) {
                        $self->setup_dc("$path/dc");
                }
-               return $self->setup_promoted_vampire_dc("$path/promoted_vampire_dc", $self->{vars}->{dc});
+               return $self->setup_promoted_dc("$path/promoted_dc", $self->{vars}->{dc});
        } elsif ($envname eq "subdom_dc") {
                if (not defined($self->{vars}->{dc})) {
                        $self->setup_dc("$path/dc");
@@ -1808,18 +1830,18 @@ sub setup_vampire_dc($$$)
        return $env;
 }
 
-sub setup_promoted_vampire_dc($$$)
+sub setup_promoted_dc($$$)
 {
        my ($self, $path, $dc_vars) = @_;
 
-       my $env = $self->provision_promoted_vampire_dc($path, $dc_vars);
+       my $env = $self->provision_promoted_dc($path, $dc_vars);
 
        if (defined $env) {
                $self->check_or_start($env, "single");
 
                $self->wait_for_start($env);
 
-               $self->{vars}->{promoted_vampire_dc} = $env;
+               $self->{vars}->{promoted_dc} = $env;
 
                # force replicated DC to update repsTo/repsFrom
                # for vampired partitions