Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/07/2008, à 12:17

shensi

[OPENLDAP][SAMBA][VSFTPD]...c'est presque un howto !

Bonjour à tous, j'ai suivi les quelques tutos qui parle de openldap mais j'ai pas trouvé la solution à mon problème, en googlant j'ai trouvé des gens qui ont eu le même pb que moi mais aucune réponse n'est balancée...

BUT : installer openldap + samba + vsftpd + autre en authentifiant tous les utilisateurs à partir de l'annuaire ldap.

Pour le moment je m'occupe de configurer samba pour qu'il reconnaisse les utilisateurs enregistré dans l'annuaire...

L'annuaire est bien peuplé....les commandes smbslapd-adduser blabla ajoute correctement les utilisateurs dans l'annuaire. Le problème c'est que je suis obligé de créer des comptes unix pour pouvoir accéder aux homes de mes utilisateurs.. Si le compte unix est créé l'utilisateur d'un winxp accède sans problème à son répertoire d'accueil. Mais je ne souhaite justement pas avoir à créer des comptes unix. Je veux centraliser les comptes sur mon annuaires. Bon passons aux concret...

Voici mes fichiers de conf :

/etc/ldap/sldap.conf

# Allow LDAPv2 binds
allow bind_v2

# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.

#######################################################################
# Global Directives:

# Features to permit
#allow bind_v2

# Schema and objectClass definitions
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/samba.schema
include /etc/ldap/schema/misc.schema


# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile         /var/run/slapd/slapd.pid

# List of arguments that were passed to the server
argsfile        /var/run/slapd/slapd.args

# Read slapd.conf(5) for possible values
loglevel        256

# Where the dynamically loaded modules are stored
modulepath      /usr/lib/ldap
moduleload      back_bdb

# The maximum number of entries that is returned for a search operation
sizelimit 500

# The tool-threads parameter sets the actual amount of cpu's that is used
# for indexing.
tool-threads 1

#######################################################################
# Specific Backend Directives for bdb:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend         bdb
checkpoint 512 30

#######################################################################
# Specific Backend Directives for 'other':
# Backend specific directives apply to this backend until another
#backend                <other>

#######################################################################
# Specific Directives for database #1, of type bdb:
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database        bdb

# The base of your directory in database #1
suffix          "dc=example,dc=local"

# rootdn directive for specifying a superuser on the database. This is needed
# for syncrepl.
rootdn          "cn=admin,dc=example,dc=local"
rootpw          12345

# Where the database file are physically stored for database #1
directory       "/var/lib/ldap"

# For the Debian package we use 2MB as default but be sure to update this
# value if you have plenty of RAM
dbconfig set_cachesize 0 2097152 0

# Sven Hartge reported that he had to set this value incredibly high
# to get slapd running at all. See http://bugs.debian.org/303057
# for more information.

# Number of objects that can be locked at the same time.
dbconfig set_lk_max_objects 1500
# Number of locks (both requested and granted)
dbconfig set_lk_max_locks 1500
# Number of lockers
dbconfig set_lk_max_lockers 1500

# Indexing options for database #1
index           objectClass eq

# Save the time that the entry gets modified, for database #1
lastmod         on

# Where to store the replica logs for database #1
# replogfile    /var/lib/ldap/replog

# The userPassword by default can be changed
# by the entry owning it if they are authenticated.
# Others should not be able to see it, except the
# admin entry below
# These access lines apply to database #1 only
access to attrs=userPassword,sambaNTPassword,sambaLMPassword,shadowLastChange
        by dn="cn=admin,dc=example,dc=local" write
        by anonymous auth
        by self write
        by * none

# Ensure read access to the base for things like
# supportedSASLMechanisms.  Without this you may
# have problems with SASL not knowing what
# mechanisms are available and the like.
# Note that this is covered by the 'access to *'
# ACL below too but if you change that as people
# are wont to do you'll still need this if you
# want SASL (and possible other things) to work
# happily.
access to dn.base="" by * read

# The admin dn has full write access, everyone else
# can read everything.
access to *
        by dn="cn=admin,dc=example,dc=local" write
        by * read

