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

pdb_get_group_sid: Failed to find Unix account

f.gruber

Hacker
Hallo,
nach der Anmeldung eines Windows Clients an der Domäne erscheinen jeweils zwei Zeilen in /var/log/messages
Code:
Sep 26 10:51:43 server smbd[16723]: [2011/09/26 10:51:43.760230,  0] passdb/pdb_get_set.c:212(pdb_get_group_sid)
Sep 26 10:51:43 server smbd[16723]:   pdb_get_group_sid: Failed to find Unix account for INF102$
Es funktioniert alles, mich stören nur die vielen Zeilen im Logfile.
Die Benutzer werden über LDAP authentifiziert.
Hier ein Ausschnitt aus den globalen Optionen in /etc/samba/smb.conf:
Code:
[global]
        ...
        passdb backend = ldapsam:ldap://127.0.0.1/
        pam password change = Yes
        passwd chat debug = Yes
        log level = 3
        log file = /var/log/samba/%m.log
        max log size = 1000
        smb ports = 139
        add machine script = /usr/local/sbin/smbldap-useradd -w "%u"
        logon script = runh.exe "logon.bat %G"
        logon path = \\%L\profiles\.msprofile
        logon home = \\%L\%U\.9xprofile
        domain logons = Yes
        os level = 65
        preferred master = Yes
        domain master = Yes
        wins support = Yes
        ldap admin dn = cn=admin,dc=network
        ldap delete dn = Yes
        ldap group suffix = ou=Groups
        ldap machine suffix = ou=Machines
        ldap passwd sync = yes
        ldap suffix = dc=network
        ldap ssl = no
        ldap user suffix = ou=Users
        ...
Systeminfo: openSUSE 11.4, Samba 3.5.7-3.5.1, OpenLDAP: slapd 2.4.23
 
OP
F

f.gruber

Hacker
Ich bin der Sache jetzt etwas mehr auf die Spur gekommen.
Bei einigen Clients kommt die Fehlermeldung nicht, z.B.:
Code:
ldapsearch -x -b "ou=Machines,dc=network" uid=VBOX1$ -LLL
dn: uid=vbox1$,ou=Machines,dc=network
objectClass: top  
objectClass: person  
objectClass: organizationalPerson
objectClass: inetOrgPerson 
objectClass: posixAccount  
objectClass: sambaSamAccount  
cn: vbox1$  
sn: vbox1$  
uid: vbox1$ 
uidNumber: 1610
gidNumber: 515 
homeDirectory: /dev/null
loginShell: /bin/false  
description: Computer
gecos: Computer
sambaSID: S-1-5-21-3237590489-3366964306-4109686660-1084 
displayName: VBOX1$  
sambaAcctFlags: [W ] 
sambaPwdLastSet: 1317030840
Bei folgendem Client kommt die Fehlermeldung:
Code:
ldapsearch -x -b "ou=Machines,dc=network" uid=INF101$ -LLL
dn: uid=INF101$,ou=Machines,dc=network 
sambaSID: S-1-5-21-3237590489-3366964306-4109686660-1033 
uid: INF101$
displayName: INF101$
objectClass: sambaSamAccount
objectClass: account
sambaAcctFlags: [W ]
sambaPwdLastSet: 1315681705
Bei diesen Clients fehlen also einige Objektklassen, z.B. posixAccount.
Daran wird es wahrscheinlich liegen, nehme ich an.
Leider sind das sehr viele Maschinenaccounts, bei denen das so ist. Warum, weiß ich nicht.

Ich könnte ein Skript schreiben, das eine Schleife durch alle Maschinenaccounts macht (das würde ich schaffen, habe mir eine Liste der Maschinenaccounts gemacht). Das Skript soll bei jedem Account die richtigen Einträge erzeugen nach dem obigen Muster und das Ergebns als LDIF Datei speichern ...

Aber eigentlich müsste es ja mit z.B
Code:
smbldap-useradd -w INF101$
gehen, hätte ich mir gedacht.
Dieser Befehl erzeugt bei mir aber keinen Maschinenaccount sondern einen normalen Benutzer mit dem Namen INF101$.
Vielleicht deswegen, weil der Maschinenaccount bereits existiert ... ???

