]> Sergey Matveev's repositories - stargrave-blog.git/commitdiff
passman менеджер паролей
authorSergey Matveev <stargrave@stargrave.org>
Tue, 5 Sep 2023 19:48:03 +0000 (22:48 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Tue, 5 Sep 2023 19:48:03 +0000 (22:48 +0300)
http://www.git.stargrave.org/?p=passman.git;a=summary
Что-то ни разу не писал про свой менеджер паролей тут. Видимо, потому
что он был сделан задолго до создания блога.

Давным давно я хранил пароли в текстовом файле в TSV формате,
зашифрованном GnuPG. gpg -d < passwords.tsv.gpg | grep foo.com

Дальше я перешёл на хранение всего этого в виде иерархии директорий и
текстовых файлов. www.foo.com/stargrave+foo@stargrave.org/passwd файл
содержит пароль, просто одной строчкой. Соответственно я вводил "passman
foo.com" и он найдёт www.foo.com. Если в нём одна запись
(поддиректория), то сразу же в X11 буферы обмена копирует
stargrave+foo@stargrave.org и пароль. Если учётных записей несколько,
скрипт вернёт плохой код возврата и покажет доступные найденные
варианты. А я уже уточню "passman foo.com/stargrave2" каким-нибудь.

В GUI программах вставить из одного буфера обмена просто третьей
кнопкой, а из второго через контекстное меню. В эмуляторах терминалов,
даже в suckless terminal, shift+ins и alt+shift+ins тоже позволяет из
одного и другого буфера вставку произвести. Через десять секунд скрипт
очищает буфер с паролем.

А сейчас решил что всё же стоит хоть какой-то дополнительный порог
добавить, а не в открытом виде (для моего пользователя) хранить всю эту
кучу паролей. Безусловно это всё на зашифрованном диске должно быть,
чтобы никакого plaintext на самом накопителе не оказалось.

Теперь passman хранит всё в одном recfile. И все действия используют
родной инструментарий recutils для поиска и вывода паролей. Ищем пароль
регулярным выражением через recsel. На вход ему подаётся БД всех
паролей, а на выходе тоже будет уже отфильтрованная другая БД. recsel
--count покажет сколько записей найдено, recsel -P Password уже выведет
только пароль из этой БД.

passman gen -- сгенерирует случайный пароль (16 случайных байт в
Base64). passman add name [password] -- добавит новую запись под именем
name (если пароль не задан, то сгенерирует его). Можно её добавить, а
дальше уже вызвать passman name чтобы в буфере получить пароль для
копирования в броузере -- таким образом я его на мониторе вообще ни разу
не увижу. passman mod -- позволяет отредактировать весь recfile в
редакторе, например чтобы добавить Data: поле с произвольными данными,
которые при поиске пароля тоже будут выведены на экран.

И этот файл автоматически шифруется age-ем с использованием парольной
фразы и сжимается zstd. passman mod конечно же натравит редактор на
временный дешифрованный файл, а дальше его зашифрует. Надо сменить
парольную фразу на БД? Просто запустить passman mod и сохранить файл
ничего в нём не изменяя -- age всё равно перешифрует всё в другой
временный файл.

Переконвертировать 238 паролей из иерархии директорий: одной строчкой
zsh-а сделал и к началу только добавил схему этой БД, чисто чтобы была,
для красоты и порядка.

При мне я не встречал чтобы люди использовали что-то более удобное. А то
что видел -- громоздкие GUI какие-то, где телодвижений всё равно сильно
больше совершается.


No differences found