# For Netscape Roaming support, each user gets a roaming
# profile for which they have write access to
#access to dn=".*,ou=Roaming,o=morsnet"
#        by dn="cn=admin,dc=example,dc=local" write
#        by dnattr=owner write

#######################################################################
# Specific Directives for database #2, of type 'other' (can be bdb too):
# Database specific directives apply to this databasse until another
# 'database' directive occurs
#database        <other>
##database      bdb

# The base of your directory for database #2
#suffix         "dc=debian,dc=org"
##suffix         "dc=example,dc=local"

/etc/ldap/ldap.conf

host 127.0.0.1
base dc=example,dc=local
uri ldap://127.0.0.1/
rootbinddn cn=admin,dc=example,dc=local
bind_policy soft

/etc/samba/smb.conf

[global]
        workgroup = EXAMPLE
        ;security = user
        security = shared
        netbios name = nas-desktop
        server string = SAMBA-LDAP PDC SERVER
        passdb backend = ldapsam:ldap://localhost/
        obey pam restrictions = no


        ldap admin dn = cn=admin,dc=example,dc=local
        ldap suffix = dc=example, dc=local
        ldap group suffix = ou=Groups
        ldap user suffix = ou=Users
        ldap machine suffix = ou=Computers
        ldap idmap suffix = ou=Users
        ; Do ldap passwd sync
        ldap passwd sync = Yes
        passwd program = /usr/sbin/smbldap-passwd %u
        passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated*
        add user script = /usr/sbin/smbldap-useradd -m "%u"
        ldap delete dn = Yes
        delete user script = /usr/sbin/smbldap-userdel "%u"
        add machine script = /usr/sbin/smbldap-useradd -w "%u"
        add group script = /usr/sbin/smbldap-groupadd -p "%g"
        delete group script = /usr/sbin/smbldap-groupdel "%g"
        add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
        delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
        set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
        domain logons = yes
        ;invalid users = root
        ;logon path =
        ;logon home = \\%L\%U

[homes]
        comment = home directories
        ;valid users = %U
        ;path = /mnt/sda1/%U
        read only = No
        create mask = 0664
        directory mask = 0775
        browseable = no

/etc/nsswitch.conf

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

#hosts:          files dns mdns
hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Et les messages d'erreurs pour le cas ou je n'ai pas créé de comptes unix pour mon utilisateur...


/var/log/samba/log.smbd

[2008/07/18 12:08:40, 0] passdb/pdb_get_set.c:pdb_get_group_sid(164)
  pdb_get_group_sid: Failed to find Unix account for bruno
[2008/07/18 12:08:40, 1] auth/auth_util.c:make_server_info_sam(572)
  User bruno in passdb, but getpwnam() fails!
[2008/07/18 12:08:40, 0] auth/auth_sam.c:check_sam_security(352)
  check_sam_security: make_server_info_sam() failed with 'NT_STATUS_NO_SUCH_USER'

/var/log/slapd.log

Jul 18 12:08:40 localhost slapd[4301]: conn=99 op=11 SEARCH RESULT tag=101 err=0 nentries=1 text=
Jul 18 12:08:40 localhost slapd[4301]: conn=99 op=12 SRCH base="dc=example,dc=local" scope=2 deref=0 filter="(&(sambaSID=s-1-5-21-3966588173-2386437168-1419420749-0)(objectClass=sambaSamAccount))"
Jul 18 12:08:40 localhost slapd[4301]: conn=99 op=12 SRCH attr=uid uidNumber gidNumber homeDirectory sambaPwdLastSet sambaPwdCanChange sambaPwdMustChange sambaLogonTime sambaLogoffTime sambaKickoffTime cn sn displayName sambaHomeDrive sambaHomePath sambaLogonScript sambaProfilePath description sambaUserWorkstations sambaSID sambaPrimaryGroupSID sambaLMPassword sambaNTPassword sambaDomainName objectClass sambaAcctFlags sambaMungedDial sambaBadPasswordCount sambaBadPasswordTime sambaPasswordHistory modifyTimestamp sambaLogonHours modifyTimestamp uidNumber
Jul 18 12:08:40 localhost slapd[4301]: <= bdb_equality_candidates: (sambaSID) index_param failed (18)
Jul 18 12:08:40 localhost slapd[4301]: conn=99 op=12 SEARCH RESULT tag=101 err=0 nentries=0 text=
Jul 18 12:08:40 localhost slapd[4301]: conn=99 op=13 SRCH base="ou=Groups,dc=example,dc=local" scope=2 deref=0 filter="(&(objectClass=sambaGroupMapping)(sambaSID=s-1-5-21-3966588173-2386437168-1419420749-0))"
Jul 18 12:08:40 localhost slapd[4301]: conn=99 op=13 SRCH attr=gidNumber sambaSID sambaGroupType sambaSIDList description displayName cn objectClass
Jul 18 12:08:40 localhost slapd[4301]: <= bdb_equality_candidates: (sambaSID) index_param failed (18)
Jul 18 12:08:40 localhost slapd[4301]: conn=99 op=13 SEARCH RESULT tag=101 err=0 nentries=0 text=
Jul 18 12:08:50 localhost slapd[4301]: conn=99 fd=11 closed (connection lost)

