web-dev-qa-db-fra.com

Utilisez un mot de passe pour l'administration et un autre pour la connexion au système

Comment puis-je donner à un utilisateur un mot de passe pour tilisation normale lors de la connexion, ainsi qu'un autre mot de passe pour l'administration système et accès Sudo? Je veux qu'un utilisateur ait deux mots de passe.

10
Varun Sridharan

Il existe un moyen de le faire en remplaçant les paramètres PAM (Pluggable Authentication Module) pour le service Sudo. Faites-le avec un risque élevé pour votre machine - ne copiez et ne collez pas sauf si vous comprenez ce que fait la commande, et gardez toujours un terminal root ouvert - test test test! - avant de le déconnecter, au cas où vous auriez besoin de revenir en arrière et de réparer quelque chose.

Je vous recommande de lire quelques informations sur le fonctionnement de PAM pour que vous sachiez quoi faire en cas de panne. Je recommande également à la plupart des utilisateurs d’aborder ce problème sous un angle différent (création d’un compte utilisateur distinct pour l’administration), car la solution peut être soumise à des attaques de table de hachage sur votre mot de passe si vous n’avez pas défini correctement vos autorisations.

Si vous êtes déterminé à continuer, vous devrez installer un nouveau module PAM. pam_pwdfile utilise le fichier de type ancien/etc/passwd pour l'authentification, ce qui est très bien pour utiliser différents mots de passe pour différents services. Il ne fournit aucune reconnaissance de compte - vous pouvez créer des paires nom d'utilisateur/mot de passe pour des utilisateurs qui n'existent pas sur le système. Puisque nous l'utilisons pour Sudo, cela n'a pas d'importance, nous allons laisser Sudo vérifier que le compte existe de la manière habituelle.

Sudo apt-get install libpam-pwdfile

Je vous recommande également de vous procurer un éditeur de fichier htpasswd très pratique. Benjamin Schweizer a créé un éditeur pratique en python qui fonctionne bien. Récupérez-le à partir de http://benjamin-schweizer.de/htpasswd_editor.html et installez sa dépendance:

Sudo apt-get install python-newt

Générez un fichier au format htpasswd à l’aide de l’outil - Sudo python htpasswd_editor Sudo.passwd. Entrez un nom d'utilisateur et un mot de passe en utilisant le même nom d'utilisateur que vous utiliserez pour Sudo - un pour chaque utilisateur qui l'utilisera. Copiez-le dans un endroit sûr (lorsque je le teste, je le mets dans /etc/Sudo.passwd) et le rend illisible pour les utilisateurs habituels: chmod 660 /etc/Sudo.passwd en tant que root.

Assurez-vous que le fichier appartient à root et est illisible pour les autres utilisateurs. Il s'agit d'une vulnérabilité, car le fichier contient un mot de passe haché, et s'il est lisible ou non. inscriptible par d’autres utilisateurs, cela nuit gravement à votre sécurité. C'est pour cette raison que je ne recommande pas cette méthode sur une machine qui doit rester sécurisée.

Enfin, éditez le fichier /etc/pam.d/Sudo. Ajoutez la ligne suivante au-dessus des autres @include ... lignes:

auth    required    pam_pwdfile.so pwdfile /etc/Sudo.passwd

Évidemment, remplacer le dernier argument par le chemin d'accès à votre fichier htpasswd généré. Mettez en commentaire la ligne suivante: #@include common-auth pour vous assurer qu'il utilise la nouvelle méthode d'authentification.

Mot d'avertissement - vous devrez éditer le fichier /etc/pam.d/Sudo à partir d'un terminal racine. Ne fermez pas ceci sans tester! Si vous le faites, il se peut que vous ne puissiez pas vous reconnecter (si vous avez cassé quelque chose) et que vous deviez démarrer à partir d'un disque de récupération pour réparer votre système. Testez avant de vous déconnecter en ouvrant un nouveau terminal et essayez avec Sudo. Vous devriez constater que cela ne fonctionnera plus avec votre mot de passe de connexion habituel, mais nécessite plutôt le nouveau mot de passe que vous avez utilisé lors de la génération du fichier passwd. Pour mettre à jour le fichier, utilisez à nouveau l’outil utile.

16
Aaron D

Il y a une solution beaucoup plus simple à la question initiale et voici comment je cours:

  • créer un utilisateur non administrateur
  • créer un utilisateur admin

Connectez-vous toujours en tant qu'utilisateur non administrateur et chaque fois que l'utilisateur non administrateur doit faire quoi que ce soit "adminy", il suffit de:

fab-user@fab-ux:/media/Data/Temp
$ su - fab-root 
Password: 
fab-root@fab-ux:~
$ Sudo smartctl --all /dev/sdc

Oui, ce n'est pas ce que vous voulez mais c'est ce que vous avez réellement besoin

1
Fabby