Serveur de fichiers SaMBa utilisant un LDAP

Serveur de fichiers SaMBa utilisant un LDAP - Stockage - Systèmes & Réseaux Pro

Marsh Posté le 01-08-2008 à 11:40:39    

Bonjour,
 
Au bureau on va monter un espace de stockage de fichiers communs (ainsi qu'un serveur SVN).
On était partit sur du Windows 2003 mais cela était sans compter la nécessité (et le prix) de Licences d'Accès Client (CAL) : On a donc finalement opté pour une Debian 4.0r4
 
Nos besoins sont :

  • Un accès aux fichiers du serveur par les Clients (Windows XP Pro) en CIFS/SMB ("partage Windows" ) => Serveur SaMBa
  • Gestion des droits/permissions selon l'utilisateur et son groupe => Serveur SaMBa
  • Base d'utilisateur du serveur de fichier : un annuaire LDAP => slapd/OpenLDAP


(Je précise ne pas être dans un domaine Windows Active Directory ou équivalent libre (et ne pas vouloir y aller ;))
 
A l'heure actuelle voici ce qui est fait (et fonctionne) :
- Debian 4.0r4 « Etch-and-a-half » installée et configurée
- SaMBa 3.0.24-6 : Deux/trois "partages" accessibles par les utilisateurs du système (ceux de /etc/passwd)
- OpenLDAP/slapd 2.3.30-5 : Compte d'Admin créé ainsi que deux OUs : "people" et "groups".
 
J'ai trouvé beaucoup de tutoriels pour créer un contrôleur de domaine Windows avec SaMBa et OpenLDAP or cela va plus loin que ce que je cherche à faire et j'ai dû mal à séparer les réglages pour ne garder que ceux permettant à SaMBa d'avoir pour base d'utilisateur l'annuaire LDAP.
 
De plus, j'ai beaucoup vu des cas de figure où les utilisateurs du système (dont root) seraient stockés dans le LDAP : est-ce obligatoire ? J'avoue que c'est parfois très pratique mais ça n'est pas le besoin que nous avons (pour l'instant)

Reply

Marsh Posté le 01-08-2008 à 11:40:39   

Reply

Marsh Posté le 03-08-2008 à 11:58:05    

J'ai créé un tuto video sur samba controleur de domaine.
 
Ca peut aider  
 
 
http://www.teletuto.fr/search.php?search=samba
 
 
Manu

Reply

Marsh Posté le 03-08-2008 à 12:04:45    

Merci mais c'est pile le genre de truc que je trouve de partout : Et comme je ne veux pas que mon serveur SaMBa soit contrôleur de domaine c'est gênant.

Reply

Marsh Posté le 03-08-2008 à 13:36:38    

Une fois que t'as une configuration qui te convient sans LDAP (donc partage et autorisations à partir des utilisateurs systèmes), le switch vers ldapsam comme backend à passdb devrait suffire. Après c'est pas forcément la partie la plus facile à configurer
 
http://samba.org/samba/docs/man/Sa [...] #id2586078


---------------
http://anothergeekwebsite.com
Reply

Marsh Posté le 05-08-2008 à 15:41:55    

J'ai suivi différent tutoriels tels que :
- http://samba.org/samba/docs/man/Sa [...] assdb.html
- PDC Samba LDAP : http://damstux.free.fr/wiki/index. [...] Samba_LDAP
- developerWorks - Using an LDAP Directory for Samba Authentication : http://www.linux-france.org/lug/pl [...] dap-a4.pdf
- developerWorks - LDAP-based authentication for Samba : https://www6.software.ibm.com/devel [...] index.html
- OpenLDAP + Samba Domain Controller On Ubuntu 7.10 : http://www.howtoforge.com/openldap [...] ubuntu7.10
 
Mais j'ai un problème lors de l'appel à `smbldap-populate` :

Citation :

# smbldap-populate -a admin
Populating LDAP directory for domain ENTREPRISE (S-1-5-21-1309278271-632349012-1304531047)
(using builtin directory structure)
 
entry dc=entreprise,dc=local already exist.
entry ou=Utilisateurs,dc=entreprise,dc=local already exist.
entry ou=Groupes,dc=entreprise,dc=local already exist.
entry ou=Machines,dc=entreprise,dc=local already exist.
entry ou=Idmap,dc=entreprise,dc=local already exist.
adding new entry: uid=admin,ou=Utilisateurs,dc=entreprise,dc=local
failed to add entry: index generation failed at /usr/sbin/smbldap-populate line 495, <GEN1> line 7.
adding new entry: uid=nobody,ou=Utilisateurs,dc=entreprise,dc=local
failed to add entry: index generation failed at /usr/sbin/smbldap-populate line 495, <GEN1> line 8.
adding new entry: cn=Domain Admins,ou=Groupes,dc=entreprise,dc=local
failed to add entry: index generation failed at /usr/sbin/smbldap-populate line 495, <GEN1> line 9.
adding new entry: cn=Domain Users,ou=Groupes,dc=entreprise,dc=local
failed to add entry: index generation failed at /usr/sbin/smbldap-populate line 495, <GEN1> line 10.
adding new entry: cn=Domain Guests,ou=Groupes,dc=entreprise,dc=local
failed to add entry: index generation failed at /usr/sbin/smbldap-populate line 495, <GEN1> line 11.
adding new entry: cn=Domain Computers,ou=Groupes,dc=entreprise,dc=local
failed to add entry: index generation failed at /usr/sbin/smbldap-populate line 495, <GEN1> line 12.
adding new entry: cn=Administrators,ou=Groupes,dc=entreprise,dc=local
failed to add entry: index generation failed at /usr/sbin/smbldap-populate line 495, <GEN1> line 16.
adding new entry: cn=Account Operators,ou=Groupes,dc=entreprise,dc=local
failed to add entry: index generation failed at /usr/sbin/smbldap-populate line 495, <GEN1> line 18.
adding new entry: cn=Print Operators,ou=Groupes,dc=entreprise,dc=local
failed to add entry: index generation failed at /usr/sbin/smbldap-populate line 495, <GEN1> line 19.
adding new entry: cn=Backup Operators,ou=Groupes,dc=entreprise,dc=local
failed to add entry: index generation failed at /usr/sbin/smbldap-populate line 495, <GEN1> line 20.
adding new entry: cn=Replicators,ou=Groupes,dc=entreprise,dc=local
failed to add entry: index generation failed at /usr/sbin/smbldap-populate line 495, <GEN1> line 21.
entry sambaDomainName=ENTREPRISE,dc=entreprise,dc=local already exist. Updating it...
 
Please provide a password for the domain admin:
/usr/sbin/smbldap-passwd: user admin doesn't exist


 
Vu que les groupes et comptes qu'il n'arrive pas à créer : j'en ai un peut rien à faire (car ce sont des trucs Windows)
 
Je me suis dit que j'allais essayer `smbldap-groupadd`

Citation :

# smbldap-groupadd "developpeurs"
failed to add entry: index generation failed at /usr/share/perl5/smbldap_tools.pm line 724.


 
J'ai donc le même problème :-/
 
Fichiers de configuration :
smbldap.conf :

Code :
  1. SID="S-1-5-21-1309278271-632349012-1304531047"
  2. sambaDomain="ENTREPRISE"
  3. slaveLDAP="127.0.0.1"
  4. slavePort="389"
  5. masterLDAP="127.0.0.1"
  6. masterPort="389"
  7. ldapTLS="0"
  8. verify="require"
  9. cafile="/etc/opt/IDEALX/smbldap-tools/ca.pem"
  10. clientcert="/etc/opt/IDEALX/smbldap-tools/smbldap-tools.pem"
  11. clientkey="/etc/opt/IDEALX/smbldap-tools/smbldap-tools.key"
  12. suffix="dc=entreprise,dc=local"
  13. usersdn="ou=Utilisateurs,${suffix}"
  14. computersdn="ou=Machines,${suffix}"
  15. groupsdn="ou=Groupes,${suffix}"
  16. idmapdn="ou=Idmap,${suffix}"
  17. sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
  18. scope="sub"
  19. hash_encrypt="SSHA"
  20. crypt_salt_format="%s"
  21. userLoginShell="/bin/bash"
  22. userHome="/home/%U"
  23. userHomeDirectoryMode="700"
  24. userGecos="System User"
  25. defaultUserGid="513"
  26. defaultComputerGid="515"
  27. skeletonDir="/etc/skel"
  28. defaultMaxPasswordAge="45"
  29. userSmbHome=
  30. userProfile=
  31. userHomeDrive=
  32. userScript=
  33. mailDomain="entreprise.local"
  34. with_smbpasswd="0"
  35. smbpasswd="/usr/bin/smbpasswd"
  36. with_slappasswd="0"
  37. slappasswd="/usr/sbin/slappasswd"


 
 
smb.conf :

Code :
  1. [global]
  2. workgroup = ENTREPRISE
  3. server string = %h server
  4. panic action = /usr/share/samba/panic-action %d
  5. ####### Authentication #######
  6.    security = user
  7.    encrypt passwords = true
  8. # Utilisation du LDAP comme source de donnees des mots de passe
  9. passdb backend = ldapsam:ldap://127.0.0.1
  10. obey pam restrictions = no
  11. ########################################
  12. # Reglage pour utilisation LDAP
  13. # DN de binding avec le serveur LDAP
  14. ldap admin dn = "cn=admin,dc=entreprise,dc=local"
  15. # Base DN a utiliser pour les recherches
  16. ldap suffix = dc=entreprise,dc=local
  17. ldap user suffix = ou=Utilisateurs
  18. ldap group suffix = ou=Groupes
  19. #ldap machine suffix = ou=Machines
  20. # Synchronisation des mots de passe LDAP
  21. ldap passwd sync = Yes
  22. #####
  23. # Programmes de gestion utilisateurs specifiques LDAP
  24. # Mots de passe
  25. passwd program = /usr/sbin/smbldap-passwd %u
  26. passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated*
  27. add user script = /usr/sbin/smbldap-useradd -m "%u"
  28. ldap delete dn = Yes
  29. delete user script = /usr/sbin/smbldap-userdel "%u"
  30. add machine script = /usr/sbin/smbldap-useradd -w "%u"
  31. add group script = /usr/sbin/smbldap-groupadd -p "%g"
  32. delete group script = /usr/sbin/smbldap-groupdel "%g"
  33. add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
  34. delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
  35. set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
  36. # /Programmes de gestion utilisateurs specifiques LDAP
  37. #####
  38. # /Reglage pour utilisation LDAP
  39. ########################################


 
 
slapd.conf :

Code :
  1. include         /etc/ldap/schema/core.schema
  2. include         /etc/ldap/schema/cosine.schema
  3. include         /etc/ldap/schema/nis.schema
  4. include         /etc/ldap/schema/inetorgperson.schema
  5. include         /etc/ldap/schema/samba.schema
  6. backend         bdb
  7. checkpoint 512 30
  8. database        bdb
  9. suffix          "dc=entreprise,dc=local"
  10. # rootdn directive for specifying a superuser on the database. This is needed
  11. # for syncrepl.
  12. rootdn          "cn=admin,dc=entreprise,dc=local"
  13. rootpw          {SSHA}....
  14. directory       "/var/lib/ldap"
  15. #######################################################################
  16. # INDEXS
  17. #
  18. index           objectClass eq
  19. # Indexs rajoutes pour le schema SaMBa :
  20. index   cn                      pres,sub,eq
  21. index   sn                      pres,sub,eq
  22. ## required to support pdb_getsampwnam
  23. index   uid                     pres,sub,eq
  24. ## required to support pdb_getsambapwrid()
  25. index   displayName             pres,sub,eq
  26. index   sambaSID                eq
  27. index   sambaPrimaryGroupSID    eq
  28. index   sambaDomainName         eq
  29. index   default                 sub
  30. #
  31. # /INDEXS
  32. #######################################################################
  33. # The userPassword by default can be changed
  34. # by the entry owning it if they are authenticated.
  35. # Others should not be able to see it, except the
  36. # admin entry below
  37. # These access lines apply to database #1 only
  38. access to attrs=userPassword,shadowLastChange
  39.         by dn="cn=admin,dc=entreprise,dc=local" write
  40.         by anonymous auth
  41.         by self write
  42.         by * none
  43. access to dn.base="" by * read
  44. # The admin dn has full write access, everyone else
  45. # can read everything.
  46. access to *
  47.         by dn="cn=admin,dc=entreprise,dc=local" write
  48.         by * read
  49. #######################################################################
  50. # Reglages SaMBa
  51. # Autoriser l'admin LDAP a acceder aux mots de passe SaMBa, mais l'interdire aux autres
  52. access to attrs=SambaLMPassword,SambaNTPassword
  53.   by dn="cn=Admin,ou=Utilisateurs,dc=entreprise,dc=local" write
  54.   by * none


Message édité par _Raynor_ le 06-08-2008 à 11:07:11
Reply

Marsh Posté le 06-08-2008 à 11:16:36    

J'ai résolu ce problème de "index generation failed" : ma base de données LDAP (Berkeley DB) était, semble-t-il endommagée.
N'ayant pas pu faire de recovery (`db4.4_recover`) je l'ai supprimée (de toutes façons il n'y avait rien dedans et je l'ai recréer : là aucun problème avec `smbldap-populate` et `smbldap-groupadd`.

 

Par contre j'ai un problème bizarre :

Citation :

# smbldap-groupadd developpeurs
# smbldap-groupmod -n devs developpeurs
/usr/sbin/smbldap-groupmod: group developpeurs not found!
# smbldap-groupshow developpeurs
dn: cn=developpeurs,ou=Groupes,dc=entreprise,dc=local
objectClass: top,posixGroup
cn: developpeurs
gidNumber: 30000


Pourquoi ne trouve-t-il pas le groupe lorsque je veux le modifier mais alors qu'une recherche LDAP le retourne bien.

 

De plus, `smbldap-useradd -a "john"` ne créer pas d'utilisateur système "john" (aucun ajout dans "/etc/passwd" ) : Est-ce normal ??


Message édité par _Raynor_ le 06-08-2008 à 11:17:16
Reply

Marsh Posté le 06-08-2008 à 11:51:04    

Petite piste de réponse :
Le log de SaMBa m'indique une erreur :

Citation :

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

 

Dois-je modifier le fichier "/etc/nsswitch.conf" ?
Actuellement, il est tel que suit :

Code :
  1. passwd:         compat
  2. group:          compat
  3. shadow:         compat
  4. hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
  5. networks:       files
  6. protocols:      db files
  7. services:       db files
  8. ethers:         db files
  9. rpc:            db files
  10. netgroup:       nis

J'ai parfois lu qu'il fallait plutôt avoir la configuration suivante :

Code :
  1. passwd:         files ldap
  2. group:          files ldap
  3. shadow:         files ldap

Mais vu que je ne veux pas stocker mes utilisateurs Unix sur le LDAP...

 

Pareillement, dois-je utiliser "libnss" ?


Message édité par _Raynor_ le 06-08-2008 à 11:53:23
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed