Bonjour,
J'ai la problématique suivante : j'ai un fichier /etc/passwd générique sur des serveurs, et je souhaite que seuls quelques users puissent se logger sur chaque serveur.
A cet effet, j'ai pensé à mettre en oeuvre un mécanisme qui me parait simple : si je crée le home directory d'un user sur un serveur, celui-ci doit pouvoir se logger. Si le home directory du user n'existe pas, le user ne doit pas pouvoir se connecter.
J'ai pensé à utiliser PAM pour cette tâche ... Je connais le module qui permet de créer automatiquement le home directory d'un user se connectant pour la première fois, mais y a-t-il un module permettant de faire ce que je veux ? Contrôler la validité du home directory, et si celui-ci n'existe pas empêcher le login ?
Et pour mettre cette solution en oeuvre, faut-il que que login (ou un autre outil) ait été compilé "pam enabled" ?
Merci. :)
# /bin/false
Posté par Sebastian . Évalué à 1.
En indiquant pour chaque utilisateur restreint un shell à false dans le fichier /etc/passwd, l'utilisateur ne peut théoriquement se connecter.
[^] # Re: /bin/false
Posté par Ian X . Évalué à 1.
[^] # Re: /bin/false
Posté par Sebastian . Évalué à 1.
Si tu as beaucoup d'utilisateurs cela ne peut être la solution.
[^] # Re: /bin/false
Posté par KiKouN . Évalué à 1.
Toutefois, je te recommande soit d'utiliser soit un annuaire du style LDAP (qui permet une gestion centralisé) soit de passer par des modules pam.
Sinon tout les outils utilisant les comptes systèmes passe par pam. Il n'y a rien à recomplier par défaut donc.
[^] # Re: /bin/false
Posté par Ian X . Évalué à 1.
Devoir gérer tout une liste de liens pour les shells utilisateurs est trop contraignant également, pour certaines raisons il ne faut pas toucher au passwd, d'où ma recherche d'une astuce liée aux home directory ...
# pam_listfile
Posté par niol (site web personnel) . Évalué à 1.
Le truc qui me vient à l'esprit, c'est d'utiliser pam_listfile dans /etc/pam.d/ssh avec une ligne du style :
puis de mettre la liste des utilisateurs autorisés à utiliser ssh dans /etc/sshusers.
Après, y'a peut-être moyen d'utiliser un autre module pam pour tester la présence du répertoire personnel mais je ne trouve pas. Cette solution nécessite que openssh-server ait le support de pam.[^] # Re: pam_listfile
Posté par Ian X . Évalué à 1.
Par contre elle n'empêchera pas des "su - toto" ...
[^] # Re: pam_listfile
Posté par niol (site web personnel) . Évalué à 1.
Un find /home -type d -maxdepth 1 -mindepth 1 -exec basename {} \; | grep -v '^lost+found' > /etc/sshusers pourrait te faciliter la tâche.
Par contre elle n'empêchera pas des "su - toto" ...
Dans ce cas peut-être utiliser /etc/pam.d/login au lieu de /etc/pam.d/ssh et cette fois il faut bien que login soit compilé avec le support pam.
# Avec un simple script shell
Posté par slack . Évalué à 1.
Le fichier /bin/connection-autorisee a pour propriétaire root:root et pour droits 755. Il est exécutable et contient les six lignes suivantes :
#!/bin/bash
if [ -d /home/${USER} ] ; then
/bin/bash
else
echo "Vous n'avez pas le droit de vous connecter"
fi
Cela bloque les "su - utilisateur" si utilisateur n'est pas autorisé.
[^] # Re: Avec un simple script shell
Posté par Ian X . Évalué à 1.
[^] # Re: Avec un simple script shell
Posté par slack . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.