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;
{
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_member("$path/member", $self->{vars}->{s3dc});
} else {
- return undef;
+ return "UNKNOWN";
}
}
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_daemon:epmd = disabled
- rpc_daemon:lsasd = disabled
- rpc_server:tcpip = no
+ 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,
realm = ktest.samba.example.com
security = ads
username map = $prefix/lib/username.map
+ server signing = required
";
my $ret = $self->provision($prefix,
#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:
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)) {
return $pid;
}
-sub check_or_start($$$$) {
+sub check_or_start($$$$$) {
my ($self, $env_vars, $nmbd, $winbindd, $smbd) = @_;
unlink($env_vars->{NMBD_TEST_LOG});
$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;
$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;
@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: $!");
}
$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;
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
copy = print1
[lp]
copy = print1
+[xcopy_share]
+ path = $shrdir
+ comment = smb username is [%U]
+ create mask = 777
+ force create mode = 777
[print\$]
copy = tmp
";