Question Application Web RHEL 6.5 PAM AUTH pam_oddjob_mkhomedir


J'ai un RHEL 6.5 qui s'authentifie contre un serveur AD, ce côté-là fonctionne bien.

La machine exécute également une application Web qui utilise un module PAM pour s'authentifier.

J'ai copié le login pour créer un module pam à utiliser par l'application web. (rstudio-server) et la connexion fonctionne parfaitement.

Cependant, si l'utilisateur ne s'est pas connecté auparavant, son répertoire personnel n'est pas créé par pam_oddjob_mkhomedir si je l'utilise pour cet utilisateur, le répertoire personnel est créé instantanément.

J'ai paramétré selinux sur permissive jusqu'à ce que ce soit réglé, et j'essaie à la fois pam_mkhomedir.so et pam_oddjob_mkhomedir.so (les deux sont en place et le service oddjob est en cours d'exécution)

aucun problème, je pense… cela ne commence pas une session, c'est simplement une autorisation de PAM, alors j'essaie de mettre en ligne la ligne qui appelle mkhomedir, mais cela ne fonctionne pas.

test avec pamtester:

# pamtester rstudio 00064742 "authenticate"
Password: 
pamtester: successfully authenticated



# pamtester rstudio 00064742 "open_session"
Creating home directory for 00064742.
pamtester: sucessfully opened a session

Comme vous pouvez le constater, si une session est ouverte, le répertoire personnel est créé, mais pas sous auth.

Voici le fichier pam correspondant.

pam.d]# cat rstudio
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       required     pam_warn.so
auth       include      system-auth
#auth    optional     pam_mkhomedir.so skel=/etc/skel/ umask=0077
auth    optional     pam_oddjob_mkhomedir.so
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_oddjob_mkhomedir.so debug
session    optional     pam_mkhomedir.so skel=/etc/skel/ umask=0077
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
#-session   optional     pam_ck_connector.so

Pendant toute ma vie, je ne vois aucun moyen d’obtenir oddjob pour créer le répertoire d’accueil des utilisateurs jusqu’à ce qu’une session soit ouverte.

Quelqu'un peut-il suggérer un moyen de faire ce travail?

J'aurais pensé que juste: auth optionnel pam_oddjob_mkhomedir.so

L'aurait fait. mais pas tellement.

un peu de vérification:

# service oddjobd status
oddjobd (pid  2427) is running...

# rpm -qa | grep oddjob
oddjob-0.30-5.el6.x86_64
oddjob-mkhomedir-0.30-5.el6.x86_64


# getenforce
Permissive

Une autre idée que j'essaie est d'utiliser pam_script.

J'ai ajouté ceci au fichier pam rstudio:

auth       required     pam_script.so onerr=success dir=/etc/pam-script.d

Et j'ai créé un fichier dans /etc/pam-script.d et je l'ai mis dedans:

#!/bin/sh

dbus-send --system --dest=com.redhat.oddjob_mkhomedir --print-reply / com.redhat.oddjob_mkhomedir.mkhomedirfor string:"$PAM_USER"

En théorie, cela devrait faire l'affaire. Je n'aime pas trop le faire de cette façon. ça m'offense en quelque sorte.


5
2017-07-11 08:48


origine


voulez-vous que le répertoire personnel de l'utilisateur commence à être créé sans être connecté? - c4f4t0r
Eh bien oui, personne ne se connecte à ce système via une autre méthode que moi-même, tout le monde utilisera rstudio cependant, et rstudio-server exige que les utilisateurs aient un répertoire personnel, sinon il n’a nulle part où stocker leurs fichiers. - Frank Hauptle
En ce qui concerne pam_script, cela n'a pas fonctionné. Cependant pam_exec fonctionne (avec le même script) lorsqu'il est exécuté avec pamtester avec authorize, c'est-à-dire: pamtester rstudio 00043212 "authorize" fonctionne maintenant car mon script pam_exec effectue le même appel dbus. cette bizarre fait quand il court. - Frank Hauptle
Cependant, quand rstudio-server en obtient l'autorisation, il ne crée toujours pas le répertoire de base, ce qui me laisse penser que la dernière version de rstudio n'augmente pas au moment de l'authentification, contrairement à ce que la documentation semble suggérer. Vous envisagez de modifier le profil oddjob pour mkhomedir afin qu’il permette à cet utilisateur peu averti d’interrompre son travail juste pour voir s’il fonctionne. Si c'est le cas, je suppose que la solution consiste à revenir à une ancienne version de rstudio-server pour voir si cela fonctionne mieux # ps aux | grep serveur 495 21934 0,1 0,0 212220 2260? Ssl 10:55 0:00 / usr / lib / serveur rstudio / bin / serveur - Frank Hauptle
J'ai trouvé ma propre réponse. utilisez pam_exec.so et appelez-le depuis auth plutôt que session, pointez-le sur un script qui exécute la commande système dbus mkhomedirfor. / bin / dbus-send --system --dest = com.redhat.oddjob_mkhomedir --print-reply / com.redhat.oddjob_mkhomedir.mkhomedirfor chaîne: "PAM_USER" a mis: dormez 5 à la fin pour vous assurer qu'il a le temps de créer le répertoire personnel avant l’utilisation de rstudio. Bon aller! Pourrait également modifier la source d'un module d'authentification PAM et y ajouter un appel de session ouvert. vous devrez peut-être modifier le fichier / etc / dbus-1 / mkhomedir pour permettre à l'utilisateur rstudio_server d'exécuter la commande dbus. - Frank Hauptle


Réponses:


Si vous voulez que le répertoire soit créé lors de votre inscription, vous pouvez également tester / ajouter la ligne suivante à /etc/pam.d/su:

session optional pam_oddjob_mkhomedir.so


0
2018-03-08 16:42