Sistema Operacional: Debian lenny Serviços: mysql, apache, php, quota, proftpd, libcrypt-passwdmd5-perl
Inserção de usrquota na partição desejada no arquivo /etc/fstab :
Ex: UUID=14dede4b-9f86-43a4-a338-56ee6728eae9 / ext4 errors=remount-ro,usrquota 0 1
root@server:~#cd /etc/proftpd/ root@server:~#nano proftpd.conf
Para delimitar o acesso a home:
DefaultRoot ~
Não requerer que os usuários tenham um shell valido:
RequireValidShell off
root@server:~#/etc/init.d/proftpd restart
Na configuração do ProFTPD, o suporte TLS precisa ser ativado. A mesma é feita em duas fases: primeiro deve-se configurar o módulo TLS no arquivo de configuração /etc/proftpd/tls.conf e em seguida incluir esta configuração no arquivo de configuração principal /etc/proftpd/proftpd.conf.
A configuração do módulo TLS é feita no ficheiro /etc/proftpd/tls.conf:
# [...] <IfModule mod_tls.c> TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol SSLv23 # [...] # Server SSL certificate. # [...] # [...] TLSRSACertificateFile /etc/ssl/certs/server.crt TLSRSACertificateKeyFile /etc/ssl/private/server.key.insecure # [...] # Are clients required to use FTP over TLS when talking to this server? # TLSRequired on # [...]
Os certificados usados em TLSRSACertificateFile e TLSRSACertificateKeyFile já devem estar gerados (saiba mais). A opção TLSRequired on obriga a que os clientes ftp usem o protocolo TLS, caso contrário não aceitará ligações. Se esta opção for desligada (TLSRequired off), o servidor aceitará ligações seguras e não seguras.
Em seguida esta configuração deverá ser incluída no arquivo de configuração principal /etc/proftpd/proftpd.conf:
# [...] # # This is used for FTPS connections # Include /etc/proftpd/tls.conf # [...]
root@server:~# /etc/init.d/proftpd restart root@server:~# reboot
Deve ser usada uma biblioteca de encriptação para ser utilizada no comando “useradd”, parâmetro de senha, no script de criação de usuários mostrado mais a frente.
# apt-get install libcrypt-passwdmd5-perl
Crie um arquivo, senha.pl, com as informações abaixo na pasta /usr/bin :
#nano /etc/bin/senha.pl
#!/usr/bin/perl use Crypt::PasswdMD5; # Criptografa a senha do usuário @itoa64=split(//,"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); srand(); $salt=""; for($i=0;$i<8;$i++){ $salt .= "$itoa64[rand(64)]"; } $password=$ARGV[0]; $md5_crypted_passwd = unix_md5_crypt($password,$salt); print("$md5_crypted_passwd");
Adicione poder de execução
#chmod +x /usr/bin/senha.pl
Dois arquivos de texto com informações dos clientes devem ser criados na pasta /var/www, um contendo a listagem de matricula e cpf (separados por vírgula) (uma linha, um aluno) dos alunos que terão contas criadas (usuarios.txt) e outro contendo apenas as matrículas (usuariosquota.txt), excluindo o primeiro da lista usuarios.txt.
Ex: usuarios.txt
07L02114,87697785315 07L02122,00386012300 07L02360,01440126348
Ex:usuariosquota.txt
07L02122 07L02360
Deve-se criar o script, cria_usu.sh, que cria todas as contas dos usuários na máquina, suas homes e também os bancos de dados associado as contas respectivas, tendo como arquivo de entrada usuarios.txt.
Script cria_usu.sh:
#!/bin/sh while read linha do login=`echo $linha | cut -d, -f1` senha=`echo $linha | cut -d, -f2` echo "Lendo usuario login:$login senha:$senha" #cria home do usuario mkdir /var/www/$login echo "Home:/var/www/$login criada." #cria usuario useradd -d /var/www/$login -s /bin/false -p $(senha.pl $senha) $login echo "Usuario login:$login senha:$senha criado." chown $login:$login /var/www/$login chmod 777 /var/www/$login #cria banco do usuario mysql -uroot -psenhadorootbanco -e "create database $login;" #cria usuario do banco mysql -uroot -psenhadorootbanco -e "GRANT ALL PRIVILEGES ON $login.* TO '$login'@'%' IDENTIFIED BY '$senha'" echo "Banco $login criado. Acesso por usuario:$login e senha:$senha." echo "--------" done < usuarios.txt
Após criado o arquivo, deve-se dar permissão de execução:
#chmod +x /var/www/cria_usu.sh
Em seguida, executa-se o script:
#./var/www/cria_usu.sh
Após todos os usuários terem sido criados, deve-se criar o script que definirá a quota de cada um. Mas antes, deve-se configurar um usuário manualmente para servir de base para o script. Então para o primeiro usuário da lista usuarios.txt:
#edquota -u usuário -> colocar tamanho de quota nos primeiros soft hard em kbytes mesmo valor
Ex: Quota de 40000kb
Filesystem blocks soft hard inodes soft hard /dev/disk/by-uuid/8fc82034-37bd-407f-b291-cb86acc3afab 16 40000 40000 4 0 0
O script para definir as quotas para todos os usuários, quota.sh, baseado no arquivo de entrada usuarioquota.txt, deve ser criado em /var/www e conter o seguinte:
Script quota.sh:
#!/bin/bash usuarios=usuariosquota.txt linhas=`cat "$usuarios"` for linha in $linhas; do edquota -p 07L02114 $linha done
Após criado o arquivo, deve-se dar permissão de execução:
#chmod +x /var/www/quota.sh
Em seguida, executa-se o script:
#./var/www/quota.sh
Neste ponto todos os usuários estão cadastrados com acesso apenas a sua home, sem shell, com acesso ftps e a um banco de dados.
FIM
http://www.vivaolinux.com.br/etc/proftpd.conf-robertors
http://www.devin.com.br/shell_script/
http://thobias.org/doc/shell_bd.html
http://ubuntuforum-br.org/index.php?topic=69956.0
http://www.hardware.com.br/comunidade/useradd-senha/238143/
http://apostilas.fok.com.br/manual-do-php/function.crypt.php
http://dev.mysql.com/doc/refman/4.1/pt/grant.html
http://www.brunorusso.eti.br/dicas/mysql/comando-para-criar-usuario-no-mysql
http://servidordebian.wikidot.com/squeeze:internet-ftp-proftpd-tls-ssl
http://servidordebian.wikidot.com/squeeze:intranet-ssl-cert-self-signed