/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 plugin-runner.xml

  • Committer: Teddy Hogeborn
  • Date: 2008-10-03 09:32:30 UTC
  • Revision ID: teddy@fukt.bsnet.se-20081003093230-rshn19e0c19zz12i
* .bzrignore (plugins.d/askpass-fifo): Added.

* Makefile (FORTIFY): Added "-fstack-protector-all".
  (mandos, mandos-keygen): Use more strict regexps when updating the
                           version number.

* mandos (Client.__init__): Use os.path.expandvars() and
                            os.path.expanduser() on the "secfile"
                            config value.

* plugins.d/splashy.c: Update comments and order of #include's.
  (main): Check user and group when looking for running splashy
          process.  Do not ignore ENOENT from execl().  Use _exit()
          instead of "return" when an error happens in child
          processes.  Bug fix: Only wait for splashy_update
          completion if it was started.  Bug fix: detect failing
          waitpid().  Only kill splashy_update if it is running.  Do
          the killing of the old splashy process before the fork().
          Do setsid() and setuid(geteuid()) before starting the new
          splashy.  Report failing execl().

* plugins.d/usplash.c: Update comments and order of #include's.
  (main): Check user and group when looking for running usplash
          process.  Do not report execv() error if interrupted by a
          signal.

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 "plugin-runner">
5
 
<!ENTITY TIMESTAMP "2023-04-30">
 
5
<!ENTITY TIMESTAMP "2008-09-30">
6
6
<!ENTITY % common SYSTEM "common.ent">
7
7
%common;
8
8
]>
19
19
        <firstname>Björn</firstname>
20
20
        <surname>Påhlsson</surname>
21
21
        <address>
22
 
          <email>belorn@recompile.se</email>
 
22
          <email>belorn@fukt.bsnet.se</email>
23
23
        </address>
24
24
      </author>
25
25
      <author>
26
26
        <firstname>Teddy</firstname>
27
27
        <surname>Hogeborn</surname>
28
28
        <address>
29
 
          <email>teddy@recompile.se</email>
 
29
          <email>teddy@fukt.bsnet.se</email>
30
30
        </address>
31
31
      </author>
32
32
    </authorgroup>
33
33
    <copyright>
34
34
      <year>2008</year>
35
 
      <year>2009</year>
36
 
      <year>2010</year>
37
 
      <year>2011</year>
38
 
      <year>2012</year>
39
 
      <year>2013</year>
40
 
      <year>2014</year>
41
 
      <year>2015</year>
42
 
      <year>2016</year>
43
 
      <year>2017</year>
44
 
      <year>2018</year>
45
 
      <year>2019</year>
46
35
      <holder>Teddy Hogeborn</holder>
47
36
      <holder>Björn Påhlsson</holder>
48
37
    </copyright>
123
112
      <arg><option>--plugin-dir=<replaceable
124
113
      >DIRECTORY</replaceable></option></arg>
125
114
      <sbr/>
126
 
      <arg><option>--plugin-helper-dir=<replaceable
127
 
      >DIRECTORY</replaceable></option></arg>
128
 
      <sbr/>
129
115
      <arg><option>--config-file=<replaceable
130
116
      >FILE</replaceable></option></arg>
131
117
      <sbr/>
273
259
            Disable the plugin named
274
260
            <replaceable>PLUGIN</replaceable>.  The plugin will not be
275
261
            started.
276
 
          </para>
 
262
          </para>       
277
263
        </listitem>
278
264
      </varlistentry>
279
265
      
332
318
      </varlistentry>
333
319
      
334
320
      <varlistentry>
335
 
        <term><option>--plugin-helper-dir
336
 
        <replaceable>DIRECTORY</replaceable></option></term>
337
 
        <listitem>
338
 
          <para>
339
 
            Specify a different plugin helper directory.  The default
340
 
            is <filename>/lib/mandos/plugin-helpers</filename>, which
341
 
            will exist in the initial <acronym>RAM</acronym> disk
342
 
            environment.  (This will simply be passed to all plugins
343
 
            via the <envar>MANDOSPLUGINHELPERDIR</envar> environment
344
 
            variable.  See <xref linkend="writing_plugins"/>)
345
 
          </para>
346
 
        </listitem>
347
 
      </varlistentry>
348
 
      
349
 
      <varlistentry>
350
321
        <term><option>--config-file
351
322
        <replaceable>FILE</replaceable></option></term>
352
323
        <listitem>
423
394
    <title>PLUGINS</title>
424
395
    <para>
425
396
      This program will get a password by running a number of
426
 
      <firstterm>plugins</firstterm>, which are executable programs in
427
 
      a directory in the initial <acronym>RAM</acronym> disk
428
 
      environment.  The default directory is
 
397
      <firstterm>plugins</firstterm>, which are simply executable
 
398
      programs in a directory in the initial <acronym>RAM</acronym>
 
399
      disk environment.  The default directory is
429
400
      <filename>/lib/mandos/plugins.d</filename>, but this can be
430
401
      changed with the <option>--plugin-dir</option> option.  The
