/mandos/trunk

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

« back to all changes in this revision

Viewing changes to plugins.d/mandos-client.xml

  • Committer: Teddy Hogeborn
  • Date: 2019-08-02 22:16:53 UTC
  • Revision ID: teddy@recompile.se-20190802221653-ic1iko9hbefzwsk7
Fix bug in server Debian package: Fails to start on first install

There has been a very long-standing bug where installation of the
server (the "mandos" Debian package) would fail to start the server
properly right after installation.  It would work on manual (re)start
after installation, or after reboot, and even after package purge and
reinstall, it would then work the first time.  The problem, it turns
out, is when the new "_mandos" user (and corresponding group) is
created, the D-Bus server is not reloaded, and is therefore not aware
of that user, and does not recognize the user and group name in the
/etc/dbus-1/system.d/mandos.conf file.  The Mandos server, when it
tries to start and access the D-Bus, is then not permitted to connect
to its D-Bus bus name, and disables D-Bus use as a fallback measure;
i.e. the server works, but it is not controllable via D-Bus commands
(via mandos-ctl or mandos-monitor).  The next time the D-Bus daemon is
reloaded for any reason, the new user & group would become visible to
the D-Bus daemon and after that, any restart of the Mandos server
would succeed and it would bind to its D-Bus name properly, and
thereby be visible and controllable by mandos-ctl & mandos-monitor.
This was mostly invisible when using sysvinit, but systemd makes the
problem visible since the systemd service file for the Mandos server
is configured to not consider the Mandos server "started" until the
D-Bus name has been bound; this makes the starting of the service wait
for 90 seconds and then fail with a timeout error.

Fixing this should also make the Debian CI autopkgtest tests work.

* debian/mandos.postinst (configure): After creating (or renaming)
                                      user & group, reload D-Bus
                                      daemon (if present).

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3
3
        "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4
4
<!ENTITY COMMANDNAME "mandos-client">
5
 
<!ENTITY TIMESTAMP "2023-10-21">
 
5
<!ENTITY TIMESTAMP "2019-07-24">
6
6
<!ENTITY % common SYSTEM "../common.ent">
7
7
%common;
8
8
]>
196
196
    </para>
197
197
    <para>
198
198
      This program is not meant to be run directly; it is really meant
199
 
      to be run by other programs in the initial
200
 
      <acronym>RAM</acronym> disk environment; see <xref
201
 
      linkend="overview"/>.
 
199
      to run as a plugin of the <application>Mandos</application>
 
200
      <citerefentry><refentrytitle>plugin-runner</refentrytitle>
 
201
      <manvolnum>8mandos</manvolnum></citerefentry>, which runs in the
 
202
      initial <acronym>RAM</acronym> disk environment because it is
 
203
      specified as a <quote>keyscript</quote> in the <citerefentry>
 
204
      <refentrytitle>crypttab</refentrytitle><manvolnum>5</manvolnum>
 
205
      </citerefentry> file.
202
206
    </para>
203
207
  </refsect1>
204
208
  
216
220
    <title>OPTIONS</title>
217
221
    <para>
218
222
      This program is commonly not invoked from the command line; it
219
 
      is normally started by another program as described in <xref
220
 
      linkend="description"/>.  Any command line options this program
221
 
      accepts are therefore normally provided by the invoking program,
222
 
      and not directly.
 
223
      is normally started by the <application>Mandos</application>
 
224
      plugin runner, see <citerefentry><refentrytitle
 
225
      >plugin-runner</refentrytitle><manvolnum>8mandos</manvolnum>
 
226
      </citerefentry>.  Any command line options this program accepts
 
227
      are therefore normally provided by the plugin runner, and not
 
228
      directly.
223
229
    </para>
224
230
    
225
231
    <variablelist>
476
482
    <title>OVERVIEW</title>
477
483
    <xi:include href="../overview.xml"/>
478
484
    <para>
479
 
      This program is the client part.  It is run automatically in an
480
 
      initial <acronym>RAM</acronym> disk environment.
481
 
    </para>
482
 
    <para>
483
 
      In an initial <acronym>RAM</acronym> disk environment using
484
 
      <citerefentry><refentrytitle>systemd</refentrytitle>
485
 
      <manvolnum>1</manvolnum></citerefentry>, this program is started
486
 
      by the <application>Mandos</application> <citerefentry>
487
 
      <refentrytitle>password-agent</refentrytitle>
488
 
      <manvolnum>8mandos</manvolnum></citerefentry>, which in turn is
489
 
      started automatically by the <citerefentry>
490
 
      <refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum>
491
 
      </citerefentry> <quote>Password Agent</quote> system.
492
 
    </para>
493
 
    <para>
494
 
      In the case of a non-<citerefentry>
495
 
      <refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum>
496
 
      </citerefentry> environment, this program is started as a plugin
497
 
      of the <application>Mandos</application> <citerefentry>
498
 
      <refentrytitle>plugin-runner</refentrytitle>
499
 
      <manvolnum>8mandos</manvolnum></citerefentry>, which runs in the
500
 
      initial <acronym>RAM</acronym> disk environment because it is
501
 
      specified as a <quote>keyscript</quote> in the <citerefentry>
502
 
      <refentrytitle>crypttab</refentrytitle><manvolnum>5</manvolnum>
503
 
      </citerefentry> file.
 
485
      This program is the client part.  It is a plugin started by
 
486
      <citerefentry><refentrytitle>plugin-runner</refentrytitle>
 
487
      <manvolnum>8mandos</manvolnum></citerefentry> which will run in
 
488
      an initial <acronym>RAM</acronym> disk environment.
504
489
    </para>
505
490
    <para>
506
491
      This program could, theoretically, be used as a keyscript in
507
492
      <filename>/etc/crypttab</filename>, but it would then be
508
493
      impossible to enter a password for the encrypted root disk at
509
494
      the console, since this program does not read from the console
510
 
      at all.
 
495
      at all.  This is why a separate plugin runner (<citerefentry>
 
496
      <refentrytitle>plugin-runner</refentrytitle>
 
497
      <manvolnum>8mandos</manvolnum></citerefentry>) is used to run
 
498
      both this program and others in in parallel,
 
499
      <emphasis>one</emphasis> of which (<citerefentry>
 
500
      <refentrytitle>password-prompt</refentrytitle>
 
501
      <manvolnum>8mandos</manvolnum></citerefentry>) will prompt for
 
502
      passwords on the system console.
511
503
    </para>
512
504
  </refsect1>
513
505
  
770
762
    <title>EXAMPLE</title>
771
763
    <para>
772
764
      Note that normally, command line options will not be given
773
 
      directly, but passed on via the program responsible for starting
774
 
      this program; see <xref linkend="overview"/>.
 
765
      directly, but via options for the Mandos <citerefentry
 
766
      ><refentrytitle>plugin-runner</refentrytitle>
 
767
      <manvolnum>8mandos</manvolnum></citerefentry>.
775
768
    </para>
776
769
    <informalexample>
777
770
      <para>
879
872
      <manvolnum>5</manvolnum></citerefentry>,
880
873
      <citerefentry><refentrytitle>mandos</refentrytitle>
881
874
      <manvolnum>8</manvolnum></citerefentry>,
882
 
      <citerefentry><refentrytitle>password-agent</refentrytitle>
 
875
      <citerefentry><refentrytitle>password-prompt</refentrytitle>
883
876
      <manvolnum>8mandos</manvolnum></citerefentry>,
884
877
      <citerefentry><refentrytitle>plugin-runner</refentrytitle>
885
878
      <manvolnum>8mandos</manvolnum></citerefentry>