mirror of
				https://github.com/fspc/gbootroot.git
				synced 2025-11-04 00:05:35 -05:00 
			
		
		
		
	This allows tests to work properly from the Yard Box for non-root users,
chrooted tests disappear, it is assumed that most normal administrators would never consider giving non-root users chroot capabilities, but you never know, so only genext2fs is tested for, but room is left if another fs is choosen.
This commit is contained in:
		
							parent
							
								
									caca3cae38
								
							
						
					
					
						commit
						5af731e25c
					
				@ -1956,6 +1956,8 @@ sub which_tests {
 | 
				
			|||||||
    my ($chosen_tests) = @_;
 | 
					    my ($chosen_tests) = @_;
 | 
				
			||||||
    my ($action, $label);
 | 
					    my ($action, $label);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Need to know whether genext2fs is being used
 | 
				
			||||||
 | 
					    my $fs_type = (split(/\s/,$main::makefs))[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #  This is a little crude.  Technically we should read /etc/conf.getty
 | 
					    #  This is a little crude.  Technically we should read /etc/conf.getty
 | 
				
			||||||
    #  to make sure we're not supposed to be using a different login binary.
 | 
					    #  to make sure we're not supposed to be using a different login binary.
 | 
				
			||||||
@ -1980,12 +1982,15 @@ sub which_tests {
 | 
				
			|||||||
    my $t_inittab  = $chosen_tests->{31}{test_inittab};
 | 
					    my $t_inittab  = $chosen_tests->{31}{test_inittab};
 | 
				
			||||||
    my $t_scripts  = $chosen_tests->{32}{test_scripts};
 | 
					    my $t_scripts  = $chosen_tests->{32}{test_scripts};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return "ERROR" if errm(mount_device($device,$mount_point)) == 2;
 | 
					    if ( $fs_type ne "genext2fs" ) {
 | 
				
			||||||
    sys("/usr/lib/bootroot/yard_chrooted_tests $mount_point $t_fstab $t_inittab $t_scripts",
 | 
					 | 
				
			||||||
	"TESTING"); 
 | 
					 | 
				
			||||||
    return "ERROR" if errum(sys("umount $mount_point")) == 2;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return "ERROR" if errm(mount_device($device,$mount_point)) == 2;
 | 
						return "ERROR" if errm(mount_device($device,$mount_point)) == 2;
 | 
				
			||||||
 | 
						sys("/usr/lib/bootroot/yard_chrooted_tests $mount_point $t_fstab $t_inittab $t_scripts", "TESTING"); 
 | 
				
			||||||
 | 
						return "ERROR" if errum(sys("umount $mount_point")) == 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return "ERROR" if errm(mount_device($device,$mount_point)) == 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Now the question is whether or not these next tests depend on
 | 
					    # Now the question is whether or not these next tests depend on
 | 
				
			||||||
    # chroot, since they must have before.
 | 
					    # chroot, since they must have before.
 | 
				
			||||||
@ -2006,8 +2011,11 @@ sub which_tests {
 | 
				
			|||||||
	check_nss();                     
 | 
						check_nss();                     
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return "ERROR" if errum(sys("umount $mount_point")) == 2;
 | 
					    if ( $fs_type ne "genext2fs" ) {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						return "ERROR" if errum(sys("umount $mount_point")) == 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
} # end sub which_tests
 | 
					} # end sub which_tests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -210,6 +210,7 @@ my @menu_items = ( { path        => '/File',
 | 
				
			|||||||
		     action      => 36,
 | 
							     action      => 36,
 | 
				
			||||||
		     type        => '<CheckItem>',
 | 
							     type        => '<CheckItem>',
 | 
				
			||||||
		     callback    => \&tests },
 | 
							     callback    => \&tests },
 | 
				
			||||||
 | 
						      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                   { path        => '/_Help',
 | 
					                   { path        => '/_Help',
 | 
				
			||||||
                     type        => '<LastBranch>' },
 | 
					                     type        => '<LastBranch>' },
 | 
				
			||||||
@ -673,6 +674,15 @@ sub tests {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
sub test { 
 | 
					sub test { 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Need to know whether genext2fs is being used
 | 
				
			||||||
 | 
					    my $fs_type = (split(/\s/,$main::makefs))[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ( $fs_type ne "genext2fs" ) {
 | 
				
			||||||
 | 
						$tests{30}{test_fstab} = 0;
 | 
				
			||||||
 | 
						$tests{31}{test_inittab} = 0;
 | 
				
			||||||
 | 
						$tests{32}{test_scripts} = 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $error = which_tests(\%tests); 
 | 
					    my $error = which_tests(\%tests); 
 | 
				
			||||||
    return if $error && $error eq "ERROR";
 | 
					    return if $error && $error eq "ERROR";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -742,139 +752,138 @@ my $start_length;
 | 
				
			|||||||
sub yard_box {
 | 
					sub yard_box {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       $main::yard_window = new Gtk::Window "toplevel";
 | 
					    $main::yard_window = new Gtk::Window "toplevel";
 | 
				
			||||||
       $main::yard_window->signal_connect("destroy", \&destroy_window, 
 | 
					    $main::yard_window->signal_connect("destroy", \&destroy_window, 
 | 
				
			||||||
					  \$main::yard_window);
 | 
									       \$main::yard_window);
 | 
				
			||||||
       $main::yard_window->signal_connect("delete_event",\&destroy_window,
 | 
					    $main::yard_window->signal_connect("delete_event",\&destroy_window,
 | 
				
			||||||
					  \$main::yard_window);
 | 
									       \$main::yard_window);
 | 
				
			||||||
       $main::yard_window->signal_connect("destroy", sub { 
 | 
					    $main::yard_window->signal_connect("destroy", sub { 
 | 
				
			||||||
	   $search_window->destroy if $search_window; } );
 | 
						$search_window->destroy if $search_window; } );
 | 
				
			||||||
       $main::yard_window->signal_connect("delete_event", sub { 
 | 
					    $main::yard_window->signal_connect("delete_event", sub { 
 | 
				
			||||||
	   $search_window->destroy if $search_window; });
 | 
						$search_window->destroy if $search_window; });
 | 
				
			||||||
       $main::yard_window->set_usize( 525, 450 );
 | 
					    $main::yard_window->set_usize( 525, 450 );
 | 
				
			||||||
       $main::yard_window->set_policy( $true, $true, $false );
 | 
					    $main::yard_window->set_policy( $true, $true, $false );
 | 
				
			||||||
       $main::yard_window->set_title( "Yard Box - $template" );
 | 
					    $main::yard_window->set_title( "Yard Box - $template" );
 | 
				
			||||||
       $main::yard_window->border_width(0);
 | 
					    $main::yard_window->border_width(0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       my $main_vbox = new Gtk::VBox( $false, 0 );
 | 
					    my $main_vbox = new Gtk::VBox( $false, 0 );
 | 
				
			||||||
       $main::yard_window->add( $main_vbox );
 | 
					    $main::yard_window->add( $main_vbox );
 | 
				
			||||||
       $main_vbox->show();
 | 
					    $main_vbox->show();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       my $vbox = new Gtk::VBox( $false, 0 );
 | 
					    my $vbox = new Gtk::VBox( $false, 0 );
 | 
				
			||||||
       $vbox->border_width( 0 );
 | 
					    $vbox->border_width( 0 );
 | 
				
			||||||
       $main_vbox->pack_start( $vbox, $false, $true, 0 );
 | 
					    $main_vbox->pack_start( $vbox, $false, $true, 0 );
 | 
				
			||||||
       $vbox->show();
 | 
					    $vbox->show();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       #_______________________________________ 
 | 
					    #_______________________________________ 
 | 
				
			||||||
       # Item::Factory
 | 
					    # Item::Factory
 | 
				
			||||||
       my $menubar = yard_menu($main::yard_window);
 | 
					    my $menubar = yard_menu($main::yard_window);
 | 
				
			||||||
       $vbox->pack_start( $menubar, $false, $true, 0 );
 | 
					    $vbox->pack_start( $menubar, $false, $true, 0 );
 | 
				
			||||||
       $menubar->show();
 | 
					    $menubar->show();
 | 
				
			||||||
       
 | 
					    
 | 
				
			||||||
       $vbox = new Gtk::VBox( $false, 10 );
 | 
					    $vbox = new Gtk::VBox( $false, 10 );
 | 
				
			||||||
       $vbox->border_width( 10 );
 | 
					    $vbox->border_width( 10 );
 | 
				
			||||||
       $main_vbox->pack_start( $vbox, $true, $true, 0 );
 | 
					    $main_vbox->pack_start( $vbox, $true, $true, 0 );
 | 
				
			||||||
       $vbox->show();
 | 
					    $vbox->show();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       my $table = new Gtk::Table( 2, 2, $false );
 | 
					    my $table = new Gtk::Table( 2, 2, $false );
 | 
				
			||||||
       $table->set_row_spacing( 0, 2 );
 | 
					    $table->set_row_spacing( 0, 2 );
 | 
				
			||||||
       $table->set_col_spacing( 0, 2 );
 | 
					    $table->set_col_spacing( 0, 2 );
 | 
				
			||||||
       $vbox->pack_start( $table, $true, $true, 0 );
 | 
					    $vbox->pack_start( $table, $true, $true, 0 );
 | 
				
			||||||
       $table->show( );
 | 
					    $table->show( );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
       #_______________________________________ 
 | 
					    #_______________________________________ 
 | 
				
			||||||
       # Manipulate Gtk::ItemFactory - 
 | 
					    # Manipulate Gtk::ItemFactory - 
 | 
				
			||||||
       # The trick here is to use the real path.
 | 
					    # The trick here is to use the real path.
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
       #     GUIDE TO VARIABLES AND THEIR VALUES 
 | 
					    #     GUIDE TO VARIABLES AND THEIR VALUES 
 | 
				
			||||||
       #
 | 
					    #
 | 
				
			||||||
       #          objcopy <RadioItem>
 | 
					    #          objcopy <RadioItem>
 | 
				
			||||||
       #          -------------------
 | 
					    #          -------------------
 | 
				
			||||||
       # $strip_bool  strip-all (default)
 | 
					    # $strip_bool  strip-all (default)
 | 
				
			||||||
       #              strip-debug
 | 
					    #              strip-debug
 | 
				
			||||||
       #
 | 
					    #
 | 
				
			||||||
       #          stages <RadioItem>  
 | 
					    #          stages <RadioItem>  
 | 
				
			||||||
       #          ------------------
 | 
					    #          ------------------
 | 
				
			||||||
       #               one-by-one (default)
 | 
					    #               one-by-one (default)
 | 
				
			||||||
       # $stages_bool  continuous
 | 
					    # $stages_bool  continuous
 | 
				
			||||||
       #               user-defined
 | 
					    #               user-defined
 | 
				
			||||||
       #
 | 
					    #
 | 
				
			||||||
       #          stripping <CheckItem>
 | 
					    #          stripping <CheckItem>
 | 
				
			||||||
       #          ---------------------
 | 
					    #          ---------------------
 | 
				
			||||||
       #                      on           off
 | 
					    #                      on           off
 | 
				
			||||||
       #                      --           ---
 | 
					    #                      --           ---
 | 
				
			||||||
       # $lib_bool             1 (default)  0
 | 
					    # $lib_bool             1 (default)  0
 | 
				
			||||||
       # $bin_bool             1 (default)  0
 | 
					    # $bin_bool             1 (default)  0
 | 
				
			||||||
       # $mod_bool             1 (default)  0
 | 
					    # $mod_bool             1 (default)  0
 | 
				
			||||||
       #
 | 
					    #
 | 
				
			||||||
       #           Checking Settings <CheckItem>
 | 
					    #           Checking Settings <CheckItem>
 | 
				
			||||||
       #           -----------------------------
 | 
					    #           -----------------------------
 | 
				
			||||||
       # $replacement_bool     1 (default)  0
 | 
					    # $replacement_bool     1 (default)  0
 | 
				
			||||||
       # $module_bool          1 (default)  0
 | 
					    # $module_bool          1 (default)  0
 | 
				
			||||||
       #
 | 
					    #
 | 
				
			||||||
       #            Check Stage Variables HOH = %checks
 | 
					    #            Check Stage Variables HOH = %checks
 | 
				
			||||||
       #            -----------------------------------
 | 
					    #            -----------------------------------
 | 
				
			||||||
       # 16 fstab              1            0 (default)
 | 
					    # 16 fstab              1            0 (default)
 | 
				
			||||||
       ## These next two were removed, because there isn't any
 | 
					    ## These next two were removed, because there isn't any
 | 
				
			||||||
       ## script to make rc, and I can't remember what the
 | 
					    ## script to make rc, and I can't remember what the
 | 
				
			||||||
       # fstab directory name entry was for. :*?
 | 
					    # fstab directory name entry was for. :*?
 | 
				
			||||||
       # 17 rc                 1            0 (default
 | 
					    # 17 rc                 1            0 (default
 | 
				
			||||||
       # 18 'fstab directory name'  if fstab == 0
 | 
					    # 18 'fstab directory name'  if fstab == 0
 | 
				
			||||||
       #
 | 
					    #
 | 
				
			||||||
       #            Tests  <CheckItem> HOH = %tests
 | 
					    #            Tests  <CheckItem> HOH = %tests
 | 
				
			||||||
       #            --------------------------------
 | 
					    #            --------------------------------
 | 
				
			||||||
       # 30 test_fstab          1 (default)  0
 | 
					    # 30 test_fstab          1 (default)  0
 | 
				
			||||||
       # 31 test_inittab        1 (default)  0
 | 
					    # 31 test_inittab        1 (default)  0
 | 
				
			||||||
       # 32 test_scripts        1 (default)  0
 | 
					    # 32 test_scripts        1 (default)  0
 | 
				
			||||||
       # 33 test_links          1 (default)  0
 | 
					    # 33 test_links          1 (default)  0
 | 
				
			||||||
       # 34 test_passwd         1 (default)  0
 | 
					    # 34 test_passwd         1 (default)  0
 | 
				
			||||||
       # 35 test_pam            1 (default)  0
 | 
					    # 35 test_pam            1 (default)  0
 | 
				
			||||||
       # 36 test_nss            1 (default)  0
 | 
					    # 36 test_nss            1 (default)  0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
       # Stages
 | 
					    # Stages
 | 
				
			||||||
       $one_by_one =  $item_factory->get_item('/Edit/Stages/one-by-one');
 | 
					    $one_by_one =  $item_factory->get_item('/Edit/Stages/one-by-one');
 | 
				
			||||||
       $continuous = $item_factory->get_item('/Edit/Stages/continuous');
 | 
					    $continuous = $item_factory->get_item('/Edit/Stages/continuous');
 | 
				
			||||||
       $user_defined = $item_factory->get_item('/Edit/Stages/user defined');
 | 
					    $user_defined = $item_factory->get_item('/Edit/Stages/user defined');
 | 
				
			||||||
       $continuous->active(0);
 | 
					    $continuous->active(0);
 | 
				
			||||||
       $user_defined->active(0);
 | 
					    $user_defined->active(0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       # Stripping
 | 
					    # Stripping
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       # Libraries
 | 
					    # Libraries
 | 
				
			||||||
       my $lib_strip = $item_factory->get_item
 | 
					    my $lib_strip = $item_factory->get_item
 | 
				
			||||||
	   ('/Edit/Settings/Stripping/Libraries');
 | 
						('/Edit/Settings/Stripping/Libraries');
 | 
				
			||||||
       
 | 
					       
 | 
				
			||||||
       $lib_strip->active($true);
 | 
					    $lib_strip->active($true);
 | 
				
			||||||
       $lib_strip->signal_connect( "activate", 
 | 
					    $lib_strip->signal_connect( "activate", 
 | 
				
			||||||
				   sub {  
 | 
									sub {  
 | 
				
			||||||
				       # off   
 | 
									    # off   
 | 
				
			||||||
				        if ($lib_bool eq "") {
 | 
									    if ($lib_bool eq "") {
 | 
				
			||||||
					    $lib_bool = 0;
 | 
										$lib_bool = 0;
 | 
				
			||||||
				        }
 | 
									    }
 | 
				
			||||||
				        if ($lib_bool == 1) {
 | 
									    if ($lib_bool == 1) {
 | 
				
			||||||
					      $lib_bool--;
 | 
										$lib_bool--;
 | 
				
			||||||
				         }
 | 
									    }
 | 
				
			||||||
					 # on
 | 
									    # on
 | 
				
			||||||
					 else {
 | 
									    else {
 | 
				
			||||||
					     $lib_bool++;               
 | 
										$lib_bool++;               
 | 
				
			||||||
					 }
 | 
									    }
 | 
				
			||||||
					 #print "$lib_bool\n";
 | 
									    #print "$lib_bool\n";
 | 
				
			||||||
				     }
 | 
									} ); 
 | 
				
			||||||
                                   ); 
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
           # objcopy parameters for Libraries
 | 
					    # objcopy parameters for Libraries
 | 
				
			||||||
           $lib_strip_all = $item_factory->get_item
 | 
					    $lib_strip_all = $item_factory->get_item
 | 
				
			||||||
               ('/Edit/Settings/Stripping/settings/strip-all');
 | 
					    ('/Edit/Settings/Stripping/settings/strip-all');
 | 
				
			||||||
           $lib_strip_debug = $item_factory->get_item
 | 
					    $lib_strip_debug = $item_factory->get_item
 | 
				
			||||||
	       ('/Edit/Settings/Stripping/settings/strip-debug');
 | 
					    ('/Edit/Settings/Stripping/settings/strip-debug');
 | 
				
			||||||
           $lib_strip_debug->active(0);
 | 
					    $lib_strip_debug->active(0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       # Binaries
 | 
					    # Binaries
 | 
				
			||||||
       my $bin_strip = $item_factory->get_item
 | 
					    my $bin_strip = $item_factory->get_item
 | 
				
			||||||
	   ('/Edit/Settings/Stripping/Binaries');
 | 
					    ('/Edit/Settings/Stripping/Binaries');
 | 
				
			||||||
       $bin_strip->active($true);
 | 
					    $bin_strip->active($true);
 | 
				
			||||||
       $bin_strip->signal_connect( "activate", 
 | 
					    $bin_strip->signal_connect( "activate", 
 | 
				
			||||||
				   sub { 
 | 
									   sub { 
 | 
				
			||||||
				         if ($bin_bool eq "") {
 | 
									         if ($bin_bool eq "") {
 | 
				
			||||||
					    $bin_bool = 0;
 | 
										    $bin_bool = 0;
 | 
				
			||||||
@ -1068,8 +1077,15 @@ sub yard_box {
 | 
				
			|||||||
       $save_button->signal_connect( 'clicked', \&saved, 102);
 | 
					       $save_button->signal_connect( 'clicked', \&saved, 102);
 | 
				
			||||||
       $vbox->pack_start( $save_button, $true, $true, 0 );
 | 
					       $vbox->pack_start( $save_button, $true, $true, 0 );
 | 
				
			||||||
       $save_button->show();
 | 
					       $save_button->show();
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
       show $main::yard_window;
 | 
					       # chrooted tests not wanted for non-root user
 | 
				
			||||||
 | 
					       if ( $> != 0 ) {
 | 
				
			||||||
 | 
					             $item_factory->delete_item('/Tests/fstab');
 | 
				
			||||||
 | 
					             $item_factory->delete_item('/Tests/inittab');
 | 
				
			||||||
 | 
					             $item_factory->delete_item('/Tests/scripts');	
 | 
				
			||||||
 | 
					       }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        show $main::yard_window;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
} # end sub yard_box
 | 
					} # end sub yard_box
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1498,6 +1514,8 @@ sub yard_menu {
 | 
				
			|||||||
                                             $accel_group );
 | 
					                                             $accel_group );
 | 
				
			||||||
    $accel_group->attach($window);
 | 
					    $accel_group->attach($window);
 | 
				
			||||||
    $item_factory->create_items(@menu_items);
 | 
					    $item_factory->create_items(@menu_items);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ##$item_factory->delete_item('/File/Checkbox');
 | 
					    ##$item_factory->delete_item('/File/Checkbox');
 | 
				
			||||||
    ##$item_factory->create_item(['/File/Checkbox', undef, undef, <Item>]);
 | 
					    ##$item_factory->create_item(['/File/Checkbox', undef, undef, <Item>]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user