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

Kein Zugriff auf Netzlaufwerke in Win nach Samba (4) Update

norritt

Member
[Anm. vorweg.: Ich habe das Problem bereits gelöst, aber poste es trotzdem hier - da es mir eine schlaflose Nacht bereitet hat die ich vielleicht jemand anderem ersparen kann,]

Hallo zusammen,

nachdem mein Home Server (openSUSE 13.1) mittlerweile eine Uptime von fast 500 Tagen erreicht hatte Stand mal wieder ein Schwung Updates samt Neustart an. Unter den Updates befand sich auch ein Samba Server Update (4.1.17-3.30.1-3375-SUSE-oS13.1-x86_64). Nach dem Serverneustart hatte ich jedoch plötzlich keinen Zugriff mehr auf die Netzlaufwerke, nmb und smb liefen aber scheinbar problemlos. Einzige Auffälligkeit (die auch weiterhin besteht, aber mit dem Problem nichts zu tun hatte) ist folgende Meldung in /var/log/samba/log.smb:

Code:
[2015/05/09 14:02:41.951165,  0] ../lib/util/pidfile.c:153(pidfile_unlink)
  Failed to delete pidfile /run/samba/smbd.pid. Error was No such file or directory

Das die Meldung "Error was No such file or directory" eigentlich unbegründet ist zeigt folgendes:

Code:
/etc/samba # ls -l /run/samba/
total 8
drwxr-xr-x 3 root root 60 May  9 02:05 ncalrpc
drwxr-xr-x 2 root root 60 May  9 14:02 nmbd
-rw-r--r-- 1 root root  6 May  9 14:02 nmbd.pid
-rw-r--r-- 1 root root  6 May  9 14:02 smbd.pid

allerdings hat nur Root schreibrechte auf die pid-Files. Also liegt die Ursache womöglich darin das nmbd/smbd keinen Schreibzugriff haben und die Dateien somit auch nicht löschen können. Lustigerweise verschwinden die .pid Files aber wenn ich smbd/nmbd beende.

Bemerkenswerterweise konnte ich in den Windowsclients immer noch die Liste der Shares abrufen durch Eingabe von "\\<servername\" in der Adressleiste des Explorers. Auch der Zugriff auf frei zugängliche Shares war weiterhin gegeben, lediglich die Netzlaufwerke, die eine Authentifizierung auf Benutzerebene erforderten waren nicht zugänglich. Beim Versuch diese Freigaben zu öffnen erschien in Win7 der Credentials-Prompt und fragte nach Benutzername und Passwort. Ein Firewallproblem war also praktisch auszuschliessen.

Die Googlesuche förderte dann eine Menge esoterischer Lösungen (Anpassung der Sicherheitsrichtlinien für SMB Authentifizerung, Windows Registry Hacks etc. zutage). Da Windows aber mit den bisherigen Einstellungen funktioniert hatte und die einzige Veränderung im Update des Sambaservers bestand, musste die Ursache auch hier zu finden sein. Während meiner Versuche bemerkte ich weitere Auffälligkeiten:

Normalerweise konnte ich mich bisher mit folgenden Daten unter Windows 7 gegen den Sambaserver authentifizieren:
Benutzer: \\<servername>\benutzername
Passwort: ********

Dies führte sofort zur Meldung "Zugriff verweigert". Wenn ich aber die Credentials wie folgt eingab:

Benutzer:\\<servername>.<domainname>\benutzername
Passwort: ********

Geschah erstmal nichts - der Explorer schien mit Verbindungsversuchen beschäftigt zu sein die dann aber nach schätzungsweise 15 Sekunden mit folgender Meldung endeten:

"Error code: 0X80070035 The network path was not found."

Da ich das Share durch Doppelklick im Explorer geöffnet hatte, schien es doch sehr seltsam das der Pfad ungültig sein sollte. Nach langem Herumprobieren wandte ich mich wieder dem Server zu, auf dem dann auch irgendwann neue Meldungen in den Logs auftauchten:

