/mandos/release

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/release

« back to all changes in this revision

Viewing changes to debian/mandos.postinst

  • Committer: Teddy Hogeborn
  • Date: 2024-09-09 01:36:41 UTC
  • mto: This revision was merged to the branch mainline in revision 410.
  • Revision ID: teddy@recompile.se-20240909013641-6zu6kx2f7meu134k
Make all required directories when installing

When installing into a normal system, one can assume that target
directories, such as /usr/bin, already exists.  But when installing
into a subdirectory for the purpose of creating a package, one cannot
assume that all directories already exist.  Therefore, when
installing, we must not check if any directories exist, and must
instead always create any directories we want to install into.

* Makefile (confdir/mandos.conf, confdir/clients.conf, install-html):
  Use the "-D" option to "install" instead of creating the directory
  separately.
  (install-server): Move creation of $(CONFDIR) down to before it is
  needed.  Don't check if the $(TMPFILES) or $(SYSUSERS) directories
  exist; instead create them by using the "-D" option to "install".
  Create the $(PREFIX)/sbin directory.  Always use
  "--target-directory" if possible; i.e. if the file name is the same.
  Create the $(DBUSPOLICYDIR) and $(DESTDIR)/etc/init.d directories by
  using the "-D" option to "install".  Don't check if the $(SYSTEMD)
  directory exists; instead create it by using the "-D" option to
  "install".  Create the $(DESTDIR)/etc/default and $(MANDIR)/man8
  directories by using the "-D" option to "install".  Create the
  $(MANDIR)/man5 directories explicitly.
  (install-client-nokey): Remove unnecessary creation of the
  $(CONFDIR) directory.  Don't check if the $(SYSUSERS) directory
  exists; instead create it by using the "-D" option to "install".
  Move the "--directory" argument to be the first argument, for
  clarity.  Create the $(PREFIX)/sbin directory.  Use the "-D"
  argument to "install" when installing
  $(INITRAMFSTOOLS)/hooks/mandos,
  $(INITRAMFSTOOLS)/conf.d/mandos-conf,
  $(INITRAMFSTOOLS)/conf-hooks.d/zz-mandos,
  $(INITRAMFSTOOLS)/scripts/init-premount/mandos,
  $(INITRAMFSTOOLS)/scripts/local-premount/mandos,
  $(DRACUTMODULE)/ask-password-mandos.path, and
  $(DRACUTMODULE)/dracut-module/ask-password-mandos.service.  Create
  the $(MANDIR)/man8 directory.

Reported-By: Erich Eckner <erich@eckner.net>
Thanks: Erich Eckner <erich@eckner.net> for analysis

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
# This script can be called in the following ways:
 
3
#
 
4
# After the package was installed:
 
5
#       <postinst> configure <old-version>
 
6
#
 
7
#
 
8
# If prerm fails during upgrade or fails on failed upgrade:
 
9
#       <old-postinst> abort-upgrade <new-version>
 
10
#
 
11
# If prerm fails during deconfiguration of a package:
 
12
#       <postinst> abort-deconfigure in-favour <new-package> <version>
 
13
#                  removing <old-package> <version>
 
14
#
 
15
# If prerm fails during replacement due to conflict:
 
16
#       <postinst> abort-remove in-favour <new-package> <version>
 
17
 
 
18
. /usr/share/debconf/confmodule
 
19
 
 
20
set -e
 
21
 
 
22
case "$1" in
 
23
    configure)
 
24
        # Rename old "mandos" user and group
 
25
        if dpkg --compare-versions "$2" lt "1.0.3-1"; then
 
26
            case "`getent passwd mandos`" in
 
27
                *:Mandos\ password\ system,,,:/nonexistent:/bin/false)
 
28
                    usermod --login _mandos mandos
 
29
                    groupmod --new-name _mandos mandos
 
30
                    # Reload D-Bus daemon to be aware of the _mandos
 
31
                    # user & group
 
32
                    if [ -x /etc/init.d/dbus ]; then
 
33
                        invoke-rc.d dbus force-reload || :
 
34
                    fi
 
35
                    ;;
 
36
            esac
 
37
        fi
 
38
        # Create new user and group
 
39
        if ! getent passwd _mandos >/dev/null; then
 
40
            adduser --system --force-badname --quiet \
 
41
                --home /nonexistent --no-create-home --group \
 
42
                --disabled-password --gecos "Mandos password system" \
 
43
                _mandos
 
