{"id":15513803,"url":"https://github.com/evgeni/pwstore","last_synced_at":"2025-07-11T08:36:00.005Z","repository":{"id":14786848,"uuid":"17508772","full_name":"evgeni/pwstore","owner":"evgeni","description":"fork of https://code.google.com/p/pwstore","archived":false,"fork":false,"pushed_at":"2020-07-02T07:11:47.000Z","size":36,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"devel","last_synced_at":"2025-06-01T08:06:50.877Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/evgeni.png","metadata":{"files":{"readme":"README.asciidoc","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-03-07T09:15:25.000Z","updated_at":"2014-04-23T08:53:18.000Z","dependencies_parsed_at":"2022-09-23T23:04:59.555Z","dependency_job_id":null,"html_url":"https://github.com/evgeni/pwstore","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/evgeni/pwstore","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evgeni%2Fpwstore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evgeni%2Fpwstore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evgeni%2Fpwstore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evgeni%2Fpwstore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/evgeni","download_url":"https://codeload.github.com/evgeni/pwstore/tar.gz/refs/heads/devel","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evgeni%2Fpwstore/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264766438,"owners_count":23660766,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-02T09:55:18.171Z","updated_at":"2025-07-11T08:35:59.978Z","avatar_url":"https://github.com/evgeni.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"PWS(1)\n======\n:doctype: manpage\n\nNAME\n----\npws - password store management\n\nSYNOPSIS\n--------\n*pws* 'COMMAND' ['OPTIONS']\n\nDESCRIPTION\n-----------\n\nThe pws tool allows you to store passwords (or anything else, really) in\na set of encrypted files.  Each file can be encrypted to a different set\nof users.  pws helps you with the bookkeeping of which keys to encrypt\neach file to and provides a convinient wrapper to edit protected files.\n\nIn the intended use the directory with the encrypted passwords would be\nunder SCM control and shared with other people who need access.\n\ninitialization\n--------------\n\nFirst you need a file where your users and group are defined in.  This\nfile is named .users.  Lines consist of assignments of the form\n \u003cusername\u003e = \u003ckeyfingerprint\u003e\nand\n @\u003cgroupname\u003e = \u003cusername\u003e|@\u003cgroupname\u003e [, \u003cusername\u003e|@\u003cgroupname\u003e ...]\n\nLines starting with a # are comments and thus get ignored.\n\n--------------------------------\n% cat .users\n# This file needs to be gpg signed by a key whose fingerprint\n# is listed in ~/.pws.yaml\n\nformorer   = 6E3966C1E1D15DB973D05B491E45F8CA9DE23B16\nweasel     = 25FC1614B8F87B52FF2F99B962AF4031C82E0039\n@admins    = formorer, weasel\n\nzobel    = 6B1856428E41EC893D5DBDBB53B1AC6DB11B627B\nmaxx     = 30DC1D281D7932F55E673ABB28EEB35A3E8DCCC0\n@vienna = zobel, maxx\n\n@all = @admins, @vienna\n\n# gpg --clear .users \u0026\u0026 mv .users.asc .users\n--------------------------------\n\nThe .users file is designed to live in a SCM repository, such as git,\nalongside all the other encrypted files.  In order to prevent\nunauthorized tampering with the .users file - for tricking somebody to\nre-encrypt data to the wrong key - the .users file needs to be\nPGP-clearsigned with a key from a whitelist.\n\nThis whitelist lives in ~/.pws.yaml under the trusted_users key and\nthen under the directory name.  A sample file looks like:\n\n---------------------------------\naliases:\n  debian:\n    - \u0026tfheen   A28411A596193171331802C0B65A4871CA19D717\n    - \u0026weasel   25FC1614B8F87B52FF2F99B962AF4031C82E0039\n\ntrusted_users:\n  \"~/.pws\":\n   - *tfheen\n  \"~/debian/dsa-passwords\":\n   - *tfheen\n   - *weasel\n---------------------------------\n\nadding a new file\n-----------------\n\n-----------------------------\n% pws ed -n file\n-----------------------------\n\nediting files\n-------------\n\nEvery file needs a header like:\n\n------------------------------\naccess: @admins, maxx\n------------------------------\n\nYou can edit the encrypted file with the pws tool: +pws ed file+.\n\nupdating the keyring\n--------------------\n\nIf available as .keyring pws instructs GnuPG to use this keyring in\naddition to the user's default keyrings.  This allows sharing of the\nkeyring in the repository.  Use +pws update-keyring+ to\nupdate/initialize this keyring.\n\n\nAUTHOR\n------\nPeter Palfrader \u003cpeter@palfrader.org\u003e, Tollef Fog Heen \u003ctfheen@err.no\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevgeni%2Fpwstore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevgeni%2Fpwstore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevgeni%2Fpwstore/lists"}