# zpass
Basic and simple password management for UNIX using shell.
Does not require any setup, only uses a password to encrypt the archive.
Systems other than GNU/linux are untested at the moment
# Installing
## Dependencies
Requires:
- gpg
- tar
Optional:
- screen (key caching and clipboard time)
- lftp (for ftps remote files)
- curl (for WebDAV remote files)
- zenity (GUI prompt)
- kdialog (better GUI prompt in KDE)
- xclip (copy on X)
- wl-clipboard (copy on wayland)
## Prebuilt
From [zpkg](https://github.com/zawwz/zpkg) package repository
## From source
Requires [lxsh](https://github.com/zawwz/lxsh)
Clone this repository then run `sudo make install`
# Use
By design zpass uses encrypted archive files, wherein a file contains a value.
You can use predefined operations, or perform custom executions inside the archive.
See `zpass -h` for information on operations and configuration
When using `get` or `copy`, if the path entered is a folder,
zpass will look for a `default` file in this folder
## Example use
Create a file with `zpass c`.
A prompt will appear to use a password to encrypt the password archive file.
If you lose this password, you lose access to all contents of the archive.
You can create new values with either `zpass add `, `zpass new `, or `zpass set `
To copy a value into the clipboard, use `zpass ` or `zpass copy `
## Configuration
zpass will load by default the file `.config/zpass/default.conf` in your home directory
### Configuring remote file
You can configure zpass to use a file on a remote server.
Multiple methods of remote access can be used:
- SSH+SCP (requires SSH key configured)
- SFTP (requires SSH key configured)
- FTPS
- WebDAV (note: only HTTPS, not HTTP)
SFTP and WebDAV are the recommended options, as they are the easiest, most secure and most stable options.
SFTP is the easiest to use as you only need a configured SSH access to a machine,
however if you want as little delay as possible, you should use WebDAV.
### SFTP example
```
ZPASS_REMOTE_METHOD=sftp
ZPASS_REMOTE_ADDR=example.com
ZPASS_REMOTE_USER=user
ZPASS_SSH_ID=~/.ssh/id_rsa
```
### WebDAV example
```
ZPASS_REMOTE_METHOD=webdav
ZPASS_REMOTE_ADDR=example.com
ZPASS_PATH=zpass
ZPASS_REMOTE_USER=user
ZPASS_REMOTE_PASSWORD=supersecretpassword
```
### Making the cache volatile
If you are caching keys, by default zpass uses `~/.cache` as a caching path.
This can be troublesome in case the machine stops before the cache timer runs out,
leaving a file containing the key in plaintext.
This can be fixed by pointing the cache path to a volatile filesystem.
For example:
```
ZPASS_CACHE_PATH=$XDG_RUNTIME_DIR/zpasscache
```
# Troubleshooting
### Prompt keeps appearing even with correct password
Make sure your gpg configuration is correct, you can run `gpg -c < /dev/null` to check
### I can't get a remote file to work
First verify that you can connect to the remote server with the appropriate protocol by using a client.
Then check that you have the correct rights to the target file (`$ZPASS_PATH/$ZPASS_FILE.tar.gpg`).
If you're attempting the create the file and the folder `$ZPASS_PATH` doesn't exist,
make sure you have correct rights to create said folder.
### I'm encountering another bug
Generate a debug build (`make debug`) and run with environment `DEBUG=true` set,
then send the full output as an issue.