sábado, mayo 02, 2009

FreeBSD + vsftpd standalone

1) Instalar el port /usr/ports/ftp/vsftpd
# cd /usr/ports/ftp/vsftpd
# make install clean

2) En el archivo /etc/rc.conf agregar las lineas:

# Activamos vsftpd en modo "standalone" mode (osea, sin inetd)
vsftpd_enable="YES"

3) Editar o crear el archivo /usr/local/etc/vsftpd.conf
# edit /usr/local/etc/vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
ftpd_banner=Bienvenido al servidor FTP de Telemedellin.
chroot_local_user=YES
secure_chroot_dir=/usr/local/share/vsftpd/empty
listen=YES
background=YES
pasv_enable=YES
pasv_promiscuous=YES
pasv_min_port=49152
pasv_max_port=65535

4) Editar o crear el archivo /usr/local/etc/rc.d/vsftpd con este contenido:
datos del script tomados de aqui

# edit /usr/local/etc/rc.d/vsftpd

#!/bin/sh
#
# $FreeBSD: ports/ftp/vsftpd/files/vsftpd.sh.in,v 1.7 2006/02/20 20:47:01 dougb Exp $
#

# PROVIDE: vsftpd
# REQUIRE: DAEMON

# Add the following line to /etc/rc.conf to enable `vsftpd':
#
# vsftpd_enable="YES"
# vsftpd_flags="/some/path/conf.file" # Not required
#

. "/etc/rc.subr"

name="vsftpd"
rcvar=`set_rcvar`

load_rc_config "$name"
: ${vsftpd_enable:="NO"}
: ${vsftpd_flags:=""}

command="/usr/local/libexec/$name"
required_files="/usr/local/etc/$name.conf"
start_precmd="vsftpd_check"

vsftpd_check()
{
if grep -q "^ftp[ ]" /etc/inetd.conf ${required_files}
then
err 1 "ftp is already activated in /etc/inetd.conf"
fi
if ! egrep -q -i -E "^listen.*=.*YES$" ${required_files}
then
err 1 "vsftpd script need "listen=YES" on config file"
fi
if ! egrep -q -i -E "^background.*=.*YES$" ${required_files}
then
err 1 "vsftpd script need "background=YES" on config file"
fi
}

run_rc_command "$1"
5) Darle permisos de ejecucion

# chmod +x /usr/local/etc/rc.d/vsftpd

6) Iniciarlo manualmente

# /usr/local/etc/rc.d/vsftpd start
Starting vsftpd.

7) Para verificar que esta corriendo

# /usr/local/etc/rc.d/vsftpd status
vsftpd is running as pid 1428.