Aceitar apenas novos uploads de arquivos por SSH

1

Queremos enviar arquivos entre alguns hosts Linux via OpenSSH, mas não queremos que os clientes possam listar / recuperar / modificar arquivos existentes no servidor.

Em outras palavras, deve ser um serviço "somente upload" funcionando sobre o protocolo ssh. É claro que isso significa que sempre haverá uma maneira de o cliente saber se já existe um arquivo com um determinado nome no servidor, tudo bem, já que o conteúdo do arquivo não pode ser recuperado.

Como poderíamos conseguir isso, possivelmente usando softwares já estabelecidos disponíveis em distribuições comuns?

    
por Luke404 10.06.2015 / 18:19

1 resposta

1

Nossa solução atual, parcial, aproveita rsync --ignore-existing e força sua linha de comando no lado do servidor com um (não gravável) ~/.ssh/authorized_keys assim:

command="rsync --server -e.Ls --ignore-existing . ." ssh-ed25519 ABCDEDFGfoobarbaz user@host
  • mais do que suficiente para evitar que usuários ocasionais baixem arquivos remotos
  • pode modificar o arquivo remoto se o cliente usar rsync -r --ignore-existing <single_file> user@server: em vez de rsync -r --ignore-existing <whole_directory> user@server:
  • não tem 100% de certeza se existem outras falhas ou formas de contornar o uso pretendido
  • bónus adicional: o rsync está em todo o lado e tem à mão --bwlimit option

Então, estamos apenas na metade do caminho e essa não é uma solução real e completa.

    
por 10.06.2015 / 18:19

Tags