Kurze 8.3-Namen (DOS) in Freigabe haben falsches Format

Hallo erstmal!

Nach harter Arbeit und viel Lesen und Lernen läuft der Server erstmal.
UCS 4.1 mit Samba und univention-s4-connector als DC Master mit Windows-Clients (W7 + XP)

Ein Problen ist aber noch ungelöst:
Auf dem XP-Client läuft noch ein uraltes (aber leider wichtiges!) DOS-Programm, was auf die Freigaben zugreifen muß.
Das kann es auch, zeigt aber natürlich nur die kurzen 8.3-Namen an. Das war schon unter Windows nicht sehr übersichtlich, aber da die ersten Zeichen des langen Namens i.d.R. erhalten blieben, ließen sich die gesuchten Dateien und Verzeichnisse zumindest erahnen.
Auf den Samba-Freigaben sind die kurzen Namen aber völlig unlesbar.

ein Verzeichnis namens Kolonnenstr wird zu KJAH1V~M
eine Datei namens Modellplan.dwg wird zu MS6DCB~L.DWG

Die Umsetzung Lange Dateinamen in die Kurzform findet also statt, aber das Schema dafür ist falsch.
Die Namen von Dateien und Ordner auf dem lokalen Laufwerk werden von dem DOS-Programm mit den “richtigen” Kurznamen angezeigt.

Soweit ich mir ergoogeln konnte, läßt sich dazu einiges einstellen in Samba und es könnte wohl auch mit unterschiedlichen Schriftsätzen in Unix und Windows zu tun haben. In der UMC finde ich die Variablen samba/charset/dos und samba/charset/unix, die beide nicht gesetzt sind.

Ich bin mir unsicher, was, wo, wie eingestellt werden muß und würde mir nur ungern Probleme mit den Windows-BS einhandeln, denn da wird alles richtig angezeigt.

Wie bekomme ich eine Namensumschreibung bzw. -anzeige eingestellt, analog zu der in Windows üblichen?

Vielen Dank schon mal und liebe Grüße,
Dirk Hermandung

Ich habe hier über die Konsole in der man-Page für die smb.conf geschaut:

# man smb.conf

[quote] dos charset (G)

       DOS SMB clients assume the server has the same charset as they do. This option specifies which charset Samba should talk to DOS clients.

       The default depends on which charsets you have installed. Samba tries to use charset 850 but falls back to ASCII in case it is not available. Run testparm(1) to check the default on your
       system.

       No default

   unix charset (G)

       Specifies the charset the unix machine Samba runs on uses. Samba needs to know this in order to be able to convert text to the charsets other SMB clients use.

       This is also the charset Samba will use when specifying arguments to scripts that it invokes.

       Default: unix charset = UTF-8

       Example: unix charset = ASCII[/quote]

Relevant ist dann eher das DOS Charset, aber ich kann leider nicht sagen was hier am besten eingestellt wird.

OK, ich hab eine Lösung gefunden!

Mit Zeichensätzen o.ä. hat das nichts zu tun.
Siehe https://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html

[quote]mangling method controls the algorithm used for the generating the mangled names. Can take two different values, “hash” and “hash2”. “hash” is the algorithm that was used used in Samba for many years and was the default in Samba 2.2.x “hash2” is now the default and is newer and considered a better algorithm (generates less collisions) in the names. Many Win32 applications store the mangled names and so changing to algorithms must not be done lightly as these applications may break unless reinstalled.

Default: mangling method = hash2

Example: mangling method = hash [/quote]

und

[quote]mangle prefix controls the number of prefix characters from the original name used when generating the mangled names. A larger value will give a weaker hash and therefore more name collisions. The minimum value is 1 and the maximum value is 6.

mangle prefix is effective only when mangling method is hash2.

Default: mangle prefix = 1

Example: mangle prefix = 4 [/quote]

Da “mangling method = hash2” der Default-Wert ist, hat es gereicht, mangle prefix = 6 in die smb.conf einzutragen und nach einem Neustart von Samba hat das Uralt-DOS-Programm wieder die (halbwegs) lesbaren Namen angezeigt.

Bleibt nur noch ein Problem:
Der Eintrag in die smb.conf wird einen Neustart des DC nicht überleben, da die Datei dann vom UCS neu erzeugt wird.
Wie kann diese Einstellung dauerhaft vorgenommen werden?
Oder gibt es schon eine entsp. UCR-Variable dafür?

Wäre schön, wenn mir da noch jemand helfen könnte - Vielen Dank!

ich habe leider keine ready-made Variable gefunden, falls eine zusätzlich angelegt werden soll wird das etwas tiefergehend:

http://docs.software-univention.de/developer-reference-4.1.html#ucr:usage
http://docs.software-univention.de/developer-reference-4.1.html#ucr:conffiles

Oh je, das geht mir im Moment etwas zu weit - ich bin kein “Developer”, sondern fange grade erst an…
Aber danke für die Links, irgendwann werde ich mich damit auseinandersetzen.

Gibt es bis dahin vielleicht eine “Quick and Dirty”-Lösung?
Könnte ich diesen Eintrag nicht z.B. “fest” in eine der vorhandenen Templates reinschreiben (vermutlich in die 61univention-samba_misc?) und wenn ja: Wie wäre der Code dafür? Dann würde die Definition zumindest Neustarts überleben, und wenn das Template nach einem Update überschrieben wird, setze ich den Codeschnipsel halt wieder rein.

Könnte das in Zukunft in UCS aufgenommen werden oder gibt es zwenige, die noch mit DOS arbeiten?
BTW: Ich hab sogar noch einen Rechner mit WFW 3.11 im Netz!

Können sie bitte prüfen ob es bereits eine “local.conf” bei Ihnen gibt?

# less /etc/samba/local.conf

Falls nicht, können Sie diese erstellen. Hier würde ich versuchen zusätzliche Samba-Optionen zu konfigurieren (wie “mangle prefix”). Danach bitte das Folgende ausführen.

[code]# ucr commit /etc/samba/smb.conf

service samba restart[/code]

Das hat funktioniert!

Die local.conf muss diesen Inhalt haben:

[global]
mangle prefix = 6

Ohne [global] geht’s nicht (Try&Error - via Google konnte ich nichts brauchbares zu “local.conf” finden)

Vielen Dank!

Mastodon