Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Pass - отличный консольный менеджер паролей

Оригинал: Pass - A perfect shell based password manager
Автор: liquidat
Дата публикации: 27 марта 2013 года
Перевод: А. Кривошей
Дата перевода: август 2013 г.

Pass - это утилита для хранения паролей и работы с ними и другими данными, требующими повышенного уровня безопасности, в командной строке - при этом программа имеет встроенную поддержку Git и удаленных репозиториев Git. Это хорошая альтернатива другим менеджерам паролей, которые часто требуют графического интерфейса, или не имеют поддержки репозиториев.

Что такое Pass

Pass - это консольный менеджер паролей, предназначенный для хранения как самих паролей, так и логинов, а также любых других данных по вашему желанию. Название "the standard unix password manager" вводит в заблуждение, так как автор всего лишь хотел этим подчеркнуть, что он использует только стандартные инструменты Unix, а не то, что программа эта является стандартом.

Но в главном автор прав - pass действительно интегрирован с хорошо известными и много раз протестированными утилитами Unix: шифрование всей информации производится с помощью GPG, запросы паролей осуществляет gpg-agent, за контроль версий и поддержку удаленного репозитория отвечает Git, а сама утилита написана на языке скриптов оболочки. Таким образом, у вас есть возможности, за которые можно не беспокоиться. На самом деле, если вы хотите, вы можете получить доступ к репозиторию Git и файлам Gnupg напрямую, вообще не используя pass.

Pass хранит информацию в простых текстовых файлах, которые могут быть сгруппированы в папки. Хотя основной идеей Pass является хранение каждого пароля в отдельном файле, вы можете открыть любой из них с помощью текстового редактора, и хранить в нем столько информации, сколько захотите. Каждый файл шифруется ключем gpg, который задается при первоначальной настройке Pass. В результате база данных Pass представляет собой просто папку, заполненную другими папками и зашифрованными файлами:

$ ls -1 $HOME/.password-store
business
commerce
financial
$ ls -1 $HOME/.password-store/business/
linkedin.com.gpg
example.com.gpg
important.com.gpg

Pass включен во все главные дистрибутивы, такие как Fedora, Ubuntu, Debian и так далее, поэтому установить его можно с помощью штатных менеджеров пакетов.

Как это работает

Если вы вызываете Pass без опций, он просто выводит содержимое хранилища паролей:

$ pass
Password Store
|-- business
|   |-- linkedin.com
|   |-- example.com
|   `-- important.com
|-- commerce
|   `-- amazon
|-- financial
|   |-- badbank.com
|   `-- mybank.com

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

$ pass business/example.com
login:  example
pass:   password

Добавить новые записи можно с помощью команды pass insert $FOLDER/$FILENAME. Но более удобным способом может быть просто использование умолчательного текстового редактора для редактирования нового файла: pass edit $FOLDER/$FILENAME. Таким способом проще добавлять многострочные записи.

Однако настоящей силой Pass является вызов команд git-add и git-commit после каждого изменения, например добавления нового пароля. Новый файл автоматически добавляется в локальный репозиторий git:

$ pass edit business/example.com
[master 4c09c76] Added password for business/example.com using /usr/bin/vim.
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 business/example.com.gpg

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

$ pass git push
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 823 bytes, done.
Total 4 (delta 1), reused 0 (delta 0)
To git@example.net:pass
aa2aff7..2011296  master -> master

Таким образом хранилище можно использовать совместно с любым удаленным репозиторием Git и может использоваться и другими клиентами, если у них есть соответствующий GPG-ключ.

Чего не хватает

Как вы могли убедиться, Pass почти совершенен в качестве менеджера паролей (или любой другой информации) на уровне командной строки, включая поддержку репозиториев и шифрования. Но буквально через несколько минут после того, как Pass заменил все мои менеджеры паролей, я понял, чего в нем не хватает - поддержки графического интерфейса! Было бы прекрасно, если бы Pass можно было интегрировать в основные графические оболочки и наиболее распространенные в Linux графичекие программы для хранения паролей:

- KDE's Kwallet
- Gnome's Keyring
- Android
- Firefox
- Chrome/Chromium

Суммируя вышесказанное: Pass прекрасен, но мог бы стать еще лучше, если бы он мог работать в качестве бэкенда для обычных графических утилит и окружений. Уже есть экспериментальный клиент для iOS, поэтому можно надеяться и на появление клиента для Android.