Como colocar umask desejada com SFTP?

22

Eu tenho um servidor SFTP (openssh / sftp-server) e gostaria de definir umask 002 para usuários que usam este serviço. Eu tentei definir PAM (pam.d / common-session) e .profile para cada usuário, mas sem sorte.

Com o login SSH está tudo bem, mas quando eu tento com SFTP (com gFTP) eu tenho o conjunto 022 umask.

Eu já tentei usar um wrapper para o sftp-server que está mudando o umask antes de chamar o sftp-server, sem sorte.

Qualquer ajuda? Muito obrigado!

    
por mat_jack1 02.10.2009 / 20:27

6 respostas

2

Depois de muitas horas tentando aplicar vários hacks e correções, encontrei uma solução adequada!

Há um patch para o SSH que permite que você escolha o umask que você deseja para o SFTP. Você pode baixá-lo aqui: link

Para mim (OpenSSH_5.2p1 + sftpfilecontrol-v1.3, OpenSSL 0.9.8g 19 out 2007) está funcionando perfeitamente!

    
por 07.10.2009 / 10:38
22

Desde o OpenSSH 5.4p1 eu acho, você pode usar a opção "-u", por exemplo:

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

Da página do manual:

 -u umask
         Sets an explicit umask(2) to be applied to newly-created files
         and directories, instead of the user's default mask.
    
por 04.11.2010 / 22:02
7

Espero que isso possa salvar alguém com mais horas de frustração ...

Se você estiver usando um aplicativo GUI SFTP, verifique suas preferências para configurar permissões no upload.

Eu já experimentei todas as soluções acima, e parece que o aplicativo estava apenas sobrepujando-as.

    
por 28.11.2011 / 21:41
1

No arquivo de configuração ssh, você também pode usar isso para definir o modo do arquivo especificamente (substituindo qualquer chmod que o cliente possa tentar definir). Aqui estou usando o internal-sftp mas acho que seria o mesmo para o sftp-server:

ForceCommand internal-sftp -u 0022   
    
por 27.04.2017 / 12:34
0

Para citar esta mensagem :

I got this working okay by adding a "umask 007" line in /etc/init.d/ssh.

O Bash usa o .profile para os shells de login interativos. Eu não acho que sftp conta como um. Você pode ser capaz de definir o umask em /etc/bash.bashrc ou ~/.bashrc se a dica acima não funcionar ou se você quiser um controle mais refinado.

    
por 02.10.2009 / 20:40
0

Consulte esta questão para encontre uma solução simples que não exija versões de openssh específicas nem patches personalizados.

    
por 02.02.2011 / 18:32