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

Sonderzeichen in Dateinamen?

Hallo,
hier gibt's Verrückte bei mir, die wollen zB # und {} in
Datei und Verzeichnisnamen setzen.
Die WINDOWS-Clients sollen das über SAMBA auf den Shares setzen.
Ist das aus Linux-Sicht bedenklich?

MfG
 
oelk schrieb:
hier gibt's Verrückte bei mir, die wollen zB # und {} in
Datei und Verzeichnisnamen setzen.
Sowas würde ich grundsätzlich unterbinden mit Namenskonventionen.
Sonderzeichen in Dateinamen sind IMHO immer problematisch.
 

framp

Moderator
Teammitglied
In Linux kannst Du alle Zeichen für Dateinamen benutzen. Allerdings müssen manche escaped werden beim Erstellen (z.B. das Leerzeichen muss ein führendes \ haben). Das beinhaltet auch die Umlaute und andere Sonderzeichen. In wieweit das samba es schafft die vom Windows ins Linux zu bringen musst Du testen. Prinzipell geht das wohl.

Aber ich würde mich an Deiner Stelle auf die Hinterbeine stellen und das verbieten. Wie schon erwähnt holt man sich da nur Ärger ein wenn man Dateinamen, die nicht nur aus den zeichen a-zA-Z0-9 und _ bestehen, benutzt. Nicht sauber geschriebene Scripts, die diese Dateinamen benutzen oder unterschiedliche Locales oder Zeichensätze zwischen dem Server und den Clients und Du erlebst die irrsten Effekte.
 
A

Anonymous

Gast
prinzipiell Linux ansich hätte damit keine Probleme auch Samba ansich nicht. Linux hat hier nur 2 Einschränkungen für Zeichen im Dateinamen
es geht definitiv kein / im Dateinamen, und es geht auch kein NULL (also 0x00) im Dateinamen.

Soweit zur Theorie. In der Praxis wirst du keinerlei Probleme zu befürchten haben solange du die Dateien genauso wie sie geschrieben wurden auch wieder gelesen lesen/benutzt werden.

Einfacher Test eine auf einem Linuxdateisystem angelegte Datei

Code:
hallo#hallo{hallo}

freigeben über Samba über smbclient siehts das ganz gut aus

Code:
smb: \testverzeichnis\> ls
  .                                   D        0  Fri Jun  6 18:36:56 2014
  ..                                  D        0  Fri Jun  6 18:48:26 2014
  hallo#hallo{hallo}                           0  Fri Jun  6 18:35:26 2014

Die Datei dann von Windows aus zu bearbeiten ist überhaupt kein Problem, geht wunderbar, genauso anders herum.

Aber schon unter Linux mit Nautilus versucht und man sieht wo es zu Problemen kommen kann/wird, die Datei wird in Nautilus mit dem richtigen Namen angezeigt würde auch ganz normal funktionieren, da die Datei aber leer ist, hat Nautilus natürlich keine Ahnung mit was er die Datei öffnen soll und schreibt eine Fehlermeldung in der er die Datei dann bezeichnet als:

Code:
smb://server/testverzeichnis/hallo%23hallo%7Bhallo%7D

Nautilus öffnet Dateien nicht selbst, sondern mit Hilfe von anderen Programmen und dort gibt es als Option den Dateinamen mit. Da es sich hier um eine URL handelt hat jetzt Nautilus hier eine Konvertierung des Dateinamens vorgenommen. Das sogenannte Percent-encoding. Und so übergibt er den Dateinamen dann an das Programm das die Datei öffnen soll
Und hier gilt äußerste Vorsicht, spätestens wenn es sich um "Nicht ASCII Zeichen" handelt. http://de.wikipedia.org/wiki/URL-Encoding#Nicht-ASCII-Zeichen
Wie welches Programm jetzt damit umgeht? Und dieses Problem ist nicht ein Linuxproblem, sondern betrifft alles mögliche und unmögliche. Kein einheitlicher Standard und schon sind die Probleme vorprogrammiert.

Allgemein gilt hier wenn man hierauf Einfluss hat, dieses von vorne herein bei den Usern zu unterbinden/einzuschränken. Schließlich will man ja auch als Admin irgend wann mal auf der Konsole schnell was in den Dateisystemen und mit den Dateien machen, und spätestens wenn man dann feststellt, die eigenen Kenntnisse der Konsole und Shellprogrammierung reichen hier jetzt nicht mehr aus um hier vernünftig mit Sonderzeichen im Dateinamen umzugehen, wird's lustig. Gut wer noch Perl beherrscht kommt noch ein Stück weiter. Aber effektiv und schnell mal irgendwas machen, Pustekuchen. ;-)

robi
 
Oben