1#!/usr/bin/perl 2 3if ($< != 0) { 4 print "This must be run as root\n"; 5 exit 1; 6} 7 8my $kdc_conf = "/var/db/krb5kdc/kdc.conf"; 9 10if (! -f $kdc_conf) { 11 system ("/usr/libexec/configureLocalKDC"); 12} 13 14open (REALM, "< $kdc_conf") or die "No ".$kdc_conf; 15my @rtmp = grep /default_realm/, <REALM>; 16close REALM; 17 18chomp (@rtmp); 19 20my @rtmp = split (/\s+/, $rtmp[0]); 21 22my $realmString = $rtmp[3]; 23 24my $service = "afpserver"; 25 26my $principal = sprintf "%s/%s@%s", $service, $realmString, $realmString; 27 28my $prefs = "/Library/Preferences/com.apple.AppleFileServer"; 29my $key = "kerberosPrincipal"; 30 31my $kadmin = '/usr/sbin/kadmin.local'; 32 33system "/usr/bin/defaults", "write", $prefs, $key, $principal; 34 35print "Running kadmin.local: ank\n\n"; 36 37my @args = ('ank', '-randkey', $principal); 38 39print "$kadmin -q ". join (' ', @args) ."\n"; 40system $kadmin, '-q', join (' ', @args); 41 42print "\nRunning kadmin.local: ktadd\n\n"; 43 44my @args = ('ktadd', $principal); 45 46print "$kadmin -q ". join (' ', @args) ."\n"; 47system $kadmin, '-q', join (' ', @args); 48 49