blog/content/software/pass-fr.md
2024-02-24 20:11:27 +01:00

69 lines
5.0 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
Title: Gérer vos mots de passe avec pass
Date: 2019-04-22 19:00
Modified: 2024-02-24 18:00
Lang: fr
Author: Fabrice
Category: programmes
Tags: pass, git, cli
Slug: password-store
Header_Cover: ../images/covers/clovers.jpg
Summary: Un gestionnaire de mots de passe simple qui repose sur gpg, et synchronisé via git.
---
Comme nous vivons dans un monde dangereux où les failles de sécurité sont découvertes tous les jours et où les fuites de données sont devenues monnaies courantes, il est recommandé dutiliser un mot de passe différent pour chacune de nos identités numériques.
Cependant, cela devient vite une horreur à maintenir manuellement, javais essayé dutiliser un bloc note en 2003 que jai perdu au bout dun mois (et les mots de passe avec).
Heureusement, les gestionnaires de mots de passes ont fleuri depuis, et plusieurs proposent des fonctionnalités de base similaires: mufti plateforme (en particulier sur les téléphones intelligents), génération de mots de passe «sécurisés», intégration navigateur…
Je ne vais pas pour faire une comparaison détaillée, mais si vous souhaitez jeter un coup dœil, [Wikipédia](https://en.wikipedia.org) propose une table de comparaison détaillée [**par ici** (en)](https://en.wikipedia.org/wiki/List_of_password_managers).
Dans cette recherche, grâce à [moviuro](https://try.popho.be), mon choix sest porté sur [pass](https://www.passwordstore.org/) avec [pass-otp](https://github.com/tadfisher/pass-otp#readme) (et [passmenu](https://git.zx2c4.com/password-store/tree/contrib/dmenu)).
Je nai pas non plus la prétention de faire un guide détaillé sur pass, comme ceux-ci sont déjà faciles à trouver sur internet, par exemple [**par ici** (en)](https://medium.com/@chasinglogic/the-definitive-guide-to-password-store-c337a8f023a1).
En résumé, pass est un script bash qui fait appel à des outils de base comme [git](https://git-scm.com/), [gpg](https://www.gnupg.org/), et est écrit par [zx2c4](https://www.zx2c4.com/).
Voici quelques commandes que jutilise souvent:
```sh
pass generate -i <pass-name>
```
Pour **re**générer un mot de passe, loption `-i` ici est **importante** puisquelle permet de ne réécrire que la première ligne du fichier (en général le mot de passe).
Cela évite donc de devoir utiliser du [git sale]({filename}/cheat-sheets/git-fr.md) pour retirer lerreur de larbre des commits vu que `pass <cmd>` fait automatiquement un commit atomique à la fin de la commande.
Je loublie parfois, cest pourquoi je laisse ça ici en guise de rappel.
Sur certains services, il arrive que lon ait besoin de spécifier un ensemble de caractères admissibles pour les mots de passe.
Cela peut être fait via la variable denvironnement `PASSWORD_STORE_CHARACTER_SET`.
Le contenu de cette variable est transmis à la [commande `tr`](https://fr.wikipedia.org/wiki/Tr_(Unix)).
Ainsi, pour créer un code PIN, on peut spécifier la valeur suivante: `PASSWORD_STORE_CHARACTER_SET='[:digit:]'` et indiquer la longueur désirée du mot de passe en dernier argument de la commande.
Par exemple, pour générer un code PIN de 6 chiffres:
```sh
PASSWORD_STORE_CHARACTER_SET='[:digit:]' pass generate <pass-name> 6
```
Je nai en revanche pas trouvé comment forcer la présence de caractères spéciaux… je lance donc la commande plusieurs fois dans ces cas avec loption `-i` pour écrire en place après la première tentative.
Ce nest pas la meilleure solution, qui en plus pollue lhistorique git mais bon… ça fonctionne.
Par exemple, pour générer un mot de passe sur un service _fictif_ qui supporterait les caractères spéciaux suivants: `-_@$<>` pour des mots de passe dau plus 20 caractères, on peut utiliser la commande suivante:
```sh
PASSWORD_STORE_CHARACTER_SET='[:alnum:]-_@$<>' pass generate <pass-name> 20
```
Si on souhaite faire de la rotation de clefs ou simplement mettre à jour ses identités, il est possible de relancer la commande `pass init`, où on peut y spécifier lidentifiant de la nouvelle clef… ou plusieurs identifiants.
Cela peut être utile pour avoir plusieurs clefs sur des périphériques différents pour mieux contrôler les risques de fuite de clef.
On peut également avoir des sous dossiers de son dossier `$HOME/.password-store/` chiffrés sous des clefs spécifiques (cela se contrôle avec loption `-p/--path=` de `pass init`).
Une application possible étant de séparer les clefs personnelles des clefs professionnelles (qui peuvent alors être chiffré sous une clef partagée entre les personnes ayant accès au jeu de mots-de-passe).
On pourrait imaginer coupler ça avec les [sous-modules git](https://git-scm.com/book/en/v2/Git-Tools-Submodules), mais je ne my suis pas aventuré…
Pour finir:
```sh
pass git <ce que vous voulez>
```
Pour faire *ce que vous voulez* avec gite, spécialement du *git sale* 😉
Finalement, jutilise [password-store](https://f-droid.org/en/packages/dev.msfjarvis.aps/) sur mon téléphone.