Aller au contenu

[resolu] installation pure-ftpd sur debian


Yangzebul

Messages recommandés

Bonjour, je galère un peu à comprendre ce qui cloche.

Voila ce que j'ai fait :

mkdir /home/user/werv
su root
aptitude install pure-ftpd
vi /etc/init.d/pure-ftpd
~ remplacement d'une ligne
~ #STANDALONE_OR_INETD=inetd
~ STANDALONE_OR_INETD=standalone
cd /etc/pure-ftpd/auth/
ln -s ../conf/PureDB 50pure
pure-pw useradd user -u user -g user -d /home/user/wserv
pure-pw mkdb

Lorsque je lance le serveur manuellement cela fonctionne

/usr/sbin/pure-ftpd -S 127.0.0.1,21 -c 30 -C 1 -l puredb:/etc/pureftpd.pdb -x -E -j -R

Idem lorsque je lance le script :

pure-ftpd start

Par contre j'ai l'impression que le daemon se ferme mal... si je fais Ctrl+z pour retourner dans bash et queje fais

/etc/init.d/pure-ftpd stop
~ Unable to start a standalone server: Address already in use

De plus le daemon ne se lance pas au démarrage :

update-rc.d pure-ftpd defaults
~ System startup links for /etc/init.d/pure-ftpd already exists.

Vous l'aurez compris, je n'ai pas fait linux en première langue... :francais:

Merci pour votre aide.  :chinois:

Lien vers le commentaire
Partager sur d’autres sites

Salut,

je t'aurais conseillé d'installer vsftpd qui est pour moi plus léger, et reconnu pour une très bonne sécurité (va voir le site officiel et va voir qui l'utilise :chinois:).

Sinon, je pense que tu n'as pas commenté la ligne de inetd.conf qui start le serveur ftp, d'ou le fait qu'il est déjà en train d'écouter.

Faut que tu ailles dans /etc/inetd.conf et commentes la ligne correspondant à FTP (si tu utilises xinetd c'est dans xinetd.conf).

Ensuite tu reloades inetd pour qu'il prenne en compte les changements :

kill -HUP $(cat /var/run/inetd.pid)

Ensuite tu peux restarter ton pure-ftpd et là ça devrait passer :francais:

Lien vers le commentaire
Partager sur d’autres sites

Bon quelques avancements, mais le problème n'est toujours pas résolu.

Pour cette histoire de start/stop, une partie des incohérences vient du fait que j'ai confondu le script de lancement avec l'executable lui même :

La je lance l'executable via le script

/etc/init.d/pure-ftpd start

La je lance directement l'executable (usr/sbin) qui n'a pas de switch "stop" et qui bien sûr tourne déjà...

pure-ftpd stop

SnipX : bien essayé, mais je n'ai pas inetd d'installé (ou alors je l'ai manqué), j'ai le debian minimal "de base" avec toutes les options décochées.

theocrite : huhum, merci pour l'astuce, par contre je n'ai pas trop compris le coup du "bg" je suis sensé avoir une commande de ce nom ?

Pour en revenir au coeur du problème, mon serveur ne se lance pas (sauf en invoquant le binaire directement) car le script de lancement sort trop tôt.

La variable $STANDALONE_OR_INETD a la valeur inetd, malgré ma modification... comme si il chargait une config secondaire qui écraserai la mienne.

#! /bin/sh
### BEGIN INIT INFO
# Provides:		  pure-ftpd
# Required-Start:	$remote_fs $syslog
# Required-Stop:	 $remote_fs $syslog
# Default-Start:	 2 3 4 5
# Default-Stop:	  0 1 6
### END INIT INFO
#
# pure-ftpd	 starts and stops the pure-ftpd ftp daemon

PATH=/sbin:/bin:/usr/sbin:/usr/bin
NAME=pure-ftpd
DESC="ftp server"
: ${SSDAEMONLOGOPTS:="--quiet"}
UPLOADDAEMON=/usr/sbin/pure-uploadscript
UDNAME=pure-uploadscript
UDDESC="ftp upload handler"
WRAPPER=/usr/sbin/pure-ftpd-wrapper

# try to figure with suffix this script is called,
# $0 might be a symlink pointing to this script
if [ -h $0 ]; then
 	   ME=`/bin/readlink $0`
else
 	   ME=$0
fi

SUFFIX=`basename $ME | sed -ne 's/^pure-ftpd-\(.*\)/\1/p'`
if [ "$SUFFIX" ]; then
 	   DAEMON=/usr/sbin/pure-ftpd-$SUFFIX
else
 	   DAEMON=/usr/sbin/pure-ftpd
fi

# export STANDALONE_OR_INETD=inetd
export STANDALONE_OR_INETD=standalone
export VIRTUALCHROOT=
test -r /etc/default/pure-ftpd-common && . /etc/default/pure-ftpd-common

if [ "$VIRTUALCHROOT" = "true" ]; then
 	   if [ "$SUFFIX" ]; then
 			   SUFFIX="$SUFFIX-virtualchroot"
 	   else
 			   SUFFIX="virtualchroot"
 	   fi
fi

test -x $DAEMON || exit 0
test -x $WRAPPER || exit 0

set -e

start_uploadscript() {
 	   if [ "$UPLOADSCRIPT" -a "$STANDALONE_OR_INETD" != inetd ] && \
 			   egrep -i '^[	]*(yes|1|on)[   ]*' /etc/pure-ftpd/conf/CallUploadScript > /dev/null 2>&1
 	   then
 			   UOPTS=""
 			   test "$UPLOADUID" && UOPTS="$UOPTS -u $UPLOADUID"
 			   test "$UPLOADGID" && UOPTS="$UOPTS -g $UPLOADGID"
 			   echo -n "$1 $UDDESC: "
 			   start-stop-daemon --start $SSDAEMONLOGOPTS --oknodo \
 					   --exec $UPLOADDAEMON -- -r "$UPLOADSCRIPT" -B $UOPTS
 			   echo "$UDNAME."

 	   fi
}

case "$1" in
  start)
 	   echo -n "test $STANDALONE_OR_INETD"
 	   test "$STANDALONE_OR_INETD" = standalone || exit 0
 	   echo -n "Starting $DESC: "
 	   start-stop-daemon --start $SSDAEMONLOGOPTS --pidfile /var/run/pure-ftpd/pure-ftpd.pid \
 			   --exec $WRAPPER -- $SUFFIX
 	   start_uploadscript Starting
 	  ;;
  stop)
 	   echo -n "Stopping $DESC: "
 	   start-stop-daemon --stop $SSDAEMONLOGOPTS --oknodo \
 			   --pidfile /var/run/pure-ftpd/pure-ftpd.pid
 	   start-stop-daemon --stop $SSDAEMONLOGOPTS --oknodo --exec $UPLOADDAEMON
 	   echo "$NAME."
 	  ;;
  restart|force-reload)
 	   test "$STANDALONE_OR_INETD" = standalone || exit 0
 	   echo -n "Restarting $DESC: "
 	   start-stop-daemon --stop $SSDAEMONLOGOPTS --oknodo \
 			   --pidfile /var/run/pure-ftpd/pure-ftpd.pid
 	   start-stop-daemon --stop $SSDAEMONLOGOPTS --oknodo --exec $UPLOADDAEMON
 	   sleep 1
 	   start-stop-daemon --start $SSDAEMONLOGOPTS --pidfile \
 			   /var/run/pure-ftpd/pure-ftpd.pid --exec $WRAPPER -- $SUFFIX
 	   start_uploadscript Restarting
 	  ;;
  *)
 	   N=/etc/init.d/$NAME
 	   echo "Usage: $N {start|stop|restart|force-reload}" >&2
 	   exit 1
 	  ;;