Gibt es eine einfache Lösung?
 

stka

Guru
Da hat aber jemand beim Anlegen geschlapt ;-). du kannst jetzt mit einem Skribt die fehlen ObjektKlassen und deren MUST-Attribute hinzufühen, oder mit ldapsearch alle Computer-objekte auslesen, ändern, löschen und zurückspielen. Das hängt von der verwendeten openLDAP- Version ab. hast du 2.3 bleibt dir nur Lösung 2 hast 2.4 kannst du auch die erste Lösung wählen, denn sowohl samba als auch Posix sind structural ObjektClass-Objekte und bis 2.3 kann man die nicht nachträglich hinzufügen.
 

stka

Guru
Pass nur auf, dass du auf jeden Fall das PW der Hosts beibehälst, sonst musst du alle wieder neu in die Domäne aufnehmen.
 
OP
F

f.gruber

Hacker
stka schrieb:
Pass nur auf, dass du auf jeden Fall das PW der Hosts beibehälst, sonst musst du alle wieder neu in die Domäne aufnehmen.
Irgendwie kenne ich mich da nicht aus.
Der Host vbox1 hat kein Passwort (siehe das Listing oben). Warum braucht ein Maschinen Account ein Passwort?
 

stka

Guru
Ein Host in der Windows-Domäne hat IMMER ein Passwort, nur so kann sichergestellt werden, dass die Maschine auch autorisiert ist in der Domäne auf Daten zu zu greifen. Das Passwort wird beim Aufnehmen des Hosts in die Domäne zwischen DC und Client ausgehandelt und regelmäßig geändert.
 
OP
F

f.gruber

Hacker
stka schrieb:
Ein Host in der Windows-Domäne hat IMMER ein Passwort, nur so kann sichergestellt werden, dass die Maschine auch autorisiert ist in der Domäne auf Daten zu zu greifen. Das Passwort wird beim Aufnehmen des Hosts in die Domäne zwischen DC und Client ausgehandelt und regelmäßig geändert.

Ok, aber wo ist dann das Passwort gespeichert?
Das Kommando
Code:
ldapsearch -x -b "ou=Machines,dc=network" uid=VBOX1$ -LLL
gibt zwar folgende Zeile aus:
Code:
sambaPwdLastSet: 1317030840
aber ich sehe keine Zeile mit einem Passwort (siehe das Listing im ersten Posting).
 

stka

Guru
Dann hat schon was mit dem Aufnehmen des Hosts in die Domäne nicht funktioniert. Ich habe im Moment keinen Zugriff auf einen LDAP-Server um dir das zu zeigen. Aber schau mal auf meiner Webseite (unten in der Signatur) am Ende der Seite findest du einen Link auf meinen alten Workshop, dort solltest du was zu dem Thema finden.
 
OP
F

f.gruber

Hacker
stka schrieb:
Dann hat schon was mit dem Aufnehmen des Hosts in die Domäne nicht funktioniert ...
Nein, das war es nicht.

Ich hatte vergessen, dass ja die Passwörter nur angezeigt werden, wenn ich eine Abfrage als LDAP Admin durchführe.
Ich habe das jetzt gemacht mit folgendem Befehl und jetzt sieht man im Listing ganz unten auch den Eintrag SambaNTPassword. :roll:

Code:
ldapsearch  -x -D "cn=admin,dc=network" -W -b "ou=Machines,dc=network" uid=vbox1$ -LLL

Code:
dn: uid=vbox1$,ou=Machines,dc=network
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: sambaSamAccount
cn: vbox1$
sn: vbox1$
uid: vbox1$
uidNumber: 1610
gidNumber: 515
homeDirectory: /dev/null
loginShell: /bin/false
description: Computer
gecos: Computer
sambaSID: S-1-5-21-3237590489-3366964306-4109686660-1084
displayName: VBOX1$
sambaAcctFlags: [W ]
sambaNTPassword: 31E6476FB3E7B96644DC5886E494BD90
sambaPwdLastSet: 1317030840
 
Oben