Einbinden eines zusätzlichen Linux Samba System scheitert

german

#1

Hallo,

Das Einbinden eines zusätzlichen Linux Samba Systems in die UCS Domäne (v2.0) nach Anleitung (univention.de/fileadmin/doku … 070411.pdf) scheitert bei meiner Installation.

UCS (Hostname ucs; Rolle PDC) und das zweite Samba System (Hostname smb; Etch i386 debootstrap Minimal-Installation) laufen als DomU unter Xen 3.1 (Gutsy amd64 Dom0). DNS und DHCP sind in eine dritte DomU ausgelagert (DNS und DHCP auf ucs ausgeschaltet). Ziel ist es, die Nutzer gegen den UCS zu authentifizieren und die Freigaben (inkl. Homes) von smb (Memberserver in UCS Domäne) zu beziehen. Alternativ wäre auch die Abschaltung des Samba Deamon auf dem UCS denkbar, mit einem PDC auf smb, der wiederum die Nutzerauthentifizierung gegen ucs via LDAP macht. LDAP und Scalix sollen durch ucs angeboten werden.

Meine Vorgehensweise:

  1. Memberserver Account unterhalb des Containers cn=memberserver,cn=computers auf ucs angelegt

  2. Netz-Konfiguration stimmt; keine Zeitunterscheide dank NTP

  3. nss_ldap auf smb eingebunden, LDAP TLS/SSL aktiviert

  4. “getent passwd” und “getent group” liefern Nutzer und Gruppen von ucs, “ldapsearch -x” zeigt die LDAP Datenbank auf smb

  5. Debian Standard smb.conf um smb.conf aus dem Beispiel ergänzt (Kommentare wegen der Länge des Posts entfernt)

[code][global]
workgroup = XYZ
server string = %h server
netbios name = smb
wins server =
dns proxy = no
interfaces = 127.0.0.0/8 eth0
bind interfaces only = true
log file = /var/log/samba/log.%m
debug level = 9
max log size = 1000
syslog = 4
panic action = /usr/share/samba/panic-action %d
security = domain
; password server = ucs
encrypt passwords = true

passdb backend = ldapsam:ldap://ucs.xyz.local
auth methods = guest sam winbind
ldap suffix = dc=xyz,dc=local
ldap admin dn = “cn=admin,dc=xyz,dc=local”
ldap ssl = on

idmap backend = ldap:" ldap://ucs.xyz.local "
; idmap backend = ldap:ldap://ucs.xyz.local
ldap idmap suffix = cn=idmap,cn=univention
idmap uid = 55000-64000
idmap gid = 55000-64000
winbind trusted domains only = yes
winbind nested groups = no
winbind enum users = yes
winbind enum groups = yes
winbind separator = +
; winbind use default domain = yes
; winbind enable local accounts = yes
template shell = /bin/bash
template homedir = /home/%D-%U

obey pam restrictions = yes
map to guest = Bad User
admin users = administrator
guest account = nobody
invalid users = root daemon bin sys sync games man lp mail news uucp proxy majordom postgres www-data backup msql operator list irc gnats alias qmaild qmails qmailr qmailq qmaill qmailp telnetd identd ftp rwhod gdm fetchmail faxmaster

pam password change = no

domain logons = no
preferred master = no
local master = no
domain master = no

load printers = yes
printing = cups
printcap name = cups
printer admin = @ntadmin, @“Printer-Admins”, root, Administrator

socket options = TCP_NODELAY
os level = 65
oplocks = yes
kernel oplocks = yes
large readwrite = yes
deadtime = 15
read raw = yes
write raw = yes
max xmit = 65535
getwd cache = yes
store dos attributes = yes
preserve case = yes
short preserve case = yes
time server = yes
host msdfs = no
msdfs root = no
use spnego = yes
client use spnego = yes

