Je n’ai pas exactement la même configuration chez moi, mais en la modifiant un peu tu devrai t’en sortir.
Comme serveur ftp j’utilise : ftpd avec le plugin mysql
pour l’instalation j’ai utiliser le lien : http://www.howtoforge.com/pureftpd_mysql_virtual_hosting
En résumer
- Création des utilisateurs
groupadd -g 2001 ftpgroup
puis dans ton cas pour chaque utilisateur se baser sur : ( avec 2001,2002... )
useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftppierre
useradd -u 2002 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftppaul
useradd -u 2003 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpjaques
- Configuration des droits : la partie mysql
mysql -u root -p
CREATE DATABASE ftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON ftpd.* TO 'ftpd'@'localhost' IDENTIFIED BY 'ftpd_password -> met ton choix';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON ftpd.* TO 'ftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpd_password';
FLUSH PRIVILEGES;
USE ftpd;
ALTER DATABASE `ftpd` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE ftpd_user (
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;
- la liaison ftpd / mysql se fait dans le fichier /etc/pure-ftpd/db/mysql.conf
il faut mettre se genre de commande :
MYSQLSocket /var/run/mysqld/mysqld.sock
#MYSQLServer localhost
#MYSQLPort 3306
MYSQLUser ftpd
MYSQLPassword ftpd_password
MYSQLDatabase ftpd
#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftpd_user WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetUID SELECT Uid FROM ftpd_user WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetGID SELECT Gid FROM ftpd_user WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetDir SELECT Dir FROM ftpd_user WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd_user WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd_user WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTASZ SELECT QuotaSize FROM ftpd_user WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd_user WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
- Aprés un peut de restriction pour ne pas utiliser directement les comptes unix + chrooter
echo 'yes' > /etc/pure-ftpd/conf/ChrootEveryone;
echo 'yes' > /etc/pure-ftpd/conf/CreateHomeDir;
- Ajouter les utilisateurs dans la base de donnée :
Maintenant un peu d’explication,
le group ftp permet de choisir les droits par fichier, le group sera commun as tous, et chaqu’un aura ses propres droits.
donc chaqu’un pourra restrindre les droits a sa guise.
pense bien sur a crée les dossiers pour chaque utilisateur ( man mkdir )
suivit d’une attribition de l’user:group ( man chown )
Si tu désire vraiment que les droits soit fixée je te conseil de modifier les droits des fichiers via un script bash qui se lance a la fin d’un transphére, le programme est écrit en perl ca ne dois pas être impossible.
J’espére que cette piste t’aidera de mon coter je suis rester avant n’ayant pas les même besoin.