• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Samba 4 AD DC + Samba 3 Filesserver

sawo

Newbie
Hallo liebe Community,

ich zerbreche mir schon seit ca. 14 Tage den Kopf, warum mein Samba 3 sich die User nicht von meinem Samba 4 AD DC ziehen kann.
Dazu möchte ich das idmap backend AD benutzen. Mal zum Hintergrund der ganzen Aktion:

Ich habe mir dazu die Appliance von Sernet geladen und auf einem Server installiert, alles war einfach einzurichten über das tool dcpromo.
Danach habe ich mit Hilfe meiner alten Samba 3 tdbfiles und der smb.conf ein classicupgrade durchgeführt.
(Alles nach diesem WIKI Eintrag http://wiki.samba.org/index.php/Samba4/samba-tool/domain/classicupgrade/HOWTO)
Alle User und Gruppen wurden importiert und funktionieren auch, ich kann also mich auch mit User an beliebigen Windoof Maschinen einloggen.

Alles wunderbar soweit!

Nun habe ich natürlich noch mehrere Fileserver mit Samba 3 die ich gerne mit in die Domäne aufnehmen möchte, daher habe ich mir erstmal zum Testen ein Debian aufgesetzt mit der Samba 3.6.6.
Habe die krb5.conf und die smb.conf angepasst und bin mit net ads join DOM in die Domän gejoint, auch alles ohne Probleme funktioniert.
Auf dem Samba 3 Server habe ich festgelegt, dass für meine Domäne die idmap backend ad genutzt werden soll.
Desweiteren habe ich die nsswitch.conf angepasst.
Wbinfo -u und -g bringen die gewünschten Ausgaben, wenn ich jedoch getent passwd oder Group anstoße bekommen ich keine(n) User/Gruppe zu sehen.

In den dem log.winbindd-idmap bekomme ich folgenden Output:

Code:
[2013/02/01 14:05:19.053255,  5] libads/ldap_utils.c:125(ads_do_search_retry_internal)
  Search for filter: (&(|(sAMAccountType=805306368)(sAMAccountType=805306369)(sAMAccountType=805306370)(sAMAccountType=268435456)(sAMAccountType=536870912))(|(objectSid=\01\05\00\00\00\00\00\05\15\00\00\00\0C\C2\A1\BFr\80\DBB\8F\E1]\F1\AB\04\00\00))), base: dc=DOM,dc=DE gave 1 replies
[2013/02/01 14:05:19.053395,  1] winbindd/idmap_ad.c:657(idmap_ad_sids_to_unixids)
  Could not get unix ID
[2013/02/01 14:05:19.053489, 10] winbindd/idmap_util.c:195(idmap_sid_to_uid)
  sid [S-1-5-21-3215049228-1121681522-4049461647-1195] is not mapped
[2013/02/01 14:05:19.053618, 10] lib/gencache.c:183(gencache_set_data_blob)
  Adding cache entry with key = IDMAP/SID2UID/S-1-5-21-3215049228-1121681522-4049461647-1195 and timeout = Fri Feb  1 14:07:19 2013
   (120 seconds ahead)
[2013/02/01 14:05:19.053828,  1] ../librpc/ndr/ndr.c:284(ndr_print_function_debug)
       wbint_Sid2Uid: struct wbint_Sid2Uid
          out: struct wbint_Sid2Uid
              uid                      : *
                  uid                      : 0x0000000000000000 (0)
              result                   : NT_STATUS_NONE_MAPPED

wbinfo -n "user" und wbinfo -n "gruppe" löst ohne Probleme auf die SID auf.
wbinfo -Y "GroupSID" funktioniert und liefert mit die UNIX ID, welche ich über das Management Tool von Microsoft gesetzt habe
wbinfo -S "UserSID" bringt failed to call wbcSidToUid: WBC_ERR_DOMAIN_NOT_FOUND und nichts weiteres


Mit dem Windows Active Directory Mangement Tool habe ich für den abgefragten User eine ID im Reiter Unix Attributes verpasst, somit sollte dort auch eine vorhanden sein.
In der Sam.ldb auf meiner Active Directory wird unter dem User auch die uidNumber angegeben.
Mache ich das Ganze jedoch mit einer Gruppe funktioniert es und er liefert mir die richtige gidNumber.

An dieser Stelle hänge ich schon seit mehreren Tagen und komme kein Schritt mehr weiter, daher würde es mich sehr freuen, wenn mir jemand helfen könnte oder einen Tipp hat.

Nun noch meine beiden smb.conf Dateien:

Samba 4 AD DC:
Code:
[global]
        workgroup = DOM
        realm = DOM.DE
        netbios name = SERVER
        server role = active directory domain controller
        server services = +web
        idmap_ldb:use rfc2307 = yes
        winbind use default domain = yes
        log level = 1
        dns forwarder =
        dsdb:schema update allowed  = yes

