Configurando servidor ftp na sua Raspberry Pi / Banana Pi / Orange Pi

Neste artigo, irei utilizar o vsftpd, que na minha opinião, é o mais flexível e performático, é utilizado pela redhat, debian e outros.
Os testes foram feitos com a versão 3.0.3 do vsftpd, que foi corrigido o problema do chroot.
Bom, vamos por a mão na massa.


Instalação
  
   # apt-get install libpam-pwdfile vsftpd apache2-utils
 


Configuração
Irei utilizar usuários virtuais no vsftpd, segue abaixo um exemplo da configuração. Para maiores informações, clique aqui
  
  
   # pico /etc/vsftpd.conf
   listen=YES
   anonymous_enable=NO
   local_enable=YES
   virtual_use_local_privs=YES
   write_enable=YES
   connect_from_port_20=YES
   secure_chroot_dir=/var/run/vsftpd
   pam_service_name=vsftpd
   guest_enable=YES
   ftpd_banner=Vsftpd FTP server
   ftp_username=vsftpd
   chmod_enable=YES
   chown_uploads=YES
   chown_username=vsftpd
   guest_username=vsftpd
   force_dot_files=YES
   pasv_enable=YES
   pasv_promiscuous=YES
   pasv_min_port=1024
   pasv_max_port=65535
   port_promiscuous=YES
   port_enable=YES
   listen_port=21
   ftp_data_port=20
   user_sub_token=$USER
   hide_ids=YES
   userlist_enable=YES
   userlist_deny=NO
   userlist_file=/etc/vsftpd/vsftpd_users
   user_config_dir=/etc/vsftpd/vsftpd-virtual-user/
   allow_writeable_chroot=YES
   local_root=/var/ftp
   chroot_local_user=YES
   seccomp_sandbox=NO
  
  


Criando o usuário vsftpd
Vamos criar o usuario vsftpd, usuário local sem shell:
  
  
   # useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
  
  



Adicionando usuário virtual

Com a finalidade de demonstração, vou criar o usuário com o nome de “teste”

  
  
   # mkdir -p /etc/vsftpd/vsftpd-virtual-user            # cria o diretório que será usado para guardar as permissões dos respectivos usuários virtuais.
   # htpasswd -c -d -b /etc/vsftpd/passwd teste "senha   # gera senha para o usuário "teste"
   # echo teste >> /etc/vsftpd/vsftpd_users        # lista dos usuários virtuais.
  
  



Configurando permissões e local do chroot do usuário virtual

  
  
   # pico /etc/vsftpd/vsftpd-virtual-user/teste
     local_root=/var/ftp/usuario1  # local onde será feito o chroot após a autenticação
     local_umask=022               # define o umask do usuário
     write_enable=YES              # habilita a escrita do usuário
  
  

Também pode utilizar o parâmetro “cmds_allowed=”, onde é definido os comandos ftp que será aceito pelo usuário virtual. Um exemplo, se eu quero que o usuario “teste” tenha permissão apenas para executar CWD e DELE, insira na configuração do usuário virtual: cmds_allowed=CWD,DELE


Criando pasta e definindo permissões do usuário virtual

  
  
   # mkdir -p /var/ftp/usuario1
   # chmod -R 755 /var/ftp/usuario1 
   # chown vsftpd:nogroup /var/ftp/usuario1
  
  



Habilitando autenticação pam

  
  
   # pico /etc/pam.d/vsftpd
     auth    required pam_pwdfile.so pwdfile /etc/vsftpd/passwd
     account required pam_permit.so
   # service vsftpd restart     # reinicie o serviço para habilitar as alterações
  
  



Com tudo isto feito, acesse sua plaquinha e transfira seus arquivos a vontade!

Leonardo Lontra
Programador Python/Cython/ShellScript/C/C++/QT/JS e Administrador de Redes.

Apaixonado por visão computacional, em específico Machine Learning/BackgroundSubtractor/Face Recognition e Object Tracking.
Atualmente desenvolvendo trabalhos voltados à contagem de pessoas. Se diverte utilizando suas raspberry’s e odroid’s para detectar rostos e sinalizar quando alguém está prestes a bater à porta para encher o saco.
Que tal nos encontrar no SeuTubo para ver dicas, tutoriais e Reviews de placas? Canal Sistemas Embarcados
Que tal na página do Facebook?
Ou Instagram?
Quem sabe Google Plus?
Que tal no Pinterest?
Ou talvez me encontrar no Twitter para receber as ultimas noticias quentinhas: @SEmbarcados 
E não esqueça que também tem o email, sistemasembarcadosbr@gmail.com
Conheça também nossos grupos do Facebook:
Abraços e até a próxima