En los primeros días de DOS y Windows 3.1, los nombres de archivos estaban limitados a 8 caracteres mayúsculas/minúsculas, seguidos por un punto, y 3 caracateres más en mayúsculas. Esto se conocía como el formato 8.3, y era una molestia. Windows 95/98, Windows NT, y Unix han mejorado esta situación permitiendo que muchos caracteres (sensibles a may/minúsculas) conformen un nombre de archivo. La Tabla 5.6 muestra el actual estado del sistema de nombrado de archivos de los sistemas operativos más populares.
Table: Limitaciones de Nombrado de Archivos en diferentes Sistemas Operativos.|| S.O. || Reglas de Nombrado ||
|| DOS 6.22 o inferior || 8 caracteres seguidos por un punto y una extensión de tres letras (formato 8.3). Insensibles a mayúsculas/minúsculas. ||
|| Windows 3.1 para Trabajo en Grupos || 8 caracteres seguidos por un punto y una extensión de tres letras (formato 8.3). Insensibles a mayúsculas/minúsculas. ||
|| Windows 95/98 || 127 caracteres; sensibles a mayúsculas/minúsculas. ||
|| Windows NT || 127 caracteres; sensibles a mayúsculas/minúsculas. ||
|| Unix || 255 caracteres; sensibles a mayúsculas/minúsculas. ||
Samba debe mantener la compatibilidad con clientes de red que almacenan archivos en el formato 8.3, tales como Windows para Trabajo en Grupos. Si un usuario crea un fichero en un recurso llamado antidisestablishmentarianism.txt, un cliente WFW no podría diferenciarlo de otro archivo en el mismo directorio llamado antidisease.txt. Al igual que Windows 95/98 y Windows NT, Samba tiene que emplear una metodología especial de traslación de nombres largos de archivo a un formato 8.3, de manera que nombres similares de archivos no creen conflictos. Esto es denominado name mangling o ``planchado de nombre
, y Samba lo hace de una manera similar, pero no idéntica, a como lo hacen Windows 95 y sus sucesores.
La Operación de ``Planchado
de Samba
Así es como Samba resume un nombre largo de archivo y lo convierte a un formato de archivo 8.3:
- Si el nombre de archivo original no comienzan por un punto, hasta los 5 primeros caracteres alfanumérico que aparezcan hasta el siguiente punto (si lo hay) son convertidos a mayúsculas. Estos caracteres son usados como los 5 primeros caracteres del nombre ``planchado 8.3.
- Si el nombre de archivo original comienza por un punto, el punto es eliminado y hasta los 5 primeros caracteres alfanuméricos que aparezcan antes del próximo punto (si lo hay) son convertidos a mayúsculas. Estos caracteres son usados como los 5 primeros caracteres del nombre pasado a formato 8.3.
- Estos caracteres son inmediatamente seguidos por un símbolo especial de ``planchado: por defecto, una vírgula (~), aunque Samba te permite cambiar este carácter.
- La base del nombre de fichero largo antes del último punto es convertido en un código de dos caracteres; partes del nomrbe tras el último punto pueden ser usadas, si es necesario. Este código de dos caracteres es añadido al nombre del fichero 8.3 tras el planchado de caracteres.
- Los primeros 3 caracteres tras el último punto (si lo hay) del nombre del fichero original son convertidos a mayúsculas y añadidos al nombre planchado o resumido como su extensión. Si el nombre original del fichero comenzase por un punto, tres caracteres de subrayado ( _ _ _ ) son usados como extensión en su lugar.
Aquí tienes algunos ejemplos:
virtuosity.dat VIRTU~F1.DAT
.htaccess HTACC~U0.
hello.java HELLO~1F.JAV
team.config.txt TEAMC~04.TXT
antidisestablishmentarianism.txt ANTID~E3.TXT
antidiseast.txt ANTID~9K.TXT
El uso de estas reglas permitirá a WFW diferenciar los dos ficheros desde la parte 'pobre' del cliente que está obligado a ver la red a través de los ojos de ese sistema operativo. Advierte que el mismo nombre largo de fichero debería siempre coincidir con la misma aproximación que genera Samba; esto no siempre ocurre así con Windows. La cara oculta de ésta aproximación es que todavía pueden existir colisiones; sin embargo, las oportunidades están muy reducidas.
Tú generalmente querrás usar las opciones de configuración de planchado de nombres sólo con los clientes más antiguos. Te recomendamos hacerlo así para no 'romper' a los demás clientes añadiendo una directiva include al fichero smb.conf:
[global]
include = /ucsr/local/samba/lib/smb.conf.%m
Esto se traduce a smb.conf.WfWg cuando un cliente Windows para Trabajo en Grupo (WFW) se conecta. Ahora puedes crear un fichero /usr/local/samba/lib/smb.conf.WfWg, que podría contener las siguientes opciones:
[global]
case sensitive = no
default case = upper
preserve case = no
short preserve case = no
mangle case = yes
mangled names= yes
Si no estás usando Windows para Trabajo en Grupos 3.1, entonces probablemente no necesitarás cambiar ninguna de estas opciones de sus valores por defecto.
Representando y Resolviendo Nombres de Archivo con Samba
Otra cosa que debemos apuntar es que existe una diferencia entre cómo un sistema operativo representa a un fichero y cómo lo resuelve. Por ejemplo, si estás usando Windows 95/98/NT, probablemente te toparás con un fichero denominado README.TXT. El archivo puede ser representado por el sistema operativo enteramente con caracteres mayúsculas. Sin embargo, si abres una ventana de MS-DOS e introduces el comando edit readme.txt, el archivo en mayúsculas es cargado en el programa de edición, ¡Aunque hayas tecleado el nombre an caracteres minúsculas!
Esto es así porque la familia de sistemas operativos Windows 95/98/NT resuelven los ficheros de una forma insensible a las mayúsculas/minúsculas, aunque los ficheros estén representados de forma sensible a mayúsculas/minúsculas. Los sistemas operativos basados en Unix, por otra parte, siempre resuelven los archivos de forma sensible a mayúsculas/minúsculas; si intentas editar el archivo README.TXT con el comando vi readme.txt, obtendrás la edición de un buffer vacío para un nuevo archivo.
Así es como Samba maneja las mayúsculas/minúsculas: si la opción preserve case se establece a yes, Samba siempre usará las mayúsculas proporcionadas por el sistema operativo para representar (que no resolver) los nombres de archivos. Si se establece a no, este usará el tipo de caracteres especificados por la opción default case. Lo mismo es cierto para la opción short preserve case. Si esta opción se establece a yes, Samba usará el tipo por defecto del sistema operativo para representar nombres de archivo 8.3; de lo contrario, usará el tipo especificado por la opción default case. Finalmente, Samba siempre resolverá nomrbes de archivo en sus recursos basándose en el valor de la opción case sensitive.
Opciones de Planchado
Samba te permite darle instrucciones más refinadas sobre cómo debe realizar la conversión de nombres, incluyendo el control del tipo de sensibilidad ante caracteres (mayúsculas/minúsculas), el carácter insertado para formar un nombre resumido, y la capacidad de mapear manualmente nombres de archivos de un formato a otro. Estas opciones se muestran en la Tabla 5.7.
Table: Opciones de Planchado de Nombres.||
Table: Opciones de Planchado de Nombres.|| Opción || Parámetros || Función || Defecto || Ambito || || case sensitive (casesignames) || booleano || Si es yes, Samba tratará los nombres como sensibles a mayúsculas/minúsculas (Windows no lo hace). || no || Recurso || || default case || ( upper o lower) || Tipo a asumir como por defecto (sólo usado cuando preserve case es no). || Lower || Recurso || || preserve case || booleano || Si es yes, mantiene el tipo suministrado por el cliente (p.ej., no convierte a default case). || yes || Recurso || || short preserve case || booleano || Si es yes, preserva el tipo de los nombres de formato 8.3 que proporciona el cliente. || yes || Recurso || || mangle case || booleano || Resume un nombre si éste tiene caracteres de un tipo y de otro. || no || Recurso || || mangled names || booleano || Resume nombres largos a formato DOS 8.3. || yes || Recurso || || mangling char || string (carácter simple) || Ofrece planchado de nombres. || ~ || Recurso || || mangled stack || numerico || Número de nombres resumidos a mantener en la pila de nombres resumidos local. || 50 || Global || || mangled map || string (lista de patrones) || Permite mapeado de nombres de archivos de un formato a otro. || Ninguno || Recurso || ||
case sensitive
Esta opción de nivel de recurso, la cual tiene el obtuso sinónimo de casesignames, especifica si Samba debería preservar el tipo de caracteres cuando resuelva nombres de archivos en un recurso determinado. El valor por defecto para esta opción es no, el cual es como Windows maneja la resolución de archivos. Si los clientes están usando un sistema operativo que toma ventaja de de los nombres de archivos sensibles a mayúsculas, puedes establecer esta opción de configuración a yes como ves a continuación:
[accounting]
case sensitive = yes
Por otra parte, recomendaos que dejes esta opción a su valor por defecto.
default case
La opción default case es usada con preserve case. Especifica el tipo por defecto (mayúscula o minúscula) que Samba usará cuando cree un archivo en uno de sus recursos en nombre de un cliente. El valor por defecto es lower, lo que significa que los archivos recién creados usarán nombres mixtos para ellos. Si lo necesitas, puedes sobreescribir esta opción global especificando lo siguiente:
[global]
default case = upper
Si especificas este valor, los nombres de los ficheros creados más recientemente serán trasladados a mayúsculas, y no podrán 'atropellarse' en un programa. Recomendamos que uses el valor por defecto a menos que tengas en tu red un cliente Windows for Workgroups u otro cliente de formato 8.3, en cuyo caso debería ser upper.
preserve case
Esta opción especifica si un cliente creado por Samba en la parte del cliente es creado con el tipo de carácter proporcionado por el sistema operativo cliente, o por el tipo especificado por la opción de configuración default case anterior. El valor por defecto es yes, el cual usa el tipo proporcionado por el sistema operativo cliente. Si se establece a no, se usará el valor de la opción default case.
Advierte que esta opción no maneja las peticiones de ficheros 8.3 solicitadas por el cliente -mira la opción short preserve case-. Puedes querer establecer esta opción a yessi las aplicaciones que crean ficheros en el servidor Samba son sensiblesal tipo usado cuando se creó el archivo. Si quieres forzar a Samba, por ejemplo, para imitar la conducta de un sistema de archivos de un Windows NT, puedes dejar esta opción a su valor por defecto, yes.
short preserve case
Esta opción especifica si un nombre de archivo 8.3 creado por Samba en la parte del cliente es creado con el tipo por defecto del sistema operativo cliente, o el tipo especificado por la opción de configuración default case. El valor por defecto es yes, el cual usa el tipo proporcionado por el sistema operativo del cliente. Puedes dejar a Samba escoger el tipo de carácter a través de la opción default case configurándola como sigue:
[global]
short preserve case = no
Si quieres forzar a Samba a imitar el funcionamiento de un sistema de archivos de un Windows NT, puedes dejar esta opción configurada a su valor por defecto, yes.
mangled names
Esta opción de nivel de recurso especifica si Samba resumirá archivos para clientes 8. en ese recurso. Si la opción se establece a no, Samba no resumirá los nombres y (dependiendo del cliente), estos serán invisibles o aparecerán truncados para aquellos que usen sistemas operativos 8.3. El valor por defecto es yes. Puedes cambiar esto así:
[data]
mangled names = no
mangle case
Esta opción le dice a Samba si debería resumis nombres de archivos que no están compuesto completamente por caracteres del tipo especificado usando la opción default case. El valor por defecto es no. Si lo estableces a yes, deberías asegurarte de que todos los lcientes serán capaces de manejar los nombres resumidos que resulten. Puedes cambiar esto como sigue:
[data] mangle case = yes
Recomendamos que ignores esta opción, a menos que tengas una necesidad justificada de cambiar esto.
mangling char
Esta opción de nivel de recurso especifica el carácter de resumen a usar cuando Samba resuma nombres de archivos al formato 8.3. El valor por defecto es la vírgula (~). Puedes cambiarlo por el que quieras, como por ejemplo:
[data]
mangling char = #
mangled stack
Samba mantiene una pila local de nombres de archivos recientemente resumidos al formato 8.3; esta pila puede ser usada para mapeado inverso de nombres resumidos, para devolverlos a su estado original. Esto es frecuentemente necesitado por aplicaciones que crean y almacena archivos, los cierran, y necesitan modificarlos más tarde. El número por defecto de pares 'nombre largo'/'nombre resumido' almacenados en esta pila es 50. Sim embargo, si quieres acortar la cantidad de tiempo de proceso usado para resumir nombres de archivos, puedes incrementar el tamaño de la pila al que quieras, a expensas de la memoria y de un acceso al archivo ligeramente más lento.
[global] mangled stack = 100
mangled map
Si la conducta por defecto de planchado de nombre no es suficiente, puedes darle a Samba más completas instrucciones sobre cómo comportarse usando la opción mangled map. Esta opción te permite especificar patrones de mapeado que pueden ser usados antes o en lugar del tipo de resumen realizado por Samba. Por ejemplo:
[data] mangled map =(*.database *.db) (*.class *.cls)
Aquí, Samba es instruido para buscar cada fichero que encuentre con caracteres que coincidan con el primer patrón especificado en los paréntesis y los convierte al segundo patrón especificado en lo otros paréntesis para displayarlo en un cliente 8.3. Esto es útil en el caso de que el planchado de nombres convierta el nombre del archivo incorrectamente, o a un formato que el cliente no pueda comprender. Los patrones están separados por espacios en blanco.