Et mes sources pour vous montrer que j'ai un peu chercher...Et surtout pour ceux que ça intéresse....

http://ptiflo.webdynamit.net/IMG/pdf/Sa … lation.pdf
http://www.commentcamarche.net/forum/af … ap-winbind
http://www.math-info.univ-paris5.fr/cdc/sr-SAMBA.html
http://damstux.free.fr/wiki/index.php?t … Samba_LDAP
http://www.howtoforge.com/openldap-samb … ubuntu7.10
http://www.coagul.org/spip.php?article706
http://doc.fedora-fr.org/wiki/Configura … ldap_Samba
http://download.gna.org/smbldap-tools/d … to/#htoc19


Merci d'avance

Dernière modification par shensi (Le 24/07/2008, à 01:48)


Distrib: Ubuntu 9.04
Citation : Si chuck Norris te dit que ta mère est bonne... tu peux l'appeler Papa

Hors ligne

#2 Le 18/07/2008, à 16:35

shensi

Re : [OPENLDAP][SAMBA][VSFTPD]...c'est presque un howto !

Ola, bé je reviens vers vous..
J'ai toujours pas de solution à mon problème.
J'ai installé phpldapadmin...
Je suis en train de me familiariser avec l'outil ...

Quelqu'un aurait il une idée pour faire avance mon schmilibilik ?

Merci d'avance

Dernière modification par shensi (Le 18/07/2008, à 16:54)


Distrib: Ubuntu 9.04
Citation : Si chuck Norris te dit que ta mère est bonne... tu peux l'appeler Papa

Hors ligne

#3 Le 20/07/2008, à 11:08

atlante

Re : [OPENLDAP][SAMBA][VSFTPD]...c'est presque un howto !

Salut,
pam_mkhomedir créé le repertoire personnel automatiquement s'il n'existe pas.

apt-get install libpam-mkhomedir

Hors ligne

#4 Le 24/07/2008, à 01:46

shensi

Re : [OPENLDAP][SAMBA][VSFTPD]...c'est presque un howto !

Ca y es j'y suis arrivé !
J'espère que ça réjouit du monde !

Alors pour faire court et bref, le plus dure et d'abord de comprendre, d'avoir des emmerdes... et bien sur de trouver les solutions smile

En réalité les problèmes que j'ai rencontré pour mettre en place openldap + samba + ftp + what else... étaient du au fait que je n'utilisais peut être pas le noyau exacte que le gars du tuto.

Bref grâce à ce tuto http://ubuntuforums.org/showthread.php?t=640760. Ca a été comme sur des roulettes. Ldap + samba ok. Puis j'ai installé vsftpd et j'ai eu juste à modifier  /etc/pam.d/vsftpd comme suit :

auth            required        pam_ldap.so
account         required        pam_ldap.so
password        required        pam_ldap.so

Enfin voilà ce n'est pas un tuto que je laisserai mais les différentes sources que j'ai pu trouver pour y arriver. (voir plus haut)

phpldapadmin fonctionne bien. a seule question que j'aurai à poser pour cloturer ce thread est la suivante:

Je voudrais construire une interface web qui facilite l'ajout de compte d'utilisateurs dans ldap sans passer par phpldapadmin. Quand j'utilise la commande :

