Accueil > Informatique > Poweredge T105 > Installation de proftp
Installation de proftp
mardi 26 août 2008, par
comme d’hab :
apt-get install proftpd proftpd-mysql
le lancement se fait par inetd
la création des tables :
CREATE DATABASE <span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+cHJvZnRwZDwvY29kZT4="></span>;
USE proftpd;
--
-- Table structure for table <span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZnRwZ3JvdXA8L2NvZGU+"></span>
--
CREATE TABLE <span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZnRwZ3JvdXA8L2NvZGU+"></span> (
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+Z3JvdXBuYW1lPC9jb2RlPg=="></span> varchar(16) NOT NULL DEFAULT '',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+Z2lkPC9jb2RlPg=="></span> smallint(6) NOT NULL DEFAULT '5500',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+bWVtYmVyczwvY29kZT4="></span> varchar(16) NOT NULL DEFAULT '',
KEY <span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+Z3JvdXBuYW1lPC9jb2RlPg=="></span> (<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+Z3JvdXBuYW1lPC9jb2RlPg=="></span>)
) TYPE=MyISAM COMMENT='Table des groupes ProFTPD';
--
-- Table structure for table <span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZnRwcXVvdGFsaW1pdHM8L2NvZGU+"></span>
--
CREATE TABLE <span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZnRwcXVvdGFsaW1pdHM8L2NvZGU+"></span> (
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+bmFtZTwvY29kZT4="></span> varchar(30) DEFAULT NULL,
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+cXVvdGFfdHlwZTwvY29kZT4="></span> enum('user','group','class','all') NOT NULL DEFAULT 'user',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+cGFyX3Nlc3Npb248L2NvZGU+"></span> enum('false','true') NOT NULL DEFAULT 'false',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+bGltaXRfdHlwZTwvY29kZT4="></span> enum('soft','hard') NOT NULL DEFAULT 'soft',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+Ynl0ZXNfdXBfbGltaXQ8L2NvZGU+"></span> float NOT NULL DEFAULT '0',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+Ynl0ZXNfZG93bl9saW1pdDwvY29kZT4="></span> float NOT NULL DEFAULT '0',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+Ynl0ZXNfdHJhbnNmZXJfbGltaXQ8L2NvZGU+"></span> float NOT NULL DEFAULT '0',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZmlsZXNfdXBfbGltaXQ8L2NvZGU+"></span> int(10) UNSIGNED NOT NULL DEFAULT '0',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZmlsZXNfZG93bl9saW1pdDwvY29kZT4="></span> int(10) UNSIGNED NOT NULL DEFAULT '0',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZmlsZXNfdHJhbnNmZXJfbGltaXQ8L2NvZGU+"></span> int(10) UNSIGNED NOT NULL DEFAULT '0'
) TYPE=MyISAM COMMENT='Table des quotas ProFTPD';
--
-- Table structure for table <span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZnRwcXVvdGF0b3RhbDwvY29kZT4="></span>
--
CREATE TABLE <span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZnRwcXVvdGF0b3RhbDwvY29kZT4="></span> (
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+bmFtZTwvY29kZT4="></span> varchar(30) NOT NULL DEFAULT '',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+cXVvdGFfdHlwZTwvY29kZT4="></span> enum('user','group','class','all') NOT NULL DEFAULT 'user',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+Ynl0ZXNfdXBfdG90YWw8L2NvZGU+"></span> float NOT NULL DEFAULT '0',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+Ynl0ZXNfZG93bl90b3RhbDwvY29kZT4="></span> float NOT NULL DEFAULT '0',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+Ynl0ZXNfdHJhbnNmZXJfdG90YWw8L2NvZGU+"></span> float NOT NULL DEFAULT '0',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZmlsZXNfdXBfdG90YWw8L2NvZGU+"></span> int(10) UNSIGNED NOT NULL DEFAULT '0',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZmlsZXNfZG93bl90b3RhbDwvY29kZT4="></span> int(10) UNSIGNED NOT NULL DEFAULT '0',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZmlsZXNfdHJhbnNmZXJfdG90YWw8L2NvZGU+"></span> int(10) UNSIGNED NOT NULL DEFAULT '0'
) TYPE=MyISAM COMMENT='Table des compteurs des quotas ProFTPD';
--
-- Table structure for table <span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZnRwdXNlcjwvY29kZT4="></span>
--
CREATE TABLE <span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZnRwdXNlcjwvY29kZT4="></span> (
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+aWQ8L2NvZGU+"></span> int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+dXNlcmlkPC9jb2RlPg=="></span> varchar(32) NOT NULL DEFAULT '',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+cGFzc3dkPC9jb2RlPg=="></span> varchar(32) NOT NULL DEFAULT '',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+dWlkPC9jb2RlPg=="></span> smallint(6) NOT NULL DEFAULT '5500',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+Z2lkPC9jb2RlPg=="></span> smallint(6) NOT NULL DEFAULT '5500',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+aG9tZWRpcjwvY29kZT4="></span> varchar(255) NOT NULL DEFAULT '',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+c2hlbGw8L2NvZGU+"></span> varchar(16) NOT NULL DEFAULT '/bin/false',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+Y291bnQ8L2NvZGU+"></span> int(11) NOT NULL DEFAULT '0',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+YWNjZXNzZWQ8L2NvZGU+"></span> datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+bW9kaWZpZWQ8L2NvZGU+"></span> datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+TG9naW5BbGxvd2VkPC9jb2RlPg=="></span> enum('true','false') NOT NULL DEFAULT 'true',
PRIMARY KEY (<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+aWQ8L2NvZGU+"></span>)
) TYPE=MyISAM COMMENT='Table des utlisateurs ProFTPD';
La config de proftp dans le fichier /etc/proftpd/proftpd.conf :
on décommente :
DefaultRoot ~
RequireValidShell off
<IfModule mod_sql.c>
SQLBackend mysql
</IfModule>
on ajoute à la fin :
# Mod MySQL
# =========
# Les mots de passe sont cryptes dans la base avec la fonction ENCRYPT (MySQL)
SQLAuthTypes Crypt
SQLAuthenticate users* groups*
# Modifiez cette ligne selon l'utilisateur et le mot de passe definit plutot
SQLConnectInfo proftpd@localhost proftpd proftpd
# On donne a ProFTPd le nom des colonnes de la table usertable
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLUserWhereClause "LoginAllowed = 'true'"
# On donne a ProFTPd le nom des colonnes de la table "grouptable"
SQLGroupInfo ftpgroup groupname gid members
# Creer le repertoire home de l'utilisateur si il n'existe pas
SQLHomedirOnDemand on
# Met a jour les compteurs a chaque connection d'un utilisateur
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
#Met a jour les compteurs a chaque upload ou download d'un utilisateur
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
# Mod quota
# =========
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on
# Definit les requetes SQL pour que ProFTPd recupere les infos sur les quotas
SQLNamedQuery get-quota-limit SELECT "name, quota_type, par_session, limit_type, bytes_up_limit, bytes_down_limit, bytes_transfer_limit, files_up_limit, files_down_limit, files_transfer_limit FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_up_total, bytes_down_total, bytes_transfer_total, files_up_total, files_down_total, files_transfer_total FROM ftpquotatotal WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery update-quota-tally UPDATE "bytes_up_total = bytes_up_total + %{0}, bytes_down_total = bytes_down_total + %{1}, bytes_transfer_total = bytes_transfer_total + %{2}, files_up_total = files_up_total + %{3}, files_down_total = files_down_total + %{4}, files_transfer_total = files_transfer_total + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatotal
SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatotal
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
# Gestion des logs
# ================
# Enregistre les requetes SQL dans /var/log/proftpd/mysql.log
SQLLogFile /var/log/proftpd/mysql.log
# Enregistre les authentifications
LogFormat auth "%v [%P] %h %t \"%r\" %s"
ExtendedLog /var/log/proftpd/auth.log AUTH auth
# Enregistre les acces aux fichiers
LogFormat write "%h %l %u %t \"%r\" %s %b"
ExtendedLog /var/log/proftpd/access.log WRITE,READ write