X-Git-Url: http://andersk.mit.edu/gitweb/gssapi-openssh.git/blobdiff_plain/5ff39d34a50802bab296b50eb09d097062e07f03..65ad299ab5ba264fcd30f41a85a20950bfc06076:/setup/setup-openssh.pl diff --git a/setup/setup-openssh.pl b/setup/setup-openssh.pl index b57a363..69a82b0 100644 --- a/setup/setup-openssh.pl +++ b/setup/setup-openssh.pl @@ -35,18 +35,6 @@ use Getopt::Long; use Cwd; use Cwd 'abs_path'; -# -# modify the ld library path for when we call ssh executables -# - -$oldldpath = $ENV{LD_LIBRARY_PATH}; -$newldpath = "$gpath/lib"; -if (length($oldldpath) > 0) -{ - $newldpath .= ":$oldldpath"; -} -$ENV{LD_LIBRARY_PATH} = "$newldpath"; - # # i'm including this because other perl scripts in the gpt setup directories # do so @@ -76,7 +64,7 @@ my $myname = "setup-openssh.pl"; $prefix = ${globusdir}; $exec_prefix = "${prefix}"; -$bindir = "${exec_prefix}/bin"; +$bindir = "${exec_prefix}/bin/ssh.d"; $sbindir = "${exec_prefix}/sbin"; $sysconfdir = "$prefix/etc/ssh"; $localsshdir = "/etc/ssh"; @@ -127,7 +115,7 @@ makeConfDir(); copyPRNGFile(); $keyhash = determineKeys(); runKeyGen($keyhash->{gen}); -copyKeyFiles($keyhash->{copy}); +linkKeyFiles($keyhash->{link}); copyConfigFiles(); my $metadata = new Grid::GPT::Setup(package_name => "gsi_openssh_setup"); @@ -426,22 +414,22 @@ sub findExecutable return "undef"; } -### copyKeyFiles( $copylist ) +### linkKeyFiles( $linklist ) # -# given an array of keys to copy, copy both the key and its public variant into +# given an array of keys to link, link both the key and its public variant into # the gsi-openssh configuration directory. # -sub copyKeyFiles +sub linkKeyFiles { - my($copylist) = @_; + my($linklist) = @_; my($regex, $basename); - if (@$copylist) + if (@$linklist) { - debug1("Copying ssh host keys...\n"); + debug1("Linking ssh host keys...\n"); - for my $f (@$copylist) + for my $f (@$linklist) { $f =~ s:/+:/:g; @@ -450,8 +438,8 @@ sub copyKeyFiles $keyfile = "$f"; $pubkeyfile = "$f.pub"; - copyFile("$localsshdir/$keyfile", "$sysconfdir/$keyfile"); - copyFile("$localsshdir/$pubkeyfile", "$sysconfdir/$pubkeyfile"); + linkFile("$localsshdir/$keyfile", "$sysconfdir/$keyfile"); + linkFile("$localsshdir/$pubkeyfile", "$sysconfdir/$pubkeyfile"); } } } @@ -596,10 +584,10 @@ sub determineKeys $keyhash = {}; $keyhash->{gen} = []; # a list of keytypes to generate - $keyhash->{copy} = []; # a list of files to copy from the + $keyhash->{link} = []; # a list of files to link $genlist = $keyhash->{gen}; - $copylist = $keyhash->{copy}; + $linklist = $keyhash->{link}; # # loop over our keytypes and determine what we need to do for each of them @@ -633,16 +621,16 @@ sub determineKeys } # - # if we can find a copy of the keys in /etc/ssh, we'll copy them to the user's + # if we can find a copy of the keys in /etc/ssh, we'll link them to the user's # globus location # $mainkeyfile = "$localsshdir/$basekeyfile"; $mainpubkeyfile = "$localsshdir/$basekeyfile.pub"; - if ( isReadable($mainkeyfile) && isReadable($mainpubkeyfile) ) + if ( isPresent($mainkeyfile) && isPresent($mainpubkeyfile) ) { - push(@$copylist, $basekeyfile); + push(@$linklist, $basekeyfile); $count++; next; } @@ -888,6 +876,29 @@ sub copyConfigFiles copySXXScript("$setupdir/SXXsshd.in", "$sbindir/SXXsshd"); } +### linkFile( $src, $dest ) +# +# create a symbolic link from $src to $dest. +# + +sub linkFile +{ + my($src, $dest) = @_; + + if ( !isPresent($src) ) + { + debug1("$src is not readable... not creating $dest.\n"); + return; + } + + if ( !prepareFileWrite($dest) ) + { + return; + } + + action("ln -s $src $dest"); +} + ### copyFile( $src, $dest ) # # copy the file pointed to by $src to the location specified by $dest. in the @@ -1060,7 +1071,7 @@ sub action debug1("$command\n"); - my $result = system("LD_LIBRARY_PATH=\"$gpath/lib:\$LD_LIBRARY_PATH\"; $command >/dev/null 2>&1"); + my $result = system("$command >/dev/null 2>&1"); if (($result or $?) and $command !~ m!patch!) {