Configuración de permisos de grupo predeterminados a través de SFTP

Estoy configurando un servidor de archivos donde los usuarios inician sesión a través de SFTP. Quiero que todos los usuarios tengan los mismos permisos para leer y escribir cualquier archivo. Dado que todos tienen diferentes cuentas con contraseñas diferentes, termino con algo como esto:

-rw-r----- 1 user1 sharing 308 Jul 6 12:03 test2.rtf -rw-r----- 1 user2 sharing 308 Jul 6 12:16 test3.rtf 

El grupo se llama sharing que contiene todos los usuarios. El problema es cuando se escriben archivos, el permiso predeterminado para grupos es sólo lectura.

He intentado establecer el umask en sshd_config :

 Subsystem sftp /bin/sh -c 'umask 0002; /usr/lib/openssh/sftp-server' Match Group sharing ChrootDirectory /files/ ForceCommand internal-sftp -u 002 AllowTCPForwarding no X11Forwarding no 

El facl para el directorio es el siguiente:

 # file: . # owner: root # group: sharing # flags: -s- user::rwx group::rwx group:sharing:rwx mask::rwx other::rx default:user::rwx default:group::rwx default:other::--- 

También en estos lugares:

 init.d/rc:umask 002 init.d/ssh:umask 002 bash.bashrc:umask 002 

Si accedo a través de SFTP, obtengo permisos de 640. Si desactivo el sftp e ingreso como usuario1 vía ssh, y toco un nuevo archivo, obtengo permisos de 660 – que es lo que quiero.

Entonces, ¿cómo puedo conseguir que esto funcione a través de SFTP?

Esto es debian 7 btw.

Yo era capaz de conseguir esto para trabajar en debian con bindfs – que sigue siendo un poco de hacky, pero funciona. Básicamente, monta un directorio en otro y puede obligar a todos los permisos a comportarse como quiera. Así, independientemente de cómo se escriba el archivo en el directorio real, el directorio al que servirá sftp siempre podrá escribirse. Ahora todos mis clientes pueden escribir en archivos que otros usuarios crearon: D

Fondo

Este es un problema permanente de sftp y compartir archivos. Es debido a que los permisos resultantes se basan en el permiso original del archivo en el lado del usuario y el argumento umask ( -u ) no está forzando tales permisos, sino sólo despojando los permisos no deseados. Esto significa que sólo si el usuario intenta cargar el archivo con el permiso 0777 , se aplica y se reduce a 0775 . De lo contrario, sólo queda como estaba. Por ejemplo, si el usuario tiene un archivo almacenado en su sistema de archivos con el permiso 0700 , aparecerá también después de cargarlo como 0700 .

Solución

Recientemente resolvimos este problema en Fedora mediante la aplicación de un parche que está forzando el permiso exacto de los nuevos archivos cargados, que se basa en éste:

https://bugzilla.mindrot.org/show_bug.cgi?id=1844

Esto estará disponible en CentOS en pocos meses, no estoy seguro sobre debian.

Solución

No hay otra solución elegante a excepción de algún script de ejecución periódica (desde cron ), que está arreglando los permisos incorrectos. Sería uno de línea en bash, pero supongo que se puede pensar en algunos. Puedo elaborar sobre esto más si usted está interesado.