[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
public = no
writable = no
create mode = 0700

[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no

[share]
comment = Share
path = /mnt/share
read only = No
force create mode = 0770
force directory mode = 0770[/code]

Mit dem Satz “Als sollte der DN des Fremdsystems angegeben werden.” (Seite 7) konnte ich nichts anfangen und habe dort den Wert aus der smb.conf von ucs übernommen.

  1. Passwort aus Schritt 1 via "smbpasswd -w " in Samba Datenbank eingetragen.

  2. join als Memberserver mit “net join MEMBER -U root” führt in keinem Fall zum Ziel; nur mit “-U Administrator”.

Weiterhin möchte ich anmerken, dass das Ändern des Names der Windows-Domäne (mit univention-system-setup) nach der Installation bei mir keine gute Idee war, da die SIDs der Nutzer (inkl. Administrator) nicht mit angepasst wurden (Administrator dann kein gültiger Nutzer mehr für join) und somit ein join nicht möglich war. Nach Neuaufsetzen des UCS klappt der join.

  1. Leider konnten sich keine Clients an smb anmelden, da die LDAP Authentifizierung des Samba-Daemon von smb an ucs laut Log fehlschlug. Nachdem ich den LDAP SSL Transfer auf ucs temporär abgeschaltet hatte und via tcpdump die Verbindung von ucs samba und ucs slapd beoachtet hatte, konnte ich sehen, dass das Passwort aus /etc/ldap.secret verwendet wurde. Nachdem ich auf smb mit “smbpasswd -w <password aus etc/ldap.secret>” das Passwort neu gesetzt hatte, klappte die Kommunikation zwischen smb samba und ucs slapd.

Wird dies durch “ldap admin dn = “cn=admin,dc=xyz,dc=local”” in der smb.conf gesteuert, welches Passwort verwendet werden muss? Wie muss der ldap admin dn lauten, damit das Memberserver Passwort verwendet werden kann/muss?

  1. Ein weiteres Problem, für das ich nun eine Lösung suche, verhindert allerdings immer noch den Connect der Clients an smb. Ein Versuch auf smb via Windows Netzwerkumgebung zuzugreifen, schlägt fehl, da kein Logon Server gefunden werden kann.

Auf einem Linux Client zeigt sich dies wie folgt:

linux:~# smbclient -U ucsuser -L smb Password: session setup failed: NT_STATUS_NO_LOGON_SERVERS

Die Kommunikation mit dem UCS klappt sowohl mit den Windows als auch Linux-Clients

[code]linux:~# smbclient -U ucsuser -L ucs
Password:
Domain=[XYZ] OS=[Unix] Server=[Samba 3.0.26a]

    Sharename       Type      Comment
    ---------       ----      -------
    homes           Disk      Heimatverzeichnisse
    print$          Disk      Printer Drivers
    netlogon        Disk      Domain logon service
    IPC$            IPC       IPC Service (ucs univention corporate server)
    ucsuser           Disk      Heimatverzeichnisse

Domain=[XYZ] OS=[Unix] Server=[Samba 3.0.26a]

    Server               Comment
    ---------            -------
    WINCLIENT1               
    WINCLIENT2                 
    SMB                  smb server
    UCS                  ucs univention corporate server

    Workgroup            Master
    ---------            -------
    ZYX                  STARGATE
    XYZ                  UCS
    WORKGROUP            MACINTOSH-3[/code]

Das Log-File von smb zeigt folgendes:

[2008/02/05 17:02:34, 5] libsmb/trustdom_cache.c:trustdom_cache_fetch(184) no entry for trusted domain XYZ found. [2008/02/05 17:02:34, 5] auth/auth_util.c:make_user_info(75) attempting to make a user_info for ucsuser (ucsuser) [2008/02/05 17:02:34, 5] auth/auth_util.c:make_user_info(85) making strings for ucsuser's user_info struct [2008/02/05 17:02:34, 5] auth/auth_util.c:make_user_info(117) making blobs for ucsuser's user_info struct [2008/02/05 17:02:34, 3] auth/auth.c:check_ntlm_password(221) check_ntlm_password: Checking password for unmapped user [XYZ]\[ucsuser]@[LINUX] with the new password interface [2008/02/05 17:02:34, 3] auth/auth.c:check_ntlm_password(224) check_ntlm_password: mapped user is: [XYZ]\[ucsuser]@[LINUX] [2008/02/05 17:02:34, 5] lib/util.c:dump_data(2222) [000] 55 3C 25 52 7E A3 8F F0 U<%R~... [2008/02/05 17:02:34, 8] lib/util.c:is_myname(2043) is_myname("XYZ") returns 0 [2008/02/05 17:02:34, 6] auth/auth_sam.c:check_samstrict_security(414) check_samstrict_security: XYZ is not one of my local names (ROLE_DOMAIN_MEMBER) [2008/02/05 17:02:34, 3] smbd/sec_ctx.c:push_sec_ctx(208) push_sec_ctx(0, 0) : sec_ctx_stack_ndx = 1 [2008/02/05 17:02:34, 3] smbd/uid.c:push_conn_ctx(353) push_conn_ctx(0) : conn_ctx_stack_ndx = 0 [2008/02/05 17:02:34, 3] smbd/sec_ctx.c:set_sec_ctx(241) setting sec ctx (0, 0) - sec_ctx_stack_ndx = 1 [2008/02/05 17:02:34, 5] auth/auth_util.c:debug_nt_user_token(448) NT user token: (NULL) [2008/02/05 17:02:34, 5] auth/auth_util.c:debug_unix_user_token(474) UNIX token of user 0 Primary group is 0 and contains 0 supplementary groups [2008/02/05 17:02:34, 3] smbd/sec_ctx.c:pop_sec_ctx(339) pop_sec_ctx (0, 0) - sec_ctx_stack_ndx = 0 [2008/02/05 17:02:34, 0] auth/auth_winbind.c:check_winbind_security(122) check_winbind_security: ERROR! my_private_data == NULL! [2008/02/05 17:02:34, 5] auth/auth.c:check_ntlm_password(273) check_ntlm_password: winbind authentication for user [ucsuser] FAILED with error NT_STATUS_NO_LOGON_SERVERS [2008/02/05 17:02:34, 2] auth/auth.c:check_ntlm_password(319) check_ntlm_password: Authentication for user [ucsuser] -> [ucsuser] FAILED with error NT_STATUS_NO_LOGON_SERVERS [2008/02/05 17:02:34, 5] auth/auth_util.c:free_user_info(1867) attempting to free (and zero) a user_info structure [2008/02/05 17:02:34, 3] smbd/error.c:error_packet(146) error packet at smbd/sesssetup.c(99) cmd=115 (SMBsesssetupX) NT_STATUS_NO_LOGON_SERVERS [2008/02/05 17:02:34, 5] lib/util.c:show_msg(485) [2008/02/05 17:02:34, 5] lib/util.c:show_msg(495)

Ich würde mich freuen, wenn Sie einen Tipp für mich hätten, wie ich smb korrekt einbinden kann

MfG


#2

Hallo,

Hier ist der DN des Memberserver-Accounts anzugeben den Sie unter 1. angelegt haben.

Dies ist eine Unstimmigkeit in der Dokumentation da diese noch für UCS Versionen vor 2.0-0 entwickelt wurde. Ab UCS 2.0 sollte der “Administrator” Account für den Join verwendet werden.

Wenn, wie oben beschrieben, der DN des Memberservers unter “ldap admin dn” angegeben ist, kann hier das im Univention Directory Manager für den Memberserver gesetzte Passwort verwendet werden.

Dieses Problem hat möglicherweise auf eine fehlerhafte Samba Konfiguration zurückzuführen. Die folgenden Optionen werden laut der Dokumentation nicht benötigt. Bitten entfernen Sie diese, starten Sie Samba neu und versuchen Sie die Anmeldung gegen smb noch einmal:

passdb backend = ldapsam:ldap://ucs.xyz.local 
auth methods = guest sam winbind 

Mit freundlichen Grüßen,
Janis Meybohm