Serveur ldap + samba

Bonjour,

je suis en train de monté en ce moment un serveur ldap avec samba, j’ai trouvé des tuto mais cela n’as jamais fonctionné :frowning:
pourrais t’on m’aider!?
je suis sur une debian squeeze.

lorsque je veux me connecter au domaine avec mon client XP j’ai bien la fenetre pour mettre le nom de login et le mot de passe, mais ensuite j’ai une erreur… (le domaine spécifié n’éxiste pas ou n’a pas pu etre contacté).

comme c’est un serveur de test je peut fournir les fichier de conf au besoin!
j’ai utilisé comme tuto celui la: progenvrac.com/spip.php?article19

Cordialement SGBVida

Bonsoir,

Regarde tes logs sur le serveur,
et regarde les journaux systèmes dans l’observateur d’évènement sur ton client…

personne ne pourras t’aider avec si peu d’élément…
@+

Bonjour,
dsl pour le retard mais mon pc avais cramé :confused: (bref…)

l’adresse IP en 10.0.2.15 est l’adresse que mon serveur à reçus quand il c’est connecter à mon réseau sur ma box ( pour info j’utilise une VM).

donc j’ai regarger les log sur le serveur et j’ai bien une erreur (ici seul samba tourne) et voici ce que j’ai:

Sinon sur le client XP, aucune info, c’est vierge!

cordialement SGBVida

Bonjour,

Étant le rédacteur de l’article que tu cite, je me permet de répondre.
Je précise que si tu as effectué l’ensemble des étapes citées dans mon tuto à la lettre, ton contrôleur de domaine devrait fonctionner à merveille :stuck_out_tongue: (J’ai testé 3 fois mon tuto avant de le poster).

En ce qui concerne tes logs difficile d’y voir clair, mais je pense qu’il y a un problème de configuration dans ton samba.

Que te donne la commande testparm ?

Le testparm ne me retourne pas d’erreur!
Mais je pense pas que cela vienne du samba car j’avais déjà monté un samba avec ce tuto et cela à fonctionné à chaque fois!
je pense que cela viens d’une configuration d’un fichier (lequel?) car dans les logs je retrouve une @ip (la 10.0.2.15 qui est l’ancienne @ip du serveur avant de la modifier) qui ne devrais pas apparaitre car mon réseau est en 192.168.0.0 avec 192.168.0.253 comme @ip du serveur ldap!

et comme j’ai utiliser ton tuto à la lettre je pense pas que ce soit un problème de config…

Peut-etre un problème de configuration réseau alors :unamused:

que te retourne la commande ifconfig ?

as tu vérifié ton fichier /etc/hosts ?

edit : peux etre une piste intéressante ? http://fedoraforum.org/forum/archive/index.php/t-61575.html

dans mon fichier /etc/hots j’ai ça:

[code]127.0.0.1 localhost
127.0.1.1 serverldap.netrt1 serverpdc

The following lines are desirable for IPv6 capable hosts

::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters[/code]

Peux-tu changer

avec la vrai adresse IP du serveur et re tester ?

effectivement en changeant cela fonctionne… enfin pas tout à fait.

j’ai pu connecter mon client XP au domaine samba mais maintenant je n’arrive plus à configurer le ldap avec samba avec ton tuto…

j’ai une erreur quand je fait le “net getlocalsid” et le smb-populate!
de plus quand je tente d’accéder au ldap avec phpldapadmin il me dit que mon mot de passe est érroné…

[2011/06/28 14:02:05.049108, 0] lib/smbldap.c:1151(smbldap_connect_system) failed to bind to server ldap://127.0.0.1 with dn="cn=admin,dc=netrt1,dc=local" Error: Invalid credentials (unknown) SID for domain SRV-DC is: S-1-5-21-1376097600-3723839687-1356423239

pour le le smbldap-populate :

[code]Use of uninitialized value $value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 140, line 1.
Populating LDAP directory for domain netrt1.local (S-1-5-21-1376097600-3723839687-1356423239)
(using builtin directory structure)

