Fix name and path of pl_sshd wrapper script to satisfy re-exec
[pl_sshd.git] / pl_sshd.spec
1 %define name pl_sshd
2 %define version 1.0
3 %define release 9.planetlab%{?date:.%{date}}
4
5 Vendor: PlanetLab
6 Packager: PlanetLab Central <support@planet-lab.org>
7 Distribution: PlanetLab 3.0
8 URL: http://cvs.planet-lab.org/cvs/pl_sshd
9
10 Summary: SSH server config for PlanetLab
11 Name: %{name}
12 Version: %{version}
13 Release: %{release}
14 Requires: autofs, openssh-server
15 License: GPL
16 Group: System Environment/Base
17 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
18
19 Source0: %{name}-%{version}.tar.bz2
20
21 %description 
22 SSH server configuration for PlanetLab nodes. Configures an automounted
23 directory as source for authorized_keys files and points sshd to that
24 directory.
25
26 %prep
27 %setup
28
29 %build
30
31
32 %install
33 mkdir -p $RPM_BUILD_ROOT/var/pl_sshd/keys
34 install -D -m 0755 pl_sshd.sh $RPM_BUILD_ROOT/usr/local/sbin/pl_sshd
35 install -D -m 0755 pl_sshd $RPM_BUILD_ROOT/etc/init.d/pl_sshd
36 install -D -m 0755 auto.pl_sshd.py $RPM_BUILD_ROOT/etc/auto.pl_sshd
37
38 %clean
39 rm -rf $RPM_BUILD_ROOT
40
41 %files
42 %defattr(-,root,root)
43 %dir /var/pl_sshd/keys
44 %attr(0755,root,root) /usr/local/sbin/pl_sshd
45 %attr(0755,root,root) /etc/init.d/pl_sshd
46 %attr(0755,root,root) /etc/auto.pl_sshd
47
48 %pre
49
50
51 %post
52 # 1 = install, 2 = upgrade/reinstall
53 if [ $1 -ge 1 ]; then
54     # create the magic directory for automount
55     keydir=/var/pl_sshd/keys
56
57     # add appropriate entry to auto.master
58     auto_master=/etc/auto.master
59     auto_master_entry="$keydir /etc/auto.pl_sshd"
60     grep -qF "$auto_master_entry" $auto_master || \
61         echo $auto_master_entry >>$auto_master
62
63     #
64     # use the sysconfig file to tell our system sshd to look in the
65     # magic location for authorized_keys files
66     #
67     sysconfig_sshd=/etc/sysconfig/sshd
68     [ -r $sysconfig_sshd ] && \
69         mv $sysconfig_sshd $sysconfig_sshd.pl_sshd
70     echo "OPTIONS='-o \"AuthorizedKeysFile $keydir/%u/authorized_keys\"'" \
71         >$sysconfig_sshd
72
73     # link sshd pam config to pl_sshd so that we can actually login
74     pam_pl_sshd=/etc/pam.d/pl_sshd
75     [ -r $pam_pl_sshd ] || ln -s sshd $pam_pl_sshd
76
77     chkconfig --add pl_sshd
78
79     if [[ "$PL_BOOTCD" != "1" ]]; then
80         #
81         # don't try to start/restart various things automatically,
82         # it's too ugly (particularly if we're upgrading while
83         # connected over ssh)
84         #
85         echo
86         echo "You need to manually restart autofs and sshd, and"
87         echo "start the pl_sshd (ssh on port 806) service."
88         echo "Make sure you know what you're doing, particularly"
89         echo "if you're making this change over an ssh connection."
90         echo
91     fi
92 fi
93
94 %preun
95 # 0 = erase, 1 = upgrade
96 if [ $1 -eq 0 ]; then
97         #
98         # stop pl_sshd, remove it from rcX.d init dirs, remove link
99         # to sshd's pam config
100         #
101         [ "$PL_BOOTCD" = "1" ] || /etc/init.d/pl_sshd stop || :
102         chkconfig --del pl_sshd
103         rm -f /etc/pam.d/pl_sshd
104
105         #
106         # remove funky config options for sshd (so that when we restart
107         # things will operate normally i.e., without automount magic)
108         #
109         rm /etc/sysconfig/sshd
110         if [ "$PL_BOOTCD" != "1" ]; then
111             echo
112             echo "You need to manually restart sshd."
113             echo "Make sure you know what you're doing, particularly"
114             echo "if you're making this change over an ssh connection."
115             echo
116         fi
117
118         #
119         # stop automounter, remove entry from auto.master, restart if
120         # necessary
121         #
122         [ "$PL_BOOTCD" != "1" ] && /etc/init.d/autofs stop
123         auto_master=/etc/auto.master
124         mv $auto_master $auto_master.pl_sshd.preun
125         sed -e '\,^/var/pl_sshd/keys,d' $auto_master.pl_sshd.preun \
126             >$auto_master
127
128         [ "$PL_BOOTCD" != "1" ] && /etc/init.d/autofs start
129 fi
130
131
132 %postun
133
134
135 %changelog
136 * Wed Oct 12 2005 Steve Muir <smuir@cs.princeton.edu>
137 - fix pl_sshd script name and argv[0] to satisfy re-exec requirements
138
139 * Thu Apr  7 2005 Steve Muir <smuir@cs.princeton.edu>
140 - convert auto.pl_sshd to a python script (simpler and less error-prone)
141
142 * Mon Dec  1 2003 Steve Muir <smuir@cs.princeton.edu>
143 - initial creation from files in sidewinder repository
144