Oops
[freeradius.git] / debian / freeradius-common.postinst
1 #! /bin/sh
2
3 set -e
4
5 update_fs_from_statoverride() {
6   # I wish a simple dpkg-statoverride --update $file just did
7   # the right thing, but it doesn't, so we have to do it manually.
8   type=$1
9   user=$2
10   group=$3
11   mode=$4
12   file=$5
13   if [ -n "$type" -a -n "$group" -a -n "$mode" -a -n "$file" ]; then
14     if [ "$(find $file -maxdepth 0 -type $type -group $group -perm $mode)" = "" -a -$type $file ]; then
15       chgrp $group $file
16       chmod $mode $file
17     fi
18   fi
19 }
20
21 handle_config_files() {
22   runmode=$1
23
24   set +e
25   so=$(dpkg-statoverride --list /etc/freeradius)
26   ret=$?
27   set -e
28   case "$runmode" in
29     initial)
30       if [ $ret != 0 ]; then
31         dpkg-statoverride --add --update freerad freerad 2751 /etc/freeradius
32       fi
33       ;;
34     upgrade)
35       update_fs_from_statoverride d $so
36       ;;
37   esac
38
39   set +e
40   so=$(dpkg-statoverride --list /etc/freeradius/radiusd.conf)
41   ret=$?
42   set -e
43   case "$runmode" in
44     initial)
45       if [ $ret != 0 ]; then
46         dpkg-statoverride --add --update root freerad 0640 /etc/freeradius/radiusd.conf 
47       fi
48       ;;
49     upgrade)
50       update_fs_from_statoverride f $so
51       ;;
52   esac
53
54   # Relax permissions on local dictionary - allows radclient to run and should
55   # not contain secrets.  At any rate, only do it on fresh install
56   set +e
57   so=$(dpkg-statoverride --list /etc/freeradius/dictionary)
58   ret=$?
59   set -e
60   case "$runmode" in
61     initial)
62       if [ $ret != 0 ]; then
63         dpkg-statoverride --add --update root freerad 0644 /etc/freeradius/dictionary
64       fi
65       ;;
66     upgrade)
67       update_fs_from_statoverride f $so
68       ;;
69   esac
70 }
71
72 case "$1" in
73   configure)
74         if [ -z "$2" ]; then
75           # On a fresh install, add the necessary user and group
76           adduser --quiet --system --no-create-home --home /etc/freeradius --group --disabled-password freerad
77
78           # Put user freerad in group shadow, so the daemon can auth locally
79           # Only do this on fresh install as the admin may not want freerad in shadow
80           # group if authenticating by another mechanism
81           adduser --quiet freerad shadow
82
83           handle_config_files initial
84
85         else
86           handle_config_files upgrade
87         fi
88         ;;
89 esac
90
91 #DEBHELPER#
92
93 exit 0
94