Differences

This shows you the differences between two versions of the page.

Link to this comparison view

proftpd_mysql_dproftpadmin_debian_squeeze_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== ProFTPD + MySQL + DProFTPAdmin + Debian Squeeze ======
 +
 +
 +Aqui vou abordar a configuração do ProFTPD com autenticação em MySQL com um gerenciador web de usuários que eu desenvolvi atualmente ele esta na versão 01 então erros e correções favor me informar, pois a intenção desse gerenciador web é ajudar o usuário final.
 +
 +Prepare o seu sistema com o seguinte script http://​wiki.douglasqsantos.com.br/​doku.php/​confinicialsqueeze_en para que não falte nenhum pacote ou configuração.
 +
 +Vamos instalar os pacotes para o ProFTPD dar suporte a quota
 +
 +<sxh bash>
 +aptitude install quota quotatool -y
 +</​sxh>​
 +
 +Agora vamos editar o /etc/fstab para acertar o suporte a quota o sistema de arquivo ext3 usa usrquota e grpquota os ext4 e xfs utilizam usrjquota e grpjquota então configure de acordo com o seu sistema de arquivos
 +
 +<sxh bash>
 +vim /etc/fstab
 +[...]
 +#​configurando com sistema de arquivos ext3
 +/​dev/​sda6 ​     /home        ext3    defaults,​errors=remount-ro,​usrquota,​grpquota 0       1
 +#​configurando com sistema de arquivos ext4
 +/​srv/​ext4 ​     /home        ext4    defaults,​usrjquota=aquota.user,​grpjquota=aquota.group,​jqfmt=vfsv0 ​       0       2
 +#​configurando com sistema de arquivos xfs
 +/​srv/​xfs ​      /​home ​       xfs     ​defaults,​usrjquota=aquota.user,​grpjquota=aquota.group,​jqfmt=vfsv0 ​       0       2
 +</​sxh>​
 +
 +Agora vamos a configuração e ao ajuste de quotas
 +
 +Vamos criar os arquivos de controle de quotas e vamos acertar as permissões deles
 +
 +<sxh bash>
 +touch /​home/​aquota.user /​home/​aquota.group
 +touch /​home/​quota.user /​home/​quota.group
 +chmod 600 /​home/​quota.*
 +</​sxh>​
 +
 +Agora vamos remontar o sistema de arquivos e ativar as quotas
 +
 +<sxh bash>
 +cd /
 +mount -o remount,rw /home
 +quotacheck -vaguM
 +quotaon -vagu
 +</​sxh>​
 +
 +Para editar quota utilizarmos o seguinte comando
 +
 +<sxh bash>
 +edquota usuario
 +</​sxh>​
 +
 +Para visualizar as quotas dos usuários utilizamos o seguinte comando
 +
 +<sxh bash>
 +repquota -av
 +</​sxh>​
 +
 +Vamos instalar o MySQL e suas dependências
 +
 +<sxh bash>
 +aptitude install mysql-server mysql-client libmysqlclient-dev -y
 +</​sxh>​
 +
 +Agora vamos instalar o apache e suas dependências
 +
 +<sxh bash>
 +aptitude install apache2 apache2-doc libapache2-mod-php5 libapache2-mod-perl2 php5 php5-cli \
 +php5-common php5-curl php5-dev php5-xmlrpc php5-gd php5-imap php5-mhash php5-mysql php5-odbc \
 +php-pear curl libwww-perl imagemagick -y
 +</​sxh>​
 +
 +Agora vamos habilitar alguns módulos do apache
 +
 +<sxh bash>
 +a2enmod ssl
 +a2enmod rewrite
 +a2enmod suexec
 +a2enmod include
 +</​sxh>​
 +
 +Vamos reiniciar o apache
 +
 +<sxh bash>
 +/​etc/​init.d/​apache2 restart
 +</​sxh>​
 +
 +Vamos instalar o proftpd e o seu módulo para conexão em MySQL
 +
 +<sxh bash>
 +aptitude install proftpd libcrypt-mysql-perl proftpd-mod-mysql -y
 +#Opções Selecione "​standalone"​ ou "​autônomo"​
 +</​sxh>​
 +
 +Agora vamos criar o grupo e o usuário para o nosso proftpd
 +
 +<sxh bash>
 +groupadd -g 2001 ftpgroup
 +useradd -u 2001 -s /bin/false -d /bin/null -c "​proftpd user" -g ftpgroup ftpuser
 +</​sxh>​
 +
 +Vamos remover arquivos que não seram necessários
 +
 +<sxh bash>
 +cd /var/www/
 +rm -rf *
 +</​sxh>​
 +
 +Obtendo o pacote do dproftpadmin
 +
 +<sxh bash>
 +cd /var/www
 +wget -c http://​wiki.douglasqsantos.com.br/​Downloads/​misc/​dproftpadmin_v01.tar.gz
 +</​sxh>​
 +
 +Desempacotando o dproftpadmin
 +
 +<sxh bash>
 +tar -xzvf dproftpadmin_v01.tar.gz
 +</​sxh>​
 +
 +Acertando a localização dos arquivos
 +
 +<sxh bash>
 +mv html/* .
 +rm -rf html dproftpadmin_v01.tar.gz
 +</​sxh>​
 +
 +Acertando as permissões de diretórios e arquivos
 +
 +<sxh bash>
 +find . -type d -exec chmod 755 {} \;
 +find . -type f -exec chmod 644 {} \;
 +</​sxh>​
 +
 +Acertando o dono dos arquivos
 +
 +<sxh bash>
 +chown -R www-data:​www-data /var/www/
 +</​sxh>​
 +
 +Agora precisamos importar o banco de dados
 +
 +<sxh bash>
 +mysql -u root -p < database/​base.sql
 +</​sxh>​
 +
 +Agora já podemos acessar o nosso DProFTPAdmin em [[http://​ip_servidor|http://​ip_servidor]]
 +  * Usuário: admin
 +  * Senha: admin
 +
 +Agora vamos acertar o proftpd
 +
 +<sxh apache>
 +vim  /​etc/​proftpd/​proftpd.conf
 +[...]
 +UseIPv6 ​                        off
 +[...]
 +IdentLookups off
 +ServerIdent on "FTP Server ready."​
 +[...]
 +DefaultRoot ~
 +[...]
 +User                            proftpd
 +Group                           ​ftpgroup
 +[...]
 +Include /​etc/​proftpd/​sql.conf
 +</​sxh>​
 +
 +Agora temos que habilitar os modulos do sql e do mysql no proftpd
 +
 +<sxh apache>
 +vim /​etc/​proftpd/​modules.conf
 +[...]
 +LoadModule mod_sql.c
 +[...]
 +LoadModule mod_sql_mysql.c
 +</​sxh>​
 +
 +Agora vamos editar o arquivo de conexão do proftpd com o MySQL
 +
 +<sxh apache>
 +vim /​etc/​proftpd/​sql.conf
 +<​IfModule mod_sql.c>​
 +
 +#Banco de Dados que vai ser utilizado
 +SQLBackend ​ mysql
 +SQLEngine on
 +
 +# Utilizar o tipo de autenticação aqui estou utilizando o crypt e o plaintext
 +SQLAuthTypes crypt plaintext
 +
 +#Como vai ser a autenticação
 +SQLAuthenticate ​        ​users* groups*
 +
 +# Aqui estamos informando como foi feita a conexão
 +# databasename@host database_user user_password
 +# estes parametros de usuário e senha foram importados no base.sql do dproftpadmin
 +SQLConnectInfo ​ dproftpadmin@localhost proftpd password
 +
 +#Aqui informamos para o proftpd o nome da tabela de usuários e quais campos vão ser utilizados por ele
 +SQLUserInfo ​    ​ftpuser userid passwd uid gid homedir shell
 +
 +# Aqui informamos para o proftpd o nome da tabela de grupos e quais campos vão ser utilizados
 +SQLGroupInfo ​   ftpgroup groupname gid members
 +
 +# Definindo o UID minimo e GID minimo
 +SQLMinID ​       2001
 +
 +# Criar o diretório home do usuário caso não exista
 +CreateHome on
 +
 +# Fazendo o update da quantidade de acessos do usuário
 +SQLLog PASS updatecount
 +SQLNamedQuery updatecount UPDATE "​count=count+1,​ accessed=now() WHERE userid='​%u'"​ ftpuser
 +
 +# Fazendo o pdate da hora da modificação pelo usuário tanto upload de arquivos como remoçãoSQLLog ​ STOR,DELE modified
 +SQLNamedQuery modified UPDATE "​modified=now() WHERE userid='​%u'"​ ftpuser
 +
 +# Parametros de quota
 +QuotaEngine on
 +QuotaDirectoryTally on
 +QuotaDisplayUnits Mb
 +QuotaShowQuotas on
 +
 +SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session,​ limit_type, bytes_in_avail,​ bytes_out_avail,​ bytes_xfer_avail,​ files_in_avail,​ files_out_avail,​ files_xfer_avail FROM ftpquotalimits WHERE name = '​%{0}'​ AND quota_type = '​%{1}'"​
 +
 +SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used,​ bytes_out_used,​ bytes_xfer_used,​ files_in_used,​ files_out_used,​ files_xfer_used FROM ftpquotatallies WHERE name = '​%{0}'​ AND quota_type = '​%{1}'"​
 +
 +SQLNamedQuery update-quota-tally UPDATE "​bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '​%{6}'​ AND quota_type = '​%{7}'"​ ftpquotatallies
 +
 +SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies
 +
 +QuotaLimitTable sql:/​get-quota-limit
 +QuotaTallyTable sql:/​get-quota-tally/​update-quota-tally/​insert-quota-tally
 +
 +#Não liberar o root a efetuar login
 +RootLogin off
 +
 +#Não necessita de um shell valido
 +RequireValidShell off
 +</​IfModule>​
 +</​sxh>​
 +
 +Agora vamos reiniciar o proftpd para testarmos a configuração
 +
 +<sxh bash>
 +/​etc/​init.d/​proftpd restart
 +Stopping ftp server: proftpd.
 +Starting ftp server: proftpd.
 +</​sxh>​
 +
 +Vamos acertar as permissões do diretório raiz do ftp aonde o usuário admin vai ter acesso
 +
 +<sxh bash>
 +chgrp -R ftpgroup /home/ftp
 +chmod -R 775 /home/ftp
 +</​sxh>​
 +
 +Agora vamos fazer um teste de conexão ftp no servidor mesmo com o usuário admin e senha admin que foi criado pelo dproftpadmin
 +
 +<sxh bash>
 +ftp localhost
 +Connected to localhost.
 +220 FTP Server ready.
 +Name (localhost:​root):​ admin
 +331 Password required for admin
 +Password:
 +230-Welcome,​ archive user admin@localhost !
 +230-
 +230-The local time is: Mon Dec 26 18:10:54 2011
 +230-
 +230-This is an experimental FTP server. ​ If you have any unusual problems,
 +230-please report them via e-mail to <​root@debian.douglasqsantos.com.br>​.
 +230-
 +230 User admin logged in
 +Remote system type is UNIX.
 +Using binary mode to transfer files.
 +ftp> quit
 +221 Goodbye.
 +</​sxh>​
 +
 +Agora vamos criar um novo usuário no proftpdadmin e vamos efetuar login com ele
 +
 +<sxh bash>
 +ftp localhost
 +Connected to localhost.
 +220 FTP Server ready.
 +Name (localhost:​root):​ douglas
 +331 Password required for douglas
 +Password:
 +230 User douglas logged in
 +Remote system type is UNIX.
 +Using binary mode to transfer files.
 +ftp> mkdir novo
 +257 "/​novo"​ - Directory successfully created
 +ftp> ls
 +200 PORT command successful
 +150 Opening ASCII mode data connection for file list
 +drwxr-xr-x ​  2 douglas ​ ftpgroup ​    4096 Dec 26 18:15 novo
 +226 Transfer complete
 +ftp> quit
 +221 Goodbye.
 +</​sxh>​
 +
 +
 +Need to take a look at it
 +<sxh apache>
 +<​IfModule mod_quotatab.c>​
 +    QuotaEngine on
 +    QuotaLog /​var/​log/​ftpd/​quota.log
 +</​IfModule>​
 +</​sxh>​
 +
 +===== Referências =====
 +
 +  - [[http://​www.proftpd.org/​|http://​www.proftpd.org/​]]
 +  - [[http://​www.proftpd.org/​download.html|http://​www.proftpd.org/​download.html]]
 +  - [[http://​www.proftpd.org/​docs/​|http://​www.proftpd.org/​docs/​]]
 +  - [[http://​www.proftpd.org/​docs/​howto/​index.html|http://​www.proftpd.org/​docs/​howto/​index.html]]
 +  - [[http://​www.proftpd.org/​docs/​example-conf.html|http://​www.proftpd.org/​docs/​example-conf.html]]