esac

exit 0

Le premier echo dans le case "start" print toujours "inetd", donc le script exit à la ligne suivante et mon serveur ne se lance pas...

Lien vers le commentaire
Partager sur d’autres sites

Cela se précise :incline:

echo -n "inb4 $STANDALONE_OR_INETD"
export VIRTUALCHROOT=
test -r /etc/default/pure-ftpd-common && . /etc/default/pure-ftpd-common
echo -n "ina4 $STANDALONE_OR_INETD"

Donc si je comprends bien cette ligne, retourne une valeur pour VIRTUALCHROOT, test l'existence du fichier, le concatène (opérateur .) au script courant.

C'est ça ?

En tout cas je l'ai édité et maintenant ça marche nickel.

PS : j'attends le retour sur cette ligne et la commande mystère "bg" avant de mettre en résolu.

Lien vers le commentaire
Partager sur d’autres sites

". /etc/default/pure-ftpd-common" te permet juste de "loader" les infos du fichier.

Cette commande est souvent utilisée quand tu modifies le ~/.bashrc et que tu veux que ton bash se mette à jour, Tu fais ". ~/.bashrc"

Donc je suppose que dans "/etc/default/pure-ftpd-common" tu as la variable qui t'interesse :)

Sinon concernant bg, c'est une commande Unix qui te permet de lancer ta commande en arrière-plan (background). Ensuite, pour la remettre au premier plan, tu tapes fg (foreground). Je te conseille d'aller voir sur le net cela est bien mieux expliqué mais tu as le principe :)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...