Samba 3:
Code:
[global]
        workgroup = DOM
        realm = DOM.DE
        server string = %h server
        security = ADS
        log level = 10
        encrypt passwords = yes
        log file = /var/log/samba/log.%m

        local master = no
        preferred master = no
        dns proxy = no

        winbind nss info = rfc2307
        winbind use default domain = yes
        winbind enum groups = yes
        winbind nested groups = yes
        winbind enum users = yes

        idmap config * : backend = tdb
        idmap config * : range = 30000000 - 30100000

        idmap config DOM : backend = ad
        idmap config DOM : range = 100-20000000
        idmap config DOM : schema_mode = rfc2307
        template shell = /bin/bash

        map acl inherit = Yes
        vfs objects = acl_tdb, acl_xattr


nsswitch.conf:

Code:
passwd:         files winbind
group:          files winbind
shadow:         files winbind

hosts:          files dns
networks:       files dns

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
netgroup:       nis files

Möchte mich jetzt schon fürs lesen bedanken =).
 

spoensche

Moderator
Teammitglied
Bei Samba 3 solltest du im Abschnitt global noch
Code:
security = ads
einfügen. Setze auch das Loglevel mal höher, damit Samba gesprächiger wird.

Was sagt den:
Code:
testparm
net ads info
net ads status -U domadmin

Für domadmin musst du den Usernamen des Domänen-Administrators angeben.
 
OP
S

sawo

Newbie
Erstmal danke für die schnelle Antwort.

Hier erstmal der testmparm Output von dem Samba 3 Client:
Code:
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[test]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions

[global]
        workgroup = DOM
        realm = DOM.DE
        server string = %h server
        security = ADS
        log file = /var/log/samba/log.%m
        local master = No
        dns proxy = No
        template shell = /bin/bash
        winbind enum users = Yes
        winbind enum groups = Yes
        winbind use default domain = Yes
        winbind nss info = template, sfu, rfc2307
        idmap config DOM : schema_mode = rfc2307
        idmap config DOM : range = 100-20000000
        idmap config DOM : backend = ad
        idmap config * : range = 30000000 - 30100000
        idmap config * : backend = tdb
        map acl inherit = Yes
        vfs objects = acl_tdb, acl_xattr

[test]
        path = /test
        valid users = "@Domain Users", administrator
        admin users = administrator
        read list = "@Domain Users", administrator
        write list = "@Domain Users", administrator
        read only = No

net ads info von Samba 3 Client:
Code:
LDAP server: 192.168.0.3
LDAP server name: server.dom.de
Realm: DOM.DE
Bind Path: dc=DOM,dc=DE
LDAP port: 389
Server time: Mo, 04 Feb 2013 07:55:06 CET
KDC server: 192.168.0.3
Server time offset: -36

Der Output von net ads status -U Administrator liefert alle Objekte ohne Fehler.
Wurde ziemlich viel Ausgegeben, daher habe ich, dass jetzt erstmal nicht mit in den Post eingetragen, falls erwünscht kann ich es als Datei anhängen.

Loglevel auf dem Samba 3 Client ist schon auf 10 und Security auch auf ads, wie man der zugehörigen smb.conf entnehmen kann.

Testparm auf dem Samba 4 ADDC:
Code:
Load smb config files from /opt/samba/etc/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[netlogon]"
Processing section "[sysvol]"
Processing section "[print$]"
Processing section "[printers]"
Processing section "[home]"
Loaded services file OK.
Server role: ROLE_ACTIVE_DIRECTORY_DC
Press enter to see a dump of your service definitions

[global]
        workgroup = DOM
        realm = DOM.DE
        server role = active directory domain controller
        passdb backend = samba_dsdb
        winbind use default domain = Yes
        server services = +web
        rpc_server:tcpip = no
        rpc_daemon:spoolssd = embedded
        rpc_server:spoolss = embedded
        rpc_server:winreg = embedded
        rpc_server:ntsvcs = embedded
        rpc_server:eventlog = embedded
        rpc_server:srvsvc = embedded
        rpc_server:svcctl = embedded
        rpc_server:default = external
        dsdb:schema update allowed = yes
        idmap_ldb:use rfc2307 = yes
        idmap config * : backend = tdb
        create mask = 0777
        directory mask = 0777
        map archive = No
        map readonly = no
        store dos attributes = Yes
        vfs objects = dfs_samba4, acl_xattr

[netlogon]
        path = /opt/samba/var/locks/sysvol/DOM.de/scripts
        read only = No

[sysvol]
        path = /opt/samba/var/locks/sysvol
        read only = No

