X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=pl_sshd.spec;h=734d30d14732cd56e541aa2b778a9a80e8fac6ec;hb=273866a81faec77c99e0776ab5a8741a19d2d337;hp=2ffe6fc4cd7d04a10d2eb54caa35cc29b498e90c;hpb=a7813d33924a3e557c6347d81f005c5002dcb269;p=pl_sshd.git diff --git a/pl_sshd.spec b/pl_sshd.spec index 2ffe6fc..734d30d 100644 --- a/pl_sshd.spec +++ b/pl_sshd.spec @@ -1,15 +1,25 @@ +%define name pl_sshd +%define version 1.0 +%define release 8.planetlab%{?date:.%{date}} + +Vendor: PlanetLab +Packager: PlanetLab Central +Distribution: PlanetLab 3.0 +URL: http://cvs.planet-lab.org/cvs/pl_sshd + Summary: SSH server config for PlanetLab -Name: pl_sshd -Version: 0.1 -Release: 1 -Requires: automount, sshd -Copyright: GPL -URL: http://www.planet-lab.org +Name: %{name} +Version: %{version} +Release: %{release} +Requires: autofs, openssh-server +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. @@ -20,16 +30,17 @@ directory. %install -install -m 0755 -o root -g root pl_sshd.sh $RPM_BUILD_ROOT/usr/local/sbin -install -m 0755 -o root -g root pl_sshd $RPM_BUILD_ROOT/etc/init.d -install -m 0755 -o root -g root auto.pl_sshd $RPM_BUILD_ROOT/etc -echo "OPTIONS='-p 806'" >$RPM_BUILD_ROOT/etc/sysconfig/sshd +mkdir -p $RPM_BUILD_ROOT/var/pl_sshd/keys +install -D -m 0755 pl_sshd.sh $RPM_BUILD_ROOT/usr/local/sbin/pl_sshd.sh +install -D -m 0755 pl_sshd $RPM_BUILD_ROOT/etc/init.d/pl_sshd +install -D -m 0755 auto.pl_sshd.py $RPM_BUILD_ROOT/etc/auto.pl_sshd %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root) +%dir /var/pl_sshd/keys %attr(0755,root,root) /usr/local/sbin/pl_sshd.sh %attr(0755,root,root) /etc/init.d/pl_sshd %attr(0755,root,root) /etc/auto.pl_sshd @@ -38,19 +49,83 @@ rm -rf $RPM_BUILD_ROOT %post -RUNLEVEL=`/sbin/runlevel` - -if [ "$1" -ge 1 ]; then - chkconfig --add pl_sshd - - if [[ "$RUNLEVEL" != "unknown" ]]; then - /etc/init.d/pl_sshd restart - fi +# 1 = install, 2 = upgrade/reinstall +if [ $1 -ge 1 ]; then + # create the magic directory for automount + keydir=/var/pl_sshd/keys + + # add appropriate entry to auto.master + 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 + + # + # use the sysconfig file to tell our system sshd to look in the + # magic location for authorized_keys files + # + 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 [[ "$PL_BOOTCD" != "1" ]]; then + # + # don't try to start/restart various things automatically, + # it's too ugly (particularly if we're upgrading while + # connected over ssh) + # + 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 -if [ "$1" = 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 + # + [ "$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) + # + rm /etc/sysconfig/sshd + if [ "$PL_BOOTCD" != "1" ]; then + echo + echo "You need to manually restart sshd." + echo "Make sure you know what you're doing, particularly" + echo "if you're making this change over an ssh connection." + echo + fi + + # + # stop automounter, remove entry from auto.master, restart if + # necessary + # + [ "$PL_BOOTCD" != "1" ] && /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 + + [ "$PL_BOOTCD" != "1" ] && /etc/init.d/autofs start fi @@ -58,30 +133,9 @@ fi %changelog -* Tue Nov 25 2003 Steve Muir -- fixed a couple of Node Manager bugs: - - bootstrapping pl_conf state when boot server unreachable - - canonical hostnames should be all lower-case -- fixup UID and GID of users within vservers to match real world -- enable access to dynamic slices through port 806 sshd - -* Sun Oct 26 2003 Aaron Klingaman -- readded start/stop only when runlevel is known, for install purposes - -* Thu Oct 16 2003 Jeff Sedayao -- Fixed bug in pl_conf - it was getting negative wait times. Also added - duke4 as a trusted user. - -* Tue Oct 8 2003 Jeff Sedayao -- Removed special fetch login from init function, updated release - -* Tue Oct 7 2003 Jeff Sedayao -- Moved special fetch login into main loop, fix account deletion - problem - -* Tue Oct 7 2003 Aaron Klingaman -- Commented out code to start pl_* upon install +* Thu Apr 7 2005 Steve Muir +- convert auto.pl_sshd to a python script (simpler and less error-prone) -* Wed Aug 26 2003 Tammo Spalink -- Initial build. +* Mon Dec 1 2003 Steve Muir +- initial creation from files in sidewinder repository