Voici en quelques points les principales caractéristiques du serveur que nous voulons mettre en place :
chaque utilisateur se connectera avec un identifiant propre. Le système pourra ainsi logger les actions de chacun (en gros, savoir qui fait quoi)
chaque utilisateur disposera d’un espace où il puisse stocker ses fichiers de façon privée
chaque utilisateur accédera à un espace public
Tout cela est faisable facilement grâce à Very Secure FTPd (autrement appelé vsftpd qui équipe des serveurs FTP tels que ceux Red Hat, Suse, OpenBSD, kernel.org et bien (bien sûr) Debian.
Loggez vous en root et tapez :
# apt-get install vsftpd
Une fois vsftpd installé, il faudra remplacer le fichier de configuration /etc/vsftpd.conf par le suivant :
# Nous voulons que le serveur fonctionne en mode standalone
listen=YES
#
# On ne veut surtout pas de connexions en mode anonymous
anonymous_enable=NO
#
# On veut que les utilisateurs locaux puissent se connecter
local_enable=YES
#
# On veut que les utilisateurs puissent remonter des fichiers sur le serveur
write_enable=YES
#
# On fixe le masque local a 022 (les fichiers remontés auront des droits en 755)
local_umask=022
#
# On interdit l’upload anonyme
anon_upload_enable=NO
#
# Idem pour la creation de repertoires
anon_mkdir_write_enable=NO
#
# On demande a ce que les actions des utilisateurs soient loggees
xferlog_enable=YES
#
# On verifie que la commande PORT provienne bien du port 20 de la machine cliente
connect_from_port_20=YES
#
# Les logs seront enregistres dans le fichier /var/log/vsftpd.log
xferlog_file=/var/log/vsftpd.log
#
# On declare les valeurs de timeout. Celles fournies par defaut sont ok pour notre utilisation
idle_session_timeout=300
data_connection_timeout=120
connect_timeout=60
accept_timeout=60
#
# Par securite, on interdit la commande ABOR
async_abor_enable=NO
#
# Les transferts en ASCII sont souvent source de confusions
ascii_upload_enable=NO
ascii_download_enable=NO
#
# Par securite, on change la banniere
ftpd_banner=Bienvenue sur le serveur Debian Addict
#
# On veut limiter les utilisateurs a leur repertoire
chroot_local_user=YES
chroot_list_enable=NO
#
# Les heures d’enregistrement des fichiers seront affichees a l’heure locale
use_localtime=YES
Une fois le fichier de configuration remplacé, on relance le serveur FTP en tapant en root :
# /etc/init.d/vsftpd restart
A partir de ce moment, les utilisateurs ont accès à leurs répertoires personnels via FTP et leurs actions sont enregistrées dans le fichier /var/log/vsftpd.log.
Il nous reste donc à créer un répertoire commun auquel chacun aura accès. Pour cela, on crée un utilisateur lambda que l’on appellera "commun" [1]. En root, tapez :
# adduser commun
Le système demande ensuite le mot de passe de l’utilisateur puis différents renseignements qui sont à passer.
Il faut placer les fichiers que vous voulez partager dans le répertoire de l’utilisateur "commun". Les photos de tata Monique feront merveille mais à défaut cela fonctionne aussi avec n’importe quel document d’entreprise.
Les fichiers partagés doivent être lisibles par n’importe quel utilisateur en lecture, il faut donc faire :
# chmod -R 755 /home/commun
# chown commun:commun -R /home/commun
Il faut alors créer dans le répertoire personnel de chaque utilisateur un répertoire "commun" et y attribuer les bons droits. Soit, si on prend l’exemple de l’utilisateur pingoo :
# mkdir /home/pingoo/commun
# chown pingoo:pingoo /home/pingoo/commun
# chmod 755 /home/pingoo/commun
Il faudra ensuite indiquer au système le lien entre /home/commun et /home/pingoo/commun en rajoutant la ligne suivante dans le fichier /etc/fstab :
/home/commun /home/pingoo/commun auto bind,defaults 0 0
Pour finir, on monte le répertoire /home/pingoo/commun en tapant :
mount /home/pingoo/commun
Le montage restera en place à chaque reboot. Il ne vous reste plus qu’à communiquer l’adresse de votre serveur ainsi que les identifiants à vos utilisateurs. Bien évidemment choisissez des mots de passe non triviaux (y compris pour "commun").
Pour information, voici un petit aperçu des performances de vsftpd.
J’ajoute également qu’il est possible de créer un répertoire où chacun pourra mettre ses fichiers. Pour cela, il faudra créer un répertoire dans l’espace privé de l’utilisateur "commun" en lui affectant comme droits 777 avec "commun" comme utilisateur et groupe.
[1] L’installation par défaut de vsftpd fournit un utilisateur "ftp" avec lequel la manipulation est également possible
| Date | Nom | Message |
# mkdir /home/pingoo/commun # chown pingoo:pingoo /home/pingoo/commun # chmod 755 /home/pingoo/commun
Il faudra ensuite indiquer au système le lien entre /home/commun et /home/pingoo/commun en rajoutant la ligne suivante dans le fichier /etc/fstab :
/home/commun /home/pingoo/commun auto bind,defaults 0 0
quelle bonne idée ; avec les droits ainsi, si pingoo supp /home/pingoo/commun, ca suit jusqu’à /home/commun et t’as tout perdu.
Je suis d’accord, mais avec une ligne du type :
/home/commun /home/pingoo/commun auto bind,ro,defaults 0 0
Alors pingoo peut toujours essayer de supprimer quoi que ce soit, ce sera toujours refusé.
Conclusion : avec l’ajout de ro dans la ligne d’option de fstab, seul commun peut modifier le contenu (y compris suppression). Je viens de tester, et je crois ne pas faire d’erreur en disant ça.
Bonjour !
J’ai suivi le tuto pour installer mldonkey, et celui pour vsftpd qui devrait me permettre de recupérer mes fichiers télécharger. Jusque la tout va bien, la machine (Debian Sarge) sert de partage de connexion (avec iptables).
Le hic, c’est le taux de transfert que j’obtient en local, du genre 15Kb/s !!! alors que tout est en 100Mb :(
J’ai regarder dans les log et dans top, mais rien d’anormal, une idée ??
PS : merci pour les super tuto, c’est sympa de partager ;)
Salut,
C’est sur qu’obtenir du 15 ko/s n’est pas normal. J’aurais tendance à dire que ça ressemble à un problème de routage.
Ce n’est pas évident de répondre à ce genre de question sans avoir plus d’éléments et surtout sans avoir la machine sous la main.
Merci pour tes compliments !
Héllo ! J’ai installé vsftpd avec succes et ai ajouté un utilisateur avec "adduser" j’ai changé le répertoire par défaut pour /var/www (pour apache) mais lorsqu’avec ce compte j’upload des fichiers, les droits par défaut sont : -rx-------- au lieu de -rx-r—r--- (pour que tout le monde puisse les lire puisque c’est pour un site !) est-il possible de changer ces droits d’acces par défaut ? merci !!
(et merci pour le tuto bien sûr !!)
Bonjour,
moi j’essaye de mettre mon /etc/init.d/vsftpd start dans crontab de root pour le démarrer à une heure précise tous les jours
, en vain alors que mon script /etc/init.d/vsftpd start fonctionne bien, et même un script start.sh qui fait la même chose et lancé à la main...
je seche, avez vous une idée ?
Cdlt,
Une piste (peut-être) : les variables d’environnement de l’utilisateur. Elles sont chargées lorsque l’utilisateur s’identifie (on les voit en tapant la commande env . Cela expliquerait certainement pourquoi le script lancé à la main fonctionne et qu’il plante lorqu’il est placé dans le crontab.
Je conseille dans un premier temps de déclarer les variables d’environnement dans le script shell et de voir ce qui se passe lors du lancement du crontab. Si ça marche, on trouvera le moyen de réaliser l’opération proprement.
Si cela ne marche pas, on fera un pseudo fichier de log du crontab en redirigeant les messages d’erreur vers un fichier.
Bon courage !
Moi j’ai 500 OOPS : vsftpd : cannot open config file:restart
une idée ?
Salut,
Ton fichier /etc/vsftpd.conf doit posséder les droits -rw-r—r-- et appartenir à root (owner et group).
Autre piste : es-tu sur de ne pas avoir fait de faute de frappe lorsque tu as nommé le fichier vsftpd.conf er de l’avoir placé dans le bon répertoire (ie : /etc) ?
Il faut faire un choix :
1-/ Soit autoriser les users locaux à se connecter sans accès anonyme => local_enable=YES & anonymous_enable=NO
2-/ Soit autoriser uniquement les connexions anonymes => anonymous_enable=YES & local_enable=NO
Cordialement ;-)
Bonjour, en effet j’ai eu la meme erreur car les deux options anonymous et local_users étaient à NO !
J’ai donc tester le anonymous a yes et local_users à No et ca fonctionne bien mais si je mets l’inverse, je me log en user(ie pinguin par exemple) et je ne peux pas me connecter ! il ne met pas d’erreur, juste connection refusée.
Comment puis-je faire ?
Merci d’avance
Antoine
Salut,
Il s’agit d’une grosse erreur de ma part (mea culpa) : il faut passer le paramètre local_enable=YES.
Ca devrait mieux fonctionner comme cela !
Bonjour,
J’ai un autre soucis, en suivant tip top les instructions ci-dessus, je n’arrive me connecter en ftp qu’avec l’utilisateur root et pas les autres. Auriez-vous une piste ?
(debian sarge, vsftpd 2.0.3)
Merci d’avance !
Désolé pour la lenteur de la réponse (période d’été oblige).
Dans le doute, j’ai reinstallé vsftpd. Tout fonctionne normalement.
Le problème subsiste-t-il sur la machine en question ?