Am Donnerstag, 16. September 2010 schrieb Reiner Klaproth:
Hallo!
Am Donnerstag 16 September 2010 schrieb Jens Weiße:
ich habe hier mit einem sehr unschönen Samba-Problem zu kämpfen. Versucht ein Nutzer auf ein Samba-Share zuzugreifen, dann wird die Gruppenberechtigung nicht ausgewertet. Die Nutzer können nur auf Freigaben zugreifen, welche der Primären Gruppe (sambaPrimaryGroupSID) gehören. Alle anderen Gruppen werden ignoriert.
Die Benutzer stecken in eine LDAP-Datenbank.
Frage: Wo sind die Gruppen definiert? Und wie sind die festgelegt? Hier ist nach meinen Erfahrungen der Knackpunkt. Ich habe die Gruppen ebenfalls im LDAP liegen. Dort müssen die Nutzer über MemberUid eingesetzt werden. Beispiel:
dn: cn=DomainAdmins,ou=sysgroups,o=SYSTEM,dc=musikgym,c=de cn: DomainAdmins gidNumber: 98 memberUid: ntadmin memberUid: adm objectClass: posixGroup objectClass: sambaGroupMapping structuralObjectClass: posixGroup entryUUID: bf7640fa-19ff-102a-8eb9-d556bce1a672 sambaSID: S-1-5-21-1183065902-2052886306-2859288576-512 sambaGroupType: 2 displayName: DomainAdministratoren description: Domain Unix group
MemberUID gibt es nicht. Die Nutzer stecken alle in member mit dem vollen "LDAP-Pfad".
<---------------------------------------------------------> dn: cn=lft,ou=group,dc=domain=de cn: lft gidNumber: 20000 structuralObjectClass: groupOfNames entryUUID: 85cc88dc-4d3a-102a-8019-b84a96a926d1 creatorsName: cn=administrator,dc=domain,dc=de createTimestamp: 20060321152424Z ... member: uid=weisse,ou=people,dc=domain,dc=de ... objectClass: posixGroup objectClass: top objectClass: groupOfNames objectClass: sambaGroupMapping sambaGroupType: 2 sambaSID: S-1-5-21-3472328929-1490573074-2800308803-1006 entryCSN: 20100907072712.832095Z#000000#000#000000 modifiersName: cn=administrator,dc=mw,dc=tu-dresden,dc=de modifyTimestamp: 20100907072712Z displayName: lft description: Domain Unix group <--------------------------------------------------------->
Das "groups" funktioniert auf dem Fileserver und auf den Linux-Clients. Interesanterweise scheint LDAP oder Linux oder ... nur mit 16 Gruppen arbeiten zu können. Auf dem Fileserver sind 12 Gruppen definiert # groups weisse weisse : lftuser lftlogincluster lftstudent lftstud lft ilr lftdyna lftlitdb lftintern lftrepo nt_domain_admin nt_admin
Auf dem Arbeitsplatzrechner sind weitere 5 lokalen Gruppen definiert. (Um Virtualbox und 3D-Treiber nutzen zu können). # groups weisse weisse : lftuser audio cdrom video users vboxusers lftlogincluster lftstudent lftstud lft ilr lftdyna lftlitdb lftintern lftrepo nt_admin liefert aber nur 16 Gruppen.
Früher galt mal (bevor Informatiker mit GIDs spielten) 5+12 != 16 Die Gruppe "nt_domain_admin" fehlt auf meinem Linux-Arbeitsplatzrechner. ==>> Lustig. (bei anderen Nutzern mit weniger Gruppen funktioniert es aber auch nicht. Insofern ist das System wieder gerecht.)
Test: Dann ergibt # groups adm
adm : adm sys disk ntadmin
Diese Einträge werden bei mir nachweislich ausgewertet, insbesondere von samba.
Hat jemand einen PDC (Samba+LDAP) mit Suse 11.3 am Laufen und kann mir weiterhelfen?
Genau das habe ich: SuSE 11.3 mit dem mitgelieferten LDAP. Allerdings hatte ich große Probleme mit dem von SuSE gepatchten Samba.
Welche Patches? Habe die mehr als ein paar Pfadangaben verändert?!
Ich habe daher ein aktuelles Samba 3.5.x aus den Original-Quellen übersetzt. Kann sein, dass es damit zusammenhängt, das bei mir alles funzt. Die Build-Datei kann ich Dir zukommen lassen, wenn es hilft. Liegt aber alles in meiner Schule...
Naja ... ich würde am liebsten bei den Suse-Paketen bleiben wollen. Hin und wieder ist halt doch mal eine Sicherheitslücke in Samba drin. Und meine Kollegen wollen ein möglichst einfaches Standardsystem.
Hast du noch irgendwelche Geschichten mit IDMAP (winbind o.ä.) gefummelt? Bzw. wie sieht deine smb.conf aus? Ich kann beim besten Willen keinen Fehler drin entdecken. Die Benutzerdaten inkl. der primären Gruppe holt er aus dem LDAP, aber die zusätzlichen Gruppen nicht.
<------------- smb.conf --------------------------------->
[global] workgroup = ILRNET netbios name = mlrfs1 server string = mlrfs1 (Samba)
# Benutzermapping username map = /etc/samba/smbusers map to guest = Bad User
# LDAP als Benutzerdatenbank festlegen encrypt passwords = yes passdb backend = ldapsam:ldap://mlrfs1.domain.de
unix extensions = no
######################################################## # # fuer WINS-Support # # Samba-Server soll gleichzeitg auch WINS-Server sein wins support = Yes name resolve order = hosts wins bcast lmhosts
######################################################## # # fuer PDC # domain logons = yes local master = yes domain master = yes security = user
preferred master = yes os level = 100
################################################################ # # Einstellungen, damit Samba auf das LDAP Zugreifen kann # (Maschinenkonto, Benutzernamen, ...) #
idmap backend = ldap:ldap://mlrfs1.mw.tu-dresden.de
ldap admin dn = cn=administrator,dc=domain,dc=de ldap suffix = dc=domain,dc=de ldap idmap suffix = ou=Idmap ldap machine suffix = ou=Computers ldap group suffix = ou=group ldap user suffix = ou=people
ldapsam:trusted = yes ldapsam:editposix = yes
# ldap ssl = start_tls # ldap tls = start_tls ldap ssl = no ldap passwd sync = Yes
# This allows machine-account-creation on-the-fly. # You need to create a root samba-user # (never ever with the unix root pwd !!!) # root has to be domain admin. and you need a group "machines" add user script = /usr/sbin/ldapsmb -a -u "%u" delete user script = /usr/sbin/ldapsmb -d -u "%u" add machine script = /usr/sbin/ldapsmb -a -w "%u$" add group script = /usr/sbin/ldapsmb -a -g "%g" delete group script = /usr/sbin/ldapsmb -d -g "%g" add user to group script = /usr/sbin/ldapsmb -j -u "%u" -g "%g" delete user from group script = /usr/sbin/ldapsmb -j -u "%u" -g "%g" set primary group script = /usr/sbin/ldapsmb -m -u "%u" -gid "%g"
##################################################################### # # Freigaben # ..... <------------------------------------------------------------------>
Ciao
Jens