{ "info": { "author": "Andreas Bofj\u00e4ll", "author_email": "andreas@gazonk.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "License :: OSI Approved :: MIT License", "Topic :: Utilities" ], "description": "[![Build Status](https://travis-ci.org/andbof/pwmanager.svg?branch=master)](https://travis-ci.org/andbof/pwmanager)\n[![PyPI](https://img.shields.io/pypi/v/pwmanager.svg)](https://pypi.org/project/pwmanager)\n[![MIT licensed](https://img.shields.io/github/license/andbof/pwmanager.svg?branch=master)](https://raw.githubusercontent.com/andbof/pwmanager/master/LICENSE)\n\n# pwmanager\n\npwmanager is a python script for storing passwords, searchable by hostname and\nuser, in a gnupg encrypted git backed database. It can encrypt to multiple keys\nand also fetch keys from LDAP, allowing you to easily and securely share and\nversion control passwords with others. Useful for both personal and group-wide\npassword storage and sharing.\n\nCopyright (C) 2019 Andreas Bofj\u00e4ll , see LICENSE for\nlicensing details.\n\n# Where to get it\n\nThe latest release is available at PyPI: https://pypi.org/project/pwmanager/\n\nSource code repository is at github: https://github.com/andbof/pwmanager\n\n# Basic installation\n\nQuickest and easiest is to install using ``pip3`` from PyPI as your local user:\n\n pip3 install --user pwmanager\n\nYou can also install the latest development version directly from the github\nrepository:\n\n pip3 install --user git+git://github.com/andbof/pwmanager.git\n\nSome options need to be set in the configuration file. A sample\n``pwmanager.conf`` (``pwmanager.conf.sample``) is included in the package. pip3\nwill install it in the ``pwmanager/data`` subdirectory of the appropriate\npython ``site-packages`` directory. It should be put in ``$HOME/.pwmanager/``\n\nThe standard location for your password repository is ``$HOME/.pwmanager/data``\n\npwmanager requires python3 >= 3.4 and some extra packages, see ``setup.py`` for\ndetails. Python 2.x is not supported.\n\n# Using it\n\n## Getting help\n\n pwmanager -h\n\nHelp on actions is available by appending -h:\n\n pwmanager add -h\n\n## Storing passwords\n\nAdding the password ``secretpass`` for the account ``root`` on\n``host.company.com`` to the database:\n\n pwmanager add host.company.com root secretpass\n\nIf you leave out ``secretpass``, pwmanager will prompt you for the\npassword.\n\n## Retrieving passwords\n\nRetrieving the password stored above:\n\n pwmanager get host.company.com root\n\nNote ``pwmanager get`` matches both the hostname and username as substrings and\nif you do not specify a username it will list all accounts, so all of these\nwill find the above account (and maybe others):\n\n pwmanager get host.company.com roo\n pwmanager get host.company.com oot\n pwmanager get host.company.com r\n pwmanager get host.company.com r\n pwmanager get host.company.co\n pwmanager get com\n pwmanager get h\n\n## Synchronizing with others\n\npwmanager will always update from and push to ``origin`` when there is an\n``origin`` git remote configured. git adds ``origin`` automatically if you\nclone an already existing repository, but you need to add it manually if you\ninitialize it yourself or use ``pwmanager init``.\n\nTo add a remote repository later, use the normal git way:\n\n cd /path/to/datastore\n git remote add origin URL\n\nIn normal operation, pwmanager will, before doing anything, always fetch and\nrebase on the latest ``origin/master``, and will push to ``origin/master``\nafterwards. It will also retry this up to five times in case multiple people\nare in a rebase-race and pushing at the same time. However, if you just added a\nnew origin remote it's a good idea to manually run:\n\n git fetch origin\n git rebase origin/master\n\nIf any of the two commands above fail, you need to fix whatever git complains\nabout or pwmanager will not work.\n\n\n# How are the passwords stored?\n(_aka When the script doesn't work and you desperately need a password_)\n\nAll passwords are stored in separate files, one per password, in your datadir.\nThey are encrypted using GnuPG to all keys you configured to use, so if you\nhave a suitable key available in your local gnupg keyring and you want the\npassword for 'user' on 'host', you can do so by just running gnupg:\n\n gpg -o - -d datadir/host/user.gpg\n\nIf this fails, ensure you have your secret key in your gnupg keyring.\n\nWhy is every password in a separate file, you ask? Because that enables\nreplacing individual passwords without having access to any secret key. This\nallows automated password rotation, for example.\n\n# Troubleshooting\n\n## Decryption failed\n\ngnupg could probably not find your secret key. Make sure your secret key is\navailable in your standard keyring in ``~/.gnupg`` and that you're running the\nlatest gnupg 2.x series.\n\nFor debian stretch you need to install ``python3-gnupg`` from\nstretch-backports.\n\nIf your system defaults to gnupg 1.x and your gnupg 2.x binary is called gpg2,\nset ``gpg_path = gpg2`` in the ``[gnupg]`` section of ``pwmanager.conf``.\n\n## RuntimeError: No recipients to encrypt to!\n\nYou haven't added any key fingerprints in ``pwmanager.conf`` and haven't\nconfigured any other data source. There are simply no public keys configured to\nencrypt to.\n\n## \"I don't understand how to get the LDAP stuff working at all\"\n\npwmanager currently assumes you have a group (``objectClass: posixGroup``) with\na ``memberUid`` attribute for every member. Those should map to whatever you've\nset as ``user_attr`` in ``pwmanager.conf``.\n\nNext, pwmanager assumes the user has the attribute you've set as ``key_attr``,\nwhich should be the DN of a PGP keyserver compatible entry under ``key_dn``,\nnormally ``ou=PGP Keys,dc=company,dc=com``.\n\nThe same LDAP server must be able to act as a PGP compatible keyserver (hint:\n``gpg --send-keys`` should work). Also, don't forget to uncomment the\n``[ldap]`` header in ``pwmanager.conf``.\n\n# Known issues\n\n- pwmanager does not call ``mlock()``, mostly because doing so would require\n calling ``mlock()`` for the entire ~5 MB python binary.\n\n- pwmanager currently does not support multiple git remotes. That should\n probably be implemented, for numerous reasons.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/andbof/pwmanager", "keywords": "password manager gpg gnupg ldap", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pwmanager", "package_url": "https://pypi.org/project/pwmanager/", "platform": "", "project_url": "https://pypi.org/project/pwmanager/", "project_urls": { "Homepage": "https://github.com/andbof/pwmanager" }, "release_url": "https://pypi.org/project/pwmanager/1.4/", "requires_dist": null, "requires_python": "", "summary": "Manage passwords in a git backed encrypted gnupg database with LDAP support", "version": "1.4" }, "last_serial": 5673660, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "718cc9510eb35cdf83ec55bd198c8a18", "sha256": "430693fb4b6786350ba3318209da1867b18c9a1a39a598a78813e60f6f51a460" }, "downloads": -1, "filename": "pwmanager-0.1.tar.gz", "has_sig": false, "md5_digest": "718cc9510eb35cdf83ec55bd198c8a18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15883, "upload_time": "2019-03-04T23:13:13", "url": "https://files.pythonhosted.org/packages/15/c0/8d490a048a3b2edbbbd68d399f481e68b8ee9c9f6d19112c4fef5c857cf7/pwmanager-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "efc0232baf1f5a08befb7d2333171e99", "sha256": "d8161e71801e8039883c0aefb78a932b6f0dd876e9c647a70c1f08bc79229b7b" }, "downloads": -1, "filename": "pwmanager-0.2.tar.gz", "has_sig": false, "md5_digest": "efc0232baf1f5a08befb7d2333171e99", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17266, "upload_time": "2019-03-07T22:26:13", "url": "https://files.pythonhosted.org/packages/41/63/0a450ca5b45b464708ec373388ee8c44dab38c894e37ac735e963e76c84b/pwmanager-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "915538c59f4053f7d9173345d8264f22", "sha256": "9b7c453d0bb6ce1a4b2b1ef2b0f44ac641360468a73eb6584727986a49590d77" }, "downloads": -1, "filename": "pwmanager-0.3.tar.gz", "has_sig": false, "md5_digest": "915538c59f4053f7d9173345d8264f22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17286, "upload_time": "2019-03-13T22:14:34", "url": "https://files.pythonhosted.org/packages/e5/e5/bffeffcfd4235a9c84a83778597007f2e765671c9bc0b2e5452ba54578fb/pwmanager-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "d0659db2b7389d823435dfcd1b64a8b2", "sha256": "ce68d5aea82dfedfdbd29c8a2259c97d9502e0862868a11b034e8da849f83af7" }, "downloads": -1, "filename": "pwmanager-0.4.tar.gz", "has_sig": false, "md5_digest": "d0659db2b7389d823435dfcd1b64a8b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17523, "upload_time": "2019-03-15T07:00:53", "url": "https://files.pythonhosted.org/packages/cf/fd/6bb1f8d9daa6719d9a132128f3f850e970297b0af82728a219792b471658/pwmanager-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "c42ae3bad2d12b25ac0dfb33dfeec13d", "sha256": "35ce51fcf387e0fc40561ae72e0cf705678ca4259b1661a2dd71b028d69adc74" }, "downloads": -1, "filename": "pwmanager-0.5.tar.gz", "has_sig": false, "md5_digest": "c42ae3bad2d12b25ac0dfb33dfeec13d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17624, "upload_time": "2019-03-18T19:52:12", "url": "https://files.pythonhosted.org/packages/30/59/906411b0058a9c5f6fe7670750955baeeeaf084bf83fbe9dfb45431ee232/pwmanager-0.5.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "b82f5a01e29f763e2c7ffea3b38aa652", "sha256": "1bdd8b12dc2e869fb92cb680419d625f506631d64b409e98134916a7f024a8fe" }, "downloads": -1, "filename": "pwmanager-1.0.tar.gz", "has_sig": false, "md5_digest": "b82f5a01e29f763e2c7ffea3b38aa652", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17982, "upload_time": "2019-04-07T19:39:36", "url": "https://files.pythonhosted.org/packages/67/1d/d4372cd6815759f793ce2bcf60b6ca3c3d107629e8da9ab721a7f908ff76/pwmanager-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "0b47fd968ca0eb781d7422b2dfb61bcf", "sha256": "0285d1cfa7a3ae9bccd429e1265c9c2b9f8f1249a585d67d4e4372b5757efaa3" }, "downloads": -1, "filename": "pwmanager-1.1.tar.gz", "has_sig": false, "md5_digest": "0b47fd968ca0eb781d7422b2dfb61bcf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17969, "upload_time": "2019-04-07T20:01:39", "url": "https://files.pythonhosted.org/packages/b0/d7/20843a1ee6a795e7491adab6c97530ef98b21f85f25a95a2574dbd193c8a/pwmanager-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "20a2bc2b29608edd4fc904e35bdd4065", "sha256": "5988b6a26606ccb1950e93a6f6aba8749f1ad69cfc4363aa1b8028f3934368b1" }, "downloads": -1, "filename": "pwmanager-1.2.tar.gz", "has_sig": false, "md5_digest": "20a2bc2b29608edd4fc904e35bdd4065", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18276, "upload_time": "2019-04-20T21:06:06", "url": "https://files.pythonhosted.org/packages/03/38/369f94e70eddd80249703778f6fc8bc843b82ef142e1285351439e6f3a9a/pwmanager-1.2.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "ce140778d59c5717c49526d379fc3947", "sha256": "833085d1baa7a28138efe1e5eab1124733298f0f79151e8bb881bf917d5d3035" }, "downloads": -1, "filename": "pwmanager-1.4.tar.gz", "has_sig": false, "md5_digest": "ce140778d59c5717c49526d379fc3947", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18368, "upload_time": "2019-08-13T20:55:38", "url": "https://files.pythonhosted.org/packages/e9/ba/d8250b4bfdc6c5532e88b95d6011116a78642bb3d4517088cb4700935032/pwmanager-1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ce140778d59c5717c49526d379fc3947", "sha256": "833085d1baa7a28138efe1e5eab1124733298f0f79151e8bb881bf917d5d3035" }, "downloads": -1, "filename": "pwmanager-1.4.tar.gz", "has_sig": false, "md5_digest": "ce140778d59c5717c49526d379fc3947", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18368, "upload_time": "2019-08-13T20:55:38", "url": "https://files.pythonhosted.org/packages/e9/ba/d8250b4bfdc6c5532e88b95d6011116a78642bb3d4517088cb4700935032/pwmanager-1.4.tar.gz" } ] }