Changeset 740 for vendor/current/selftest/target/Samba3.pm
- Timestamp:
- Nov 14, 2012, 12:59:34 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vendor/current/selftest/target/Samba3.pm
r414 r740 25 25 26 26 sub new($$) { 27 my ($classname, $bindir) = @_; 28 my $self = { bindir => $bindir }; 27 my ($classname, $bindir, $srcdir) = @_; 28 my $self = { bindir => $bindir, 29 srcdir => $srcdir 30 }; 29 31 bless $self; 30 32 return $self; … … 97 99 my ($self, $envname, $path) = @_; 98 100 99 if ($envname eq "dc") { 100 return $self->setup_dc("$path/dc"); 101 if ($envname eq "s3dc") { 102 return $self->setup_dc("$path/s3dc"); 103 } elsif ($envname eq "secshare") { 104 return $self->setup_secshare("$path/secshare"); 105 } elsif ($envname eq "secserver") { 106 if (not defined($self->{vars}->{s3dc})) { 107 $self->setup_dc("$path/s3dc"); 108 } 109 return $self->setup_secserver("$path/secserver", $self->{vars}->{s3dc}); 101 110 } elsif ($envname eq "member") { 102 if (not defined($self->{vars}->{ dc})) {103 $self->setup_dc("$path/ dc");104 } 105 return $self->setup_member("$path/member", $self->{vars}->{ dc});111 if (not defined($self->{vars}->{s3dc})) { 112 $self->setup_dc("$path/s3dc"); 113 } 114 return $self->setup_member("$path/member", $self->{vars}->{s3dc}); 106 115 } else { 107 116 return undef; … … 113 122 my ($self, $path) = @_; 114 123 115 print "PROVISIONING DC...";116 117 my $ dc_options = "124 print "PROVISIONING S3DC..."; 125 126 my $s3dc_options = " 118 127 domain master = yes 119 128 domain logons = yes … … 122 131 123 132 my $vars = $self->provision($path, 124 "LOCAL DC2",133 "LOCALS3DC2", 125 134 2, 126 "local dc2pass",127 $ dc_options);135 "locals3dc2pass", 136 $s3dc_options); 128 137 129 138 $self->check_or_start($vars, … … 133 142 $self->wait_for_start($vars); 134 143 135 $self->{vars}->{dc} = $vars; 144 $vars->{DC_SERVER} = $vars->{SERVER}; 145 $vars->{DC_SERVER_IP} = $vars->{SERVER_IP}; 146 $vars->{DC_NETBIOSNAME} = $vars->{NETBIOSNAME}; 147 $vars->{DC_USERNAME} = $vars->{USERNAME}; 148 $vars->{DC_PASSWORD} = $vars->{PASSWORD}; 149 150 $self->{vars}->{s3dc} = $vars; 136 151 137 152 return $vars; … … 140 155 sub setup_member($$$) 141 156 { 142 my ($self, $prefix, $ dcvars) = @_;157 my ($self, $prefix, $s3dcvars) = @_; 143 158 144 159 print "PROVISIONING MEMBER..."; … … 159 174 my $cmd = ""; 160 175 $cmd .= "SOCKET_WRAPPER_DEFAULT_IFACE=\"$ret->{SOCKET_WRAPPER_DEFAULT_IFACE}\" "; 161 $cmd .= "$net join $ret->{CONFIGURATION} $ dcvars->{DOMAIN} member";162 $cmd .= " -U$ dcvars->{USERNAME}\%$dcvars->{PASSWORD}";176 $cmd .= "$net join $ret->{CONFIGURATION} $s3dcvars->{DOMAIN} member"; 177 $cmd .= " -U$s3dcvars->{USERNAME}\%$s3dcvars->{PASSWORD}"; 163 178 164 179 system($cmd) == 0 or die("Join failed\n$cmd"); … … 170 185 $self->wait_for_start($ret); 171 186 172 $ret->{DC_SERVER} = $ dcvars->{SERVER};173 $ret->{DC_SERVER_IP} = $ dcvars->{SERVER_IP};174 $ret->{DC_NETBIOSNAME} = $ dcvars->{NETBIOSNAME};175 $ret->{DC_USERNAME} = $ dcvars->{USERNAME};176 $ret->{DC_PASSWORD} = $ dcvars->{PASSWORD};187 $ret->{DC_SERVER} = $s3dcvars->{SERVER}; 188 $ret->{DC_SERVER_IP} = $s3dcvars->{SERVER_IP}; 189 $ret->{DC_NETBIOSNAME} = $s3dcvars->{NETBIOSNAME}; 190 $ret->{DC_USERNAME} = $s3dcvars->{USERNAME}; 191 $ret->{DC_PASSWORD} = $s3dcvars->{PASSWORD}; 177 192 178 193 return $ret; 179 194 } 180 195 181 sub stop($) 182 { 183 my ($self) = @_; 196 sub setup_secshare($$) 197 { 198 my ($self, $path) = @_; 199 200 print "PROVISIONING server with security=share..."; 201 202 my $secshare_options = " 203 security = share 204 lanman auth = yes 205 "; 206 207 my $vars = $self->provision($path, 208 "LOCALSHARE4", 209 4, 210 "local4pass", 211 $secshare_options); 212 213 $self->check_or_start($vars, 214 ($ENV{SMBD_MAXTIME} or 2700), 215 "yes", "no", "yes"); 216 217 $self->wait_for_start($vars); 218 219 $self->{vars}->{secshare} = $vars; 220 221 return $vars; 222 } 223 224 sub setup_secserver($$$) 225 { 226 my ($self, $prefix, $s3dcvars) = @_; 227 228 print "PROVISIONING server with security=server..."; 229 230 my $secserver_options = " 231 security = server 232 password server = $s3dcvars->{SERVER_IP} 233 "; 234 235 my $ret = $self->provision($prefix, 236 "LOCALSERVER5", 237 5, 238 "localserver5pass", 239 $secserver_options); 240 241 $ret or die("Unable to provision"); 242 243 $self->check_or_start($ret, 244 ($ENV{SMBD_MAXTIME} or 2700), 245 "yes", "no", "yes"); 246 247 $self->wait_for_start($ret); 248 249 $ret->{DC_SERVER} = $s3dcvars->{SERVER}; 250 $ret->{DC_SERVER_IP} = $s3dcvars->{SERVER_IP}; 251 $ret->{DC_NETBIOSNAME} = $s3dcvars->{NETBIOSNAME}; 252 $ret->{DC_USERNAME} = $s3dcvars->{USERNAME}; 253 $ret->{DC_PASSWORD} = $s3dcvars->{PASSWORD}; 254 255 return $ret; 184 256 } 185 257 … … 226 298 227 299 $ENV{WINBINDD_SOCKET_DIR} = $env_vars->{WINBINDD_SOCKET_DIR}; 300 $ENV{NMBD_SOCKET_DIR} = $env_vars->{NMBD_SOCKET_DIR}; 228 301 229 302 $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD}; … … 253 326 } 254 327 255 exec(@preargs, $self->binpath("nmbd"), "-F", "- S", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start nmbd: $!");328 exec(@preargs, $self->binpath("nmbd"), "-F", "--no-process-group", "-S", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start nmbd: $!"); 256 329 } 257 330 write_pid($env_vars, "nmbd", $pid); … … 268 341 269 342 $ENV{WINBINDD_SOCKET_DIR} = $env_vars->{WINBINDD_SOCKET_DIR}; 343 $ENV{NMBD_SOCKET_DIR} = $env_vars->{NMBD_SOCKET_DIR}; 270 344 271 345 $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD}; … … 295 369 } 296 370 297 exec(@preargs, $self->binpath("winbindd"), "-F", "- S", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start winbindd: $!");371 exec(@preargs, $self->binpath("winbindd"), "-F", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start winbindd: $!"); 298 372 } 299 373 write_pid($env_vars, "winbindd", $pid); … … 310 384 311 385 $ENV{WINBINDD_SOCKET_DIR} = $env_vars->{WINBINDD_SOCKET_DIR}; 386 $ENV{NMBD_SOCKET_DIR} = $env_vars->{NMBD_SOCKET_DIR}; 312 387 313 388 $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD}; … … 334 409 @preargs = split(/ /,$ENV{SMBD_VALGRIND}); 335 410 } 336 exec(@preargs, $self->binpath("smbd"), "-F", "- S", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start smbd: $!");411 exec(@preargs, $self->binpath("smbd"), "-F", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start smbd: $!"); 337 412 } 338 413 write_pid($env_vars, "smbd", $pid); … … 340 415 341 416 return 0; 342 }343 344 sub create_clientconf($$$)345 {346 my ($self, $prefix, $domain) = @_;347 348 my $lockdir = "$prefix/locks";349 my $logdir = "$prefix/logs";350 my $piddir = "$prefix/pid";351 my $privatedir = "$prefix/private";352 my $conffile = "$prefix/smb.conf";353 354 my $torture_interfaces='127.0.0.6/8,127.0.0.7/8,127.0.0.8/8,127.0.0.9/8,127.0.0.10/8,127.0.0.11/8';355 open(CONF, ">$conffile");356 print CONF "357 [global]358 workgroup = $domain359 360 private dir = $privatedir361 pid directory = $piddir362 lock directory = $lockdir363 log file = $logdir/log.\%m364 log level = 0365 366 name resolve order = bcast367 368 netbios name = TORTURE_6369 interfaces = $torture_interfaces370 panic action = $RealBin/gdb_backtrace \%d %\$(MAKE_TEST_BINARY)371 372 passdb backend = tdbsam373 ";374 close(CONF);375 417 } 376 418 … … 395 437 my $prefix_abs = abs_path($prefix); 396 438 my $bindir_abs = abs_path($self->{bindir}); 439 my $vfs_modulesdir_abs = ($ENV{VFSLIBDIR} or $bindir_abs); 397 440 398 441 my @dirs = (); … … 413 456 push(@dirs,$lockdir); 414 457 458 my $eventlogdir="$prefix_abs/lockdir/eventlog"; 459 push(@dirs,$eventlogdir); 460 415 461 my $logdir="$prefix_abs/logs"; 416 462 push(@dirs,$logdir); 463 464 my $driver32dir="$shrdir/W32X86"; 465 push(@dirs,$driver32dir); 466 467 my $driver64dir="$shrdir/x64"; 468 push(@dirs,$driver64dir); 469 470 my $driver40dir="$shrdir/WIN40"; 471 push(@dirs,$driver40dir); 472 473 my $ro_shrdir="$shrdir/root-tmp"; 474 push(@dirs,$ro_shrdir); 475 476 my $msdfs_shrdir="$shrdir/msdfsshare"; 477 push(@dirs,$msdfs_shrdir); 478 479 my $msdfs_deeppath="$msdfs_shrdir/deeppath"; 480 push(@dirs,$msdfs_deeppath); 417 481 418 482 # this gets autocreated by winbindd 419 483 my $wbsockdir="$prefix_abs/winbindd"; 420 484 my $wbsockprivdir="$lockdir/winbindd_privileged"; 485 486 my $nmbdsockdir="$prefix_abs/nmbd"; 487 unlink($nmbdsockdir); 421 488 422 489 ## … … 431 498 mkdir($_, 0777) foreach(@dirs); 432 499 500 ## 501 ## create ro and msdfs share layout 502 ## 503 504 chmod 0755, $ro_shrdir; 505 my $unreadable_file = "$ro_shrdir/unreadable_file"; 506 open(UNREADABLE_FILE, ">$unreadable_file") or die("Unable to open $unreadable_file"); 507 close(UNREADABLE_FILE); 508 chmod 0600, $unreadable_file; 509 510 my $msdfs_target = "$ro_shrdir/msdfs-target"; 511 open(MSDFS_TARGET, ">$msdfs_target") or die("Unable to open $msdfs_target"); 512 close(MSDFS_TARGET); 513 chmod 0666, $msdfs_target; 514 symlink "msdfs:$server_ip\\ro-tmp", "$msdfs_shrdir/msdfs-src1"; 515 symlink "msdfs:$server_ip\\ro-tmp", "$msdfs_shrdir/deeppath/msdfs-src2"; 516 433 517 my $conffile="$libdir/server.conf"; 434 518 435 my $nss_wrapper_pl = "$ENV{PERL} $ RealBin/../lib/nss_wrapper/nss_wrapper.pl";519 my $nss_wrapper_pl = "$ENV{PERL} $self->{srcdir}/lib/nss_wrapper/nss_wrapper.pl"; 436 520 my $nss_wrapper_passwd = "$privatedir/passwd"; 437 521 my $nss_wrapper_group = "$privatedir/group"; 522 523 my $mod_printer_pl = "$ENV{PERL} $self->{srcdir}/source3/script/tests/printing/modprinter.pl"; 524 525 my @eventlog_list = ("dns server", "application"); 526 527 ## 528 ## calculate uids and gids 529 ## 530 531 my ($max_uid, $max_gid); 532 my ($uid_nobody, $uid_root); 533 my ($gid_nobody, $gid_nogroup, $gid_root, $gid_domusers); 534 535 if ($unix_uid < 0xffff - 2) { 536 $max_uid = 0xffff; 537 } else { 538 $max_uid = $unix_uid; 539 } 540 541 $uid_root = $max_uid - 1; 542 $uid_nobody = $max_uid - 2; 543 544 if ($unix_gids[0] < 0xffff - 3) { 545 $max_gid = 0xffff; 546 } else { 547 $max_gid = $unix_gids[0]; 548 } 549 550 $gid_nobody = $max_gid - 1; 551 $gid_nogroup = $max_gid - 2; 552 $gid_root = $max_gid - 3; 553 $gid_domusers = $max_gid - 4; 554 555 ## 556 ## create conffile 557 ## 438 558 439 559 open(CONF, ">$conffile") or die("Unable to open $conffile"); … … 443 563 interfaces = $server_ip/8 444 564 bind interfaces only = yes 445 panic action = $ RealBin/gdb_backtrace %d %\$(MAKE_TEST_BINARY)565 panic action = $self->{srcdir}/selftest/gdb_backtrace %d %\$(MAKE_TEST_BINARY) 446 566 447 567 workgroup = $domain … … 452 572 log file = $logdir/log.\%m 453 573 log level = 0 574 debug pid = yes 454 575 455 576 name resolve order = bcast … … 462 583 time server = yes 463 584 464 add user script = $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type passwd --action add --name %u 585 add user script = $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type passwd --action add --name %u --gid $gid_nogroup 465 586 add group script = $nss_wrapper_pl --group_path $nss_wrapper_group --type group --action add --name %g 466 add machine script = $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type passwd --action add --name %u 587 add machine script = $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type passwd --action add --name %u --gid $gid_nogroup 467 588 add user to group script = $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type member --action add --member %u --name %g --group_path $nss_wrapper_group 468 589 delete user script = $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type passwd --action delete --name %u … … 470 591 delete user from group script = $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type member --action delete --member %u --name %g --group_path $nss_wrapper_group 471 592 593 addprinter command = $mod_printer_pl -a -s $conffile -- 594 deleteprinter command = $mod_printer_pl -d -s $conffile -- 595 596 eventlog list = application \"dns server\" 597 472 598 kernel oplocks = no 473 599 kernel change notify = no … … 478 604 479 605 winbindd:socket dir = $wbsockdir 480 idmap uid = 100000-200000 481 idmap gid = 100000-200000 606 nmbd:socket dir = $nmbdsockdir 607 idmap config * : range = 100000-200000 608 winbind enum users = yes 609 winbind enum groups = yes 482 610 483 611 # min receivefile size = 4000 484 612 613 max protocol = SMB2 485 614 read only = no 615 server signing = auto 616 486 617 smbd:sharedelay = 100000 487 smbd:writetimeupdatedelay = 500000 488 map hidden = yes 489 map system = yes 618 # smbd:writetimeupdatedelay = 500000 619 map hidden = no 620 map system = no 621 map readonly = no 622 store dos attributes = yes 490 623 create mask = 755 491 vfs objects = $bindir_abs/xattr_tdb.so $bindir_abs/streams_depot.so 492 493 # Begin extra options 494 $extra_options 495 # End extra options 496 497 #Include user defined custom parameters if set 498 "; 499 500 if (defined($ENV{INCLUDE_CUSTOM_CONF})) { 501 print CONF "\t$ENV{INCLUDE_CUSTOM_CONF}\n"; 502 } 503 504 print CONF " 505 [tmp] 506 path = $shrdir 507 [hideunread] 508 copy = tmp 509 hide unreadable = yes 510 [hideunwrite] 511 copy = tmp 512 hide unwriteable files = yes 513 [print1] 514 copy = tmp 515 printable = yes 624 vfs objects = $vfs_modulesdir_abs/xattr_tdb.so $vfs_modulesdir_abs/streams_depot.so 625 516 626 printing = vlp 517 627 print command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb print %p %s … … 522 632 queue pause command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb queuepause %p 523 633 queue resume command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb queueresume %p 634 lpq cache time = 0 635 636 ncalrpc dir = $lockdir/ncalrpc 637 rpc_server:epmapper = embedded 638 639 # Begin extra options 640 $extra_options 641 # End extra options 642 643 #Include user defined custom parameters if set 644 "; 645 646 if (defined($ENV{INCLUDE_CUSTOM_CONF})) { 647 print CONF "\t$ENV{INCLUDE_CUSTOM_CONF}\n"; 648 } 649 650 print CONF " 651 [tmp] 652 path = $shrdir 653 [tmpguest] 654 path = $shrdir 655 guest ok = yes 656 [guestonly] 657 path = $shrdir 658 guest only = yes 659 guest ok = yes 660 [forceuser] 661 path = $shrdir 662 force user = $unix_name 663 guest ok = yes 664 [forcegroup] 665 path = $shrdir 666 force group = nogroup 667 guest ok = yes 668 [ro-tmp] 669 path = $ro_shrdir 670 guest ok = yes 671 [msdfs-share] 672 path = $msdfs_shrdir 673 msdfs root = yes 674 guest ok = yes 675 [hideunread] 676 copy = tmp 677 hide unreadable = yes 678 [tmpcase] 679 copy = tmp 680 case sensitive = yes 681 [hideunwrite] 682 copy = tmp 683 hide unwriteable files = yes 684 [print1] 685 copy = tmp 686 printable = yes 524 687 525 688 [print2] … … 527 690 [print3] 528 691 copy = print1 529 [ print4]692 [lp] 530 693 copy = print1 694 [print\$] 695 copy = tmp 531 696 "; 532 697 close(CONF); … … 537 702 538 703 open(PASSWD, ">$nss_wrapper_passwd") or die("Unable to open $nss_wrapper_passwd"); 539 print PASSWD "nobody:x:65534:65533:nobody gecos:$prefix_abs:/bin/false 540 root:x:65533:65532:root gecos:$prefix_abs:/bin/false 704 print PASSWD "nobody:x:$uid_nobody:$gid_nobody:nobody gecos:$prefix_abs:/bin/false 541 705 $unix_name:x:$unix_uid:$unix_gids[0]:$unix_name gecos:$prefix_abs:/bin/false 542 706 "; 707 if ($unix_uid != 0) { 708 print PASSWD "root:x:$uid_root:$gid_root:root gecos:$prefix_abs:/bin/false"; 709 } 543 710 close(PASSWD); 544 711 545 712 open(GROUP, ">$nss_wrapper_group") or die("Unable to open $nss_wrapper_group"); 546 print GROUP "nobody:x:65533: 547 nogroup:x:65534:nobody 548 root:x:65532: 713 print GROUP "nobody:x:$gid_nobody: 714 nogroup:x:$gid_nogroup:nobody 549 715 $unix_name-group:x:$unix_gids[0]: 716 domusers:X:$gid_domusers: 550 717 "; 718 if ($unix_gids[0] != 0) { 719 print GROUP "root:x:$gid_root:"; 720 } 721 551 722 close(GROUP); 723 724 foreach my $evlog (@eventlog_list) { 725 my $evlogtdb = "$eventlogdir/$evlog.tdb"; 726 open(EVENTLOG, ">$evlogtdb") or die("Unable to open $evlogtdb"); 727 close(EVENTLOG); 728 } 552 729 553 730 $ENV{NSS_WRAPPER_PASSWD} = $nss_wrapper_passwd; … … 557 734 print PWD "$password\n$password\n"; 558 735 close(PWD) or die("Unable to set password for test account"); 559 560 delete $ENV{NSS_WRAPPER_PASSWD};561 delete $ENV{NSS_WRAPPER_GROUP};562 736 563 737 print "DONE\n"; … … 574 748 $ret{SERVER} = $server; 575 749 $ret{USERNAME} = $unix_name; 750 $ret{USERID} = $unix_uid; 576 751 $ret{DOMAIN} = $domain; 577 752 $ret{NETBIOSNAME} = $server; … … 580 755 $ret{WINBINDD_SOCKET_DIR} = $wbsockdir; 581 756 $ret{WINBINDD_PRIV_PIPE_DIR} = $wbsockprivdir; 757 $ret{NMBD_SOCKET_DIR} = $nmbdsockdir; 582 758 $ret{SOCKET_WRAPPER_DEFAULT_IFACE} = $swiface; 583 759 $ret{NSS_WRAPPER_PASSWD} = $nss_wrapper_passwd; 584 760 $ret{NSS_WRAPPER_GROUP} = $nss_wrapper_group; 585 761 $ret{NSS_WRAPPER_WINBIND_SO_PATH} = $ENV{NSS_WRAPPER_WINBIND_SO_PATH}; 762 $ret{LOCAL_PATH} = "$shrdir"; 586 763 587 764 return \%ret; … … 606 783 system($self->binpath("smbclient") ." $envvars->{CONFIGURATION} -L $envvars->{SERVER_IP} -U% -p 139 | head -2"); 607 784 785 # Ensure we have domain users mapped. 786 system($self->binpath("net") ." $envvars->{CONFIGURATION} groupmap add rid=513 unixgroup=domusers type=domain"); 787 608 788 print $self->getlog_env($envvars); 609 789 }
Note:
See TracChangeset
for help on using the changeset viewer.