5.3.1 Creación de Máscaras.

Samba tiene varias opciones para ayudarnos con la creación de máscaras. La crecación (o eliminación) de máscaras de archivos ayudan a definir los permisos que un archivo o directorio recibirá en el momento de ser creado. En Unix, esto significa que puedes controlar qué permisos no va a tener un archivo o directorio cuando este sea creado. Para archivos accesibles desde Windows, esto significa que puedes desactivar los atributos de sólo lectura, archivo, sistema y oculto de un archivo.

Por ejemplo, la opción create mask forzará que los permisos de un archivo creado por un cliente Windows sean, como mucho,744:

[data]
  path = /home/samba/data
  browseable = yes
  guest ok = yes
  writeable = yes
  create mask = 744

mientras que la opción directory mask que mostramos a continuación forzará los permisos de un recién creado directorio a, como mucho, 755:

[data]
  path = /home/samba/data
  browseable = yes
  guest ok = yes
  writeable = yes
  directory mask = 755

Alternativamente, también puedes forzar varios bits con las opciones force create mode y force directory mode. Estas opciones realizarán un 'OR lógico' contra las máscaras de creación de fichero y directorio, garantizando que estos bits especificados siempre serán establecidos. Podrías establecer estas opciones globalmente para asegurarte de que los permisos de grupo y resto de usuarios de lectura/escritura han sido establecidos apropiadamente para los nuevos archivos o directorios en cada recurso.

Siguiendo la misma filosofía, si quisieras explícitamente establecer los atributos de usuario y grupo de un fichero de Unix que se ha creado desde la parte Windows, puedes usar las opciones force user y force group. Por ejemplo:

[data]
  path = /home/samba/data
  browseable = yes
  guest ok = yes
  writeable = yes
  create mask = 744
  directory mask = 755
  force user = joe
  force group = accounting

Estas opciones actualmente asignan un usuario y grupo Unix estáticos a cada conexión que se realizae a un recurso compartido. Sin embargo, esto ocurre después de que el cliente haya realizado la autentificación; esto no permite acceso libre a un recurso. Estas opciones son frecuentemente usadas por sus capacidades de asignar un determinado usuario y gruop a cada nuevo fichero o directorio que es creado en un recurso. Usa estas opciones con discreción.

Finalmente, una de las capacidades de Unix que DOS no tiene es la habilidad de eliminar un fichero de sólo lectura desde un directorio con permisos de escritura. En Unix, si un directorio es escribible, un fichero de sólo lectura en ese directorio aún puede ser eliminado. Esto te permitiría eliminar ficheros en cualquiera de tus directorios, aunque el archivo hubiera sido depositado por algún otro usuario.

Los sistemas de archivos DOS no están diseñados para múltiples usuarios, y por eso sus diseñadores decidieron que 'sólo lectura' significa 'proteger contra cambios accidentales, incluyendo la eliminación', más que 'proteger contra algún otro usuario en una máquina de un usuario'. Así que los diseñadores del DOS prohibieron la eliminación de un fichero de sólo lectura. Aún hoy día, los sistemas de archivos Windows exhiben la esta característica.

Normalmente, esto no es un problema. Los programas Windows no intentarán eliminar ficheros de sólo lectura porque ellos saben que esa es una mala idea. Sin embargo, un número de programas de control de código fuente -que primero fueron escritos para Unix- funcionan en Windows y requieren la habilidad de eliminar ficheros de sólo lectura. Samba permite esta característica con la opción delete readonly. Para activar esta funcionalidad, establece la opción a yes:

[data]
  path = /home/samba/data
  browseable = yes
  guest ok = yes
  writeable = yes
  create mask = 744
  directory mask = 755
  force user = joe
  force group = accounting
  delete readonly = yes

TLDP-ES 03/11/2002