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