+%define name pl_sshd
+%define version 1.0
+%define release 10%{?pldistro:.%{pldistro}}%{?date:.%{date}}
+
+Vendor: PlanetLab
+Packager: PlanetLab Central <support@planet-lab.org>
+Distribution: PlanetLab 3.0
+URL: http://cvs.planet-lab.org/cvs/pl_sshd
+
Summary: SSH server config for PlanetLab
-Name: pl_sshd
-Version: 1.0
-Release: 1
+Name: %{name}
+Version: %{version}
+Release: %{release}
Requires: autofs, openssh-server
-Copyright: GPL
-URL: http://www.planet-lab.org
+License: GPL
Group: System Environment/Base
-Source: %{_fullname}.tar.gz
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
+
+Source0: %{name}-%{version}.tar.bz2
%description
-SSH server configuration for PlanetLab nodes. Configures an automounted
+SSH server configuration for PlanetLab nodes. Configures an automounted
directory as source for authorized_keys files and points sshd to that
directory.
-$Header: /cvs/pl_sshd/pl_sshd.spec,v 1.3 2003/12/01 21:22:53 sjm-pl_sshd Exp $.
%prep
%setup
%install
-mkdir -p $RPM_BUILD_ROOT/usr/local/sbin
-mkdir -p $RPM_BUILD_ROOT/etc/{sysconfig,init.d}
mkdir -p $RPM_BUILD_ROOT/var/pl_sshd/keys
-install -m 0755 pl_sshd.sh $RPM_BUILD_ROOT/usr/local/sbin
-install -m 0755 pl_sshd $RPM_BUILD_ROOT/etc/init.d
-install -m 0755 auto.pl_sshd $RPM_BUILD_ROOT/etc
+install -D -m 0755 pl_sshd.sh $RPM_BUILD_ROOT/usr/local/sbin/pl_sshd
+install -D -m 0755 pl_sshd $RPM_BUILD_ROOT/etc/init.d/pl_sshd
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
-%attr(0755,root,root) /usr/local/sbin/pl_sshd.sh
+%dir /var/pl_sshd/keys
+%attr(0755,root,root) /usr/local/sbin/pl_sshd
%attr(0755,root,root) /etc/init.d/pl_sshd
-%attr(0755,root,root) /etc/auto.pl_sshd
%pre
%post
-RUNLEVEL=`/sbin/runlevel`
+# 1 = install, 2 = upgrade/reinstall
+if [ $1 -ge 1 ]; then
+ # link sshd pam config to pl_sshd so that we can actually login
+ pam_pl_sshd=/etc/pam.d/pl_sshd
+ [ -r $pam_pl_sshd ] || ln -s sshd $pam_pl_sshd
+
+ chkconfig --add pl_sshd
-if [ "$1" -ge 1 ]; then
- # create the magic directory for automount
- keydir=/var/pl_sshd/keys
- [ -d $keydir ] || mkdir -p $keydir
+ if [ "$1" -gt "1" ]; then # upgrading
+ #
+ # remove funky config options for sshd (so that when we restart
+ # things will operate normally i.e., without automount magic)
+ #
+ rm -f /etc/sysconfig/sshd
- # add appropriate entry to auto.master
+ #
+ # stop automounter, remove entry from auto.master, restart if
+ # necessary
+ #
+ [ "$PL_BOOTCD" != "1" ] && /etc/init.d/autofs stop
auto_master=/etc/auto.master
- auto_master_entry="$keydir /etc/auto.pl_sshd"
- grep -qF "$auto_master_entry" $auto_master || \
- echo $auto_master_entry >>$auto_master
+ orig=$auto_master
+ backup=$auto_master.pl_sshd.post
+ mv $orig $backup
+ sed -e '\,^/var/pl_sshd/keys,d' $backup > $orig && rm $backup || \
+ mv $backup $orig
+ [ "$PL_BOOTCD" != "1" ] && /etc/init.d/autofs start
+ fi
+
+ if [[ "$PL_BOOTCD" != "1" ]]; then
#
- # use the sysconfig file to tell our system sshd to look in the
- # magic location for authorized_keys files
+ # don't try to start/restart various things automatically,
+ # it's too ugly (particularly if we're upgrading while
+ # connected over ssh)
#
- sysconfig_sshd=/etc/sysconfig/sshd
- [ -r $sysconfig_sshd ] && \
- mv $sysconfig_sshd $sysconfig_sshd.pl_sshd
- echo "OPTIONS='-o \"AuthorizedKeysFile $keydir/%u/authorized_keys\"'" \
- >$sysconfig_sshd
-
- # link sshd pam config to pl_sshd so that we can actually login
- pam_pl_sshd=/etc/pam.d/pl_sshd
- [ -r $pam_pl_sshd ] || ln -s sshd $pam_pl_sshd
-
- chkconfig --add pl_sshd
-
- if [[ "$RUNLEVEL" != "unknown" ]]; then
- /etc/init.d/autofs restart
- /etc/init.d/sshd restart
- /etc/init.d/pl_sshd start
- fi
+ echo
+ echo "You need to manually restart autofs and sshd, and"
+ echo "start the pl_sshd (ssh on port 806) service."
+ echo "Make sure you know what you're doing, particularly"
+ echo "if you're making this change over an ssh connection."
+ echo
+ fi
fi
%preun
-RUNLEVEL=`/sbin/runlevel`
-
-if [ "$1" -ge "0" ]; then
+# 0 = erase, 1 = upgrade
+if [ $1 -eq 0 ]; then
#
# stop pl_sshd, remove it from rcX.d init dirs, remove link
# to sshd's pam config
#
- [ "$RUNLEVEL" != "unknown" ] && /etc/init.d/pl_sshd stop
+ [ "$PL_BOOTCD" = "1" ] || /etc/init.d/pl_sshd stop || :
chkconfig --del pl_sshd
rm -f /etc/pam.d/pl_sshd
-
- #
- # remove funky config options for sshd (so that when we restart
- # things will operate normally i.e., without automount magic),
- # then restart
- #
- rm /etc/sysconfig/sshd
- [ "$RUNLEVEL" != "unknown" ] && /etc/init.d/sshd restart
-
- #
- # stop automounter, remove entry from auto.master, restart if
- # necessary
- #
- [ "$RUNLEVEL" != "unknown" ] && /etc/init.d/autofs stop
- auto_master=/etc/auto.master
- mv $auto_master $auto_master.pl_sshd.preun
- sed -e '\,^/var/pl_sshd/keys,d' $auto_master.pl_sshd.preun \
- >$auto_master
-
- [ "$RUNLEVEL" != "unknown" ] && /etc/init.d/autofs start
fi
%changelog
+* Wed Nov 2 2005 Steve Muir <smuir@cs.princeton.edu>
+- don't fanny around using the automounter to access ssh keys in vservers,
+ pl_conf now writes them into the normal locations
+
+* Wed Oct 12 2005 Steve Muir <smuir@cs.princeton.edu>
+- fix pl_sshd script name and argv[0] to satisfy re-exec requirements
+
+* Thu Apr 7 2005 Steve Muir <smuir@cs.princeton.edu>
+- convert auto.pl_sshd to a python script (simpler and less error-prone)
+
* Mon Dec 1 2003 Steve Muir <smuir@cs.princeton.edu>
- initial creation from files in sidewinder repository