Samba3 als PDC und die locks...

asg

push it, don´t hype
...die mich Nahe an den Rand der Verzweiflung bringen.

Ich habe also Samba3 als PDC aufgesetzt. Entpsrechende User und Gruppen sind unter FBSD angelegt, Rechte (sollten) stimmen.

Habe gerade nur zwei Workstations (rmigel$ und pcs026$) und zwei User (igel und sfpcs026) angelegt, in die entsprechende Gruppen gepackt (die User nach "smb-user", die workstations nach "smb-workstation").

Unter /home/ die Verzeichnisse "igel" und "sfpcs026" erstellt, User und Gruppe gesetzt. Unter diesen Verzeichnissen ein Verzeichnis "profile" angelegt und entsprechende Rechte gegeben.

Desweiteren gibt es /home/netlogon mit "logon.cmd":
Code:
NET USE s \\SFAPP0\HOMES

Unter Windows XP den Rechner zu Domäne hinzugefügt.
Reboot.
Dann einen user unter XP angelegt und der Domäne zugewiesen.
Logout.

Nun kommts.
Logge ich mich auf dem Windows-1 Rechner ein, Domänelogin, funktioniert das. Nach dem logout wurde das Profil, welches unter C:/.... liegt auf den Samba-Server nach /home/igel/profile/ übertragen.
Alles kein Problem. Nach dem logout werden die Dokumente die lokal liegen auch automatisch auf den Server übertragen.

Mache ich gleiches auf dem anderen Rechner so funktioniert, natürlich mit dem anderen User (fpcs026) der login auch, aber beim logout kann er die Daten nicht auf den Samba server schreiben. Ein smbstatus zeigt dann:

Code:
Locked files:
Pid    DenyMode   Access      R/W        Oplock           Name
--------------------------------------------------------------
73062  DENY_ALL   0x7019f     RDWR       NONE             /home/sfpcs026/profile/prfCA.tmp   Wed Aug 10 14:41:27 2005

Windows motzt wegen Datenverlust. Das wars.
Will ich mich dann wieder einloggen kann nur das lokale Profil verwendet werden da er das Profil vom server nich ziehen kann da dies in Gebrauch ist.
So also nicht zu gebrauchen.

Beides sind XP Rechner, identische HW, identische Config (soweit ich das sehen kann).
Auf dem Sambaserver sind die Rechte identisch vergeben, keine Abweichungen.

Wo zum Geier liegt das Problem?

Ich habe schon versucht OPLOCKS auszuschalten, eigentlich alles was mit locks zu tun hat auf "NO" gesetzt. Pustekuchen.

Hier die smb.conf:
Code:
global]
        workgroup = SUEDFAC
        server string = SFAPP0
        passdb backend = tdbsam
        log file = /var/log/samba/log.%m
        max log size = 50
        printcap name = /etc/printcap
        logon script = logon.cmd
        logon drive = s:
        domain logons = Yes
        os level = 65
        preferred master = Yes
        domain master = Yes
        dns proxy = No
        wins support = Yes
        kernel oplocks = No
        ldap ssl = no
        blocking locks = No
        locking = No
        oplocks = No
        level2 oplocks = No
        posix locking = No
        strict locking = No
        share modes = No

[homes]
        comment = Home Directories
        path = /home
        read only = No
        create mask = 0700
        security mask = 0700
        directory mask = 0700
        directory security mask = 0700
        veto files = /.*/
        browseable = No

[printers]
        comment = Drucker SuedFactoring
        path = /var/spool/samba
        guest ok = Yes
        printable = Yes
        browseable = No

[netlogon]
        comment = netlogon
        path = /home/netlogon
        browseable = No

[profiles]
        comment = profiles
        path = /home/profiles
        read only = No
        create mask = 0600
        security mask = 0600
        directory mask = 0700
        directory security mask = 0700
        browseable = No

[igel]
        comment = igel
        path = /home/igel
        write list = igel
        create mask = 0777
        directory mask = 0777

[sfpcs026]
        comment = sfpcs026
        path = /home/sfpcs026
        write list = sfpcs026
        create mask = 0777
        directory mask = 0777

