Comment puis-je me souvenir de quelque chose pendant la durée d’une session de connexion au bureau?

J’écris un programme en ligne de commande dans Node (bien que cela changera si un autre lang le facilite) et il stocke les données utilisateur dans un fichier crypté. Je veux que l’utilisateur lui donne son mot de passe une fois pendant une session de bureau / ssh et le garde en mémoire jusqu’à ce qu’il se déconnecte.

Vraisemblablement, mon script ne peut pas modifier les variables d’environnement afin qu’elles persistent entre les invocations. Comment des programmes comme Keychain et sudo se souviennent-ils de votre mot de passe et assurez-vous de l’oublier lors de la déconnexion?

Sudo fonctionne avec setuid et appartient à root. Ainsi, tout utilisateur qui exécute sudo exécutera en fait sudo en tant qu’utilisateur root. À partir de là, sudo (en tant que root, pour le compte de l’utilisateur) vérifie le fichier sudoers (qui est uniquement lisible par root) pour voir si l’utilisateur est autorisé à exécuter sudo et ce qu’il peut faire. Si l’utilisateur n’est pas dans le fichier sudoers, sudo quitte et enregistre la tentative. Si l’utilisateur se trouve dans le fichier sudoers, sudo demande le mot de passe de l’utilisateur et le compare à celui du fichier shadow (également lisible uniquement par root). Si elle correspond, sudo enregistrera l’heure d’access dans un autre fichier uniquement lisible par root, puis exécutera la commande. Les exécutions ultérieures de sudo par cet utilisateur dans le délai imparti ne demandent pas de mot de passe, car sudo peut vérifier l’heure de son dernier enregistrement. Sudo ne se souvient pas du mot de passe de l’utilisateur.

Le point clé est que, quel que soit l’utilisateur qui l’exécute, sudo s’exécute toujours en tant que root et peut donc accéder aux fichiers auxquels seul root peut accéder.

Je suppose que votre application peut imiter ce comportement en utilisant un utilisateur spécial et un cache qui n’est autorisé que pour cet utilisateur. Il est important de ne pas conserver les mots de passe. Déjà.

Une autre méthode utilisée par les applications, par exemple TrueCrypt, consiste à stocker le mot de passe en mémoire. Cette méthode ne fonctionne que pour les applications (comme TrueCrypt ou même le système d’exploitation) qui sont toujours en cours d’exécution. Dès que l’application se ferme, le mot de passe “enregistré” est perdu. Cette technique est principalement sécurisée .

J’espère que cela t’aides!