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

10

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

Varun Sridharan
la source
1
Pourquoi ne pas simplement créer 2 comptes, l'un pour une utilisation normale et l'autre autorisé à utiliser sudo.
Luis Alvarado
non, j'en ai besoin dans un seul compte
Varun Sridharan
Pourquoi avez-vous besoin que ce soit un seul compte? Vous pouvez créer un compte séparé avec accès sudo mais sans dossier d'accueil séparé, puis ajouter cet utilisateur au même groupe que l'utilisateur normal et le configurer pour utiliser le même dossier d'accueil avecsudo usermod -d /path/to/new/home
Warren Hill
@SVarun J'ai mis à jour ma réponse avec des étapes qui fonctionnent pour moi depuis votre dernier commentaire. Pourriez-vous le vérifier et me faire savoir si cela fonctionne pour vous?
Aaron D

Réponses:

16

Il existe un moyen de le faire en remplaçant les paramètres PAM (Pluggable Authentication Module) pour le service sudo. Faites cela au grand risque pour votre machine - ne vous contentez pas de copier-coller à moins que vous ne compreniez ce que fait la commande, et gardez toujours un terminal racine ouvert - test test test! - avant de vous 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 afin de savoir quoi faire en cas de panne. Je recommande également à la plupart des utilisateurs d'aborder ce problème sous un angle différent (créer un compte d'utilisateur distinct pour l'administration) car la solution peut être susceptible d'attaquer la 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 idéal 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 les utilisateurs qui n'existent pas sur le système. Comme nous allons l'utiliser pour sudo, cela n'a pas d'importance, car nous allons simplement laisser sudo vérifier que le compte existe de la manière habituelle.

sudo apt-get install libpam-pwdfile

Je recommande également de saisir un éditeur de fichier htpasswd pratique. Benjamin Schweizer a créé un éditeur pratique en python qui fonctionne bien. Récupérez-le sur 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 (lors du test, je le mets dans /etc/sudo.passwd) et rendez-le illisible pour les utilisateurs réguliers: en chmod 660 /etc/sudo.passwdtant que root.

Assurez-vous que le fichier appartient à root et qu'il 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 accessible en écriture par d'autres utilisateurs, il nuit gravement à votre sécurité. C'est pour cette raison que je ne recommande pas cette méthode sur une machine qui doit être sécurisée.

Enfin, modifiez le /etc/pam.d/sudofichier. Ajoutez la ligne suivante au-dessus des autres @include ...lignes:

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

De toute évidence, remplacer le dernier argument par le chemin d'accès à votre fichier htpasswd généré. Commentez la ligne suivante: #@include common-authpour vous assurer qu'elle utilise la nouvelle méthode d'authentification.

Attention : vous devrez modifier le /etc/pam.d/sudofichier à partir d'un terminal racine. Ne fermez pas cela sans tester! Si vous le faites, vous ne pourrez peut-être pas vous reconnecter (si vous avez cassé quelque chose) et devrez 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 d'utiliser sudo. Vous devriez constater qu'il ne fonctionnera plus avec votre mot de passe de connexion habituel, mais nécessite à la place 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.

Aaron D
la source
j'ai besoin de courir dans Ubuntu existe-t-il d'une autre manière
Varun Sridharan
J'ai mis à jour la réponse - j'ai testé cette méthode et elle fait ce que vous voulez, si j'ai bien compris votre question. Essayez-le.
Aaron D
1
+50 primes. @AaronD votre réponse a résolu ma question . Merci!!!
Robbie Wxyz
Je suis content que vous l'ayez trouvé utile!
Aaron D
1

Il y a une solution beaucoup plus simple à la question d'origine et c'est la façon dont je gère:

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

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

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 dont vous avez réellement besoin

Fabby
la source