smbldap-useradd -a -m -M ricky -c "Richard M" ricky
smbldap-passwd ricky

Là ca marche alors que quand je l'ajoute via phpldapadmin il me créé pas le compte de mon user...


Ensuite j'ai trouvé des scripts php pour attaquer ldap, mais là encore j'arrive à ajouter comme via phpldapadmin : pas de répertoire pour mon user

Exemple de fichier add_ldapuser.php :

<?php
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
$ds = ldap_connect("127.0.0.1");  // on suppose que le serveur LDAP est sur le serveur local

if ($ds) {
    // Connexion avec une identité qui permet les modifications
    $r = ldap_bind($ds, "cn=admin, dc=example, dc=local", "12345");

	$prenom = "plop";
	$nom = "plip";
	$pass = "pplop";
	
    // Prépare les données
    $info["cn"] = "$nom $prenom"; 
	$info['displayName'] = "$nom $prenom";
	$info['gecos'] = "$nom $prenom";
	$info["GidNumber"] = "513";
	$info['givenName'] = "$nom";
	$info["homeDirectory"] = "/home/$nom";
	$info["loginShell"] = "/bin/false";
	$info["mail"] = "$prenom.$nom@example.local";
	$info["mailLocalAddress"] = "$prenom.$nom";
	
	$info["objectclass"][0] = "top";	
	$info["objectclass"][1] = "person";
	$info["objectclass"][2] = "organizationalPerson";	
	$info["objectclass"][3] = "inetOrgPerson";	
	$info["objectclass"][4] = "posixAccount";		
	$info["objectclass"][5] = "shadowAccount";		
	$info["objectclass"][6] = "sambaSamAccount";			
	$info["objectclass"][7] = "inetLocalMailRecipient";	
	
	$info["sambaAcctFlags"] = "[u]"; 
	
	/*$info["sambaKickoffTime"] = "2147483647";
	$info["sambaLMPassword"] = "";
	$info["sambaLogoffTime"] = "";
	$info["sambaLogonTime"] = "0";
	$info["sambaNTPassword"] = "";
	$info["sambaPrimaryGroupSID"] = "";
	$info["sambaPwdCanChange"] = "";
	$info["sambaPwdLastSet"] = "";
	$info["sambaPwdMustChange"] = "";*/
	$info["sambaSID"] = "S-1-5-21-913048038-4193697549-4052096724";
	
	$info["sn"] = "$nom";
	$info["uid"]="$nom";
	$info["UidNumber"] = "";
	$info["userpassword"]= md5("$pass");

    // Ajoute les données au dossier
    $r = ldap_add($ds, "cn=$nom $prenom, ou=users, dc=example, dc=local", $info);

    ldap_close($ds);
} else {
    echo "Impossible de se connecter au serveur LDAP";
}

?>

Pas d'erreur dans les logs, le compte est bien créé dans phpldapadmin mais pas moyen de loguer mon user.


Si quelques adeptes des annuaires seraient dans le coin j'en serais ravi big_smile

Merci d'avance


Distrib: Ubuntu 9.04
Citation : Si chuck Norris te dit que ta mère est bonne... tu peux l'appeler Papa

Hors ligne

#5 Le 24/07/2008, à 10:53

shensi

Re : [OPENLDAP][SAMBA][VSFTPD]...c'est presque un howto !

Nouveau lien intéressant !

Créer un répertoire personnel pour chaque utilisateur lors d'une ouverture de session en lui attribuant les Uid et gid définit dnas ldap !

http://damstux.free.fr/wiki/index.php?t … Samba_LDAP

Ca suit bien ce que j'essaye de faire en tout cas...

Des remarques? des conseils? des solutions ?


Distrib: Ubuntu 9.04
Citation : Si chuck Norris te dit que ta mère est bonne... tu peux l'appeler Papa

Hors ligne

#6 Le 28/07/2008, à 10:22

shensi

Re : [OPENLDAP][SAMBA][VSFTPD]...c'est presque un howto !

Alors personne ?

Désolé mais ... un petit up ...


Distrib: Ubuntu 9.04
Citation : Si chuck Norris te dit que ta mère est bonne... tu peux l'appeler Papa

Hors ligne