/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-client.postinst

  • Committer: Teddy Hogeborn
  • Date: 2018-08-15 09:26:02 UTC
  • mto: (237.7.594 trunk)
  • mto: This revision was merged to the branch mainline in revision 368.
  • Revision ID: teddy@recompile.se-20180815092602-xoyb5s6gf8376i7u
mandos-client: Set system clock if necessary

* plugins.d/mandos-client.c (init_gpgme/import_key): If the system
  clock is not set, or set to january 1970, set the system clock to
  the more plausible value that is the mtime of the key file.  This is
  required by GnuPG to be able to import the keys.  (We can't pass the
  --ignore-time-conflict or the --ignore-valid-from options though
  GPGME.)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/bin/bash -e
 
1
#!/bin/sh
2
2
# This script can be called in the following ways:
3
3
#
4
4
# After the package was installed:
15
15
# If prerm fails during replacement due to conflict:
16
16
#       <postinst> abort-remove in-favour <new-package> <version>
17
17
 
 
18
set -e
 
19
 
18
20
# Update the initial RAM file system image
19
21
update_initramfs()
20
22
{
21
 
    if [ -x /usr/sbin/update-initramfs ]; then
22
 
        update-initramfs -u -k all
 
23
    update-initramfs -u -k all
 
24
    
 
25
    if dpkg --compare-versions "$2" lt-nl "1.0.10-1"; then
 
26
        # Make old initrd.img files unreadable too, in case they were
 
27
        # created with mandos-client 1.0.8 or older.
 
28
        find /boot -maxdepth 1 -type f -name "initrd.img-*.bak" \
 
29
            -print0 | xargs --null --no-run-if-empty chmod o-r
23
30
    fi
24
31
}
25
32
 
26
33
# Add user and group
27
34
add_mandos_user(){
28
35
    # Rename old "mandos" user and group
29
 
    case "$(getent passwd mandos)" in
30
 
        *:Mandos\ password\ system,,,:/nonexistent:/bin/false)
31
 
            usermod --login _mandos mandos
32
 
            groupmod --new-name _mandos mandos
33
 
            return
34
 
            ;;
35
 
    esac
 
36
    if dpkg --compare-versions "$2" lt "1.0.3-1"; then
 
37
        case "`getent passwd mandos`" in
 
38
            *:Mandos\ password\ system,,,:/nonexistent:/bin/false)
 
39
                usermod --login _mandos mandos
 
40
                groupmod --new-name _mandos mandos
 
41
                return
 
42
                ;;
 
43
        esac
 
44
    fi
36
45
    # Create new user and group
37
46
    if ! getent passwd _mandos >/dev/null; then
38
47
        adduser --system --force-badname --quiet --home /nonexistent \
47
56
        -a -r /etc/keys/mandos/seckey.txt ]; then
48
57
        return 0
49
58
    fi
50
 
    if [ -x /usr/sbin/mandos-keygen ]; then
51
 
        mandos-keygen
52
 
    fi
 
59
    mandos-keygen
 
60
    gpg-connect-agent KILLAGENT /bye || :
 
61
}
 
62
 
 
63
create_dh_params(){
 
64
    if [ -r /etc/keys/mandos/dhparams.pem ]; then
 
65
        return 0
 
66
    fi
 
67
    # Create a Diffe-Hellman parameters file
 
68
    DHFILE="`mktemp -t mandos-client-dh-parameters.XXXXXXXXXX.pem`"
 
69
    # First try certtool from GnuTLS
 
70
    if ! certtool --generate-dh-params --sec-param high \
 
71
         --outfile "$DHFILE"; then
 
72
        # Otherwise try OpenSSL
 
73
        if ! openssl genpkey -genparam -algorithm DH -out "$DHFILE" \
 
74
             -pkeyopt dh_paramgen_prime_len:3072; then
 
75
            # None of the commands succeded; give up
 
76
            rm -- "$DHFILE"
 
77
            return 1
 
78
        fi
 
79
    fi
 
80
    sed --in-place --expression='0,/^-----BEGIN DH PARAMETERS-----$/d' \
 
81
        "$DHFILE"
 
82
    sed --in-place --expression='1i-----BEGIN DH PARAMETERS-----' \
 
83
            "$DHFILE"
 
84
    cp --archive "$DHFILE" /etc/keys/mandos/dhparams.pem
 
85
    rm -- "$DHFILE"
53
86
}
54
87
 
55
88
case "$1" in
56
89
    configure)
57
 
        add_mandos_user
58
 
        create_key
59
 
        update_initramfs
 
90
        add_mandos_user "$@"
 
91
        create_key "$@"
 
92
        create_dh_params "$@" || :
 
93
        update_initramfs "$@"
 
94
        if dpkg --compare-versions "$2" lt-nl "1.7.10-1"; then
 
95
            PLUGINHELPERDIR=/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null)/mandos/plugin-helpers
 
96
            if ! dpkg-statoverride --list "$PLUGINHELPERDIR" \
 
97
                 >/dev/null 2>&1; then
 
98
                chmod u=rwx,go= -- "$PLUGINHELPERDIR"
 
99
            fi
 
100
            if ! dpkg-statoverride --list /etc/mandos/plugin-helpers \
 
101
                 >/dev/null 2>&1; then
 
102
                chmod u=rwx,go= -- /etc/mandos/plugin-helpers
 
103
            fi
 
104
        fi
60
105
        ;;
61
106
    abort-upgrade|abort-deconfigure|abort-remove)
62
107
        ;;
63
108
 
64
109
    *)
65
 
        echo "$0 called with unknown argument \`$1'" 1>&2
 
110
        echo "$0 called with unknown argument '$1'" 1>&2
66
111
        exit 1
67
112
        ;;
68
113
esac