FTP casalingo con PURE-FTPD

Per questioni di lavoro, visto che dovevo trasferire una quantità enorme di dati da un pc all’altro ho realizzato un server FTP molto semplice tra l’altro da configurare ed intuitivo. Per prima cosa ho installato MySQL e PHPmyadmin con i seguenti comandi:

FTP casalingo con PURE-FTPD

urpmi.update -a
urpmi MySQL MySQL-client phpmyadmin

Ho abilitato i servizi direttamente da riga di comando:

chkconfig mysqld on chkconfig httpd on

e ho fatto partire i servizi:

/etc/init.d/mysqld start /etc/init.d/httpd restart

Ho creato la password per Mysql digitando questo comando:

mysqladmin -u root password vostrapassword

Configurato Mysql installo pure-ftp con supporto Mysql:

urpmi pure-ftpd pure-ftpd-anon-upload pure-ftpd-anonymous

Una volta installato pure creare l’utente e il gruppo per il server ftp:

groupadd -g 2001 ftpgroup useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g
ftpgroup ftpuser

Adesso creare il database per Pure-ftpd:

mysql -u root -p
CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO
'pureftpd'@'localhost' IDENTIFIED BY 'vostrapassword';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO
'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';
FLUSH PRIVILEGES;

Ora dobbiamo creare la tabella per i virtualserver:

USE pureftpd;
CREATE TABLE ftpd (   User varchar(16) NOT NULL default '',   status enum('0','1') NOT NULL default '0',   Password varchar(64) NOT NULL default '',   Uid varchar(11) NOT NULL default '-1',   Gid varchar(11) NOT NULL default '-1',   Dir varchar(128) NOT NULL default '',   ULBandwidth smallint(5) NOT NULL default '0',   DLBandwidth smallint(5) NOT NULL default '0',   comment tinytext NOT NULL,   ipaccess varchar(15) NOT NULL default '*',   QuotaSize smallint(5) NOT NULL default '0',   QuotaFiles int(11) NOT NULL default 0,   PRIMARY KEY (User),   UNIQUE KEY User (User) ) TYPE=MyISAM;
quit

Adesso dobbiamo configurare pure-ftpd:

vi /etc/pure-ftpd/pure-ftpd.conf

Abilitare queste righe di codice togliendo il #:

[...]
ChrootEveryone              yes
[...]
MySQLConfigFile               /etc/pure-ftpd/pureftpd-mysql.conf
[...]
CreateHomeDir               yes

Ora dobbiamo editare il file mysql di pure-ftpd:

cp /etc/pure-ftpd/pureftpd-mysql.conf
/etc/pure-ftpd/pureftpd-mysql.conf_orig
  cat /dev/null > /etc/pure-ftpd/pureftpd-mysql.conf vi /etc/pure-ftpd/pureftpd-mysql.conf

Nel nuovo file di pureftpd-mysql inserire questo codice:

MYSQLSocket      /var/lib/mysql/mysql.sock
#MYSQLServer     localhost
#MYSQLPort       3306
MYSQLUser       pureftpd
MYSQLPassword   ftpdpass
MYSQLDatabase   pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt      md5
MYSQLGetPW      SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetUID     SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetGID     SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetDir     SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTASZ   SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTAFS   SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")

Ora riavviamo pure-ftpd:

/etc/init.d/pure-ftpd start

Dobbiamo adesso spostare la cartella ftp che si trova in var in home:

mv /var/ftp /home

Cambiamo i permessi alle cartelle:

chown -R ftp:nogroup /home/ftp   cd /home/ftp   chmod 311 incoming/   chmod 555 pub/   cd ../ chmod 555 ftp/

Editare il file pure-ftpd:

vi /etc/pure-ftpd/pure-ftpd.conf

Decommentare le seguenti linee se hanno il # davanti oppure editarle in questo modo:

[...]
NoAnonymous                 no
[...]
AntiWarez                  no
[...]
AnonymousBandwidth            8
[...]
AnonymousCantUpload         no
[...]

Riavviamo il servizio:

/etc/init.d/pure-ftpd restart

Per concludere installiamo pure-admin:

urpmi pureadmin

Andiamo ad editare nuovamente il file di configurazione di pure-ftpd:

vi /etc/pure-ftpd/pure-ftpd.conf

Decommentiamo questa linea di codice:

# PureDB user database (see README.Virtual-Users) #PureDB                        /etc/pure-ftpd/pureftpd.pdb

in questo modo:

# PureDB user database (see README.Virtual-Users) PureDB                        /etc/pure-ftpd/pureftpd.pdb

Riavviamo il servizio:

/etc/init.d/pure-ftpd restart

Purtroppo non parte come utente root quindi per chi usa l’icona sul desktop basta modificarla ed inserire kdesu pureadmin. Mentre chi lo vuole modificare completamente basta andare in /usr/share/applications e modificare in questo modo:

vi pureadmin.desktop
Exec=kdesu pureadmin

Una volta avviato potete creare tutti gli utenti virtuali che desiderate. Per vedere se l’ftp è stato configurato correttamente e gli utenti virtuali creati da console fare cosi:

ftp 127.0.0.1
Connected to 127.0.0.1.
220---------- Welcome to Pure-FTPd ----------
220-You are user number 1 of 50 allowed.
220-<<
220-Linux: Where Don't We Want To Go Today?
220-    -- Submitted by Pancrazio De Mauro, paraphrasing some well-known sales talk
220->>
220-Local time is now 15:51. Server port: 21.
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
500 This security scheme is not implemented
Name (127.0.0.1:vostronomeutente):admin( io ho creato questo utente per prova )
331 User admin OK. Password required
Password:(inserire la password che avete dato e premere invio)

Questo dovrebbe essere il risultato:

230-User admin has group access to:  10002
230 OK. Current directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Se è così avete adesso configurato il vostro ftp personale.Potete anche accedervi da filezilla, gftp o altri. Funziona anche in rete locale con l’indirizzo ip della vostra macchina assegnata dal vostro router. Buona configurazione. P.S: ecco gli screen Questo è lo screen per come accedere dal browser: Immagine Questo invece da shell: Immagine Questo da filezilla oppure per chi usa gftp o altro: Immagine

Calogero Scarnà
Calogero Scarnà
Articoli: 299

Newsletter

Inserisci il tuo nome e il tuo indirizzo email qui sotto e iscriviti alla nostra newsletter