Recherche de site Web

Comment passer (su) à un autre compte utilisateur sans mot de passe


Dans ce guide, nous allons vous montrer comment passer à un autre compte utilisateur ou à un compte utilisateur spécifique sans avoir besoin d’un mot de passe. Par exemple, nous avons un compte utilisateur appelé postgres (le compte système de superutilisateur PostgreSQL par défaut), nous voulons que chaque utilisateur (généralement notre base de données PostgreSQL et nos administrateurs système) dans le groupe appelé postgres bascule vers le compte postgres à l’aide de la commande su sans entrer de mot de passe.

Par défaut, seul l’utilisateur root peut basculer vers un autre compte utilisateur sans entrer de mot de passe. Tout autre utilisateur sera invité à entrer le mot de passe du compte utilisateur vers lequel il bascule (ou s’il utilise la commande sudo, il sera invité à entrer son mot de passe), s’il ne fournit pas le mot de passe correct, il obtient une erreur « échec de l’authentification » comme indiqué dans la capture d’écran suivante.

Vous pouvez utiliser l’une des deux solutions fournies ci-dessous pour résoudre le problème ci-dessus.

1. Utilisation du module d’authentification PAM

Les PAM (Pluggable authentication modules) sont au cœur de l’authentification des utilisateurs sur les systèmes d’exploitation Linux modernes. Pour permettre aux utilisateurs d’un groupe spécifique de passer à un autre compte utilisateur sans mot de passe, nous pouvons modifier les paramètres PAM par défaut de la commande su dans le fichier /etc/pam.d/su.

# vim /etc/pam.d/su
OR
sudo vim /etc/pam.d/su

Ajoutez les configurations suivantes après « auth enough pam_rootok.so », comme indiqué dans la capture d’écran suivante.

auth       [success=ignore default=1] pam_succeed_if.so user = postgres
auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

Dans la configuration ci-dessus, la première ligne vérifie si l’utilisateur cible est postgres, si c’est le cas, le service vérifie l’utilisateur actuel, sinon, la ligne default=1 est sautée et les étapes d’authentification normales sont exécutées.

auth       [success=ignore default=1] pam_succeed_if.so user = postgres

La ligne qui suit vérifie si l’utilisateur actuel est dans le groupe postgres, si oui, le processus d’authentification est considéré comme réussi et renvoie suffisamment de résultats en conséquence. Dans le cas contraire, les étapes d’authentification normales sont exécutées.

auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

Enregistrez le fichier et fermez-le.

Ensuite, ajoutez l’utilisateur (par exemple aaronk) que vous souhaitez su au compte postgres sans mot de passe au groupe postgres à l’aide de la commande usermod.

$sudo usermod -aG postgres aaronk

Essayez maintenant de vous connecter au compte postgres en tant qu’utilisateur aaronk, vous ne devriez pas être invité à entrer un mot de passe comme indiqué dans la capture d’écran suivante :

$ su - postgres

2. Utilisation de la lime Sudoers

Vous pouvez également vous adresser à un autre utilisateur sans avoir besoin d’un mot de passe en apportant quelques modifications dans le fichier sudoers. Dans ce cas, l’utilisateur (par exemple aaronk) qui passera à un autre compte utilisateur (par exemple postgres) doit se trouver dans le fichier sudoers ou dans le groupe sudo pour pouvoir invoquer la commande sudo.

$ sudo visudo

Ajoutez ensuite la configuration suivante sous la ligne « %sudo ALL=(ALL :ALL) ALL " comme indiqué dans la capture d’écran suivante.

aaronk ALL=NOPASSWD: /bin/su – postgres

Enregistrez et fermez le fichier.

Essayez maintenant de vous connecter au compte postgres en tant qu’utilisateur aaronk, le shell ne doit pas vous demander d’entrer un mot de passe :

$ sudo su - postgres

C’est tout pour l’instant ! Pour plus d’informations, consultez la page de saisie du manuel PAM (man pam.conf) et celle de la commande sudo (man sudo).

$ man pam.conf
man sudo

Articles connexes: