Manchmal muss man leider Dinge tun, die man eigentlich nicht machen möchte. Die hier beschriebene Technik gehört leider auch dazu und wenn ich das nächste Mal in Redmond bin, wird mich Ned Pyle dafür bestimmt schlagen. Da ich allerdings einiges an Erfahrung sammeln konnte, möchte ich dieses Wissen hier mit diesem Beitrag teilen, falls es andere Leidensgenossen gibt, die das gleiche Problem haben wie ich. Kommentare, dass Windows 95 gehört abgelöst/migriert/verbrannt/zum Mond geschossen, führen unwiderruflich zu einem spendierten Bier oder Kaffee, das weiß ich nämlich auch 😉
Worum geht es eigentlich?
Manchmal gibt es Gründe (TM), warum noch uralte Betriebssysteme existieren. Zum Beispiel, weil große (und somit teure) Maschinen damit ausgeliefert werden und 30 Jahre laufen (z.B. Hochöfen oder Industrie-Maschinen). Ein Update ist nicht möglich, da es sich um ein geschlossenes System handelt und man selbst nicht auf OS-Ebene herunterkommt. In meinem Fall musste ein Windows 95, was mit einem Windows Server 2003 zusammen arbeitet, angepasst werden. Der Server 2003 stellte eine Freigabe bereit und war in Hardware-Form vorhanden. Die Hardware war recht alt, lief mit Server 2003 und sollte ersetzt werden durch ein System mit einem neueren OS.
Windows 95 als Client mit Windows Server 2016 als Dateiserver
Mein erster Ansatz war, den Windows 95 Client mit einem Windows Server 2016 zu verbinden. Das ich hier gewisse Sicherheitsrichtlinien heruntersetzen musste war mir klar, also habe ich versucht, das System mit lokalen Sicherheitsrichtlinien so einzustellen, dass der Windows 95 Client eine Verbindung aufbauen kann. Dies hat leider nicht so ganz geklappt, ich hatte folgende Verhaltensweisen:
Der Aufruf von dem Server bringt eine Fehlermeldung
Auf \\Server kann nicht zugegriffen werden.
Diese Anforderung wird nicht vom Netzwerk unterstützt.
Der direkte Aufruf der Freigabe funktioniert (ein bisschen)
Ruft man statt dem Server noch direkt die Freigabe auf (also \\Server\Share), kommt das Windows 95 auf die Freigabe drauf.
Das Problem ist allerdings, dass die Datei selbst nicht aufgerufen werden kann. Klickt man die Datei an, erscheint erneut eine Fehlermeldung.
Fazit
Ich habe das Testen mit Windows Server 2016 an dieser Stelle aufgegeben, da ich jetzt schon allerlei schmutzige Einstellungen gesetzt habe und ich nicht wirklich zum Ziel gekommen bin.
Die Nutzung von Samba mit einem Debian Server
Mein nächster Ansatz war die Installation von einem Debian 9.5 mit einem Samba Server. Bei dieser Variante können wir ein aktuelles Debian, welches den benötigten Share bereitstellt.
Die Grundinstallation
Die eigentliche Installation von Debian 9.5 ist recht einfach und wird an dieser Stelle nicht ausführlich beschrieben. Falls dazu Hilfe benötigt wird, so finden sich ausreichend Anleitungen im Internetz 🙂
Die Installation von Samba
Nach der Grundinstallation und einem Update auf den aktuellen Stand müssen wir Samba inkl. der benötigten Abhängigkeiten installieren:
sudo apt install samba -y
Nach der Installation ist der Server grundsätzlich da, jetzt müssen wir noch die entsprechenden Ordner und Anpassungen vornehmen.
Erstellen von einem neuen Benutzer
Wir beginnen mit der Erstellung von einem neuen Benutzer. Dieses Konto muss den gleichen Namen sowie das gleiche Kennwort wie der Benutzer auf dem Windows 95 haben. Ist der Name und/oder das Kennwort unterschiedlich, kommt es zu Problemen beim Aufruf der Freigabe.
useradd -s /bin/false USER
smbpasswd -a USER
Anlegen der benötigten Ordner
Damit die Ordner vorhanden sind, die gleich in der Samba-Konfiguration genutzt werden, müssen diese vorher angelegt werden.
mkdir -p /var/shares/test
chown -R USER:USER /var/shares/test
chmod 777 -R /var/shares/test
Achtung!
Die Anpassung der Zugriffsrechte auf 777 erlaubt JEDEM! Benutzer, Dateien zu löschen oder beliebige Dateien zu erstellen. In meinem Fall wird der Zugriff auf den Server durch weitere Firewalls geregelt und die Tests, welche Berechtigungen genau benötigt werden, sind zum aktuellen Zeitpunkt noch nicht abgeschlossen. Alleine die Arbeit mit SMB1 ist schon nicht schön, 777 als Berechtigung macht es nicht besser!
Die Samba-Konfiguration
Nun muss die Samba-Konfiguration angepasst werden. Da ich in meinem Fall ausschließlich eine Freigabe brauche (keine Drucker, keine Profile usw.), habe ich einen Großteil der Anmerkungen und Kommentare aus der default-Datei rausgeschmissen und nur noch die benötigten Einstellungen gesetzt.
# Globale Einstellungen
[global]
workgroup = workgroup
dns proxy = no
log file = /var/log/samba/log.%m
# hohes Loglevel für Debugging
log level = 9
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
server role = standalone server
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
usershare allow guests = yes
# Windows 95-relevante Einstellungen
# -> Herabstufung der Sicherheitsfunktionen :(
allow nt4 crypto = yes
client lanman auth = yes
client min protocol = NT1
client ntlmv2 auth = no
client plaintext auth = yes
lanman auth = yes
encrypt passwords = yes
# Shares
[test]
valid users = USER
path = /var/shares/test/
public = yes
writable = yes
comment = Freigabe test
guest ok = yes
create mask = 0777
directory mask = 0777
browsable =yes
Mit diesen Einstellungen bin ich in der Lage, erfolgreich einen Zugriff von dem Windows 95 Client auf den Samba Server zu bekommen.
Weitere Infos, Hinweise und Tipps
Hier noch eine Auflistung der Dinge und Erkenntnisse, die ich im Zuge der Installation sammeln konnte:
- Der Benutzername, die Workgroup und das Kennwort sollten 100%ig übereinstimmen
- Es gibt kein ipconfig, man muss winipcfg benutzen (ist mir dann wieder aufgefallen, lang lang ist her). Ebenso gibt es keine cmd, es muss command ausgeschrieben werden…
- Die Einstellung encrypt passwords muss ggf. auf no gesetzt werden, damit der Zugriff möglich ist
- Der Zugriff auf den Server muss per Name erfolgen, nicht per IP-Adresse
- Erfolgt keine DNS oder NETBIOS-Auflösung des Namens, kann das anlegen von C:\Windows\hosts für FQDN-Einträge bzw. C:\Windows\lmhosts für Netbios-Einträge helfen!
- Durch die Konfiguration von einem Logfile (pro Zugriff wird eine eigene Datei angelegt, das bewirkt das log.%m) kann man sehr gut sehen, ob überhaupt eine Kommunikation stattfindet.
- Erscheint eine Abfrage des Kennworts für den IPC$ Share, liegt dies an falschen Einstellungen. Die Lösung habe ich hier gefunden: When Windows 9x/ME Samba Access Fails
Ich habe einige Zeit gebraucht, bis die Windows 95 Büchse den Samba Server akzeptiert hat und die Freigabe fehlerfrei aufrufen und benutzen konnte. Falls ich weitere Erkenntnisse habe oder auf Probleme stoße, werde ich diesen Artikel entsprechend anpassen.
Hallo Jan
Habe das mal in einem Debian Jessie aufgesetzt mit Samba 4.2.14, leider ohne Erfolg. Wurde da schon wieder etwas bei Samba geändert?
Bekomme da auch noch diverse Fehlermeldungen mit testparm
testparm -v | egrep auth
Load smb config files from /etc/samba/smb.conf
Unknown parameter encountered: “ workgroup“
Ignoring unknown parameter “ workgroup“
Unknown parameter encountered: “ dns proxy“
Ignoring unknown parameter “ dns proxy“
Unknown parameter encountered: “ log file“
Ignoring unknown parameter “ log file“
Unknown parameter encountered: “ log level“
Ignoring unknown parameter “ log level“
Unknown parameter encountered: “ max log size“
Ignoring unknown parameter “ max log size“
Unknown parameter encountered: “ syslog“
Ignoring unknown parameter “ syslog“
Unknown parameter encountered: “ panic action“
Ignoring unknown parameter “ panic action“
Unknown parameter encountered: “ server role“
Ignoring unknown parameter “ server role“
Unknown parameter encountered: “ passdb backend“
Ignoring unknown parameter “ passdb backend“
Unknown parameter encountered: “ obey pam restrictions“
Ignoring unknown parameter “ obey pam restrictions“
Unknown parameter encountered: “ unix password sync“
Ignoring unknown parameter “ unix password sync“
Unknown parameter encountered: “ passwd program“
Ignoring unknown parameter “ passwd program“
Unknown parameter encountered: “ passwd chat“
Ignoring unknown parameter “ passwd chat“
Unknown parameter encountered: “ pam password change“
Ignoring unknown parameter “ pam password change“
Unknown parameter encountered: “ map to guest“
Ignoring unknown parameter “ map to guest“
Unknown parameter encountered: “ usershare allow guests“
Ignoring unknown parameter “ usershare allow guests“
Unknown parameter encountered: “ allow nt4 crypto“
Ignoring unknown parameter “ allow nt4 crypto“
Unknown parameter encountered: “ client lanman auth“
Ignoring unknown parameter “ client lanman auth“
Unknown parameter encountered: “ client min protocol“
Ignoring unknown parameter “ client min protocol“
Unknown parameter encountered: “ client ntlmv2 auth“
Ignoring unknown parameter “ client ntlmv2 auth“
Unknown parameter encountered: “ client plaintext auth“
Ignoring unknown parameter “ client plaintext auth“
Unknown parameter encountered: “ lanman auth“
Ignoring unknown parameter “ lanman auth“
Unknown parameter encountered: “ encrypt passwords“
Ignoring unknown parameter “ encrypt passwords“
Processing section „[Jessie-Share]“
Unknown parameter encountered: “ valid users“
Ignoring unknown parameter “ valid users“
Unknown parameter encountered: “ path“
Ignoring unknown parameter “ path“
Unknown parameter encountered: “ public“
Ignoring unknown parameter “ public“
Unknown parameter encountered: “ writable“
Ignoring unknown parameter “ writable“
Unknown parameter encountered: “ comment“
Ignoring unknown parameter “ comment“
Unknown parameter encountered: “ guest ok“
Ignoring unknown parameter “ guest ok“
Unknown parameter encountered: “ create mask“
Ignoring unknown parameter “ create mask“
Unknown parameter encountered: “ directory mask“
Ignoring unknown parameter “ directory mask“
Unknown parameter encountered: “ browsable“
Ignoring unknown parameter “ browsable“
WARNING: No path in service Jessie-Share – making it unavailable!
NOTE: Service Jessie-Share is flagged unavailable.
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
auth methods =
lanman auth = No
ntlm auth = Yes
raw NTLMv2 auth = No
client NTLMv2 auth = Yes
client lanman auth = No
client plaintext auth = No
ldap server require strong auth = Yes
allow dcerpc auth level connect = No
Hast Du eine Idee?
Danke für Deine Antwort.
Viele Grüsse
Rico
Hallo,
deine Konfig-Datei ist nicht korrekt, das musst du zuerst korrigieren, so das der Dienst korrekt startet und alle Optionen angenommen werden.
Gruß, Jan