Password-store

Материал из ALT Linux Wiki

Название пакета

password-store

Назначение

Программа password-store (она же pass) является консольным менеджером паролей, ориентированным на простоту, надежность и переносимость. В своей работе она не использует базы данных, вместо этого все пароли хранятся в локальном каталоге (по умолчанию ~/.passwor-store) в виде иерархии обычных каталогов и файлов. Названием файла может являться название сайта, логин или какое-то другое произвольное имя. Сами пароли расположены внутри файлов, которые зашифрованы с помощью gpg (при необходимости файлы могут содержать дополнительные строки). Для password-store также создано большое количество графических оболочек и клиентов под различные ОС, включая мобильные, а также ряд расширений.

Установка и начало работы

# apt-get install password-store

Для корректной работы копирования паролей в буфер обмена в сеансе Wayland также требуется установить утилиту wl-copy:

# apt-get install wl-clipboard

Если у пользователя отсутствует пара ключей gpg, ее нужно создать (подробнее см. здесь, при создании следует выбирать тип RSA и RSA (по умолчанию), размер следует указать 4096 бит):

$ gpg --gen-key
Внимание! При создании пары ключей обязательно нужно задать пароль. Программа будет спрашивать этот пароль при попытке просмотреть пароль (содержимое файла) или скопировать его в буфер обмена


Далее нужно инициализировать хранилище:

$ pass init ид.№ ключа

Узнать ид.№ ключа можно с помощью команды

$ gpg2 --list-keys

Например, если первая строка вывода следующая

pub   4096R/7CB55075 2023-07-21

ид.№ является 7CB55075. Альтернативно в качестве ид.№ можно ввести электронную почту владельца.

Примечание: password-store поддерживает одновременное использование нескольких ключей gpg. В этом случае разные пароли могут быть зашифрованы разными ключами, что может быть полезно, например, при работе с копией хранилища разными пользователями.


Использование

Примечание: Для каталогов и файлов поддерживается автодополнение по клавише Tab.

Создать пароль можно командой

$ pass add название

В этом случае программа запросит ввести пароль вручную. Поддерживается автоматическая генерация паролей:

$ pass generate название #создает случайный пароль длиной 25 символов; состоит из спецсимволов, букв и цифр
$ pass generate название X #создает случайный пароль длиной X символов
$ pass generate --no-symbols название X #создает случайный пароль длиной X символов; не использует спецсимволы, только буквы и цифры

Также возможно создать один или несколько подкаталогов:

$ pass generate каталог/каталог/название
Внимание! Подкаталоги и названия файлов незашифрованы, зашифровано только содержимое файлов. Поэтому не следует в качестве названий использовать конфиденциальную информацию


Увидеть иерархию каталогов и файлов, можно введением команды без аргументов:

$ pass                                                                                                                                       
Password Store
├── group0
│   ├── key0
│   └── key1
└── group1
    ├── key2
    ├── key4
    └── key5

Чтобы вывести содержимое файла в консоль, нужно ввести команду (для просмотра содержимого программа запросит пароль от ключа gpg):

$ pass название

Есть возможность не выводить содержимое файла на консоль, а скопировать его в буфер обмена (если файл содержит несколько строк, копируется только первая строка; пароль из буфера обмена будет автоматически удален через 45 секунд):

$ pass -c название

Изменить содержимое файла можно командой:

$ pass edit название

Чтобы удалить файл, нужно ввести команду (каталоги будут удалены автоматически после того, как будет удален последний файл в нем):

$ pass rm название

Чтобы переместить файл, нужно ввести команду:

$ pass mv старое_название новое_название

Удалить все хранилище можно простым удалением каталога .password-store:

$ rm -rf ~/.password-store

Использование pass на нескольких компьютерах и перенос хранилища между устройствами

Перенос данных на другой компьютер

Для переноса хранилища на другой компьютер достаточно скопировать хранилище (по умолчанию находится в ~/.password-store) со старого ПК на новый. Например, при помощи scp:

$ scp -r ~/.password-store newpc.example.com:/home/user/

Дополнительно требуется скопировать ключ gpg. На старом ПК выполняем команду:

$ gpg2 --export-secret-keys > pass.gpg

Копируем файл gpg на новый ПК, например, при помощи scp:

$ scp pass.gpg newpc.example.com:/home/user/

Наконец, импортируем ключ на новом компьютере:

$ gpg2 --import ./pass.gpg
Внимание! Обратите внимание, что существуют 2 версии утилиты gpg, версия 1 и версия 2. В Альт 11 эти версии установлены одновременно, и их исполняемые файлы называются gpg и gpg2 соответственно. В тех случаях, когда в системе присутствует gpg2 (как в случае Альт 11), pass использует его. Хранилища ключей для программ gpg и gpg2 отличаются. Поэтому экспорт ключа со старого ПК нужно обязательно делать командой gpg2. При этом если на новом ПК хранилище gpg2 не настроено, то при первом запуске gpg2 импортирует ключи из хранилища gpg. Поэтому если gpg2 еще не использовался на новом ПК, импорт можно сделать и командой gpg. Но если в системе уже присутствует хранилище gpg2, то импорт на новый ПК также обязательно делать командой gpg2. В противном случае импорт ключа из хранилища gpg в хранилище gpg2 произведен не будет, и при попытке расшифровать пароль с помощью pass вы получите ошибку: "gpg: сбой расшифровки: Нет секретного ключа". Радикальным способом очищения как хранилища gpg, так и хранилища gpg2 является удаление каталога .gnupg.

В случае возникновения ошибки секретного ключа следует проверить, что секретные ключи на старом ПК и на новом совпадают. Сделать это можно командой

$ gpg2 --list-secret-keys


Встроенная поддержка git

Указанный выше способ переноса хранилища неудобен, если требуется обеспечить постоянную синхронизацию хранилища и одновременное использование на нескольких устройствах. Для этих целей гораздо удобнее использовать git, поддержка которого встроена в программу. Программа pass автоматически создает и поддерживает репозиторий git. Для задействования функционала git вручную нужно запустить pass в ключом 'git':

$ pass git команда

Например:

$ pass git status

Альтернативно можно переместиться в каталог хранилища и выполнять команды git оттуда напрямую. Поддержка git позволяет получить мощный функционал как по работе с локальным репозиторием, так и по созданию удаленного репозитория и синхронизации с ним.

Графические оболочки

На официальной странице программы в разделе "Compatible Clients" приведен список графических оболочек под разные операционные системы, в том числе мобильные. Таким образом, программа pass обладает достаточной гибкостью для обеспечения работы как из командной строки, так и в программах с графическим интерфейсом на различных операционных системах.


Ссылки: [https://www.passwordstore.org/