Cálculo de la máscara de creación de archivos predeterminada de Samba

Cálculo de la máscara de creación de archivos predeterminada de Samba

Hola, tengo una pregunta y no encuentro una respuesta relevante. La situación es que configuré el servidor Samba e intento crear un archivo y una carpeta desde una máquina con Windows. Todo funciona como se esperaba, pero existe el pequeño problema de que samba elimina x bits del grupo y otros archivos. Un código de ejemplo simple:

drwx--x--x.   4 root root  4096 Dec 13 20:01 smb
drwxrwx--x. 2 root amikon 4096 Dec 15 22:17 pokus

[pokus]
path = /smb/pokus
public = no
writable = yes
valid users = @amikon

[root@wserver pokus]# ls -l
drwxr-xr-x. 2 vanek amikon 4096 Dec 21 10:14 dir
-rwxr--r--. 1 vanek amikon    0 Dec 21 10:14 file.txt

De muchos experimentos que hice, entendí que al crear una entrada (archivo o directorio) desde Windows, Samba funciona de manera lógica Y desde la máscara y los derechos predeterminados provenientes de la máquina con Windows. Este comportamiento puede ser más o menos influyente al usar crear máscara y forzar el modo de creación (y el otro configurado para directorios); funciona como se esperaba sin ningún problema.

Descubrí que el problema de la falta de 0011 persiste independientemente del uso de la máscara de creación 755: los bits x aún se eliminan del archivo. La única opción es usar el modo de creación forzada 755. Después de eso, los bits permanecen porque O los anuncian.

He probado otras opciones de creación de máscara y parece que 0011 del archivo se elimina cada vez. 755, 777, 333... entonces parece que podría ser algún mecanismo de protección que elimine x del grupo y otros impidan que los scripts se ejecuten solo por el propietario.

Pero mi pregunta es sobre el ejemplo exacto anterior. Por qué hay d755 pero -744 como resultado. ¿Dónde ocurrió exactamente la magia de perder a 0011?

Muchas gracias por cualquier sugerencia.

Respuesta1

La magia de perder 0011 ocurre porque es el comportamiento predeterminado de Samba.

Extracto del documento:

Crear máscara: el valor predeterminado de este parámetro elimina el grupo y otros bits de escritura y ejecución de los modos UNIX.

Predeterminado: crear máscara = 0744

Aqui esta el link :http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html

Buscarcreate mask (S)

En este documento, el equipo de Samba no explica por qué eligen implementar este comportamiento predeterminado, pero para mí es fácil pensar en un mecanismo de seguridad (como mencionaste).

Puede usar la inherit permissions = yesdirectiva para hacer que un archivo nuevo herede el permiso de su carpeta principal, pero esto no afectará el bit x. Entonces, en su caso, esto representará:

-rwxrw-r--. 1 vanek amikon    0 Dec 21 10:14 file.txt

Además, como dijiste, para cambiar este comportamiento tendrás que definir explícitamente tu propia máscara. Ahora, la principal diferencia entre "crear" y "forzar creación" es que:

  • create maskquita permisos (una máscara AND)
  • force create modelos agrega después de eso (una máscara OR)

Tampoco create maskes capaz de gestionar x bits para grupos y otros.

Por lo tanto, es posible que tengas que lidiar con ambas directivas para alcanzar algunos objetivos.


Probemos algunos ejemplos:

1) Si solo quieres el bit x para grupo y otros tendrás que combinar:

create mask = 0700 #Remove r bit from group and others 
force create mode = 0711 #Add x bit only to group and others

Resultado : -rwx--x--x 1 kris kris 0 Dec 21 14:20 file.txt


2) Si desea los bits r y x para el grupo y otros, elimine create maskla directiva (porque el valor predeterminado ya es 0744) y simplemente agregue:

    ;create mask = 0700 #remove r bit from group and others (commented)
    force create mode = 0711 #Add x bit only to group and others

Resultado : -rwxr-xr-x 1 kris kris 0 Dec 21 14:17 file.txt


Etcétera...

Espero que te ayude un poco a comprender los comportamientos de Samba.

información relacionada