FTP casalingo con PURE-FTPD

Guides, tutorials & docs
Post Reply
User avatar
specialworld83
Utente junior
Utente junior
Posts: 99
Joined: 4 June 2008, 13:19
ROSA: -
OpenMandriva: Rosa_Fresh x86_64
Kernel: 3.9.4
Desktop: Kde 4.10.4
country: Italy
Location: Favara

FTP casalingo con PURE-FTPD

Post by specialworld83 »

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:

Code: Select all

urpmi.update -a

Code: Select all

urpmi MySQL MySQL-client phpmyadmin
Ho abilitato i servizi direttamente da riga di comando:

Code: Select all

chkconfig mysqld on

chkconfig httpd on
e ho fatto partire i servizi:

Code: Select all

/etc/init.d/mysqld start

/etc/init.d/httpd restart
Ho creato la password per Mysql digitando questo comando:

Code: Select all

mysqladmin -u root password vostrapassword
Configurato Mysql installo pure-ftp con supporto Mysql:

Code: Select all

urpmi pure-ftpd pure-ftpd-anon-upload pure-ftpd-anonymous
Una volta installato pure creare l'utente e il gruppo per il server ftp:

Code: Select all

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:

Code: Select all

mysql -u root -p

Code: Select all

CREATE DATABASE pureftpd;

Code: Select all

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 
'pureftpd'@'localhost' IDENTIFIED BY 'vostrapassword';

Code: Select all

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 
'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';

Code: Select all

FLUSH PRIVILEGES;
Ora dobbiamo creare la tabella per i virtualserver:

Code: Select all

USE pureftpd;

Code: Select all

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;

Code: Select all

quit
Adesso dobbiamo configurare pure-ftpd:

Code: Select all

vi /etc/pure-ftpd/pure-ftpd.conf
Abilitare queste righe di codice togliendo il #:

Code: Select all


[...]
ChrootEveryone              yes
[...]
MySQLConfigFile               /etc/pure-ftpd/pureftpd-mysql.conf
[...]
CreateHomeDir               yes
 
Ora dobbiamo editare il file mysql di pure-ftpd:

Code: Select all

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:

Code: Select all

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:

Code: Select all

/etc/init.d/pure-ftpd start
Dobbiamo adesso spostare la cartella ftp che si trova in var in home:

Code: Select all

mv /var/ftp /home
Cambiamo i permessi alle cartelle:

Code: Select all

chown -R ftp:nogroup /home/ftp

  cd /home/ftp

  chmod 311 incoming/

  chmod 555 pub/

  cd ../

chmod 555 ftp/

Editare il file pure-ftpd:

Code: Select all

vi /etc/pure-ftpd/pure-ftpd.conf
Decommentare le seguenti linee se hanno il # davanti oppure editarle in questo modo:

Code: Select all

[...]
NoAnonymous                 no
[...]
AntiWarez                  no
[...]
AnonymousBandwidth            8
[...]
AnonymousCantUpload         no
[...]
Riavviamo il servizio:

Code: Select all

/etc/init.d/pure-ftpd restart
Per concludere installiamo pure-admin:

Code: Select all

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

Code: Select all

vi /etc/pure-ftpd/pure-ftpd.conf
Decommentiamo questa linea di codice:

Code: Select all

# PureDB user database (see README.Virtual-Users)

#PureDB                        /etc/pure-ftpd/pureftpd.pdb
in questo modo:

Code: Select all

# PureDB user database (see README.Virtual-Users)

PureDB                        /etc/pure-ftpd/pureftpd.pdb
Riavviamo il servizio:

Code: Select all

/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:

Code: Select all

vi pureadmin.desktop

Code: Select all

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:

Code: Select all

ftp 127.0.0.1

Code: Select all

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:

Code: Select all

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:
Image
Questo invece da shell:
Image
Questo da filezilla oppure per chi usa gftp o altro:
Image
Mandriva 2010.2 x86 host machine
Windows 7 home premium host machine
Centos OS host machine
Mac OsX Snow Leopard host machine

Post Reply