Updated the FSF address in the copyright header.
[pwmd.git] / doc / pwmd.1.in
blob68b451c79b9f5a4076f1d59a14c7cb45d7c704f5
1 .\" This program is free software; you can redistribute it and/or modify
2 .\" it under the terms of the GNU General Public License as published by
3 .\" the Free Software Foundation; either version 2 of the License, or
4 .\" (at your option) any later version.
5 .\" 
6 .\" This program is distributed in the hope that it will be useful,
7 .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
8 .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9 .\" GNU General Public License for more details.
10 .\" 
11 .\" You should have received a copy of the GNU General Public License
12 .\" along with this program; if not, write to the Free Software
13 .\" Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02110-1301  USA
14 .de URL
15 \\$2 \(laURL: \\$1 \(ra\\$3
17 .if \n[.g] .mso www.tmac
18 .TH PWMD 1 "21 Jun 2008" "Password Manager Daemon" "Password Manager Daemon"
19 .SH NAME
21 pwmd \- local socket data server
22 .SH SYNOPSIS
23 .B pwmd
24 [\-hv] [\-f <rcfile>] [\-I <filename> [-i <iterations>]] [\-D] [\-n] [file] [...]
26 .SH DESCRIPTION
27 .B pwmd
28 is a daemon that listens for connections on a local socket. Clients connect to
29 the server and can retrieve or modify "account" data. The word "account" is
30 just a placeholder for the element describing and item. But what the data
31 actually is can be anything. The data is stored in an AES encrypted XML file.
33 .SH OPTIONS
34 The following are the available command line options. Remaining arguments are
35 files to add to the cache on startup.
36 .TP
37 .I "\-f rcfile"
38 Specify an alternate configuration file. The default is \fI~/.pwmd/config\fR.
39 .TP
40 .I "\-I filename"
41 Import an XML file prompting for a key to use for encryption. The encrypted
42 data will be written to stdout.
43 .TP
44 .I "\-i iterations
45 The number of encryption iterations when importing. When not specified, the
46 configuration file default will be used from the \fIglobal\fP section.
47 .TP
48 .I "\-D"
49 Disable the LIST and DUMP protocol commands.
50 .TP
51 .I "\-n"
52 Run as a foreground process.
53 .TP
54 .I "\-v"
55 Version information.
56 .TP
57 .I "\-h"
58 Help text.
60 .SH CONFIGURATION FILE
61 Blank lines and lines beginning with '#' are ignored. Some options can be
62 grouped together to have file specific settings. A file section is declared by
63 surrounding the filename with braces (i.e., \fI[filename]\fP). Global options
64 may be specified in a \fI[global]\fP section and are the defaults for other
65 file sections. If the first character of a string value is a tilde, it will be
66 expanded to your home directory. First the global options:
67 .TP
68 .I "socket_path=<string>"
69 Listen on the specified socket. The default is \fI~/.pwmd/socket\fR.
70 .TP
71 .I "socket_perms=<integer>"
72 Permissions to set after creating the socket. This will override any
73 .BR umask (2)
74 setting.
75 .TP
76 .I "data_directory=<string>"
77 Where
78 .B pwmd
79 should store and retrieve data files. The default is \fI~/.pwmd/data\fR.
80 .TP
81 .I "disable_mlockall=<boolean>"
82 When set to \fBfalse\fP,
83 .BR mlockall (2)
84 will be called after the client connects. This will use alot more physical
85 memory but may also be more secure. Most will probably find it overkill since
86 the contents of all memory is cleared before being freed. Note that this
87 doesn't affect the file cache which is always stored in RAM (if possible).
88 .TP
89 .I "cache_size=<integer>"
90 Specfies the size of the file cache. Must be in multiples of your systems
91 \fBPAGE_SIZE\fR. The default is one page.
92 .TP
93 .I "log_path=<string>"
94 Logs informational messages to the specified file. The default is
95 \fI~/.pwmd/log\fR.
96 .TP
97 .I "enable_logging=<boolean>"
98 Enable or disable logging to \fIlog_path\fR. The default is \fIfalse\fR.
99 .TP
100 .I "syslog=<boolean>"
101 Enable logging to
102 .BR syslog (8)
103 with facility LOG_DAEMON and priority LOG_INFO. The default is \fIfalse\fR.
105 .I "cache_push=<list>"
106 A list of filenames separated by commas that will be pushed into the file
107 cache upon startup.
108 .B pwmd
109 will ask for the key for each file specified unless the key was specified with
110 the \fBkey\fR or \fBkey_file\fR parameters in a matching file section. The
111 default is none.
113 .I "priority=<integer>"
114 The priority, or niceness, of the server. The default is inherited from the
115 parent process.
117 Below are options that can be in the \fI[global]\fP or \fI[filename]\fP
118 section. If in both then \fI[filename]\fP will have precedence.
120 .I "backup=<boolean>"
121 Whether a backup of the data file should be kept when saving. The default is
122 \fItrue\fP. The backup filename has the .backup extension appended to the
123 opened file.
125 .I "cache_timeout=<integer>"
126 The number of seconds for the life of the cached file. If \fI-1\fP, the file
127 is cached forever. If \fI0\fP, each time the file is opened or saved a key
128 will be required.
130 .I "enable_pinentry=<boolean>"
131 If \fIfalse\fP, disable the use of
132 .BR pinentry (1).
133 The default is \fItrue\fP. Also see \fBPINENTRY\fP below.
135 .I "pinentry_timeout=<integer>"
136 The number of seconds before the pinentry dialog will terminate while waiting
137 for a password. Set to \fI0\fP to wait forever.
139 .I "iterations=<integer>"
140 The number of times to encrypt the data. A value of 10000 or more will make
141 dictionary attacks very slow depending on the CPU. The default is \fI0\fP
142 which is really 1 iteration (data file compatibility bug). Setting to \fI-1\fP
143 will disable encryption.
145 .I "iteration_progress=<integer>"
146 After the specified number of iterations while encrypting or decrypting, a
147 status message with the keyword \fBPROGRESS\fP will be sent to the client.
148 Setting to \fI0\fP, the default, disables sending progress messages.
150 .I "key=<string>"
151 The initial key to use for this file. If specified in the \fI[global]\fP
152 section then "\fIglobal\fP" is treated as a filename and not a default for
153 other files. Note that if a client changes the key this value is not modified
154 and will need to be updated by hand.
156 .I "key_file=<string>"
157 Same as above but obtain the key from the specified filename with the key
158 being on the first line of the file. Note that if you change the key when
159 connected this value is not modified and will need to be updated by hand.
161 .I "compression_level=<integer>"
162 The default compression level for data files from \fI1\fP to \fI9\fP, \fI1\fP
163 being the fastest but least compression and \fI9\fP being the slowest but best
164 compression. To disable compression entirely, set to \fI0\fP. The default is
165 \fI6\fP.
167 .I "zlib_bufsize=<integer>"
168 The input and output buffer size when compressing and decompressing. This
169 affects how often the COMPRESS and DECOMPRESS status messages are sent and
170 also affects compression quality. The default is \fB65536\fP. Set to a higher
171 value for larger files.
173 .I "recursion_depth=<integer>"
174 The maximum number of times to resolve a target attribute for a single element
175 in an element path. An error is returned when this value is exceeded. The
176 default is \fI20\fP but can be disabled by setting to \fI0\fP.
178 .I "keepalive=<integer>"
179 Sends keep alive status messages to the client every N seconds. Set to \fI0\fP
180 to disable. The default is \fI5\fP.
182 .SH PINENTRY
184 When \fIenable_pinentry\fP is \fBtrue\fP, commands that require a key that
185 isn't cached or specified with the command, will use
186 .BR pinentry (1)
187 to retrieve the passphrase. Since \fBpwmd\fP is a daemon process, it isn't
188 attached to any terminal. So \fBpinentry\fP needs to know where to put it's
189 dialog box by using command line options when executed. These can be set by
190 either using protocol commands (see COMMANDS included in the archive) or by
191 creating a file \fI~/.pwmd/pinentry.conf\fP. When using the file, each line should
192 contain NAME=VALUE pairs where NAME is one of:
194 .B TTYNAME
195 The full path of the tty device.
197 .B TTYTYPE
198 The terminal type (i.e., vt100).
200 .B DISPLAY
201 If using an X11 pinentry.
203 .B PATH
204 The full path to the pinentry binary. The default is \fI@pinentry@\fP.
206 The file is read only once after a client first connects. Note that if your
207 not using a \fBDISPLAY\fP, then both \fBTTYNAME\fP and \fBTTYTYPE\fP should be
208 set otherwise you'll get a segfault from ncurses.
210 .SH SIGNALS
212 .B SIGUSR1
213 Clears the entire file cache. If there are any clients connected, a key will
214 be required for the next \fBOPEN\fP or \fBSAVE\fP command.
216 .B SIGHUP
217 Reloads the configuration file.
219 .SH FILES
221 .B ~/.pwmd/config
222 Default configuration file.
224 .B ~/.pwmd/data
225 Default data directory.
227 .B ~/.pwmd/socket
228 Default listening socket.
230 .B ~/.pwmd/log
231 Default log file when logging is enabled.
233 .B @pinentry@
234 Default location of the pinentry binary.
236 .B ~/.pwmd/pinentry.conf
237 Default pinentry settings for new clients.
239 .SH AUTHOR
240 Ben Kibbey <bjk@luxsci.net>
242 .URL "http://bjk.sourceforge.net/pwmd/" "PWMD Homepage" .
244 .SH "SEE ALSO"
245 .BR mlock (2),
246 .BR mlockall (2),
247 .BR libxml (3) ,
248 .BR mmap (2),
249 .BR pinentry (1)
251 Also see \fBCOMMANDS\fP included in the archive for protocol commands and
252 syntax.