Ich frage mich gerade warum der Eintrag [Profiles] auf /home/profiles verweist. Dort liegt nichts drin. Eigentlich müsste das doch /home/$user/profile sein. Kann man da "$U" als Platzhalter nehmen?
 
asg said:
...

Ich frage mich gerade warum der Eintrag [Profiles] auf /home/profiles verweist. Dort liegt nichts drin. Eigentlich müsste das doch /home/$user/profile sein. Kann man da "$U" als Platzhalter nehmen?
Ich würde das u klein schreiben.
Auf einem unserer Sambaserver sieht das so aus.
Code:
[homes]
   comment = Home
   path = /home/%u/userfiles
   browseable = no
   writable = yes
   create mask = 0700
   directory mask = 0700

[profiles]
   comment = Profile Directories
   path = /home/%u/profiles
   browseable = no
   writable = yes
   create mask = 0700
   directory mask = 0700
 
Noch was.
Ich hatte unter /home/$user/ das Dir "profile" selbst angelegt. Mit obigen Resultat. Nun habe ich das mal gelöscht und mir gesagt, der wird das schon anlegen.
Macht er auch.
Nur, Windows motzt beim abmelden immer noch das er einige Daten nicht schreiben konnte und die Liste der "locks" bei "smbstatus -L" wächst damit an. Also nicht die Lösung.

Dann noch was anderes. in der smb.conf ist ja unter [Profiles] festgelegt das unter /home/profiles die Profile abgelegt werden sollen, so mein Verständnis, warum werden diese dann aber im home des Users, also beispielsweise /home/test/profiles/ abgelegt?
 
Vorweg: Beruflich habe ich nur einen einzigen Windows-Rechner zu betreuen (und den werde ich auch noch los ;)), ich kann also nicht nachvollziehen, wie sich meine Samba-Konfiguration mit mehreren Dosen verhält. Außerdem habe ich noch Samba 2.2 im Einsatz. Aber ich versuche trotzdem mal, dir ein paar Anregungen zu geben.

Zuerst einmal was die Profile angeht, da habe ich folgendes in meiner smb.conf stehen:
Code:
[global]
# Unter diesem Pfad speichern die Clients ihre Benutzer-Profile ab.
# Die [Profiles]-Sektion (weiter unten) muß aktiviert sein!
   logon path = \\%L\Profiles\%U

# Das Basisverzeichnis, in dem die NT-Clients ihre Benutzer-Profile speichern
[Profiles]
   comment     = NT-Benutzer-Profile
   path        = /home/Windows-Profiles
   writeable   = yes
   browseable  = no
   guest ok    = no
   valid users = %U
   create mask = 0600
Die Kommentare habe ich mir selbst mal vor langer Zeit gemacht, damit ich weiß, was da abgeht. Daher gibt es auf die keine Garantie. Bei dir fehlt aber zumindest mal der logon path und der ist (glaube ich) wichtig.

Die Profile sollte er dann in der Tat selbst anlegen, allerdings mußt du dazu die Rechte von /home/Windows-Profiles (um bei meinem Beispiel zu bleiben) auf 1777 setzen.

Außerdem verstehe ich nicht so ganz, wie du die Heimatverzeichnisse zu organisieren versuchst. Bei mir sieht das wie folgt aus:
Code:
# Die NT-Heimatverzeichnisse
[Home]
   comment     = Heimatverzeichnis von %U
   path        = /home/%U/Windows
   writeable   = yes
   browseable  = yes
   guest ok    = no
   valid users = %U
   create mask = 0600
Die Abschnitte [sfpcs026] und [igel] brauchst du jedenfalls zu diesem Zweck nicht.
 
