Clientes SFTP que fazem upload de arquivos com direitos muito restritivos

3

Eu tenho a seguinte configuração:

  • Servidor Ubuntu 14.4 oferecendo serviço SFTP em uma área de front-end.
  • Os clientes externos podem fazer o upload de arquivos.
  • Um processo de back-end (em outro servidor) rastreia arquivos carregados, aciona algumas tarefas de back-end e modifica os arquivos de acordo com o resultado das tarefas.

Os usuários do SFTP possuem a propriedade dos arquivos enviados por eles. Os usuários de SFTP e o processo de back-end são membros do mesmo grupo. Com uma umask de 0007, o processo de backend pode acessar e modificar esses arquivos.

No entanto, alguns usuários enviam arquivos com direitos 600'ish , tornando o processo de back-end incapaz de lidar com esses arquivos.

Existem muitas maneiras de restringir direitos (umask, acl), mas não consegui encontrar uma maneira de conceder automaticamente acesso de grupo a arquivos enviados com direitos muito restritivos.

Existe uma maneira de transformar automaticamente os arquivos enviados com 600 ou 640 direitos para 660?

    
por Olivier Dauby 22.10.2015 / 17:09

2 respostas

3

Isso é comum sempre verde para sftp . De SuperUser :

Antecedentes

Este é um problema permanente de sftp e compartilhamento de arquivos. Isso ocorre porque as permissões resultantes são baseadas na permissão original do arquivo no lado do usuário e o argumento umask ( -u ) não está forçando essas permissões, mas apenas removendo as permissões indesejadas. Isso significa que somente se o usuário tentar carregar o arquivo com permissão 0777 , ele será aplicado e desclassificado para 0775 . Caso contrário, é apenas deixado como estava. Por exemplo, se o usuário tiver um arquivo armazenado em seu sistema de arquivos com permissão 0700 , ele também aparecerá após o upload como 0700 .

Solução

Recentemente, resolvemos esse problema no Fedora aplicando o patch que está forçando a permissão exata de novos arquivos enviados, que é baseado neste:

link

Isso estará disponível no CentOS em poucos meses, não tenho certeza sobre o debian.

Solução alternativa

Não há outra solução elegante, exceto algum script de execução periódica (de cron ), que está corrigindo as permissões erradas. Seria um one-liner no bash, mas eu acho que você pode pensar em alguns. Eu posso elaborar mais sobre isso se você estiver interessado.

Debian?

Para sistemas baseados em debian, provavelmente há solução alternativa usando bindfs : Basicamente, ele monta um diretório em outro e você pode forçar todas as permissões a se comportar da maneira que desejar.

    
por 22.10.2015 / 18:37
2

Ok, finalmente usei o iwatch.

/ etc / default / iwatch:

START_DAEMON=true
CONFIG_FILE=/etc/iwatch/iwatch.xml

/etc/iwatch/iwatch.xml:

<?xml version="1.0" ?>
<!DOCTYPE config SYSTEM "/etc/iwatch/iwatch.dtd" >

<config>
  <guard email="" name=""/>
  <watchlist>
    <title>Fix SFTP rights of uploaded files -- grant group access</title>
    <contactpoint email="" name=""/>
    <path type="recursive" alert="off" exec="chmod g+rw %f" events="close_write">/home/sftpusers</path>
  </watchlist>
</config>

Onde / home / sftpusers é o lugar onde os usuários do sftp têm seus diretórios home.

Dessa forma, cada vez que um arquivo é carregado (close_write acionado) por um usuário sftp, ele recebe instantaneamente um tratamento chmod g + rw.

Isso resolveu meu problema muito bem.

    
por 23.10.2015 / 12:10