summaryrefslogtreecommitdiff
path: root/security/sfs/pkg-install
blob: 609bfca2c2836f8f433d6a084fd894e5534e22e6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/bin/sh

if [ -n "${PACKAGE_BUILDING}" ]; then
	exit 0
fi

KEYFILE="$PKG_PREFIX/etc/sfs/sfs_host_key"

USER=sfs
GROUP=sfs
UID=171
GID=171
PW=/usr/sbin/pw

SFSDIR=/var/spool/sfs

if [ "$2" = "PRE-INSTALL" ]; then
	echo -n "Checking for group '$GROUP'... "

	if ! ${PW} groupshow $GROUP >/dev/null 2>&1; then
		echo -n "doesn't exist, adding... "
		if ${PW} groupadd $GROUP -g ${GID}; then
			echo "success."
		else
			echo "FAILED!"
			exit 1
		fi
	else
		echo "exists."
	fi

	echo -n "Checking for user '$USER'... "

	if ! ${PW} usershow $USER >/dev/null 2>&1; then
		echo -n "doesn't exist, adding... "
		if ${PW} useradd $USER -u ${UID} -c 'Self-Certifying File System' -d /nonexistent -g $GROUP -s /sbin/nologin -h -; then
			echo "success."
		else
			echo "FAILED!"
			exit 1
		fi
	else
		echo "exists."
	fi
fi

if [ "$2" = "POST-INSTALL" ]; then
	echo -n "Checking for SFS directory ($SFSDIR)... "

	if [ -d "$SFSDIR" ]; then
		echo "already exists."
	else
		echo -n "creating... "
		if mkdir $SFSDIR; then
			echo "success."
		else
			echo "FAILED!"
			exit 1
		fi
	fi

	if ! chmod 750 $SFSDIR; then
		echo "chmod 750 $SFSDIR FAILED!"
		exit 1
	fi

	if ! chown $USER:$GROUP $SFSDIR; then
		echo "chown $USER:$GROUP $SFSDIR FAILED!"
		exit 1
	fi

	echo -n "Checking for SFS host key ($KEYFILE)... "

	if [ -f "$KEYFILE" ]; then
		echo "already exists, not generating."
	else
		echo "doesn't exist, generating."
		echo "Starting sfscd for entropy services."
		$PKG_PREFIX/sbin/sfscd
		echo -n "Sleeping ten seconds to give sfscd time to start up... "
		sleep 10
		echo "done."
		$PKG_PREFIX/bin/sfskey gen -KP -l `uname -n` $KEYFILE
		echo -n "Key generation done, killing sfscd... "
		kill -TERM `cat /var/run/sfscd.pid`
		echo "done."
	fi

	cat $PKG_PREFIX/share/doc/sfs/WELCOME
fi

exit 0