2010-06-19 5 views
0

Tentative de configuration de Samba + OpenLDAP à l'aide de nss_ldap. Après avoir joint Windows7 à PDC autonome Samba, je ne peux pas me connecter avec un compte de domaine à moins que ce compte ne soit également ajouté au fichier/etc/passwd.Utilisateur dans passdb, mais getpwnam() échoue!

J'obtiens: user dans passdb, mais getpwnam() échoue! Tout ce que j'ai lu indique un problème NSS_LDAP, getent passwd montre parfaitement les utilisateurs et je suis capable de ssh dans le même hôte Linux en utilisant un compte d'utilisateur qui est seulement dans la base de données LDAP.

De plus, si j'ouvre le fichier/etc/passwd et ajoute une ligne pour l'utilisateur en question, je peux alors me connecter.

Je n'utilise pas PAM. J'ai ajouté les deux mises à jour de registre Windows7 requises par le site Samba.org.

pile logicielle est la suivante: Samba 3.5.3 OpenLDAP 2.4.21 nss_ldap 264

Pensées/suggestions?

--------------------------------- MISE À JOUR ------------ ---------------------

Se rapprocher! Mon nsswitch.conf avait des fichiers ldap donc j'ai inversé la commande (maintenant les fichiers ldap) et quelque chose d'étrange est arrivé. Avis, avant, j'ai dit que je pourrais me connecter avec SSH et getent passwd des utilisateurs sous-évalués dans ldap et les fichiers. Après avoir fait le changement de nsswitch.conf, ldap avant les fichiers, les commandes simples comme ls ont pris beaucoup de temps. De plus j'ai observé des erreurs nss_ldap comme suit:

ls: nss_ldap: Impossible rechercher serveur LDAP - serveur est indisponible

et

ls: nss_ldap: pas lier au serveur LDAP ldap: // tsrvr. example.corp: Informations d'identification non valides

J'ai mis en commentaire la ligne rootbinddn dans ldap.conf et ces erreurs se sont dissipées et getent passwd a immédiatement recommencé à fonctionner. L'ordre de sortie a également changé: entrées ldap listées avant les entrées de fichiers.

encore, cependant, mon client Windows7 ne sera pas se connecter au domaine et je continue à obtenir le même message d'erreur Samba

Test utilisateur dans passdb, mais getpwnam() échoue!

Dans mon fichier smb.conf, j'ai essayé de supprimer la ligne ldapsam: trusted = yes et lorsque je le fais, j'obtiens des erreurs d'authentification du domaine.

Je n'utilise pas SSL/TLS avec OpenLDAP et j'ai le paramètre SSL = no. J'ai aussi le jeu de fichiers ldap.secret. Je cours slapd sous le compte de racine. Mon rootbinddn, avant de commenter, a référencé un utilisateur racine LDAP de uid = root, ou = Users, dc = example, dc = corp. userPassword de root en utilisant CRYPT correspond au bindpw ainsi qu'à celui de/etc/shadow.

En regardant l'activité du journal LDAP pour quand je reçois l'erreur Samba, il apparaît comme si LDAP renvoie le résultat correct contre une requête Samba:

19 juin 14:20:14 tsrvr slapd [3803]: conn = 1025 op = 15 SRCH base = "dc = exemple, dc = corp" portée = 2 deref = 0 filtre = "(& (uid = test) (objectClass = sambaSamAccount))" Jun 19 14:20:14 tsrvr slapd [3803]: conn = 1025 op = 15 SRCH attr = uid uidNumber gidNumber homeDirectory sambaPwdLastSet sambaPwdCanChange sambaPwdMustChange sambaLogonTime sambaLogoffTime sambaKickoffTime cn sn displayName sambaHomeDrive sambaHomePath sambaLogonScript sambaProfilePath Description sambaUserWorkstations sambaSID sambaPrimaryGroupSID sambaLMPassword sam baNTPassword sambaDomainName objectClass sambaAcctFlags sambaMungedDial sambaBadPasswordCount sambaBadPasswordTime sambaPasswordHistory modifyTimestamp sambaLogonHours modifyTimestam p uidNumber gidNumber homeDirectory loginShell de 19 juin 14:20:14 tsrvr slapd [3803]: conn = 1025 op = 15 RECHERCHE tag RÉSULTAT = 101 err = 0 nentries = 1 text =

D'autres suggestions?

beaucoup apprécié

Répondre

1

Sonne comme un problème avec /etc/nsswitch.conf. Plus précisément, les lignes passwd et group doivent faire référence à ldap avant compat ou fichier. Avez-vous regardé ce Samba wiki entry?

+0

Marquer cette bonne réponse. C'était le problème mais plus spécifiquement c'était aussi un ordre d'événements dans lequel le paramètre nsswitch.conf doit être présent avant de lancer les démons LDAP et SMBD. Je réglais les paramètres de nsswitch.conf après le lancement de mes services ... Honte à moi;) – Eric

0

RÉSOLU !!!!!!!!!!!

J'ai un script qui démarrait Samba (NMBD, SMBD) ainsi que OpenLDAP (SLAPD). C'est un script RC qui lit les données de configuration d'un fichier pour déterminer, entre autres, quels processus sont déjà en cours d'exécution ou si un processus dépendant ne démarre pas, etc ... Voici un extrait de la partie pertinente dans le script. La dernière ligne copie une version du fichier nsswitch.conf qui spécifie l'utilisation des recherches LDAP.

while [ $i -lt $MAXPROCS ]; 
    do 
    PID=${PROC[$i]} 
    StartProc $PID 

    if test $? != 0; then 
    echo "!!! Aborting Any Remaining Start-up Processes !!!" 
    exit 1 
    fi 

    i=$(($i+1)) 
done 

cp /etc/rc.d/pozix/nsswitch.conf.ldap /etc/nsswitch.conf 

Et lors de l'arrêt je faisais ce qui suit; remarquez que je copie un fichier nsswitch.conf contenant des entrées "noldap".

while [ $i -lt $MAXPROCS ]; 
do 
    PID=${PROC[$i]} 
    StopProc $PID 
    i=$(($i+1)) 
done 

cp /etc/rc.d/pozix/nsswitch.conf.noldap /etc/nsswitch.conf 

Il se trouve que dans le scénario de démarrage, la samba veut que le contenu de nsswtich.conf pour avoir les entrées ldap là avant l'invocation. Voici ce que je l'ai fait pour résoudre mes problèmes:

cp /etc/rc.d/pozix/nsswitch.conf.ldap /etc/nsswitch.conf 

while [ $i -lt $MAXPROCS ]; 
    do 
    PID=${PROC[$i]} 
    StartProc $PID 

    if test $? != 0; then 
    cp /etc/rc.d/pozix/nsswitch.conf.noldap /etc/nsswitch.conf 
    echo "!!! Aborting Any Remaining Start-up Processes !!!" 
    exit 1 
    fi 

    i=$(($i+1)) 
done 

En résumé, il semble que la façon dont vous commencez SMBD est tout aussi important que lorsque vous le démarrez. Si vous démarrez SMBD lorsque nsswitch.conf n'a pas d'entrées LDAP, vous obtenez une version de smbd en cours d'exécution liée à nss_ldap.so, pensant qu'elle devrait uniquement s'appuyer sur/etc/passwd (si c'est tout ce qui se trouve dans le fichier nsswitch.conf) modifier le contenu de nsswitch.conf après l'exécution de SMBD n'a aucun effet.

Espérons que cela aidera les autres constructeurs de systèmes ....

Questions connexes