adding new entry: dc=netrt1,dc=local
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 498, line 7.
adding new entry: ou=Users,dc=netrt1,dc=local
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 498, line 12.
adding new entry: ou=Groups,dc=netrt1,dc=local
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 498, line 17.
adding new entry: ou=Machines,dc=netrt1,dc=local
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 498, line 22.
adding new entry: ou=Idmap,dc=netrt1,dc=local
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 498, line 27.
adding new entry: uid=root,ou=Users,dc=netrt1,dc=local
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 498, line 55.
adding new entry: uid=nobody,ou=Users,dc=netrt1,dc=local
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 498, line 83.
adding new entry: cn=Domain Admins,ou=Groups,dc=netrt1,dc=local
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 498, line 95.
adding new entry: cn=Domain Users,ou=Groups,dc=netrt1,dc=local
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 498, line 106.
adding new entry: cn=Domain Guests,ou=Groups,dc=netrt1,dc=local
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 498, line 117.
adding new entry: cn=Domain Computers,ou=Groups,dc=netrt1,dc=local
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 498, line 128.
adding new entry: cn=Administrators,ou=Groups,dc=netrt1,dc=local
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 498, line 173.
adding new entry: cn=Account Operators,ou=Groups,dc=netrt1,dc=local
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 498, line 195.
adding new entry: cn=Print Operators,ou=Groups,dc=netrt1,dc=local
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 498, line 206.
adding new entry: cn=Backup Operators,ou=Groups,dc=netrt1,dc=local
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 498, line 217.
adding new entry: cn=Replicators,ou=Groups,dc=netrt1,dc=local
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 498, line 228.
adding new entry: sambaDomainName=netrt1.local,dc=netrt1,dc=local
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 498, line 236.

Please provide a password for the domain root:
Use of uninitialized value $value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 140, line 1.
No such object at /usr/share/perl5/smbldap_tools.pm line 406.
[/code]

sinon j’ai une autre question, dans mon projet je doit ajouter 2 groupes (production et direction) avec un disque qui pointe sur un serveur de fichier sur un autre serveur sais tu comment faire ?

peux tu donner le détail de tes fichiers smbldap_bind.conf,smbldap.conf et aussi smb.conf ?

Pour la seconde question tu peux faire la chose suivante :

créer un point de montage sur ton disque distant.
puis ajouter le partage à ton fichier smb.conf

exemple :

mkdir /home/mon_partage
mount -t cifs //<ip du serveur avec le parage>/<partage> /home/mon_partage/ -o username=<ton utilisateur autorisé pour accéder au paratge>

ensuite ajouter les informations dans la fstab pour ne pas perdre le point de montage au prochain reboot…

nano /etc/fstab
<ip du serveur avec le parage>/<partage>  /home/mon_partage  cifs  user=<ton utilisateur autorisé pour accéder au paratge>,passwd=<mot de passe> 0  0

Puis ajouter le code suivant dans ton fichier smb.conf
Libre à toi d’ajouter ou supprimer des droits dans ce fichier…

[share]
        public = Yes
        browseable = Yes
        writeable = yes
        valid users = @production,@direction
        write list = @production
        path = /home/Mon_partage/

Alors mon smb:

[code][global]
workgroup = netrt1.local
server string = Controleur de domaine
netbios name = srv-dc
domain master = yes
local master = yes
domain logons = yes
client lanman auth = yes
client ntlmv2 auth = yes
lanman auth = yes
ntlm auth = yes
security = user
os level = 33
ldap ssl = off
ldap passwd sync = yes
passdb backend = ldapsam:ldap://127.0.0.1
ldap admin dn = cn=admin,dc=netrt1,dc=local
ldap suffix = dc=netrt1,dc=local
ldap group suffix = ou=Groups
ldap user suffix = ou=Users
ldap machine suffix = ou=Machines
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"
logon path = \%L\profiles%U
logon drive = P:
logon home = \%L%U
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
case sensitive = No
default case = lower
preserve case = yes
short preserve case = Yes
#character set = iso8859-1
#domain admin group = @admin
dns proxy = No
wins support = Yes
winbind use default domain = Yes
nt acl support = Yes
msdfs root = Yes
hide files = /desktop.ini/ntuser.ini/NTUSER.*/

