Configurando o SFTP no Debian Wheezy

Vamos instalar os pacotes necessários

apt-get install ssh openssh-server -y

Agora vamos adicionar o usuário que será utilizado pelo sftp

useradd -m cliente

Agora precisamos definir uma senha para o cliente

passwd cliente

Como este cliente vai ser utilizado somente para sftp podemos remover os arquivos desnecessários do diretório home dele.

rm -rf /home/cliente/.bash*
rm -rf /home/cliente/.profile
rm -rf /home/cliente/.vimrc

Agora vamos levar em consideração que o cliente precisa de alguns arquivos que estão em outros diretórios no SO, porém links simbólicos não funcionam em ftp ou sftp com isso podemos criar um ponto de montagem em bind que monta um diretório em outra parte do sistema.

Vamos criar estes diretórios bases que estarão visiveis para os usuários.

mkdir -p /home/cliente/BACKUPS
mkdir -p /home/cliente/monitor

Agora vamos ajustar as permissões dos diretórios.

chmod 755 /home/cliente
chown -R root:root /home/cliente
chown -R cliente /home/cliente/*

Agora precisamos inserir os pontos de montagem no /etc/fstab

Aqui vamos levar em consideração:

  1. Diretório de backups no sistema: /etc/sistema/BACKUPS
  2. Diretório de monitor no sistema: /gravacoes/monitor
vim /etc/fstab
[...]
/etc/sistema/BACKUPS /home/cliente/BACKUPS none  bind 0 0
/gravacoes/monitor   /home/cliente/monitor none  bind 0 0

Agora podemos montar as partições

mount -a

Outra questão que precisamos abordar é que alguns cliente podem somente copiar os arquivos das partições sem sofrerem alterações com isso precisamos montar a partição de bind em read-only, porém o /etc/fstab não aceita esta opção com isso precisamos executar manualmente e inserir no /etc/rc.local para subir junto com o sistema.

Executando manualmente

mount -o remount,ro /home/cliente/BACKUPS
mount -o remount,ro /home/cliente/monitor

Adicionando a configuração para subir junto com o SO

vim /etc/rc.local
[...]
mount -o remount,ro /home/cliente/BACKUPS
mount -o remount,ro /home/cliente/monitor

Agora vamos preparar o ssh para suportar o ssh

vim /etc/ssh/sshd_config
[...]
# Adicionar no final do arquivo
#Subsystem sftp /usr/lib/openssh/sftp-server -> esta linha deve ser comentada no arquivo geralmente nao esta no final do arquivo
Subsystem sftp internal-sftp
Match User cliente
    ChrootDirectory /home/cliente
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

Agora precisamos reiniciar o serviço de ssh

/etc/init.d/ssh restart

Agora é so configurar o Filezilla ou o WinSCP e utilizar o nome de cliente e senha que definimos no começo.