1#!/usr/bin/perl 2 3if ($< != 0) { 4 print "This must be run as root\n"; 5 exit 1; 6} 7 8my $realm = "/var/db/realm.local"; 9 10if (! -f $realm) { 11 system ("/usr/libexec/configureLocalKDC"); 12} 13 14open (REALM, '<'. $realm) or die "No realm"; 15 16my $realmString = join ('', <REALM>); 17 18chomp ($realmString); 19close REALM; 20 21my $kadmin = '/usr/sbin/kadmin.local'; 22 23foreach $service ("afpserver/", "cifs/", "host/", "local") { 24 my $principal; 25 my @password = (); 26 my $ktadd = 0; 27 28 if ($service =~ m|/$|) { 29 $principal = sprintf "%s%s@%s", $service, $realmString, $realmString; 30 @password = ('-randkey'); 31 $ktadd = 1; 32 } else { 33 $principal = sprintf "%s@%s", $service, $realmString; 34 @password = ('-pw', $service); 35 } 36 37 print "Running kadmin.local: ank\n\n"; 38 39 my @args = ('ank', @password, $principal); 40 41 print "$kadmin -q ". join (' ', @args) ."\n"; 42 system $kadmin, '-q', join (' ', @args); 43 44 if ($ktadd) { 45 print "\nRunning kadmin.local: ktadd\n\n"; 46 47 my @args = ('ktadd', $principal); 48 49 print "$kadmin -q ". join (' ', @args) ."\n"; 50 system $kadmin, '-q', join (' ', @args); 51 } 52} 53 54