Outils pour utilisateurs

Outils du site


linux:pureftp (lu 42571 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
linux:pureftp [03-12-2010 18:20]
127.0.0.1 modification externe
linux:pureftp [12-02-2014 10:35] (Version actuelle)
edmc73
Ligne 1: Ligne 1:
 +====== pure-ftpd ======
  
 +===== Description =====
 +Pure-ftpd est un serveur FTP que j'aime bien et qui est simple à configurer.\\
 +Pour s'identifier on peut utiliser soit les comptes unix de la machine soit une base de données indépendantes.
  
-reprendre cette page http://www.edmc73.com/dc/index.php?2005/11/09/21-linux-serveur-ftp-avec-pure-ftpd+Dans notre cas, nous allons utiliser le ftp pour ce connecter en tant que www-data qui est le compte d'apache et pour cela nous n'allons pas utiliser la base de données d'utilisateur unix (pam)Nous allons créer notre propre base de données utilisateur.
  
-et rajouter ca+===== Installation ===== 
 +Classique  
 +  aptitude install pure-ftpd-common 
 +   
 +Le message suivant peut apparaître 
 +  update-rc.d: warning: pure-ftpd stop runlevel arguments (1) do not match LSB Default-Stop values (0 1 6) 
 +  Starting ftp server: Running: /usr/sbin/pure-ftpd -l pam -O clf:/var/log/pure-ftpd/transfer.log -E -u 1000 -8 UTF-8 -B
  
-Créer un fichier PassivePortRange dans etc/pure-ftpd/conf/ : +Ne pas en tenir compte... 
-Code:+   
 +===== Configuration =====
  
-~$ sudo gedit /etc/pure-ftpd/conf/PassivePortRange+==== Avec l'outil dpkg-reconfigure ==== 
 +On peut utiliser  
 +  dpkg-reconfigure pure-ftpd-common 
 +   
 +Lancement de pure-ftpd 
 +  Serveur autonome
  
-Lui entrer deux valeur numériques entre 1024 et 65535. +Pure-ftpwho doit-il s'exécuter avec les droits du superutilisateur ?  
-Exemple : +  Non  si vous en avant pas besoin sinon Oui
-Code:+
  
-3000 3100+Faut-il activer les environnement fermés (« chroots ») virtuels ?  
 +  Non  sauf si vous n'avez pas de lien symbolique dans vos dossiers utilisateurs, mettez plutot Oui par sécurité 
 +   
 +Voila les seules choses configurable via cet outils...
  
-Pure-ftp utilisera alors un port entre 3000 et 3100 pour le transport de données.+==== Avec les fichiers de config ====
  
-    Dans le mode FTP passif le client demande au serveur de choisir un port aléatoire sur lequel ce dernier se mettra à l'écoute en attente de la connexion de données. Le serveur communique au client le port qu'il a choisi pour le transfert des données.+<note>Tous les paramètres de configuration se trouvent dans le man de pure-ftpd-wrapperc'est une spécificité de debian.</note>
  
-smile+Passons aux fichiers de configuration à modifier dans notre cas
  
-Créer un fichier NATmode dans /etc/pure-ftpd/conf/+Créer un fichier PassivePortRange dans /etc/pure-ftpd/conf/
-Code:+  ~$ vi /etc/pure-ftpd/conf/PassivePortRange
  
-~$ sudo gedit /etc/pure-ftpd/conf/NATmode+Lui entrer deux valeur numériques entre 1024 et 65535. 
 +Exemple : 
 +  40000 40100
  
-Lui entrer la valeur : +Pure-ftp utilisera alors un port entre 40000 et 40100 pour le transport de données.
-Code:+
  
-no+Dans le mode FTP passif , le client demande au serveur de choisir un port aléatoire sur lequel ce dernier se mettra à l'écoute en attente de la connexion de données. Le serveur communique au client le port qu'il a choisi pour le transfert des données. 
 + 
 +Créer un fichier NATmode dans /etc/pure-ftpd/conf/
 +  ~$ vi /etc/pure-ftpd/conf/NATmode 
 + 
 +Lui entrer la valeur : 
 +  no
  
 Priorité au mode passif. Priorité au mode passif.
  
 Redémarrer pure-ftp : Redémarrer pure-ftp :
-Code:+  ~$ /etc/init.d/pure-ftpd restart 
 +  Restarting ftp serverRunning: /usr/sbin/pure-ftpd -l pam -O clf:/var/log/pure-ftpd/transfer.log -E -u 1000 -p 40000:40100 -8 UTF-8 -B 
 + 
 +On constate que nos ports ont été ajouté à la ligne de commande ci-dessus. 
 + 
 +Règle du firewall mais je suis sur de rien, c'est pour le mode passif 
 +  iptables -A INPUT -p tcp -i eth0 --dport 40000:40100 -j ACCEPT 
 +  iptables -A OUTPUT -p tcp -o eth0 --sport 40000:40100 -j ACCEPT 
 + 
 +==== Configuration du système d'authentification ==== 
 +Pour s'assurer que pure-ftpd va bien utiliser la base d'utilisateur puredb assurez-vous de ce qui suit. 
 + 
 +Vérifier le fichier de config qui définie l'emplacement de la base PureDB 
 +  cat /etc/pure-ftpd/conf/PureDB  
 +  /etc/pure-ftpd/pureftpd.pdb  
 +   
 +Vérifiez donc l'existence de ce fichier. 
 +  # ls 
 +  auth  conf  db  pureftpd-dir-aliases 
 + 
 +Et bien non, par défaut il n'existe pas... Nous vérifierons plus tard. 
 + 
 +Nous allons faire en sorte que cette base soit pris en compte lors du lancement du serveur FTP 
 + 
 +  # cd /etc/pure-ftpd/auth 
 +  # ls -l 
 +  # total 0 
 +  lrwxrwxrwx 1 root root 26 2005-11-08 10:24 65unix -> ../conf/UnixAuthentication 
 +  lrwxrwxrwx 1 root root 25 2005-11-08 10:24 70pam -> ../conf/PAMAuthentication 
 + 
 +Par défaut il n'y a que les 2 autorisations des utilisateurs systèmes. 
 +Il n'y a pas notre base d'utilisateurs virtuels. 
 + 
 +  # rm * Supprimons ces autorisations. 
 +  # ln -s /etc/pure-ftpd/conf/PureDB 75puredb  
 + 
 +On crée un lien symbolique vers notre fichier de config. 
 +Cela permet au programme de prendre en compte notre base de données. 
 + 
 +Par défaut, pureftpd autorise seulement les utilisateurs qui ont pour UID une valeur minimum de 1000.\\ 
 +Notre utilisateur www-data a pour UID 33 ce qui va nous poser problème.\\ 
 +Pour résoudre ce problème,mettez la valeur à 33. 
 + 
 +Redémarrons maintenant le serveur 
 +  # /etc/init.d/pure-ftpd restart 
 +  Restarting ftp server: /usr/sbin/pure-ftpd-wrapper: Invalid configuration file /etc/pure-ftpd/auth/../conf/PureDB: "/etc/pure-ftpd/pureftpd.pdb": No such file 
 + 
 +Et la c'est la CATA, le fichier /etc/pure-ftpd/pureftpd.pdb n'existe pas !! 
 + 
 +Pour créer ce fichier, il va falloir ajouter au moins un utilisateur en suivant le chapitre qui suit. 
 + 
 +===== Administration ===== 
 +==== Ajouter un utilisateur ==== 
 +Dans cet exemple, je vais créer une liste d'utilisateur virtuel c'est à dire des utilisateurs qui n'existe pas dans le system.\\ 
 +Nous allons donc utiliser une database de pure-ftpd appelé puredb\\ 
 +Créons maintenant un utilisateur toto qui aura les droits de l'utilisateur totounix qui doit exister dans votre système unix : 
 +  pure-pw useradd toto -u totounix -d /home/totounix -m 
 +   
 +   
 +L'utilisateur toto est maintenant créé et aura les mêmes droit que l'utilisateur local totounix.\\ 
 +L'option -d définit le répertoire de l'utilisateur. 
 +<note tip>-d ne permet pas à l'utilisateur de remonter au dela de son répertoire\\ 
 +contrairement à\\ 
 +-D qui permet cette possibilité.</note> 
 +L'argument -m permet de mettre à jour la base de données puredb.\\ 
 +Si on oublie -m on peut toujours mettre à jour la puredb par cette commande : 
 +  pure-pw mkdb 
 +   
 +===== Vérification ===== 
 +Maintenant que vous avez créé vos utilisateurs, démarrons le serveur. 
 + 
 +  # /etc/init.d/pure-ftpd restart 
 +  Restarting ftp server: Running: /usr/sbin/pure-ftpd -l puredb:/etc/pure-ftpd/pureftpd.pdb -O clf:/var/log/pure-ftpd/transfer.log -E -u 33 -p 40000:40100 -8 UTF-8 -B 
 + 
 +On voit que la ligne de commande a complètement changé, notre fichier de base de données utilisateur est bien le fichier /etc/pure-ftpd/pureftpd.pdb 
 + 
 +===== Exécuter un script à la réception d'un fichier =====
  
-~$ sudo /etc/init.d/pure-ftpd restart+  vi /etc/default/pure-ftpd-common
  
-http://forum.ubuntu-fr.org/viewtopic.php?id=92658+Renseigner la variable **UPLOADSCRIPT** 
 +<code bash> 
 +# UPLOADSCRIPTif this is set and the daemon is run in standalone mode, 
 +# pure-uploadscript will also be run to spawn the program given below 
 +# for handling uploads. see /usr/share/doc/pure-ftpd/README.gz or 
 +# pure-uploadscript(8)
  
 +# example: UPLOADSCRIPT=/usr/local/sbin/uploadhandler.pl
 +UPLOADSCRIPT=/root/script/test.bash
 +</code>
  
- ++Les variables suivantes sont accessible dans votre script bash 
 +  * $1 est le chemin et le nom du fichier. 
 +  * UPLOAD_SIZE The size of the file, in bytes.   
 +  * UPLOAD_PERMS The permissions, as an octal integer.  
 +  * UPLOAD_UID The numerical UID of the owner.   
 +  * UPLOAD_GID The numerical GID of the owner.   
 +  * UPLOAD_USER The login of the owner.   
 +  * UPLOAD_GROUP The group name the files belongs to.   
 +  * UPLOAD_VUSER The full user name, or the virtual user name (127 chars max) .
  
-iptables -A INPUT -p tcp -i eth0 --dport 40000:40100 -j ACCEPT +Du coup vous pouvez exécuter une commande en fonction de l'utilisateur 
-iptables -A OUTPUT -p tcp -o eth0 --sport 40000:40100 -j ACCEPT+<code bash> 
 +if [ "$UPLOAD_USER" = "toto" ]; then 
 +        echo -e `date "+%Y-%m-%d %H:%M:%S"` >> /var/log/toto.log 
 +        echo -e "Contenu du fichier envoyé "`cat $1` | mail -s "L'utilisateur toto a envoyé un fichier" Votre_email@toto.com 
 +fi 
 +</code>
  
 +ou en fonction du fichier
  
 +<code bash>
 +if [ "$1" = "/home/ftp/fichier.txt" ]; then
 +        echo -e `date "+%Y-%m-%d %H:%M:%S"` >> /var/log/toto.log
 +        echo -e "Contenu du fichier envoyé : "`cat $1` | mail -s "Un fichier fichier.txt a été envoyé" Votre_email@toto.com
 +fi
 +</code>
linux/pureftp.1291396830.txt.gz · Dernière modification: 04-04-2013 22:05 (modification externe)