Last edited:
Ist das neu in neueren Samba-Versionen, dass es einen separaten share für User-Profile gibt?
Ich hab hier bereits 3er Smaba-Versionen im Einsatz, aber da laufen noch übernommene Konfigurationen aus älteren Versionen.
Ich hab das auf jeden Fal genauso wie 0815chaot stehen
Code:
logon home = \\%N\%U
logon path = \\%N\%U\.%aprofile
Ich denke aber, dass die Position der Profil-Verzeichnisse mit Deinem Problem nicht wirklch was zu tun hat. Evtl. könnte ja das hier damit zu tun haben:
Code:
       profile acls (S)
              This boolean parameter was added to fix the problems that people
              have been having with storing user profiles on Samba shares from
              Windows 2000 or Windows XP clients. New versions of Windows 2000
              or  Windows  XP  service  packs  do security ACL checking on the
              owner and ability to write of the profile directory stored on  a
              local workstation when copied from a Samba share.
aus
Code:
man smb.conf

Gruß,

Ice
 
Ice said:
Ist das neu in neueren Samba-Versionen, dass es einen separaten share für User-Profile gibt?
Was heißt neu - Samba kann ja erst ab Version 2.0 (oder war's 2.2?) als PDC fungieren, daher gab es vorher dieses Profiles-Gedöhns eben nicht.
Ice said:
Code:
logon path = \\%N\%U\.%aprofile
Wenn du das so machst, brauchst du natürlich keine gesonderte Freigabe mehr für die Profile. Trotzdem wurde aus irgendwelchen Gründen (die in der technischen Implementierung auf der Windows-Seite zu suchen sind) empfohlen, für die Profile eine separate Freigabe einzurichten und diese solle sich nicht unterhalb des Samba-Heimatverzeichnisses befinden.
Code:
   logon path = \\%L\Profiles\%U
Hier sollen die Profile also in einem Verzeichnis, das dem jeweiligen Benutzernamen entspricht, auf der Freigabe namens Profiles, die sich wiederum auf dem Logon-Server befindet, abgespeichert werden. Wenn man das so macht, muß man natürlich auch irgendwo eine Freigabe namens Profiles angelegt haben, in welcher dann letztlich der eigentliche Pfad im UNIX-Dateisystem festgelegt wird.

Es gibt jedenfalls mehrere Möglichkeiten, Profiles und Homes zu organisieren. Das hängt teilweise auch von den persönlichen Vorlieben ab. Aber ein logon path braucht man glaube ich immer, weil sonst die Dose nicht weiß, wo das Profil liegt. Oder so irgendwie habe ich das von früher in Erinnerung.
 
Trotzdem wurde aus irgendwelchen Gründen (die in der technischen Implementierung auf der Windows-Seite zu suchen sind) empfohlen, für die Profile eine separate Freigabe einzurichten und diese solle sich nicht unterhalb des Samba-Heimatverzeichnisses befinden.
Danke für den Hinweis. Wieder was gelernt!

Gruß,

Ice
 
@0815Chaot
Ok, klar. Logisch.
Ok, hab eine neue smb.conf erstellt:
Code:
[global]
        workgroup = SUEDFAC
        server string = SFAPP0
        passdb backend = tdbsam
        log file = /var/log/samba/log.%m
        max log size = 50
        printcap name = /etc/printcap
        logon script = logon.cmd
        logon path = \\%L\profiles\%U
        logon home = \\%L\%U
        logon drive = s:
        domain logons = Yes
        os level = 65
        preferred master = Yes
        domain master = Yes
        dns proxy = No
        wins support = Yes
        kernel oplocks = No
        ldap ssl = no
        blocking locks = No
        oplocks = No
        strict locking = Yes
        share modes = No

[profiles]
        comment = profiles
        path = /home/profiles
        writeable = Yes
        browseable =No
        read only = No
        create mask = 0600
        security mask = 0600
        directory mask = 0700
        directory security mask = 0700

[homes]
        comment = Home Directories
        path = /home/%U
        valid user = %U
        read only = No
        create mask = 0700
        security mask = 0700
        directory mask = 0700
        directory security mask = 0700
        veto files = /.*/
        browseable = No

[printers]
        comment = Drucker SuedFactoring
        path = /var/spool/samba
        guest ok = Yes
        printable = Yes
        browseable = No

[netlogon]
        comment = netlogon
        path = /home/netlogon
        browseable = No

Auf dem Rechner auf dem es vorhin schon ging, geht es immer noch. Immerhin.

Problem: Er legt "profile" nicht unter /home/profile/$user/ an, sondern wiederum im home vom entsprechenden User. Also /home/igel/profile.

Ich muss den Wald vor Bäumen nicht sehen.

Weiterhin bleibt das Problem bestehen das die andere XP Workstation immer noch zickt. Gleiches Spiel wie schon beschrieben.
 
Also, ich blicke bei diesem Windows-PDC-Gefrickel (ja, das ist technisch gesehen Gefrickel!) auch nicht so recht durch. Mit dem einen Rechner funktioniert es ja zumindest halbwegs. Gut, er legt die Profiles im Heimatverzeichnis ab, aber er tut wenigstens was. Wenn es mit dem anderen Rechner nicht funktioniert, legt dies die Vermutung nahe, daß der Fehler eher am Client zu suchen ist.

Was mir noch auf die Schnelle einfällt:
  • Was sagt ein ls -ld /home/profiles auf dem Samba-Server?
  • Wie sehen die Maschinenaccounts für beide Rechner aus? (Also sowohl in der UNIX- als auch in der SMB-Paßwortdatenbank.)
  • Führe auf dem Samba-Server den Befehl smbclient -U USERNAME -L \\SFAPP0 aus, wobei du für USERNAME nacheinander die Namen beider Benutzer einsetzt.
  • Melde dich mal mit beiden Benutzern nacheinander jeweils auf beiden Rechnern an und beobachte das Verhalten.
Das mit dem Pfad für die Profile ist auch noch so eine Sache. Ich kann in deiner Konfig dahingehend keinen Fehler mehr finden. Hast du daran gedacht, alle Samba-Prozesse nach dem Ändern der Konfig neuzustarten? Ein SIGHUP reicht nicht aus, wenn noch wer den Service benutzt (oder so irgendwie verstehe ich die Manpage).

EDIT: Boote die Clients am besten mal neu, denn sonst übernehmen die vielleicht nicht den neuen logon path. Soweit ich dieses System verstanden habe, wird der logon path vom Client nur beim ersten Verbinden mit der Domäne direkt nach dem Booten vom Server geholt.
 
Strange.
Nun, mit obiger config, nachdem ich einfach mal die angelegten Profile auf dem Server gelöscht hatte, werden die Profile von beiden XP-Rechnern unter /home/profiles/$user angelegt.
Der bei dem es schon immer ging läuft auch artig, der andere wiederum, beim logout, bleibt hängen, nudelt und nudelt bis er die Nachricht bringt das er nicht alles sichern konnte. Das profile wurde aber auch bei diesem angelegt.

Warum der Mist nun nicht mit der Angabe /home/windows/%U geklappt hat kann ich nicht sagen, ebensowenig wie die Tatsache das die Profile nun an der richtigen Stelle abgelegt werden.

Ich werde morgen mal weiter"frickeln", anders kann man das nicht bezeichnen...
 
Was ich die ganze Zeit nicht so recht zuordnen konnte, war das share modes = No in deiner Konfig. Gibt es einen speziellen Grund, warum du das gesetzt hast? Ich habe mir jetzt dann doch mal "Linux Samba Server Administration" (ISBN 3-8155-0324-8) zur Hand genommen und lese dort im Referenzführer:
Linux Samba Server Administration said:
share modes [...] Ermöglicht die Verwendung von bestimmten DOS-Optionen zur Dateiöffnung. Diesen Parameter sollte man niemals auf No setzen.
Naja, das steht da wirklich so. Ob sich daraus in deinem Fall die Probleme ergeben, wenn ein zweiter Rechner dazukommt?
 
asg said:
Strange.
Nun, mit obiger config, nachdem ich einfach mal die angelegten Profile auf dem Server gelöscht hatte, werden die Profile von beiden XP-Rechnern unter /home/profiles/$user angelegt.
Einfacher ist es den Pfad auf /home/$user/profile zu setzten, da in ../profile persönliche Daten gespeichert werden.
asg said:
...
Warum der Mist nun nicht mit der Angabe /home/windows/%U geklappt hat kann ich nicht sagen, ebensowenig wie die Tatsache das die Profile nun an der richtigen Stelle abgelegt werden.
...
Dito: /home/$user/windows oder /home/$user/$irgendetwas. Damit sind die Zugriffsrechte für den User garantiert.

Oder brauchst Du unbedingt für die shares und profiles ein Verzeichnis ausserhalb des UNIX-homeverzeichnisses? Dann wird im offizielen Handbuch zu Samba 3 für profiles der Pfad /var/lib/samba/profiles vorgeschlagen.
 
Last edited:
@maus
Brauchen tue ich es nicht, ich hätte nur gerne eine klare Trennung von UNIX-Usern und Samba-Usern. Aber bevor ich das nach /var/lib/samba/... packe, nehme ich doch lieber /home/$user.

Ich überlege mir auch gerade ob ich nicht "profile" doch im home des Users lasse anstatt dies auszulagern. Schliesslich liegt dort auch der ordner "Eigene Dateien", und dies wird ja beim abmelden immer mit den lokalen Eigenen Dateien gesynct.
Wobei, auch Käse, der User könnte ja dort was löschen. Und wie ich die User kenne...
 
asg said:
Ich überlege mir auch gerade ob ich nicht "profile" doch im home des Users lasse anstatt dies auszulagern. Schliesslich liegt dort auch der ordner "Eigene Dateien", und dies wird ja beim abmelden immer mit den lokalen Eigenen Dateien gesynct.
Erstes MS-Netzwerk-Gebot: Du sollst Home von Profiles trennen! Wenn sich ein Benutzer nämlich auf mehreren Clients gleichzeitig anmeldet (was ja durchaus nichts außergewöhnliches ist) und seine Dokumente in seinem Profil (also z.B. in Eigene Dateien) ablegt, steht ganz massiver Datenverlust ins Haus. Das ist ein ganz grober Designfehler dieses ständigen Hoch- und Runterladens von server- und lokalgespeicherten Profilen.

Selbst wenn du deinen Benutzern verbietest, sich auf mehreren Clients gleichzeitig anzumelden, und sie sich natürlich dran halten, ist es wohl mehr als müßig, bei jedem An- und Abmelden sämtliche Dokumente des Benutzers durch das Netzwerk zu schieben. Je nach Datenumfang sind das dutzende oder hunderte von MB. Sowas gehört einfach ins Home, das du ja bereits über logon home festgelegt hast.

Eigene Dateien würde ich per Logon-Skript löschen lassen, damit erst gar kein Benutzer auf dumme Ideen kommen kann.
 
0815Chaot said:
Erstes MS-Netzwerk-Gebot: Du sollst Home von Profiles trennen! Wenn sich ein Benutzer nämlich auf mehreren Clients gleichzeitig anmeldet (was ja durchaus nichts außergewöhnliches ist) und seine Dokumente in seinem Profil (also z.B. in Eigene Dateien) ablegt, steht ganz massiver Datenverlust ins Haus. Das ist ein ganz grober Designfehler dieses ständigen Hoch- und Runterladens von server- und lokalgespeicherten Profilen.

Selbst wenn du deinen Benutzern verbietest, sich auf mehreren Clients gleichzeitig anzumelden, und sie sich natürlich dran halten, ist es wohl mehr als müßig, bei jedem An- und Abmelden sämtliche Dokumente des Benutzers durch das Netzwerk zu schieben. Je nach Datenumfang sind das dutzende oder hunderte von MB. Sowas gehört einfach ins Home, das du ja bereits über logon home festgelegt hast.

Eigene Dateien würde ich per Logon-Skript löschen lassen, damit erst gar kein Benutzer auf dumme Ideen kommen kann.
Das Hoch- und Runterladens von server- und lokalgespeicherten Profilen kann in der Registry abgestellt werden. Eigene Datein kann man in einem beliebigen Verzeichnis ablegen. Dann bleibt immer noch Murphy´s Gesetz. Man kann nicht so dumm denken wie manche User handeln, außerdem sind Narren so genial, die finden immer wieder einen Dreh etwas falsch zu machen.
 
Back
Top