autre possibilité "veto files = "

Reglage de l’encodage des caracteres :

unix charset = iso-8859-15
display charset = iso-8859-15
dos charset = 850

[netlogon]
path = /home/administrateur/netlogon
writable = No
browseable = No
write list = Administrateur

[profiles]
path = /home/administrateur/profiles
browseable = No
writeable = Yes
profile acls = yes
create mask = 0700
directory mask = 0700

[homes]
comment = Repertoire Personnel
browseable = No
writeable = Yes

[partage]
comment = Repertoire commun
browseable = Yes
writeable = Yes
public = No
path = /home/partage

[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
printable = Yes
browseable = No

[print$]
comment = Printer Drivers
path = /var/lib/samba/printers[/code]

Sinon pour le smbldap_bind.conf:

masterDN="cn=admin,dc=netrt1,dc=local" masterPw="netrt1" slaveDN="cn=admin,dc=netrt1,dc=local" slavePw="netrt1"

et le smbldap.conf :

[code]SID for domain SRV-DC is: S-1-5-21-1376097600-3723839687-1356423239
masterLDAP="127.0.0.1"
masterPort="389"
slaveLDAP="127.0.0.1"
slavePort="389"
ldapTLS="0"
verify="require"
suffix="dc=netrt1,dc=local"
usersdn="ou=Users,${suffix}"
computersdn="ou=Machines,${suffix}"
groupsdn="ou=Groups,${suffix}"
idmapdn=“ou=Idmap,${suffix}”

La ligne ci-dessous est commentee pour eviter une erreur lors de

l’execution de la commande smbldap-populate.

sambaUnixIdPooldn=“cn=NextFreeUnixId,${suffix}”

#sambaUnixIdPooldn="sambaDomainName=netrt1,${suffix}“
scope=“sub"
hash_encrypt=“SSHA"
crypt_salt_format=”%s"
userLoginShell=”/bin/bash"
userHome=”/home/%U"
userHomeDirectoryMode=“700”
#Nom d’affichage - utiliser smbldap-useradd -c
userGecos="User"
defaultUserGid=“513"
defaultComputerGid=“515"
skeletonDir=”/etc/skel”
#Les mots de passe expirent dans 10ans
defaultMaxPasswordAge=“3650"
with_smbpasswd=“0"
smbpasswd=”/usr/bin/smbpasswd"
with_slappasswd=“0"
slappasswd=”/usr/sbin/slappasswd”

mk_ntpasswd="/usr/local/sbin/mkntpwd"[/code]

il y a une erreur dans ton fichier smbldap.conf à la premiere ligne

tu as mis :

il faut mettre :

Après pour le reste tout semble ok

Bon j’ai refait une install propre du ldap j’ai donc pu mettre le SID et faire faire le smb-populate sans erreur par contre dans je veux me connecter au domaine j’ai une erreur, il me dit “le nom d’utilisateur est introuvable”(quand je met root et netrt1 en mdp), quand je met root et un mdp bidon il met dit “échec d’ouverture de session:nom d’utilisateur inconnu ou mot de passe incorrect” et quand je fait un test avec un utilisateur que j’ai créer j’ai “Accès refusé”

sinon dans les logs plus d’erreur d’@ip qui sort de nul part!

Bon c’est bon tout fonctionne, j’ai juste refait un smbpasswd -w et ça a fonctionné!!!

bon maintenant faut que je créer 2 groupe direction et production et qu’il est chacun un dossier sur le serveur distant (production n’a accès seulement à production et idem pour direction).

comment on créer de nouveau groupe dans le ldap et mettre des utilisateurs dans ces groupes ?

Peux tu tester avec un autre utilisateur que root

#Ajout Utilisateur 
smbldap-useradd -a -c "utilisateur 1" -m -P utilisateur1

:023 avec un peu de recherche on y arrive toujours :slightly_smiling:

Pour ajouter un groupe au ldap tu peux utiliser phpLDAPadmin c’est le plus simple.

Sinon tu peux utiliser la commande smbldap-groupadd pour creer un groupe et smbldap-useradd pour creer un utilisateur

Oui ça j’avais trouvé, pour créer les groupes et les utilisateurs, mais là ou je bloquais, c’est pour ajouter un utilisateur au groupe

si je ne me trompe par il me semble que c’est la commande smbldap-usermod après voir dans le man comment on l’utilise.

Pour ma part je n’utilise pas ce type de commande je préfère gérer mes groupes et utilisateurs par fichier ldif

j’ai réussie à mettre les utilisateur dans les groupe avec la commande smbldap-groupmod -m <utilisateur> <groupe>
dit moi je voulais savoir si pour monter des disques qui pointe vers un serveur distant (192.168.2.250 et 192.168.3.250) j’ai utiliser la bonne méthode!

déjà j’ai utilisé un script

net use z: \\srv-pdc\home\administrateur\srv\samba\%USERNAME%
net use y: \\192.168.3.250\production
net use x: \\192.168.2.250

et dans le smb.conf

[direction]
comment = Repertoire direction
path = //192.168.2.250/direction
valid users = @dom_direction
write list = @dom_direction
broseable = yes
guest ok = no

[production]
comment = Repertoire production
path = //192.168.2.250/production
valid users = @dom_production
write list = @dom_production
broseable = yes
guest ok = no

autre question dans ton smb.conf tu à

logon path = \\%L\profiles\%U
logon drive = P:
logon home = \\%L\%U

du coup avec l’utilisation d’un script je doit supprimer ces ligne ?

Bonjour,
En fait tu as deux choix pour connecter tes lecteurs réseaux :

Soit la première :

  • Création d’un point de montage sur ton système linux
  • Ajout de l’entrée dans la fstab
  • Ajout du partage dans ton smb.conf
  • tu créer un fichier .bat que tu ajoute dans ton dossier /home/administrateur/netlogon
  • tu ajoute l’attribut sambaLogonScript à ton user du ldap et tu lui donne le nom de ton script .bat (tu peux le faire simplement avec phpldapadmin)

en gros :

mkdir /home/mon_partage
mount -t cifs //<ip du serveur avec le parage>/<partage> /home/mon_partage/ -o username=<ton utilisateur autorisé pour accéder au paratge>

ensuite ajouter les informations dans la fstab pour ne pas perdre le point de montage au prochain reboot…

nano /etc/fstab
<ip du serveur avec le parage>/<partage>  /home/mon_partage  cifs  user=<ton utilisateur autorisé pour accéder au paratge>,passwd=<mot de passe> 0  0

Puis ajouter le code suivant dans ton fichier smb.conf
Libre à toi d’ajouter ou supprimer des droits dans ce fichier…

[share]
        public = Yes
        browseable = Yes
        writeable = yes
        valid users = @production,@direction
        write list = @production
        path = /home/Mon_partage/

Création d’un fichier logon.bat (par exemple)
Tu peux d’ailleurs en faire un pour chaque groupe par exemple :wink:

net time \\ton_Serveur/set /yes
net use g: \\ton_Serveur\partage1  \public /yes
net use n: \\ton_Serveur\partage2   /yes
etc...

et enfin ajout de l’attribut sambaLogonScript

deuxième solution :

  • tu créer un fichier .bat que tu ajoute dans ton dossier /home/administrateur/netlogon
  • tu ajoute l’attribut sambaLogonScript à ton user du ldap et tu lui donne le nom de ton script .bat (tu peux le faire simplement avec phpldapadmin)
    Le fait d’utiliser cette technique te permettra de monter tes lecteurs réseaux par windows, mettre à jour l’heure etc… ATTENTION : par contre le script ce lance au démarrage de la session, il est donc visible par un utilisateur averti ou non, il pourrait y voir des mots de passe en clair…

Perso je dé-conseil cette méthode car je préfère gérer un fichier linux avec les mots de passe, que d’avoir un propagation par windows.

Bon voilà je j’espère que mes explications sont claires.
Bon courage

Senti