Add SAVE --ask.
[pwmd.git] / README
blob6965fb71f24f505edf93f8d2f575a11ca451c558
1 Password Manager Daemon is a server that provides a way for applications to
2 securely store and retrieve data at a centralized location. The data is stored
3 in an XML file and clients connect and send commands to manipulate the data.
5 I needed this because I use a few applications that require the same
6 credentials but hate having to update all those configuration files to reflect
7 any changes. The data file can be edited once with a pwmd client and patched
8 applications can retrieve the updated info. It has evolved to be useful for
9 more than only authentication details:
11     * Multi-threaded. More than one client may access the data at the same
12       time.
13     * Optionally uses the GnuPG Agent for key caching and smartcard support.
14     * Remote network connections over GnuTLS or SSH via a proxy.
15     * Configuration file which supports file specific settings including:
16       cache expiration and encryption key or key file and more.
17     * Logging to file and/or syslog.
18     * Secure memory usage. Pwmd will zero out memory before freeing it and
19       also has the option to lock the entire process in RAM to avoid swapping
20       the data to virtual memory.
21     * Multiuser: socket and per-element local user and TLS access control.
22     * Much more...
25 Requirements:
26 -------------
27     C99 compiler - http://www.gnu.org/software/gcc
28                    Has been tested to work. Others should work fine, too.
30     libassuan    - ftp://ftp.gnupg.org/gcrypt/libassuan
31                    Protocol. Version 2.0.2 or later is required. Version
32                    2.1.0 or later is highly recommended for UDS peer
33                    credential checking on OS's other than Linux.
35     libgpg-error - http://www.gnupg.org
36                    Error handling. Required.
38     gpg-agent    - http://www.gnupg.org
39                    Keypair generation, decryption and caching. Version 2.1.0
40                    or later is required when pwmd's --use-agent command line
41                    option is specified. Optional.
43     pinentry     - http://www.gnupg.org
44                    Required for passphrase retrieval from either gpg-agent or
45                    pwmd itself.
47     libxml2      - http://xmlsoft.org
48                    Required for XML parsing and data manipulation.
50     libgcrypt    - http://www.gnupg.org
51                    Encryption and hashing. Version 1.5.0 or later is required.
53     libz         - http://www.zlib.net
54                    For data file conversion. Version 1.2.2.1 or later is
55                    required.
57     libgnutls    - http://www.gnu.org/software/gnutls/
58                    For encrypted connections over a TCP network. Version
59                    3.3.0 or later. Optional.
62 Building and installation:
63 -------------
64 If your building from the git repository, you will need to generate the
65 configure script. If your building from a release tarball then you can skip
66 this step:
68 ./autogen.sh
70 After that you can see which features are available by doing:
72 ./configure --help | less
74 Then do the following to configure and build then install pwmd:
76 ./configure [--any-features --you-want] && make install
79 Running pwmd:
80 -------------
81 Please read the pwmd.info texinfo manual for protocol commands, syntax and
82 configuration details. A HTML version is also available in doc/pwmd.html.
84 Typing 'pwmd' will start the server and wait for connections to
85 ~/.pwmd/socket. Be sure gpg-agent is running (see manual) when --use-agent is
86 specfied on the pwmd command line (--enable-agent must have been passed to
87 configure at compile-time to enable gpg-agent support). Passing
88 --allow-preset-passphrase to gpg-agent is recommended and gpg-agent option
89 --allow-loopback-pinentry is required if using a keyfile or connecting over
90 TLS.
93 Connecting:
94 -----------
95 Any program that can connect to a UNIX domain socket will work although using
96 pwmc, a client included with libpwmd, is recommended:
98     echo command | pwmc filename
100 or interactively:
101     pwmc filename
104     socat UNIX-CONNECT:$HOME/.pwmd/socket -
106 A more user-friendly full featured client QPwmc is also available. It has a Qt
107 GUI and is much easier to use. See http://qpwmc.sourceforge.net/ for details.
110 GIT Repository
111 --------------
112 There is a public git repository available at repo.or.cz. Anonymous checkouts
113 can be done by doing:
115     git clone git://repo.or.cz/pwmd.git
117 The gitweb interface can be viewed at http://repo.or.cz/w/pwmd.git.
120 Mailing lists
121 -------------
122 Please send bug reports, questions or feature requests to
123 https://lists.sourceforge.net/lists/listinfo/pwmd-users
125 Developers please use
126 https://lists.sourceforge.net/lists/listinfo/pwmd-devel
128 The same for libpwmd may be sent to
129 https://lists.sourceforge.net/lists/listinfo/libpwmd-users
131 https://lists.sourceforge.net/lists/listinfo/libpwmd-devel
134 Ben Kibbey <bjk@luxsci.net>
135 XMPP: bjk@jabber.org
136 http://pwmd.sourceforge.net/