Vous vous êtes sûrement déjà demandé comment partager un espace disque de façon à ce qu’il soit accessible sur Internet tout en restant raisonnablement sécurisé. Cela peut-être utile au bureau ou à titre privé. La mise en place d’un serveur FTP est une solution élégante et facile à mettre en œuvre.
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 vsftpdUne 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 restartA 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 communLe 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/communIl 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/communIl 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 0Pour finir, on monte le répertoire /home/pingoo/commun en tapant :
mount /home/pingoo/communLe 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 |
bonjour à tous j’ai bien suivi le tuto, j’arrive à me "connecter" d’un autre ordi, mais je ne sais pas ou est-ce que l’on défini le mot de pass de l’utilisteur ? si quelqu’un avait une petite piste(genre la ligne de code) ce serait top merci xoom
Merci pour le tuto mais le soucis que malgré la config suivante : annonymous_enable=NO local_enable=YES
je me retrouve toujours avec cette erreur, 500 OOPS : vsftpd : both local and anonymous access disabled !
Quelqu’un aurait-il une idée ? parce que là je sèche un peu
/etc/rc.d/init.d/vsftpd restart il dit arret de vsftpd ok demarrage de vsftpd pour vsftpd ok le fichier /etc/vsftpd.conf j entre avec vi il ya rien .......je fais quoi ? entre temps dans le compte root j ecris $ ftp> not connected besoin d aide je suis connecter
Bonjour et merci !! Juste une question comment peux t on faire pour FXP avec vsftpd ? MErci
# 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, Je voudrais déplacer le répertoire de base d’un utilisateur pour le remplacer par /var/www/ pour pouvoir uploader directement les fichiers sur mon site, comment faire ?
Up ! Si quelqu’un a la soluce, j’ai la même question ...
Si quelqu’un a le problème, voilà comment faire :
Soit à la création de l’utilisateur =>
Useradd -d chemin_du_repertoire/de_l’utilisateur utilisateur
Ou en modifiant un utilisateur déjà crée =>
Usermod -d chemin_du_repertoire/de_l’utilisateur utilisateur
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 !!)
Normalement, si tu as mis "local_umask=022" dans la config de vsftpd, ça devrait être 644 pour les fichiers, et donc "read" pour tout le monde...
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) ?
quand je veux me conecter ca me dit 500 OOPS : vsftpd : both local and anonymous access disabled ! pourriez vous m eclairer sur le pourquoi de la question (j ai mi votre config a la lettre !)
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 ?
Bonjour à tous !
Question bête mais on ne peut plus importante pour moi :
Peut on se connecter en root ? Et si oui, comment ?
Merci :)
Salut, Oui tu peux, Tu ouvre un console en root
# iceweasel ftp://leserveurvoulu
Et t’es connecté en root.