No puedo obtener samba para establecer los permisos adecuados en los directorios creados

17

Tengo un servidor ubuntu que comparte algunas carpetas con samba. Cuando un cliente crea una nueva carpeta o archivo, los permisos no se establecen de acuerdo con la configuración en smb.conf.

Mi configuración actual para un recurso compartido específico:

[share]
    path = /mnt/share
    browsable = yes
    guest ok = no
    writable = yes
    read only = no
    create mask = 0774
    directory mask = 0774
    write list = netuser

Cuando un cliente samba (un cuadro de Windows 7) usa la cuenta 'netuser' para crear un archivo o directorio, los permisos se vuelven

drwxr-sr-- 2 netuser sambashare      4096 2012-01-22 21:14 New folder
-rwxrw-r-- 1 netuser sambashare         0 2012-01-22 21:07 New Text Document.txt

El directorio principal tiene el indicador de id del grupo establecido, por lo tanto, el propietario del grupo sambashare La idea es que tanto los usuarios de samba como los usuarios del servidor pertenezcan al grupo sambashare y, por lo tanto, puedan editar, eliminar y crear archivos y directorios. Sin embargo, dado que las carpetas creadas no tienen el indicador de escritura para el grupo establecido, los usuarios del servidor no pueden crear nuevos archivos o carpetas en esas carpetas sin sudo.

He probado agregar y quitar la máscara de directorio, forzar modo de directorio, modo de seguridad de directorio y el modo de seguridad de directorio forzado, pero los comportamientos aún permanecen. Los archivos y carpetas recién creados no obtienen el permiso 774 previsto, sino 764 y 754 respectivamente.

¿Qué me estoy perdiendo? ¿Por qué samba no establece los permisos correctos?

Zaz
fuente

Respuestas:

19

Creo que necesitas usar los siguientes parámetros:

# I changes the permissions to rw-rw-r--
# You should be able to change them to 775 if you need the files to
# be executable
create mask = 664
force create mode = 664
security mask = 664
force security mode = 664

# I set the SGID flag here as I thought this is what you wanted
# You could change to 0775
directory mask = 2775
force directory mode = 2775
directory security mask = 2775
force directory security mode = 2775

Estaba buscando una buena explicación de cómo funcionan estas configuraciones, pero no pude encontrar nada mejor que man smb.conf

Tendrá que desplazarse un poco hacia abajo para esas opciones.

Básicamente, en pocas palabras, los permisos de Windows no son lo mismo que Unix (Linux) y es un poco extraño cómo samba asigna permisos.

Pantera
fuente
1
Sí, parece ser más o menos la misma página de manual que samba.org/samba/docs/man/manpages-3/smb.conf.5.html que miré, el problema es que no parece importar qué octal valores que configuré, todavía obtengo los mismos permisos establecidos en el archivo o carpeta creado.
Zaz
¿Estableciste todas las opciones que te di? Si es así, actualice su primera publicación y en ese momento le sugeriría que presente un informe de error.
Panther
1
Ya dijo ... pero en una inspección y prueba más minuciosas, agregar el 2 a las máscaras de directorio solucionó el problema. Muchas gracias. : D
Zaz
Fantástico, gracias por marcar esto como la respuesta aceptada, ayuda a otros con un problema similar.
Panther
La configuración de Samba es demasiado compleja y realmente difícil de entender. Por ejemplo, cuál es la diferencia lógica entre crear fuerza y ​​simplemente crear ... no tiene sentido. Sin embargo, su sugerencia es un salvavidas, ¡gracias!
Matthias Hryniszak
8

Después de muchas pruebas y errores, este es el código correcto para compartir el directorio samba usando SGID y grupos unix. Si el usuario se conecta de forma anónima, obtiene r / o, si inicia sesión y es miembro del grupo asignado, obtiene r / w.

Tengo un grupo llamado 'admin' establecido como grupo primario para usuarios con privilegios de escritura, todos los demás tienen derechos de solo lectura.

No fuerzo al usuario a nadie, por lo que diferentes personas que trabajan en los mismos archivos no interfieren entre sí.

Configuré chmod 2755 en el directorio compartido, por lo que hereda los directorios creados con el mismo grupo 'admin'

$ chmod -R 2755 /home/shares/test

Comprobando si todo está bien:

$ stat /home/shares/test
Access: (2755/drwxr-sr-x)  Uid: (65534/  nobody)   Gid: ( 1001/   admin)

Parte relevante de /etc/samba/smb.conf:

[test]
        comment = test
        path = /home/shares/test
        force user = nobody
        read only = No
        create mask = 0664
        force create mode = 0664
        directory mask = 02775
        force directory mode = 02775

Esta publicación me puso en el camino correcto, pero testparm reveló 4 directivas incorrectas, por lo que estoy compartiendo una configuración fija aquí. En samba, cuantas menos directivas especifiques, mejor funcionará.

Andrius K
fuente
6

Tuve el mismo problema, pero todo, como las directivas de máscara , no funcionó para mí (Samba 4.3.11):

 create mask = 0664
 force create mode = 0664
 directory mask = 02775
 force directory mode = 02775

La única opción que funcionó fue en la sección [global] o compartir:

 inherit permissions = yes

Simplemente cambie todos los permisos de carpetas y archivos según sus necesidades, para que las carpetas y archivos futuros hereden los mismos permisos.

Medox
fuente
Estoy usando Samba versión 4.7.6-Ubuntu. Y esto también funciona para mí.
Andi S.
verdadera respuesta para 4.8.11encendido freebsdtambién :)
jitter
3

Existe un problema muy similar al conectarse desde otros dispositivos Unix / Linux / OSX / MacOS: se ignoran todas las configuraciones a menos que especifique

[global]

unix extensions = no

Y conéctate con en smb://<serverhost>lugar de cifs://<serverhost>.

Erik Carlseen
fuente
0
 Here add this code to the sudo nano smb.conf
 and restart sudo service smbd restart  and access from another local PC/computer using connect with smb://<serverhost>  to create or edit files/folder   html is folder name 

 [html]
   comment = admin access
   path = /var/www/html
   browsable = yes
   guest ok = no
   writable = yes
   valid users = @admin
   create mask = 664
   force create mode = 664
   security mask = 664
   force security mode = 664
   directory mask = 2775
   force directory mode = 2775
   directory security mask = 2775
   force directory security mode = 2775
Ghanshyam Nakiya
fuente