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 = yes
directiva 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 mask
quita permisos (una máscara AND)force create mode
los agrega después de eso (una máscara OR)
Tampoco create mask
es 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 mask
la 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.