This commit was manufactured by cvs2svn to create tag planetlab-3_0_1
authorPlanet-Lab Support <support@planet-lab.org>
Tue, 3 May 2005 17:56:40 +0000 (17:56 +0000)
committerPlanet-Lab Support <support@planet-lab.org>
Tue, 3 May 2005 17:56:40 +0000 (17:56 +0000)
'planetlab-3_0_1'.

auto.pl_sshd [new file with mode: 0755]

diff --git a/auto.pl_sshd b/auto.pl_sshd
new file mode 100755 (executable)
index 0000000..ee6b366
--- /dev/null
@@ -0,0 +1,60 @@
+#!/bin/bash
+#
+# autofs(5) executable map for /var/pl_sshd/keys/
+#
+# Mark Huang <mlhuang@cs.princeton.edu>
+# Copyright (C) 2004 The Trustees of Princeton University
+#
+# $Id: auto.pl_sshd,v 1.3 2004/10/04 18:43:16 mlh-pl_sshd 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
+vhome=/vservers/$slice/$(su - $slice -c "echo \$HOME")
+
+echo -n "Retrieving SSH keys for $slice..." >/dev/stderr
+
+# Execute this script as the slice user. Remember that the script
+# 1. Must be executable by any shell.
+# 2. Must not write to stdout.
+# 3. Must return a non-zero exit code if an error occurs.
+# 4. May be run by a malicious shell.
+
+su - $slice >/dev/stderr <<EOF
+install -d -m 700 \$HOME/.ssh/
+touch \$HOME/.ssh/authorized_keys
+chmod 600 \$HOME/.ssh/authorized_keys
+
+curl -s \
+    --fail \
+    --connect-timeout 30 \
+    --max-time 60 \
+    --output \$HOME/.ssh/authorized_keys \
+    "http://localhost:815/keys?slice=$slice"
+EOF
+
+rc=$?
+if [ $rc -ne 0 ] ; then
+    echo "failed with error $rc." >/dev/stderr
+    exit $rc
+fi
+
+echo "succeeded." >/dev/stderr
+
+echo "--bind,-r :$vhome/.ssh"
+exit 0