Code:
 ../source3/nmbd/nmbd_become_lmb.c:533(become_local_master_browser)
  become_local_master_browser: Error - cannot find server <servername>.<domainname> in workgroup <workgroupname> on subnet 192.168.1.1

Diese Meldunge war es dann auch, die mich schliesslich auf die richtige Fährte brachte. Offenbar war die Ursache für das Problem ein Konflik zwischen dem Domänennamen des Samba Servers und dem in der smb.conf gesetzten NetBIOS-Namen bzw. -Alias.

Die Lösung besteht darin folgende Zeilen in der /etc/samba/smb.cnf anzupassen:

/etc/samba/smb.cnf - ALT
Code:
    ...
    netbios name = <servername>.<domainname>
    netbios aliases = <servername>
    ...

/etc/samba/smb.cnf - NEU
Code:
    ...
    # AUSKOMMENTIEREN:
    # netbios name = <servername>.<domainname>
    # netbios aliases = <servername>
    # HINZUFÜGEN:
    disable netbios = yes
    ...

Und siehe da die Shares sind wieder zugreifbar. Angenehmerweise authentifiziert sich Windows im Gegensatz zu früher nun automatisch, mit Benutzernamen und Passwort des angemeldeten Users.
 

spoensche

Moderator
Teammitglied
Ist den dein Samba überhaupt ein Domänen Controller oder nur in einer Arbeitsgruppe?

Wenn er nur in einer Arbeitsgruppe ist, also nur ein normaler Fileserver, dann liegt das Problem nicht zwingend beim Samba, sondern an einem möglichen Eintrag in der /etc/hosts, die für die Namensauflösung (DNS) verwendet wird.

Wenn in deiner /etc/hosts z.B. folgender Eintrag vorhanden ist:
Code:
 1.2.3.4 meinserver.meinedomain.athome meinserver

Dann wird bei der Namensauflösung der FQDN (Full Qualified Domain Name) bevorzugt verwendet.

Wenn der Eintrag wie folgt aussieht:

Code:
1.2.3.4 meinserver

Dann ist kein FQDN vorhanden, also wird nur "meinserver" verwendet und du kannst mit \\meinserver\meinefreigabe auf die Freigabe zugreifen.
 
OP
N

norritt

Member
Hey spoensche,

spoensche schrieb:
Ist den dein Samba überhaupt ein Domänen Controller oder nur in einer Arbeitsgruppe?
Nein ich habe zu Hause keine Domäne aufgesetzt, der Samba befindet sich nur in einer Arbeitsgruppe.

spoensche schrieb:
Wenn in deiner /etc/hosts z.B. folgender Eintrag vorhanden ist:
Code:
 1.2.3.4 meinserver.meinedomain.athome meinserver
Dann wird bei der Namensauflösung der FQDN (Full Qualified Domain Name) bevorzugt verwendet.
Wenn der Eintrag wie folgt aussieht:
Code:
1.2.3.4 meinserver
Dann ist kein FQDN vorhanden, also wird nur "meinserver" verwendet und du kannst mit \\meinserver\meinefreigabe auf die Freigabe zugreifen.

Auf dem Sambaserver habe ich auch einen DNS Server eingerichtet. "nslookup" löst beide Varianten "<hostname>" und "<hostname>.<domainname>" korrekt auf. Ich kann auch unter Windows beide Schreibweisen nutzen um auf die Shares zuzugreifen, allerdings geht das erst, wenn ich wie oben beschrieben NetBIOS deaktiviere. Wenn ich NetBIOS einschalte finde ich die Shares zwar auch in der Windows Netzwerkumgebung egal ob ich "<hostname>" oder "<hostname>.<domainname>" eingebe, allerdings kann ich sie dann nicht öffnen, weil die Authentifizierung nicht mehr korrekt abgewickelt wird.

Das Problem trat wie gesagt auch erst nach dem Samba Update auf. Mit der alten Sambaversion lief die 500 Tage davor alles einwandfrei (auch bei aktiviertem NetBIOS) und ich hatte keinerlei Probleme.
 

