Je dois autoriser l'utilisateur martin
à passer à l'utilisateur martin-test
sans mot de passe
su - martin-test
Je pense que cela peut être configuré dans /etc/pam.d/su
. Il y a déjà quelques lignes dans ce fichier qui peuvent être décommentées. Cependant, je n'aime pas l'idée d'ajouter l'utilisateur martin
au groupe wheel
. Je ne veux pas accorder à martin
plus de privilèges que de pouvoir passer à martin-test
. Je ne veux pas non plus utiliser Sudo
.
Quelle serait la meilleure façon de le faire, tout en gardant les privilèges de l'utilisateur martin
minimes?
Ajoutez les lignes suivantes sous le pam_rootok.so
ligne dans votre /etc/pam.d/su
:
auth [success=ignore default=1] pam_succeed_if.so user = martin-test
auth sufficient pam_succeed_if.so use_uid user = martin
Ces lignes effectuent des vérifications à l'aide de pam_succeed_if.so
module. Voir aussi syntaxe du fichier de configuration Linux-PAM pour en savoir plus sur les lignes auth
.
martin-test
. S'il ne se passe rien (success=ignore
) et nous pouvons continuer sur la ligne suivante pour vérifier l'utilisateur actuel . Si ce n'est pas le cas, la ligne suivante sera ignorée (default=1
) et nous pouvons continuer sur les lignes suivantes avec les étapes d'authentification habituelles.martin
ou non, si c'est le cas, le système considère le processus d'authentification comme réussi et renvoie (sufficient
), si ce n'est pas le cas, rien ne se passe et nous continuer sur les lignes suivantes avec les étapes d'authentification habituelles.Vous pouvez également restreindre su
à un groupe, ici le groupe allowedpeople
peut su
sans mot de passe:
auth sufficient pam_succeed_if.so use_uid user ingroup allowedpeople
Si vous ne voulez pas changer de groupe ou utiliser Sudo
, utilisez un module pam appelé pam_exec
pour exécuter des scripts externes dans une étape pam.
Ajoutez une ligne dans votre /etc/pam.d/su
après le pam_rootok.so
ligne:
auth sufficient pam_exec.so quiet /path/to/script
/path/to/script
a les autorisations 755 (rwxr-xr-x) et le contenu suivant:
#!/bin/bash
if [ "$PAM_TYPE" == "auth" ] && \
[ "$PAM_USER" == "martin-test" ] && \
[ "$PAM_RUSER" == "martin" ]; then
exit 0
else
exit 1
fi
Donc, ce script se termine avec succès si su
:
martin
etmartin-test
.Voir:
martin@Host:~$ su - martin-test
martin-test@Host:~$ exit
martin@Host:~$ su - otheruser
Password: ****
otheruser@Host:~$
Cela pourrait être le meilleur moyen possible.
su
n'est pas censé faire cela - Sudo
l'est.
Ouvrir/etc/sudoers.d/custom
Et écrivez ce qui suit:
user-a ALL=(user-b:user-b) NOPASSWD:ALL
Cela signifie: chaque fois que l'utilisateur-a exécute Sudo -u user-b
, Laissez-le partir sans demander le mot de passe.
ne autre façon
youruserid ALL = (username) NOPASSWD: ALL
avec visudo
puis Sudo -u username bash
est comme su - username
Si vous n'avez pas accès au compte root, mais que vous avez le mot de passe de l'utilisateur que vous souhaitez utiliser pour exécuter une commande, vous pouvez procéder comme suit.
Installez simplement votre clé publique dans les_touches_autorisées de toto