#!/bin/bash # # autofs(5) executable map for /var/pl_sshd/keys/ # # Mark Huang # Copyright (C) 2004 The Trustees of Princeton University # # $Id: auto.pl_sshd,v 1.3 2004/10/04 22:20:11 mlhuang Exp $ # usage() { echo "usage: $0 slice" >/dev/stderr exit 1 } [ -z "$1" ] && usage slice="$1" # Try real home directory first eval home="~$slice" if [ -f "$home/.ssh/authorized_keys" ] ; then echo "--bind,-r :$home/.ssh" exit 0 fi # Try virtual server home directory next vbase=/vservers/$slice keyfile=/home/$slice/.ssh/authorized_keys echo -n "Retrieving SSH keys for $slice... " >/dev/stderr keydata=`curl -s \ --fail \ --max-time 15 \ "http://localhost:815/keys?slice=$slice"` rc=$? if [ "$rc" -ne 0 ] ; then echo "curl failed with error $rc." >/dev/stderr exit $rc fi # write the keyfile while running as the slice user, this prevents # various potential exploits su - $slice >/dev/null 2>&1 <$keyfile EOF if [ "`cat $vbase$keyfile 2>/dev/null`" != "$keydata" ]; then echo "unable to write $vbase$keyfile." >/dev/stderr exit 1 fi echo "succeeded." >/dev/stderr echo "--bind,-r :$vbase/home/$slice/.ssh" exit 0