spoensche

Moderator
Teammitglied
DNS-Server = Du hast eine Domain, weil DNS = Domain Name System. Du betreibst den Samba als Standalone und nicht als Domänencontroller, das ist auch alles.

NetBIOS stammt aus der Win2000 - Win2003/XP Zeit und wurde für die Namensauflösung ohne AD verwendet. Mit NetBIOS ist dann auch der WINS mit involviert.

NetBIOS broadcastet den Hostnamen in die weite Welt hinein. Der Name kann dabei exklusiv (für Host + Service) oder aber nicht exklusiv für eine Gruppe sein. Bis Win200 wurde SMB über NetBIOS realisiert. Die Namensauflösung erfolgte per Broadcast oder WINS.

Bei DNS wird der User sich mit user@domain.de anmelden, mit NetBIOS ging das nur mit Arbeitsgruppe\Username. Wenn du also keinen Domänencontroller hast wird Windows Arbeitsgruppe\Username verwenden, weil der Client in keiner Domäne ist und so die Kompatibilität mit älteren Systemen gewährleistet wird. Wenn NetBIOS abgeschaltet ist ignoriert Windows die Altlasten und verwendet das übliche Verfahren.
 
OP
N

norritt

Member
spoensche schrieb:
Du betreibst den Samba als Standalone und nicht als Domänencontroller, das ist auch alles.
Ja das sagte ich ja bereits im vorherigen Post.

spoensche schrieb:
Bei DNS wird der User sich mit user@domain.de anmelden, mit NetBIOS ging das nur mit Arbeitsgruppe\Username. Wenn du also keinen Domänencontroller hast wird Windows Arbeitsgruppe\Username verwenden

Wie gesagt ich kann mich mit beiden Varianten anmelden:
<Servername>\<User>
oder
<servername>.<domainname>\<User>

Das hat auch nichts mit der Konfiguration von Samba als DC oder oder Nicht-DC zu tun, sondern einfach mit der Tatsache das mein lokaler DNS beide Varianten gleich auflöst. Die Schreibweise mit @ habe ich nicht getestet ich vermute aber das auch die funktionieren wird, allerding bin ich zu faul jetzt alles Netzlaufwerke zu trennen nur um das zu testen ;)

Ich glaube wir diskutieren hier aber auch gerade am Problem vorbei, weil das Problem nicht mit der Frage zusammenhängt ob Samba als DC eingerichtet ist oder nicht. Fakt ist: mit dem Samba update wurde irgendetwas verändert, was dafür gesort hat das mit aktiviertem NetBIOS kein Zugriff auf die Shares mehr möglich ist. Dieses Problem hat nichts mit der Namensauflösung zu tun - wenn ich NetBIOS aktiviere wird der Server in der Netzwerkumgebung angezeigt und die Shares gelistet. Aber sobald ich versuche ein Share zu öffnen oder als Netzlaufwerk zu verbinden gibt es einen Authentifizierungsfehler. Wenn ich NetBIOS deaktiviere passiert das nicht und die Shares lassen sich wieder öffnen. Bei der vorherigen Samba Version gab es das Problem nicht - ich konnte nicht für den Zugriff auf die Shares authentifizieren egal ob NetBIOS aktiviert war oder nicht.

Also kurz gefasst:
1. alte Sambaversion: egal ob NetBIOS aktiviert oder nicht Server wird gefunden/Shares werden angezeigt, Authentifizierung funktioniert sowohl mit <Servername>\<Username> als auch mit <Servername>.<domainname>\<Username> -> Shares lassen sich öffnen
2. neue Sambaversion:
[*]NetBIOS aktiviert: Server wird gefunden/Shares werden angezeigt, Authentifizierung funktioniert mit keiner der beiden Varianten -> Shares sind zwar im Explorer sichtbar aber lassen sich NICHT öffnen.
[*]NetBIOS deaktiviert: es funktioniert genau wie bei der alten Sambaversion (siehe 1.), d.h. Shares sichtbar und lassen sich öffnen.
 
Oben