¿Samba funciona bien con Windows cuando los nombres sensibles a mayúsculas y minúsculas están habilitados?

12

Quiero tener un recurso compartido * nix Samba accesible para los clientes de Windows.

Samba tiene una opción para habilitar o deshabilitar las mayúsculas y minúsculas del nombre de archivo. Normalmente para el acceso a Windows, esto está deshabilitado, por lo que fred == FRED = fReD.

Sin embargo, esto lleva a un gran problema, AFAICT:

  • En Unix, crea dos carpetas llamadas "RODDY" y "roddy"
  • En Windows, verá ambas carpetas, pero ...
  • Cuando borra / renombra / abre uno de Windows, puede terminar borrando / renombrando / etc. cualquiera de ellos. ¡No tienes forma de saber cuál! .

Entonces, mi pregunta es, ¿cómo se comporta Samba en Windows si el distintivo de mayúsculas y minúsculas está "ACTIVADO"? ¿Puede un usuario ver ambas carpetas y hacer que las operaciones de archivos funcionen de manera coherente?

Roddy
fuente

Respuestas:

12

Debería estar bien. Windows Explorer hace un buen trabajo al mostrar correctamente el caso de nombre de archivo. Lo uso en mi smb.conf para asegurarme de que lo que escribo en el Explorador es lo que usa Samba (configuro todo esto por acción):

case sensitive = True
default case = lower
preserve case = yes
short preserve case = yes

Realicé una prueba rápida (Samba 3.0.24 en el backend, WinXP en el frente). Los archivos se crearon en el servidor samba a través de una sesión SSH.

$ cd /some/samba/share/path
$ mkdir test
$ cd test

$ mkdir test1 TEST1
$ touch test1/foo TEST1/bar

Después de esto, navegué a través de mi unidad asignada al directorio de prueba. Puedo ver los directorios "test1" y "TEST1". Abrí "test1" y vi el archivo "foo". Abrí "TEST1" y vi el archivo "bar". Hasta aquí todo bien.

Luego volví al directorio de prueba y, en la ventana del Explorador, renombré TEST1 a TEST2. Windows se asustó un poco: cambió el nombre de la carpeta, luego mostró AMBAS carpetas como TEST2, y parecía haber cambiado el nombre de ambas carpetas. Pero, en la terminal SSH, verifiqué:

$ ls
test1 TEST2

Entonces, Windows cambió el nombre del archivo y Samba obtuvo el nombre de archivo correctamente. Cuando presioné F5 en la ventana del Explorador para actualizar el contenido de la carpeta, la pantalla cambió para mostrar los nombres correctos de las carpetas.

Advertencia: los sistemas de archivos de Linux permiten algunos caracteres que Windows no admite (como ":"). Samba tiene una opción de "cambio de nombre" para convertir esos nombres de archivo en algo que le gustará a Windows. Si hago un archivo llamado "FA: 23" en mi ventana SSH, por ejemplo, Samba cambia el nombre a "F7T4H0 ~ F" y eso es lo que aparece en la ventana del Explorador.

quijote curandero
fuente
Tenga en cuenta que con un cliente de Windows 95 no puede acceder a directorios dentro de recursos compartidos cuando la case sensitiveopción está habilitada. Debe usar la autoopción en este caso.
devius
Suponga que tiene dos carpetas en su sistema de archivos Unix: Test1 y test1 ¿Cuál verá un usuario en Windows? ¿Puedo asegurarme en Samba de que si existe una carpeta Test1, y alguien en Unix intenta crear una carpeta test1, que se fusiona automáticamente con Test1, para que los usuarios de Windows siempre puedan ver todos los archivos? En mi experiencia, el usuario de Windows no puede ver ambas carpetas si existen Test1 y test1, pero solo una de ellas.
Erik
@Erik Normalmente, ambos aparecerán. Windows comprende la distinción entre mayúsculas y minúsculas en todos los niveles y lo ha implementado en el fondo de sus sistemas de archivos. Aunque no lo intenté.
Tiberiu-Ionuț Stan
1

Las opciones que funcionaron para mí están a continuación:

preserve case           = yes
short preserve case     = yes
surajmohan
fuente