====== PDC mit LDAP Backend ======
Vorraussetzung: slapd wie in [[samba-ldap]] beschrieben konfiguriert und [[nss-ldap]] konfiguriert.
Dieses Beispiel beschreibt eine minimale Konfiguration. 
===== Samba =====
''/etc/samba/smb.conf'':
[global]
  workgroup = kurs
  interfaces = eth0
  #Samba als PDC:
  os level = 34
  domain logons = yes
  logon home =
  logon path =
  #LDAP Anbindung:
  passdb backend = ldapsam:ldap://ldap1.villa.local
  ldap suffix         = dc=villa,dc=local
  ldap admin dn       = "cn=admin,dc=villa,dc=local"
  ldap user suffix    = ou=people
  ldap group suffix   = ou=groups
  ldap machine suffix = ou=computers
  ldap idmap suffix   = ou=people
  ldap ssl = off
  obey pam restrictions = no
  #ldapsam:trusted = yes
[daten]
  path = /tmp
  writable = yes
Debian
  /etc/init.d/samba restart
Das Passwort des in der ''smb.conf'' genannten LDAP Admin muß dem Samba Server im Klartext vorliegen:
  smbpasswd -W
==== Testen ====
Ist der Samba-Server PDC?
  nmblookup -m kurs#1b
===== Rechner der Domäne hinzufügen =====
Dazu gibt es 4 Möglichkeiten:
  * von Hand
  * mit den smbldap-tools
  * ''ldapsmb''
  * und ab Samba 3.0.25 kann samba das mit den Parametern ''ldapsam:trusted'' und ''ldapsam:editposix'' selbst
==== von Hand ====
=== LDAP Verzeichnis anpassen ===
Im LDAP Verzeichnis müssen nun noch Einträge für
  * den in der ''smb.conf'' im Parameter ''ldap machine suffix'' genannten Teilbaum,
  * die Gruppe, der die Maschinenaccounts zugeordnet werden sollen
  * 3 Gruppen mit den Namen "domadmin", "domusers", "domguests" und der jeweils genannten sambaSID 
  * und einen Domänenadministrator 
hinzugefügt werden.
DOMAIN="dc=villa,dc=local"
WORKGROUP=kurs
SID=`net getlocalsid $WORKGROUP | sed 's/.*:\ //'`
ldapadd -x -W <
TODO muss neu erzerugt werden
=== Domänenadmin anpassen ===
  smbpasswd -a smbadmin
Unter Windows hat der Domänenadmin immer die RID 500:
  pdbedit -U $SID-500 -u smbadmin -r
Überprüfen:
  pdbedit -L -v smbadmin
Und der soll das Recht haben, Rechner der Domäne hinzuzufügen:
  net -U smbadmin rpc rights grant smbadmin SeMachineAccountPrivilege
Überprüfen:
  net -U smbadmin rpc rights list smbadmin
  
Alternativ:
  net sam rights grant ntadmin SeMachineAccountPrivilege SeAddUsersPrivilege
   
=== Rechner hinzufügen ===
Wie bei normalen Benutzern auch muß zu einem Samba-Maschinen-Account auch ein Unix/Linux Account existieren. Um einen Rechner mit dem Namen "vm2000" der Domäne hinzuzufügen sind daher folgende Schritte notwendig:
posixAccount anlegen:
  DOMAIN="dc=villa,dc=local"
  MACHINE="appl2"
  ldapadd -x -W <
dn: cn=$MACHINE,ou=Computers,$DOMAIN
objectClass: top
objectClass: posixAccount
objectClass: account
cn: $MACHINE
uidNumber: 20000
gidNumber: 515
homeDirectory: /tmp
loginShell: /bin/false
uid: $MACHINE$
LDIF
Jetzt kann der Rechner unter Windows der Domaene hinzugefügt werden. (( samba-Maschinen-Account anlegen:
  smbpasswd -a -m $MACHINE
))
==== smbldap-tools ====
''/etc/samba/smb.conf'' :
[global]
  ldap delete dn = Yes
  unix password sync = Yes
  passwd program = /usr/sbin/smbldap-passwd %u
  add user script = /usr/sbin/smbldap-useradd -m "%u"
  delete user script = /usr/sbin/smbldap-userdel "%u"
  add machine script = /usr/sbin/smbldap-useradd -t 2 -w "%u"
  add group script = /usr/sbin/smbldap-groupadd -a "%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"
  zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf
  cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/smbldap_bind.conf
''/etc/smbldap-tools/smbldap_bind.conf'' :
slaveDN="cn=admin,dc=linuxhotel,dc=de"
slavePw="villa"
masterDN="cn=admin,dc=linuxhotel,dc=de"
masterPw="villa"
''/etc/smbldap-tools/smbldap.conf'' :
#SID="S-1-5-21-2320849130-3131792283-2083377348"
sambaDomain="kurs"
slaveLDAP="localhost"
masterLDAP="localhost"
ldapTLS="0"
suffix="dc=linuxhotel,dc=de"
usersdn="ou=People,${suffix}"
idmapdn="ou=People,${suffix}"
userSmbHome=""
userProfile=""
userScript=""
  chmod 0644 /etc/smbldap-tools/smbldap.conf
  chmod 0600 /etc/smbldap-tools/smbldap_bind.conf
  smbldap-populate -a smbadmin -e /tmp/samba.ldif
''/tmp/samba.ldif'' prüfen (( Todo: ''smbadmin'' checken: ''uidNumber'' und ''gidNumber'' auf einen anderen Wert als 0 ändern ... ))
  ldapadd -x -W -D cn=admin,dc=example,dc=com -f /tmp/samba.ldif -h ldap1.example.com
(( oder direkt
  smbldap-populate -a smbadmin
eingeben und nachträglich ''uidNumber'' und ''gidNumber'' auf einen anderen Wert als 0 ändern
))
=== Doku ===
  * ''/usr/share/doc/smbldap-tools/README.Debian.gz''
==== ldapsmb ====
Alternativ gibt es bei SuSE das Paket ''ldapsmb'' als einfaches Beispiel für ein ''add machine script'':
( noch nicht getestet )
==== ldapsam:editposix ====
siehe
  man smb.conf
Ist beschrankt auf ''obejectclass=account'', kann aktuell noch nicht mit inetOrgPerson u.ä. umgehen.
====== Webmin - Modul LDAP Useradmin ======
SuSE:
  http://www.webmin.com
Einstellungen 
''/etc/webmin/ldap-useradmin/config'': ( SuSE )
samba_def=1
samba_class=sambaSamAccount
samba_gclass=sambaGroupMapping
samba_domain=S-1-5-21-2516115203-501549975-3175969160
  
====== Dokus & Links ======
  * Howto für SuSE: http://en.opensuse.org/Howto_setup_SUSE_as_SAMBA_PDC_with_OpenLDAP%2C_DYNDNS_and_CLAM
  * Alternatives LDAP Setup : http://wiki.samba.org/index.php/Ldapsam_Editposix