44
            # Reload D-Bus daemon to be aware of the _mandos user &
 
45
            # group
 
46
            if [ -x /etc/init.d/dbus ]; then
 
47
                invoke-rc.d dbus force-reload || :
 
48
            fi
 
49
        elif dpkg --compare-versions "$2" eq 1.7.4-1 \
 
50
                || dpkg --compare-versions "$2" eq "1.7.4-1~bpo8+1"
 
51
        then
 
52
            start=no
 
53
            if ! [ -f /var/lib/mandos/clients.pickle ]; then
 
54
                invoke-rc.d mandos stop
 
55
                start=yes
 
56
            fi
 
57
            chown _mandos:_mandos /var/lib/mandos/clients.pickle \
 
58
                  2>/dev/null || :
 
59
            if [ "$start" = yes ]; then
 
60
                invoke-rc.d mandos start
 
61
            fi
 
62
        fi
 
63
        if ! dpkg-statoverride --list "/var/lib/mandos" >/dev/null \
 
64
             2>&1; then
 
65
            chown _mandos:_mandos /var/lib/mandos
 
66
            chmod u=rwx,go= /var/lib/mandos
 
67
        fi
 
68
 
 
69
        if dpkg --compare-versions "$2" eq "1.8.0-1" \
 
70
                || dpkg --compare-versions "$2" eq "1.8.0-1~bpo9+1"; then
 
71
            if grep --quiet --regexp='^[[:space:]]*key_id[[:space:]]*=[[:space:]]*[Ee]3[Bb]0[Cc]44298[Ff][Cc]1[Cc]149[Aa][Ff][Bb][Ff]4[Cc]8996[Ff][Bb]92427[Aa][Ee]41[Ee]4649[Bb]934[Cc][Aa]495991[Bb]7852[Bb]855[[:space:]]*$' /etc/mandos/clients.conf; then
 
72
                sed --in-place \
 
73
                    --expression='/^[[:space:]]*key_id[[:space:]]*=[[:space:]]*[Ee]3[Bb]0[Cc]44298[Ff][Cc]1[Cc]149[Aa][Ff][Bb][Ff]4[Cc]8996[Ff][Bb]92427[Aa][Ee]41[Ee]4649[Bb]934[Cc][Aa]495991[Bb]7852[Bb]855[[:space:]]*$/d' \
 
74
                    /etc/mandos/clients.conf
 
75
                invoke-rc.d mandos restart
 
76
                db_version 2.0
 
77
                db_fset mandos/removed_bad_key_ids seen false
 
78
                db_reset mandos/removed_bad_key_ids
 
79
                db_input critical mandos/removed_bad_key_ids || true
 
80
                db_go
 
81
                db_stop
 
82
            fi
 
83
        fi
 
84
 
 
85
        gnutls_version=$(dpkg-query --showformat='${Version}' \
 
86
                                    --show libgnutls30 \
 
87
                                    2>/dev/null || :)
 
88
        if [ -n "$gnutls_version" ] \
 
89
               && dpkg --compare-versions $gnutls_version ge 3.6.6; then
 
90
            db_version 2.0
 
91
            db_input critical mandos/key_id || true
 
92
            db_go
 
93
            db_stop
 
94
        fi
 
95
        ;;
 
96
    
 
97
    abort-upgrade|abort-deconfigure|abort-remove)
 
98
        ;;
 
99
    
 
100
    *)
 
101
        echo "$0 called with unknown argument '$1'" 1>&2
 
102
        exit 1
 
103
        ;;
 
104
esac
 
105
 
 
106
# Avahi version 0.6.31-2 and older provides "avahi" (instead of
 
107
# "avahi-daemon") in its /etc/init.d script header.  To make
 
108
# insserv(8) happy, we edit our /etc/init.d script header to contain
 
109
# the correct string before the code added by dh_installinit calls
 
110
# update.rc-d, which calls insserv.
 
111
avahi_version="`dpkg-query --showformat='${Version}' --show avahi-daemon`"
 
112
if dpkg --compare-versions "$avahi_version" le 0.6.31-2; then
 
113
    sed --in-place --expression='/^### BEGIN INIT INFO$/,/^### END INIT INFO$/s/^\(# Required-\(Stop\|Start\):.*avahi\)-daemon\>/\1/g' /etc/init.d/mandos
 
114
fi
 
115
 
 
116
#DEBHELPER#
 
117
 
 
118
exit 0