projects/pwm

view pwm.1.xml @ 43:969de79bb4b6

Added tag version-1 for changeset fb995e5d54e9
author Guido Berhoerster <guido+pwm@berhoerster.name>
date Tue Aug 20 21:27:47 2019 +0200 (14 months ago)
parents e3db02d7f1f4
children
line source
1 <?xml version="1.0"?>
2 <!--
4 Copyright (C) 2017 Guido Berhoerster <guido+pwm@berhoerster.name>
6 Permission is hereby granted, free of charge, to any person obtaining
7 a copy of this software and associated documentation files (the
8 "Software"), to deal in the Software without restriction, including
9 without limitation the rights to use, copy, modify, merge, publish,
10 distribute, sublicense, and/or sell copies of the Software, and to
11 permit persons to whom the Software is furnished to do so, subject to
12 the following conditions:
14 The above copyright notice and this permission notice shall be included
15 in all copies or substantial portions of the Software.
17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 -->
26 <refentry xmlns="http://docbook.org/ns/docbook"
27 xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en">
28 <info>
29 <author>
30 <personname>
31 <firstname>Guido</firstname>
32 <surname>Berhoerster</surname>
33 </personname>
34 <email>guido+pwm@berhoerster.name</email>
35 <personblurb/>
36 </author>
37 <date>27 September, 2017</date>
38 </info>
39 <refmeta>
40 <refentrytitle>pwm</refentrytitle>
41 <manvolnum>1</manvolnum>
42 <refmiscinfo class="source"/>
43 <refmiscinfo class="version"/>
44 <refmiscinfo class="manual">User Commands</refmiscinfo>
45 </refmeta>
46 <refnamediv>
47 <refname>pwm</refname>
48 <refpurpose>password manager</refpurpose>
49 </refnamediv>
50 <refsynopsisdiv>
51 <cmdsynopsis>
52 <command>pwm</command>
53 <arg choice="opt">
54 <option>-P</option>
55 <replaceable>password_file</replaceable>
56 </arg>
57 <arg choice="opt">
58 <option>-R</option>
59 </arg>
60 <arg choice="opt">
61 <replaceable>database_file</replaceable>
62 </arg>
63 </cmdsynopsis>
64 </refsynopsisdiv>
65 <refsect1>
66 <title>Description</title>
67 <para>The <command>pwm</command> utility is a password manager which
68 stores passwords and associated metadata in an encrypted database protected
69 by a master password. It offers both a text-based user interface for
70 interactive use as well as a non-interactive mode. The database uses the
71 PasswordSafe database version 3 file format and thus provides
72 interoperabity with other password managers using the same format.</para>
73 <para>After opening an existing database or creating a new one,
74 <command>pwm</command> provides commands to create, modify, delete, and
75 display password database entries which may be organized in groups. The
76 contents of a field of a given entry can also be piped to an external
77 command such as the <citerefentry><refentrytitle>pwm-clip</refentrytitle>
78 <manvolnum>1</manvolnum></citerefentry> utility in order to copy the
79 content of the username or password field of an entry to the
80 clipboard.</para>
81 <para>If specified, <command>pwm</command> will open or create
82 <replaceable>database_file</replaceable> instead of the user's default
83 database.</para>
84 <para><command>pwm</command> must be run with a locale which uses the UTF-8
85 character encoding.</para>
86 <refsect2>
87 <title>Output format</title>
88 <para>The <command>show</command> and <command>info</command> commands
89 display fields by printing the field name followed by a colon, one or
90 more space characters and the field's verbatim content to the standard
91 output stream. Field content may contain newlines, non-printable and/or
92 control characters.</para>
93 <para>If running in interactive mode, the <command>list</command>,
94 <command>show</command> and <command>info</command> will display
95 the results on a page-by-page basis using an internal pager.</para>
96 <para>The <command>pipe</command> prints the verbatim field content to the
97 standard input stream of the given command.</para>
98 <para>Error messages are printed to the standard error stream.</para>
99 </refsect2>
100 </refsect1>
101 <refsect1>
102 <title>Options</title>
103 <para>The following options are supported:</para>
104 <variablelist>
105 <varlistentry>
106 <term>
107 <option>-P</option>
108 <replaceable>password_file</replaceable>
109 </term>
110 <listitem>
111 <para>Read the master password from the first line of
112 <replaceable>password_file</replaceable>.</para>
113 </listitem>
114 </varlistentry>
115 <varlistentry>
116 <term>
117 <option>-R</option>
118 </term>
119 <listitem>
120 <para>Treat the database as read-only and disallow any modifications
121 and write operations.</para>
122 </listitem>
123 </varlistentry>
124 </variablelist>
125 </refsect1>
126 <refsect1>
127 <title>Usage</title>
128 <refsect2>
129 <title>Start-up</title>
130 <para>If stdin is connected to a terminal pwm will run in interactive mode
131 and prompt the user for the master password unless
132 <replaceable>password_file</replaceable> is specified via the
133 <option>-P</option> option. After successfully opening the password
134 database the user will be prompted for a command.</para>
135 <para>When running in non-interactive mode a file containing the master
136 pasword must be specified via the <option>-P</option> option and after
137 successfully opening the password database, pwm will execute commands
138 read from stdin until either an error occurrs or end-of-file is
139 reached.</para>
140 <para><command>pwm</command> operates on a copy of the password database
141 in memory, any changes must be explicitly written back to the database
142 using the write command.</para>
143 <para>When starting up, before prompting the user for a master password
144 or reading the master password from a specified file
145 <command>pwm</command> will read the file
146 <filename>~/.pwm/pwmrc</filename> and execute any <command>set</command>
147 and <command>define</command> commands specified therein.</para>
148 </refsect2>
149 <refsect2>
150 <title>Configuration Variables</title>
151 <para><command>pwm</command> can be configured through configuration
152 variables using the <command>set</command> command. The following
153 configuration variables are supported:</para>
154 <variablelist>
155 <varlistentry>
156 <term>filename</term>
157 <listitem>
158 <para>Specifies the password database file if no other file is
159 given as a command line argument.</para>
160 </listitem>
161 </varlistentry>
162 <varlistentry>
163 <term>pipecommand</term>
164 <listitem>
165 <para>Specifies a default command which is invoked by the
166 <command>pipe</command> command if not other command is
167 explicitly specified as a argument.</para>
168 </listitem>
169 </varlistentry>
170 </variablelist>
171 </refsect2>
172 <refsect2>
173 <title>IDs</title>
174 <para>Database entries are referred to by an ID value which is a
175 positive integer value that is guaranteed to be unqiue during the run
176 time of the pwm utility.</para>
177 </refsect2>
178 <refsect2>
179 <title>Fields</title>
180 <para>The following entry fields are supported:</para>
181 <table xml:id="field-table">
182 <title>Fields and their identifiers</title>
183 <tgroup cols="2" align="left" colsep="1" rowsep="1">
184 <thead>
185 <row>
186 <entry>Field</entry>
187 <entry>Field Identifier</entry>
188 </row>
189 </thead>
190 <tbody>
191 <row>
192 <entry>Group</entry>
193 <entry>group</entry>
194 </row>
195 <row>
196 <entry>Title</entry>
197 <entry>title</entry>
198 </row>
199 <row>
200 <entry>Username</entry>
201 <entry>username</entry>
202 </row>
203 <row>
204 <entry>Password</entry>
205 <entry>password</entry>
206 </row>
207 <row>
208 <entry>Notes</entry>
209 <entry>notes</entry>
210 </row>
211 <row>
212 <entry>URL</entry>
213 <entry>url</entry>
214 </row>
215 <row>
216 <entry>Creation Time</entry>
217 <entry>ctime</entry>
218 </row>
219 <row>
220 <entry>Modification Time</entry>
221 <entry>mtime</entry>
222 </row>
223 </tbody>
224 </tgroup>
225 </table>
226 <para>Other, existing fields specified by the PasswordSafe file format
227 will be preserved but cannot be displayed or modified.</para>
228 </refsect2>
229 <refsect2>
230 <title>Commands</title>
231 <para>Each command must appear on a seperate line terminated by a newline
232 character. The command and its arguments are seperated by whitespace,
233 i.e. one or more space or tab characters. If an argument contains
234 whitespace characters it must either be quoted by encosing it in single
235 or double quote characters or each whitespace character must be preceded
236 by a backslash character. Arguments quoted with a single or double quote
237 character preserve the literal values of all characters with the
238 exception of the backslash character which can be used to escape the
239 respective quoting character. Two consecutive backslash characters yield
240 a literal backslash within both quoted and unquoted arguments. A line
241 must not end in a single backslash character, any other backslash
242 characters are ignored.</para>
243 <para>If an error occurrs while parsing or executing a command,
244 <command>pwm</command> will terminate when running in non-interactive
245 mode. In interactive mode it will print an error message and prompt the
246 user for the next command. The following commands are supported:</para>
247 <variablelist>
248 <varlistentry>
249 <term>List entries</term>
250 <listitem>
251 <cmdsynopsis>
252 <command>list</command>
253 <arg choice="opt" rep="repeat">
254 <replaceable>field</replaceable>~<replaceable>regex</replaceable>
255 </arg>
256 </cmdsynopsis>
257 <cmdsynopsis>
258 <command>ls</command>
259 <arg choice="opt" rep="repeat">
260 <replaceable>field</replaceable>~<replaceable>regex</replaceable>
261 </arg>
262 <sbr/>
263 </cmdsynopsis>
264 <para>List password database entries. If one or more filter
265 expressions are specified, limit the displayed entries to those
266 whose <replaceable>field</replaceable> content matches the extended
267 regular expression <replaceable>regex</replaceable>.</para>
268 </listitem>
269 </varlistentry>
270 <varlistentry>
271 <term>Create entry</term>
272 <listitem>
273 <cmdsynopsis>
274 <command>create</command>
275 <arg choice="opt" rep="repeat">
276 <replaceable>field</replaceable>=<replaceable>value</replaceable>
277 </arg>
278 </cmdsynopsis>
279 <cmdsynopsis>
280 <command>c</command>
281 <arg choice="opt" rep="repeat">
282 <replaceable>field</replaceable>=<replaceable>value</replaceable>
283 </arg>
284 <sbr/>
285 </cmdsynopsis>
286 <para>Create a new entry assigning each given
287 <replaceable>field</replaceable> to the corresponsing
288 <replaceable>value</replaceable>.</para>
289 <para>If no fields are specified in interactive mode,
290 <command>pwm</command> will prompt the user for the content of
291 each field.</para>
292 </listitem>
293 </varlistentry>
294 <varlistentry>
295 <term>Modify entry</term>
296 <listitem>
297 <cmdsynopsis>
298 <command>modify</command>
299 <arg choice="plain">
300 <replaceable>id</replaceable>
301 </arg>
302 <arg choice="opt" rep="repeat">
303 <replaceable>field</replaceable>=<replaceable>value</replaceable>
304 </arg>
305 </cmdsynopsis>
306 <cmdsynopsis>
307 <command>m</command>
308 <arg choice="plain">
309 <replaceable>id</replaceable>
310 </arg>
311 <arg choice="opt" rep="repeat">
312 <replaceable>field</replaceable>=<replaceable>value</replaceable>
313 </arg>
314 <sbr/>
315 </cmdsynopsis>
316 <para>Modify an existing entry identified by
317 <replaceable>id</replaceable> assigning each given
318 <replaceable>field</replaceable> to the corresponsing
319 <replaceable>value</replaceable>.</para>
320 <para>If no fields are specified and <command>pwm</command> is
321 running in interactive mode, it will prompt the user for the
322 content of each field, allowing him to edit any previous
323 content.</para>
324 </listitem>
325 </varlistentry>
326 <varlistentry>
327 <term>Remove entry</term>
328 <listitem>
329 <cmdsynopsis>
330 <command>remove</command>
331 <arg choice="plain">
332 <replaceable>id</replaceable>
333 </arg>
334 </cmdsynopsis>
335 <cmdsynopsis>
336 <command>rm</command>
337 <arg choice="plain">
338 <replaceable>id</replaceable>
339 </arg>
340 <sbr/>
341 </cmdsynopsis>
342 <para>Remove an existing entry identified by
343 <replaceable>id</replaceable>.</para>
344 </listitem>
345 </varlistentry>
346 <varlistentry>
347 <term>Display entry fields</term>
348 <listitem>
349 <cmdsynopsis>
350 <command>show</command>
351 <arg choice="plain">
352 <replaceable>id</replaceable>
353 </arg>
354 <arg choice="opt" rep="repeat">
355 <replaceable>field</replaceable>
356 </arg>
357 </cmdsynopsis>
358 <cmdsynopsis>
359 <command>s</command>
360 <arg choice="plain">
361 <replaceable>id</replaceable>
362 </arg>
363 <arg choice="opt" rep="repeat">
364 <replaceable>field</replaceable>
365 </arg>
366 <sbr/>
367 </cmdsynopsis>
368 <para>Display each <replaceable>field</replaceable> of the entry
369 identified by <replaceable>id</replaceable>. If no field is
370 specified, display all fields except the password field.</para>
371 </listitem>
372 </varlistentry>
373 <varlistentry>
374 <term>Pipe entry fields to an external command</term>
375 <listitem>
376 <cmdsynopsis>
377 <command>pipe</command>
378 <arg choice="plain">
379 <replaceable>id</replaceable>
380 </arg>
381 <arg choice="plain" rep="repeat">
382 <replaceable>field</replaceable>
383 </arg>
384 <arg choice="plain">
385 <replaceable>command</replaceable>
386 </arg>
387 </cmdsynopsis>
388 <cmdsynopsis>
389 <command>p</command>
390 <arg choice="plain">
391 <replaceable>id</replaceable>
392 </arg>
393 <arg choice="plain" rep="repeat">
394 <replaceable>field</replaceable>
395 </arg>
396 <arg choice="plain">
397 <replaceable>command</replaceable>
398 </arg>
399 <sbr/>
400 </cmdsynopsis>
401 <para>Pipe the content of each given
402 <replaceable>field</replaceable> of the entry identified by id to
403 command which must be a single argument. The command is executed by
404 invoking the <command>sh</command> utility with the <arg>-c</arg>
405 option and <replaceable>command</replaceable> as its option
406 argument, thus special care should be applied to quoting command.
407 See the <citerefentry><refentrytitle>sh</refentrytitle>
408 <manvolnum>1</manvolnum></citerefentry> manual page for
409 details. The <replaceable>command</replaceable> argument is
410 optional if the pipecommand configuration variable is set.</para>
411 </listitem>
412 </varlistentry>
413 <varlistentry>
414 <term>Create empty group</term>
415 <listitem>
416 <cmdsynopsis>
417 <command>creategroup</command>
418 <arg choice="plain">
419 <replaceable>name</replaceable>
420 </arg>
421 </cmdsynopsis>
422 <cmdsynopsis>
423 <command>cg</command>
424 <arg choice="plain">
425 <replaceable>name</replaceable>
426 </arg>
427 <sbr/>
428 </cmdsynopsis>
429 <para>Create a new empty group named
430 <replaceable>name</replaceable>.</para>
431 <para>In interactive-mode the <replaceable>name</replaceable>
432 argument is optional, if it is not specified <command>pwm</command>
433 will prompt the user for it.</para>
434 </listitem>
435 </varlistentry>
436 <varlistentry>
437 <term>Remove empty group</term>
438 <listitem>
439 <cmdsynopsis>
440 <command>removegroup</command>
441 <arg choice="plain">
442 <replaceable>name</replaceable>
443 </arg>
444 </cmdsynopsis>
445 <cmdsynopsis>
446 <command>rg</command>
447 <arg choice="plain">
448 <replaceable>name</replaceable>
449 </arg>
450 <sbr/>
451 </cmdsynopsis>
452 <para>Remove the empty group named
453 <replaceable>name</replaceable>.</para>
454 </listitem>
455 </varlistentry>
456 <varlistentry>
457 <term>Generate a random password</term>
458 <listitem>
459 <cmdsynopsis>
460 <command>generatepassword</command>
461 <arg choice="opt">
462 <replaceable>id</replaceable>
463 </arg>
464 <arg choice="opt">
465 len=<replaceable>n</replaceable>
466 </arg>
467 <arg choice="opt" rep="repeat">
468 chars=<replaceable>n</replaceable>:<replaceable>chars</replaceable>
469 </arg>
470 <arg choice="opt" rep="repeat">
471 charclass=<replaceable>n</replaceable>:<replaceable>class</replaceable>
472 </arg>
473 </cmdsynopsis>
474 <cmdsynopsis>
475 <command>gp</command>
476 <arg choice="opt">
477 <replaceable>id</replaceable>
478 </arg>
479 <arg choice="opt">
480 len=<replaceable>n</replaceable>
481 </arg>
482 <arg choice="opt" rep="repeat">
483 chars=<replaceable>n</replaceable>:<replaceable>chars</replaceable>
484 </arg>
485 <arg choice="opt" rep="repeat">
486 charclass=<replaceable>n</replaceable>:<replaceable>class</replaceable>
487 </arg>
488 <sbr/>
489 </cmdsynopsis>
490 <para>Randomly generate a new password according to the specified
491 constraints. The <literal>len</literal> argument sets the length of
492 the generated password to <replaceable>n</replaceable> characters.
493 The <literal>chars</literal> argument constrains the password to
494 <replaceable>n</replaceable> from the set of characters
495 <replaceable>chars</replaceable>. Similarly, the
496 <literal>charclass</literal> argument to
497 <replaceable>n</replaceable> characters from the extended regular
498 expression character class <replaceable>class</replaceable>.
499 Multiple <literal>char</literal> and <literal>charclass</literal>
500 arguments may be specified, in which case the generated passwords
501 match all of them.</para>
502 </listitem>
503 </varlistentry>
504 <varlistentry>
505 <term>Change the master password</term>
506 <listitem>
507 <cmdsynopsis>
508 <command>changepassword</command>
509 </cmdsynopsis>
510 <cmdsynopsis>
511 <command>ch</command>
512 <sbr/>
513 </cmdsynopsis>
514 <para>Change the master password.</para>
515 </listitem>
516 </varlistentry>
517 <varlistentry>
518 <term>Define macro</term>
519 <listitem>
520 <cmdsynopsis>
521 <command>define</command>
522 <arg choice="plain">
523 <replaceable>name</replaceable>=<replaceable>value</replaceable>
524 </arg>
525 </cmdsynopsis>
526 <cmdsynopsis>
527 <command>D</command>
528 <arg choice="plain">
529 <replaceable>name</replaceable>=<replaceable>value</replaceable>
530 </arg>
531 <sbr/>
532 </cmdsynopsis>
533 <para>Define the macro <replaceable>name</replaceable> to expand to
534 <replaceable>value</replaceable>. A Macro is a shorthand term for
535 a command and/or command arguments. Macros are tokenized when they
536 are defined, thus if a macro contains other macros, these other
537 macros are expanded once at the time the macro is defined and not
538 each time a macro is expanded later. A macro can be used as like a
539 command or as part of the command's argument by prefixing the macro
540 name by a &quot;$&quot;. It is expanded by substituting the
541 previously tokenized contents before the command is
542 evaluated.</para>
543 </listitem>
544 </varlistentry>
545 <varlistentry>
546 <term>Set configuration variable or display their values</term>
547 <listitem>
548 <cmdsynopsis>
549 <command>set</command>
550 <arg choice="opt">
551 <replaceable>variable</replaceable>=<replaceable>value</replaceable>
552 </arg>
553 </cmdsynopsis>
554 <cmdsynopsis>
555 <command>S</command>
556 <arg choice="plain">
557 <replaceable>variable</replaceable>=<replaceable>value</replaceable>
558 </arg>
559 <sbr/>
560 </cmdsynopsis>
561 <para>If <replaceable>variable</replaceable> is specified, set the
562 configuration variable <replaceable>variable</replaceable>
563 to <replaceable>value</replaceable>. If no arguments are specified,
564 display the current values of all configuration variables.</para>
565 </listitem>
566 </varlistentry>
567 <varlistentry>
568 <term>Display help text</term>
569 <listitem>
570 <cmdsynopsis>
571 <command>help</command>
572 <arg choice="opt">
573 <replaceable>command</replaceable>
574 </arg>
575 </cmdsynopsis>
576 <cmdsynopsis>
577 <command>h</command>
578 <arg choice="opt">
579 <replaceable>command</replaceable>
580 </arg>
581 <sbr/>
582 </cmdsynopsis>
583 <para>Display a summary of all commands or usage information for
584 the specified <replaceable>command</replaceable>.</para>
585 </listitem>
586 </varlistentry>
587 <varlistentry>
588 <term>Show metadata information</term>
589 <listitem>
590 <cmdsynopsis>
591 <command>info</command>
592 </cmdsynopsis>
593 <cmdsynopsis>
594 <command>i</command>
595 <sbr/>
596 </cmdsynopsis>
597 <para>Display metadata information such as the user who last wrote
598 to the database, the time when the database was last written to,
599 and the host on which the password database was last written
600 to.</para>
601 </listitem>
602 </varlistentry>
603 <varlistentry>
604 <term>Display status messages</term>
605 <listitem>
606 <cmdsynopsis>
607 <command>status</command>
608 </cmdsynopsis>
609 <cmdsynopsis>
610 <command>t</command>
611 <sbr/>
612 </cmdsynopsis>
613 <para>Redisplay any error message from the previous command and
614 whether there are unsaved changes.</para>
615 </listitem>
616 </varlistentry>
617 <varlistentry>
618 <term>Write database</term>
619 <listitem>
620 <cmdsynopsis>
621 <command>write</command>
622 </cmdsynopsis>
623 <cmdsynopsis>
624 <command>w</command>
625 <sbr/>
626 </cmdsynopsis>
627 <para>Write all changes back to the password database.</para>
628 </listitem>
629 </varlistentry>
630 <varlistentry>
631 <term>Quit</term>
632 <listitem>
633 <cmdsynopsis>
634 <command>quit</command>
635 </cmdsynopsis>
636 <cmdsynopsis>
637 <command>q</command>
638 </cmdsynopsis>
639 <cmdsynopsis>
640 <keysym>end-of-file</keysym>
641 <sbr/>
642 </cmdsynopsis>
643 <para>Quit <command>pwm</command>. If running in interactive mode
644 and there are unsaved changes, <command>pwm</command> will not
645 terminate but display a warning message. If the quit command is
646 invoked twice consecutively, <command>pwm</command> will discard
647 unsaved changes and terminate.</para>
648 </listitem>
649 </varlistentry>
650 <varlistentry>
651 <term>Quit and discard unsaved changes</term>
652 <listitem>
653 <cmdsynopsis>
654 <command>Quit</command>
655 </cmdsynopsis>
656 <cmdsynopsis>
657 <command>Q</command>
658 <sbr/>
659 </cmdsynopsis>
660 <para>Quit <command>pwm</command> and discard any unsaved changes
661 without a warning.</para>
662 </listitem>
663 </varlistentry>
664 </variablelist>
665 </refsect2>
666 </refsect1>
667 <refsect1>
668 <title>File Format</title>
669 <para>The canonical description of the file format is included with the
670 distribution of the <citerefentry><refentrytitle>pwsafe</refentrytitle>
671 <manvolnum>1</manvolnum></citerefentry> utility.</para>
672 </refsect1>
673 <refsect1>
674 <title>Environment Variables</title>
675 <variablelist>
676 <varlistentry>
677 <term>
678 <literal>LANG</literal>
679 </term>
680 <term>
681 <literal>LC_ALL</literal>
682 </term>
683 <listitem>
684 <para>See <citerefentry><refentrytitle>locale</refentrytitle>
685 <manvolnum>5</manvolnum></citerefentry></para>
686 </listitem>
687 </varlistentry>
688 <varlistentry>
689 <term>
690 <literal>LOGNAME</literal>
691 </term>
692 <listitem>
693 <para>The name of the logged in user which is recorded when writing
694 the password database</para>
695 </listitem>
696 </varlistentry>
697 </variablelist>
698 </refsect1>
699 <refsect1>
700 <title>Exit Status</title>
701 <para>The following exit values are returned:</para>
702 <variablelist>
703 <varlistentry>
704 <term>0</term>
705 <listitem>
706 <para>Command successfully executed.</para>
707 </listitem>
708 </varlistentry>
709 <varlistentry>
710 <term>1</term>
711 <listitem>
712 <para>An unspecified error has occured.</para>
713 </listitem>
714 </varlistentry>
715 <varlistentry>
716 <term>2</term>
717 <listitem>
718 <para>Invalid command line options were specified.</para>
719 </listitem>
720 </varlistentry>
721 </variablelist>
722 </refsect1>
723 <refsect1>
724 <title>Asynchronous Events</title>
725 <variablelist>
726 <varlistentry>
727 <term><literal>SIGINT</literal></term>
728 <term><literal>SIGHUP</literal></term>
729 <term><literal>SIGTERM</literal></term>
730 <listitem>
731 <para>If there are changes since the database was last written and
732 <command>pwm</command> is running in interactive mode, it
733 automatically writes a copy of the current database to the file
734 <filename>~/.pwm/autosave.psafe3</filename> which may be used for
735 recovery later.</para>
736 </listitem>
737 </varlistentry>
738 </variablelist>
739 </refsect1>
740 <refsect1>
741 <title>Files</title>
742 <variablelist>
743 <varlistentry>
744 <term><filename>~/.pwm/pwmrc</filename></term>
745 <listitem>
746 <para>configuration file</para>
747 </listitem>
748 </varlistentry>
749 <varlistentry>
750 <term><filename>~/.pwm/pwm.psafe3</filename></term>
751 <listitem>
752 <para>default password database</para>
753 </listitem>
754 </varlistentry>
755 <varlistentry>
756 <term><filename>~/.pwm/autosave.psafe3</filename></term>
757 <listitem>
758 <para>automatic copy of the password database after receiving a fatal
759 signal in interactive mode</para>
760 </listitem>
761 </varlistentry>
762 </variablelist>
763 </refsect1>
764 <refsect1>
765 <title>See Also</title>
766 <para><citerefentry><refentrytitle>pwm-clip</refentrytitle>
767 <manvolnum>1</manvolnum></citerefentry>,
768 <citerefentry><refentrytitle>pwsafe</refentrytitle>
769 <manvolnum>1</manvolnum></citerefentry>,
770 <citerefentry><refentrytitle>sh</refentrytitle>
771 <manvolnum>1</manvolnum></citerefentry>,
772 <citerefentry><refentrytitle>locale</refentrytitle>
773 <manvolnum>5</manvolnum></citerefentry>,
774 <citerefentry><refentrytitle>regex</refentrytitle>
775 <manvolnum>5</manvolnum></citerefentry>,
776 <link xlink:href="https://pwsafe.org/"/></para>
777 </refsect1>
778 </refentry>