431
402
      plugins are started in parallel, and the first plugin to output
437
408
    <refsect2 id="writing_plugins">
438
409
      <title>WRITING PLUGINS</title>
439
410
      <para>
440
 
        A plugin is an executable program which prints a password to
441
 
        its standard output and then exits with a successful (zero)
442
 
        exit status.  If the exit status is not zero, any output on
 
411
        A plugin is simply a program which prints a password to its
 
412
        standard output and then exits with a successful (zero) exit
 
413
        status.  If the exit status is not zero, any output on
443
414
        standard output will be ignored by the plugin runner.  Any
444
415
        output on its standard error channel will simply be passed to
445
416
        the standard error of the plugin runner, usually the system
453
424
      <para>
454
425
        The plugin will run in the initial RAM disk environment, so
455
426
        care must be taken not to depend on any files or running
456
 
        services not available there.  Any helper executables required
457
 
        by the plugin (which are not in the <envar>PATH</envar>) can
458
 
        be placed in the plugin helper directory, the name of which
459
 
        will be made available to the plugin via the
460
 
        <envar>MANDOSPLUGINHELPERDIR</envar> environment variable.
 
427
        services not available there.
461
428
      </para>
462
429
      <para>
463
430
        The plugin must exit cleanly and free all allocated resources
506
473
      only passes on its environment to all the plugins.  The
507
474
      environment passed to plugins can be modified using the
508
475
      <option>--global-env</option> and <option>--env-for</option>
509
 
      options.  Also, the <option>--plugin-helper-dir</option> option
510
 
      will affect the environment variable
511
 
      <envar>MANDOSPLUGINHELPERDIR</envar> for the plugins.
 
476
      options.
512
477
    </para>
513
478
  </refsect1>
514
479
  
547
512
            </para>
548
513
          </listitem>
549
514
        </varlistentry>
550
 
        <varlistentry>
551
 
          <term><filename class="directory"
552
 
          >/lib/mandos/plugins.d</filename></term>
553
 
          <listitem>
554
 
            <para>
555
 
              The default plugin directory; can be changed by the
556
 
              <option>--plugin-dir</option> option.
557
 
            </para>
558
 
          </listitem>
559
 
        </varlistentry>
560
 
        <varlistentry>
561
 
          <term><filename class="directory"
562
 
          >/lib/mandos/plugin-helpers</filename></term>
563
 
          <listitem>
564
 
            <para>
565
 
              The default plugin helper directory; can be changed by
566
 
              the <option>--plugin-helper-dir</option> option.
567
 
            </para>
568
 
          </listitem>
569
 
        </varlistentry>
570
515
      </variablelist>
571
516
    </para>
572
517
  </refsect1>
577
522
      The <option>--config-file</option> option is ignored when
578
523
      specified from within a configuration file.
579
524
    </para>
580
 
    <xi:include href="bugs.xml"/>
581
525
  </refsect1>
582
526
  
583
527
  <refsect1 id="examples">
626
570
    </informalexample>
627
571
    <informalexample>
628
572
      <para>
629
 
        Read a different configuration file, run plugins from a
630
 
        different directory, specify an alternate plugin helper
631
 
        directory and add four options to the
 
573
        Run plugins from a different directory, read a different
 
574
        configuration file, and add two options to the
632
575
        <citerefentry><refentrytitle >mandos-client</refentrytitle>
633
576
        <manvolnum>8mandos</manvolnum></citerefentry> plugin:
634
577
      </para>
635
578
      <para>
636
579
 
637
580
<!-- do not wrap this line -->
638
 
<userinput>cd /etc/keys/mandos; &COMMANDNAME;  --config-file=/etc/mandos/plugin-runner.conf --plugin-dir /usr/lib/x86_64-linux-gnu/mandos/plugins.d --plugin-helper-dir /usr/lib/x86_64-linux-gnu/mandos/plugin-helpers --options-for=mandos-client:--pubkey=pubkey.txt,&#x200b;--seckey=seckey.txt,&#x200b;--tls-pubkey=tls-pubkey.pem,&#x200b;--tls-privkey=tls-privkey.pem</userinput>
 
581
<userinput>&COMMANDNAME;  --config-file=/etc/mandos/plugin-runner.conf --plugin-dir /usr/lib/mandos/plugins.d --options-for=mandos-client:--pubkey=/etc/keys/mandos/pubkey.txt,--seckey=/etc/keys/mandos/seckey.txt</userinput>
639
582
 
640
583
      </para>
641
584
    </informalexample>
673
616
  <refsect1 id="see_also">
674
617
    <title>SEE ALSO</title>
675
618
    <para>
676
 
      <citerefentry><refentrytitle>intro</refentrytitle>
677
 
      <manvolnum>8mandos</manvolnum></citerefentry>,
678
619
      <citerefentry><refentrytitle>cryptsetup</refentrytitle>
679
620
      <manvolnum>8</manvolnum></citerefentry>,
680
621
      <citerefentry><refentrytitle>crypttab</refentrytitle>