[print$]
        comment = Point and Print Printer Drivers
        path = /opt/samba/var/print
        read only = No

[printers]
        comment = All Printers
        path = /opt/samba/var/spool
        read only = No
        printable = Yes
        print ok = Yes
        browseable = No

[home]
        path = /home2/DOM.DE
        valid users = %U
        read only = No
        browseable = No

Ein net ads info auf dem Samba 4 ADDC:
Code:
ads_connect: No logon servers
ads_connect: No logon servers
Didn't find the ldap server!
Weiss ich jetzt nicht, ob es eine ernstzunehmende Aussage ist?
Das gleiche passiert auch bei einem net ads status -U Administrator.

Also eigentlich will ich das Backend ja nur zum Laufen bekommen, damit wir einheitliche ID´s auf den Clienten haben.
 

spoensche

Moderator
Teammitglied
sawo schrieb:
Code:
ads_connect: No logon servers
ads_connect: No logon servers
Didn't find the ldap server!
Weiss ich jetzt nicht, ob es eine ernstzunehmende Aussage ist?
Das gleiche passiert auch bei einem net ads status -U Administrator.

Die Aussage ist auch gleichzeitig der Fehler. Wenn Samba 4 als AD DC arbeitet, ist ein LDAP Server notwendig, weil der LDAP das AD repräsentiert und der DC die User gegen das AD authentifiziert. Anders sieht es aus, wenn Samba als DC arbeitet, also ohne AD. Dann erfolgt die Authentifizierung der User am Samba selbst.

sawo schrieb:
Also eigentlich will ich das Backend ja nur zum Laufen bekommen, damit wir einheitliche ID´s auf den Clienten haben.

Dafür brauchst du nicht zwangsläufig ein AD. Ein AD wird nur von Windows Client zwingend vorausgesetzt. Linuxer reicht ein DC der die Accounts verwaltet.
 
OP
S

sawo

Newbie
Danke für die Anwort!

Fur den Samba 3 ist der Ldap über net ads info ja ersichtlich, aber wie muss ich nun vorgehen, damit ich mit meinem Vorhaben weiter komme?
 

spoensche

Moderator
Teammitglied
Wenn die User sich über den Samba 4 am AD anmelden sollen und der Samba 4 sonst keine Dienste bereitstellt, dann reicht dir Winbind + Samba Client, der ein idmap Backend verwendet und die Authentifizierung an den AD weiterleitet.
 
OP
S

sawo

Newbie
Der Samba 3 Client hängt mit dem Winbind am Samba 4 AD DC dran. Kann aber nur mit dem Backend AD nur die Gruppen zu den gidNumber auflösen wie oben beschrieben.
Der Samba 4 macht sonst nix außer User zu authentifizieren und ich hab wirklich keine Ahnung mehr was ich tun könnte, um es zum laufen zu bekommen.
Daher habe ich mich jetzt erstmal das rid Backend angeschaut, damit lässt sich mit den richtigen smb.conf Parameter ja auch eine Vereinheitlichung erstellen. Habe es auch jetzt mal ausprobiert klappt, er kann mit getent passwd/group die User und Gruppen auslesen.
Alles wunderbar soweit ohne das Backend AD. Ist zwar schade, dass ich nicht weiss weshalb es nicht klappt wie es sollte, aber RID ist auch nicht verkehrt.
Nun stellt sich mir eine weitere Frage, dazu habe ich schon einen anderen Thread angelegt. Vielleicht kann mir da jemand weiterhelfen, damit ich das Vorhaben hier endlich mal abschliessen kann :D.
http://www.linux-club.de/viewtopic.php?f=21&t=117412&p=741931#p741931
 

spoensche

Moderator
Teammitglied
Wenn du kein LDAP verwenden willst, dann darfst du den Samba 4 nicht als AD DC betreiben, aber Windows Clients benötigen ein AD.
 
OP
S

sawo

Newbie
Okay wie ist es möglich dann meinen Samba 3 Client per Ldap an den Samba 4 zu hängen?
Welche Parameter müssen gesetzt sein und welche Pakete werden benötigt?
Habe es schonmal a la Samba 3 LDAP Anbindung versucht und bin kläglich gescheitert.
Was mich dabei auch ein wenig verwirrt ist der vierte Punkt auf dieser Seite https://wiki.samba.org/index.php/Samba4/FAQ
Habe keine Probleme das Ldap Backend zu benutzen, wenn es irgendwie möglich ist. Habe leider bisher noch keinen im Netz gefunden der diesen
Schritt schonmal geschafft hat.
 

spoensche

Moderator
Teammitglied
Du brauchst einen Kerberos Client und Winbind. Kerberos Server ist der Samba 4. Der Winbind leitet meldet die Benutzer dann am AD an.
 
Oben