Bem pessoal, aqui começo eu com uma dica simples. Configurar o servidor VSFTPD que é o padrão RH, e que vem no CentOS.
Depois de muita pesquisa e ajuda do Garme, conseguimos colocar o server de ftp no ar \o/
Requisitos: o obejtivo era criar um servidor ftp semelhante ao de host sharing, onde cada usuario tem acesso apenas a pasta do seu site.
segue aqui como foi que funcionou.
em /etc/vsftpd/vsftpd.conf
temos esse arquivo de configuração
# nao aceita conexao de usuario anonimo
anonymous_enable=no
# usuarios cadastrados localmente podem usar o ftp
local_enable=YES
# eles podem escrever nos diretorios
write_enable=YES
# permissao padrao
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
# --- aqui vem o pulo do gato ---
#Diz que os usuarios locais vao logar em chroot
chroot_local_user=yes
# uma lista com usuarios em chroot
# os usuarios nessa lista NAO vao estar em chroot
chroot_list_enable=YES
# a lista com os usuarios que nao vao participar do chroot
chroot_list_file=/etc/vsftpd/chroot_list
#usa o arquivo /etc/passwd
passwd_chroot_enable=YES
#escutando em IPV4
listen=YES
OBS: isso é o básico para que funcione, você pode achar mais documentação no site do Centos.
ok. temos o arquivo configurado =)
# service vsftpd restart
agora iremos criar um usuario pro ftp.
# adduser ftpuser
# passwd ftpuser
New UNIX password:
Retype new UNIX password:
pronto, temos o usuario criado.
edite o arquivo /etc/passwd
procure a linha referente ao usuario que vc acabou de adicionar.
Nnormalmente, ela estará no final do arquivo.
ftpuser:x:502:502::/home/ftpuser:/bin/bash
Edite a linha , trocando o home do usuário pra onde você quer que ele tenha acesso. e somente naquele diretório.
Ex.: você quer que o usuário tenha acesso apenas ao diretório
/var/www/meusite
entao vamos fazer o seguinte
Antes:
ftpuser:x:502:502::/home/ftpuser:/bin/bash
Depois:
ftpuser:x:502:502::/var/www/meusite:/bin/bash
se o diretório desejado ja exsitir, tudo bem, se nao tiver, vamos criar...
# mkdir /var/www/meusite
vamos dar as permissoes ao novo usuário
chwon -R ftpuser:ftpuser /var/www/meusite
prontinho.
Bem. Com isso, ele ainda nao vai conectar, dependendo as configuraçoes de segurança do Selinux.
para ver se o ftp está habilitado para que os usuários loguem em seus diretorios home , rode o seguinte comando como root:
# getsebool -a | grep ftp
a saida será semelhante a essa :
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
allow_tftp_anon_write --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_disable_trans --> off
ftpd_is_daemon --> on
httpd_enable_ftp_server --> off
tftpd_disable_trans --> off
veja que o ftp_home_dir está off, ou seja, o usuario nao pode logar no seu home =)
pra ativar, é simples. Rode o comando como root:
-->
# setsebool -P ftp_home_dir on
Pronto, está ativado. Vamos verificar ?
# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
allow_tftp_anon_write --> off
ftp_home_dir --> on
ftpd_connect_db --> off
ftpd_disable_trans --> off
ftpd_is_daemon --> on
httpd_enable_ftp_server --> off
tftpd_disable_trans --> off
Pronto ! Com isso o seu servidor FTP irá funcionar :D