bzr branch
http://bzr.recompile.se/loggerhead/mandos/trunk
| 
74
by Teddy Hogeborn
 * Makefile (PREFIX, CONFDIR): New.  | 
1  | 
#!/bin/sh -e
 | 
2  | 
# 
 | 
|
3  | 
# This script will run in the initrd environment at boot and edit
 | 
|
4  | 
# /conf/conf.d/cryptroot to set /lib/mandos/plugin-runner as keyscript
 | 
|
5  | 
# when no other keyscript is set, before cryptsetup.
 | 
|
6  | 
# 
 | 
|
7  | 
||
8  | 
# This script should be installed as
 | 
|
9  | 
# "/usr/share/initramfs-tools/scripts/local-top/mandos" which will
 | 
|
10  | 
# eventually be "/scripts/local-top/mandos" in the initrd.img file.
 | 
|
11  | 
||
12  | 
# No initramfs pre-requirements; we must instead run BEFORE cryptroot.
 | 
|
13  | 
# This is not a problem, since cryptroot forces itself to run LAST.
 | 
|
14  | 
PREREQ=""  | 
|
15  | 
prereqs()
 | 
|
16  | 
{
 | 
|
17  | 
echo "$PREREQ"  | 
|
18  | 
}
 | 
|
19  | 
||
20  | 
case $1 in  | 
|
21  | 
prereqs)
 | 
|
22  | 
     prereqs
 | 
|
23  | 
exit 0  | 
|
24  | 
;;  | 
|
25  | 
esac
 | 
|
26  | 
||
| 
178
by Teddy Hogeborn
 * initramfs-tools-script: Fix permissions of "/tmp" in initrd.  | 
27  | 
chmod a=rwxt /tmp  | 
28  | 
||
| 
74
by Teddy Hogeborn
 * Makefile (PREFIX, CONFDIR): New.  | 
29  | 
test -w /conf/conf.d/cryptroot  | 
30  | 
||
31  | 
# Do not replace cryptroot file unless we need to.
 | 
|
32  | 
replace_cryptroot=no  | 
|
33  | 
||
34  | 
# Our keyscript
 | 
|
35  | 
mandos=/lib/mandos/plugin-runner  | 
|
36  | 
||
37  | 
# parse /conf/conf.d/cryptroot.  Format:
 | 
|
38  | 
# target=sda2_crypt,source=/dev/sda2,key=none,keyscript=/foo/bar/baz
 | 
|
39  | 
exec 3>/conf/conf.d/cryptroot.mandos  | 
|
40  | 
while read options; do  | 
|
41  | 
newopts=""  | 
|
42  | 
# Split option line on commas  | 
|
43  | 
old_ifs="$IFS"  | 
|
44  | 
IFS="$IFS,"  | 
|
45  | 
for opt in $options; do  | 
|
46  | 
# Find the keyscript option, if any  | 
|
47  | 
case "$opt" in  | 
|
48  | 
keyscript=*)  | 
|
49  | 
keyscript="${opt#keyscript=}"  | 
|
50  | 
newopts="$newopts,$opt"  | 
|
51  | 
;;  | 
|
52  | 
"") : ;;  | 
|
53  | 
*)  | 
|
54  | 
newopts="$newopts,$opt"  | 
|
55  | 
;;  | 
|
56  | 
esac  | 
|
57  | 
done  | 
|
58  | 
IFS="$old_ifs"  | 
|
59  | 
unset old_ifs  | 
|
60  | 
# If there was no keyscript option, add one.  | 
|
61  | 
if [ -z "$keyscript" ]; then  | 
|
62  | 
replace_cryptroot=yes  | 
|
63  | 
newopts="$newopts,keyscript=$mandos"  | 
|
64  | 
fi  | 
|
65  | 
newopts="${newopts#,}"  | 
|
66  | 
echo "$newopts" >&3  | 
|
67  | 
done < /conf/conf.d/cryptroot  | 
|
68  | 
exec 3>&-  | 
|
69  | 
||
70  | 
# If we need to, replace the old cryptroot file with the new file.
 | 
|
71  | 
if [ "$replace_cryptroot" = yes ]; then  | 
|
72  | 
mv /conf/conf.d/cryptroot /conf/conf.d/cryptroot.mandos-old  | 
|
73  | 
mv /conf/conf.d/cryptroot.mandos /conf/conf.d/cryptroot  | 
|
74  | 
else
 | 
|
75  | 
rm /conf/conf.d/cryptroot.mandos  | 
|
76  | 
fi
 |