Lorsqu'un utilisateur se connecte à un système et qu'il n'y a pas de répertoire personnel, nous souhaitons créer le répertoire personnel de l'utilisateur à l'aide de pam_mkhomedir . C'est une pratique courante. Voici une description rapide de pam_mkhomedir:
Le module pam_mkhomedir PAM créera un répertoire personnel pour les utilisateurs s'il n'existe pas au début de la session. Cela permet aux utilisateurs d'être présents dans la base de données centrale (comme NIS, kerberos ou LDAP) sans utiliser de système de fichiers distribué ni créer au préalable un grand nombre de répertoires. Le répertoire squelette (généralement / etc / skel /) est utilisé pour copier les fichiers par défaut et définit également un umask pour la création.
Cependant, il s'agit d'un système FreeBSD 8.2 exécutant ZFS. Nous devons d'abord exécuter une commande ZFS, car nous voulons un système de fichiers ZFS par utilisateur . pam_mkhomedir
peut faire un mkdir
, mais nous devons faire quelque chose comme zfs create /zpool/home/$USER
.
Est-ce que quelqu'un sait s'il est possible d'utiliser PAM pour exécuter des commandes lors de la première session de connexion d'un utilisateur?
Réponses:
Il existe un module PAM appelé
pam_exec
- si vous écrivez un script qui vérifie et / ou crée le volume ZFS, vous pouvez l'enchaîner dans vos règles PAM existantes et garder les choses bien sans supposer une connexion interactive, des répertoires shell et squelette par défaut, etc. Pour par exemple, vous pourriez avoirou tout ce qui convient à votre configuration spécifique.
(Comme l'a souligné Tom Shaw dans les commentaires, avoir
session required pam_mkhomedir.so
serait redondant.)la source
Il convient de souligner, comme demandé, que votre question contient une hypothèse non valide: même PAM n'a aucune idée s'il s'agit de la première connexion de l'utilisateur; il sait seulement si l'utilisateur a un répertoire personnel ou non.
Donc, avec cette mise en garde à l'esprit, ce n'est pas PAM qui le fait, mais vous pouvez facilement exécuter quelque chose
/etc/bashrc
, avec la commande précédée d'une vérification et suivie d'une suppression d'un fichier dot dans le répertoire personnel de l'utilisateur. Besoin de privilèges root?sudo
Un binaire correctement verrouillé ou un binaire setuid fonctionnera probablement le mieux pour vous. Les deux options vous donnent également la possibilité de placer le fichier dot quelque part où l'utilisateur ne peut pas le modifier ou le supprimer (si vous vous souciez de ce genre de chose).la source
Vous avez donc deux choix ici:
1) modifiez la source de pam_mkhomedir pour créer le système de fichiers zfs avant de créer le répertoire. 2) laissez pam_mkhomedir s'exécuter normalement, puis ajoutez un script pour vérifier et voir s'il n'y a pas de dossiers sur leur propre système de fichiers zfs où l'utilisateur s'est déconnecté. Lorsque vous interceptez ces cas, déplacez le répertoire / home, créez le système de fichiers, puis replacez les fichiers dans le répertoire.
Je soupçonne que laisser un utilisateur sur le main / home pour une première journée ne va pas causer trop de problèmes, donc j'opterais pour la dernière option, sa plus simple.
la source