¿Cómo poner la umask deseada con SFTP?

23

Tengo un servidor SFTP (openssh / sftp-server) y me gustaría configurar umask 002 para los usuarios que usan este servicio. Intenté configurar PAM (pam.d / common-session) y .profile para cada usuario, pero no tuve suerte.

Con el inicio de sesión SSH todo está bien, pero cuando lo intento con SFTP (con gFTP) tengo el 022 umask configurado.

Ya intenté usar un contenedor para sftp-server que está cambiando la umask antes de llamar al sftp-server, no tuve suerte.

¿Alguna ayuda? ¡Muchas gracias!

mat_jack1
fuente

Respuestas:

25

Desde OpenSSH 5.4p1, creo, puede usar la opción "-u", por ejemplo:

Subsystem sftp /usr/lib/openssh/sftp-server -u 022

Desde la página del manual:

 -u umask
         Sets an explicit umask(2) to be applied to newly-created files
         and directories, instead of the user's default mask.
Weboide
fuente
¡¡eso es bueno!! Voy a echar un vistazo lo antes posible y reportar mi hallazgos :)
mat_jack1
55
Para aquellos sin la opción -u, esto funciona:Subsystem sftp /bin/sh -c 'umask 0002; /usr/lib/openssh/sftp-server'
Steve Clay
1
Buena solución. Resuelve el problema con los shells y las aplicaciones del cliente, como CyberDuck, que establecen sus permisos predeterminados independientemente de la máscara de sistema. Me pareció útil asegurarme de que cada aplicación cliente establezca los permisos correctos para permitir que mis usuarios trabajen juntos en archivos grupales. Puede ser útil agregar también que esta configuración no impedirá a los usuarios personalizar los permisos de los archivos si lo desean.
gerlos
Una última cosa para agregar: si solo necesita la función sftp y no necesita dar a sus usuarios acceso al shell, puede considerar también usar rssh en lugar de bash para sus shells, y configurar umask predeterminado para ellos en /etc/rssh.conf . Esto puede hacer que su servidor sea más seguro
gerlos
7

Espero que esto pueda salvar a alguien más horas de frustración ...

Si está utilizando una aplicación GUI SFTP, verifique sus preferencias para configurar permisos en la carga.

Había probado todas las soluciones anteriores, y resulta que la aplicación las estaba anulando.

Malcolm
fuente
^^ Sí, durante mucho tiempo he estado configurando el umask en la conexión sftp haciendo un script similar a la solución de Weboide. Recientemente me estaba rascando la cabeza por qué esto no parecía funcionar tan bien como en el pasado. Bueno, aparentemente en algún momento una actualización de mi cliente SFTP hizo que configurara explícitamente la umask después de conectarse con ssh, así que imagínense.
Jared Kipe
No se trata solo de GUI. Ni siquiera clientes. Me llevó demasiado tiempo descubrir que el archivo de prueba que cargué tenía 0600 que el cliente (OpenSSH sftp) copió en el lado remoto.
xebeche
¡Gracias! Pasé tanto tiempo jugando con permisos por nada.
Tania Rascia
2

¡Después de muchas horas tratando de aplicar varios hacks y soluciones, he encontrado una solución adecuada!

Hay un parche para SSH que le permite elegir la umask que desea para SFTP. Puede descargarlo aquí: http://sftpfilecontrol.sourceforge.net/

Para mí (OpenSSH_5.2p1 + sftpfilecontrol-v1.3, OpenSSL 0.9.8g 19 oct 2007) ¡funciona perfectamente!

mat_jack1
fuente
2
Solo para notar que la opción '-u' para configurar la umask está disponible en OpenSSH desde 5.4p1, vea mi respuesta más abajo.
Weboide el
2

En el archivo de configuración ssh también puede usar esto para establecer el modo del archivo específicamente (anulando cualquier chmod que el cliente pueda intentar configurar). Aquí estoy usando internal-sftp pero supongo que sería lo mismo para sftp-server:

ForceCommand internal-sftp -u 0022   
cloudranger
fuente
0

Para citar este mensaje :

Esto funciona bien agregando una línea "umask 007" en /etc/init.d/ssh.

Bash usa .profilepara shells de inicio de sesión interactivos. No creo que sftpcuente como uno. Es posible que pueda configurar la umask /etc/bash.bashrco ~/.bashrcsi la sugerencia anterior no funciona o si desea un control más detallado.

Pausado hasta nuevo aviso.
fuente
2
gracias por la respuesta, pero ya tenía en ssh umask 002 (probé también 0002) y no funciona :( tampoco se tiene en cuenta bashrc, ya que con un cliente SFTP externo no creo que se use bash. Si intento acceder directamente con ssh todo está bien Mi problema sólo con los clientes SFTP Gracias..!
mat_jack1
Vaya, tienes razón. No sé por qué estaba pensando en que Bash estuviera involucrado.
Pausado hasta nuevo aviso.
0

Consulte esta pregunta para encontrar una solución simple que no requiera versiones específicas de openssh ni parches personalizados.

Unode
fuente