#安装vsftpd
yum install vsftpd db4-utils
OR
apt-get install vsftpd db4-utils
#添加一个系统用户,以便虚拟用户映射
useradd -s /sbin/nologin vftp
#配置虚拟用户的帐号及密码,一行帐号一行密码
vi /etc/vsftpd/vftp
user1
123456
user2
123456
#配置vsftpd的pam文件
vi /etc/pam.d/vsftpd
#64位系统
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftp
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftp
#32位系统
auth required pam_userdb.so db=/etc/vsftpd/vftp
account required pam_userdb.so db=/etc/vsftpd/vftp
#生成.db后缀的虚拟用户数据库
db_load -T -t hash -f /etc/vsftpd/vftp /etc/vsftpd/vftp.db
#为了安全应该给两个文件配置权限
chmod 600 /etc/vsftpd/{vftp vftp.db}
#编辑vsftp的主配置文件
vi /etc/vsftpd/vsftpd.conf
#监听21端口,并且开启被动模式
listen=YES
listen_port=21
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999
#配置目录允许用户有写入权限
write_enable=YES
download_enable=YES
#启动双份日志保存
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
#虚拟用户的配置信息
user_config_dir=/etc/vsftpd/vsftpd_user_conf
#禁止匿名用户登陆
anonymous_enable=NO
#允许本地用户登陆,权限信息为077
local_enable=YES
local_umask=077
#禁止本地用户离开自己的家目录
chroot_local_user=YES
#虚拟用户具有写入权限
allow_writeable_chroot=YES
#允许虚拟用户登陆,所有虚拟用户映射至系统用户vftp
guest_enable=YES
guest_username=vftp
#虚拟用户配置的PAM使用的服务名称
pam_service_name=vsftpd
#设置虚拟用户上传目录权限为755,文件权限为644(全局)
anon_umask=022
#虚拟用户权限及登陆目录编写
mkdir /etc/vsftpd/vsftpd_user_conf
vi user1
#用户登陆目录
local_root=/media/user1/
#开放用户上传权限
anon_upload_enable=YES
#开放用户创建目录权限
anon_mkdir_write_enable=YES
开放用户删除或重命名权限
anon_other_write_enable=YES
#开放用户写入权限
write_enable=YES
#使用被动模式启动后应该使用iptables将30000-30999端口,21端口打开
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 30000:30999 -j ACCEPT
#附vsftpd启动脚本
#脚本参考地址http://www.linuxidc.com/Linux/2012-09/70793.htm
#!/bin/bash
#chkconfig: 345 60 50
#description:vsftpd
. /etc/rc.d/init.d/functions
if [ -f /etc/init.d/functions ] ; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
. /etc/rc.d/init.d/functions
else
exit 0
fi
vsftpd=/usr/sbin/vsftpd
prog=vsftpd
RETVAL=0
start() {
if [ -n "`/sbin/pidof $prog`" ]
then
echo "$prog: already running"
echo
return 1
fi
echo "Starting $prog:"
base=$prog
$vsftpd &
RETVAL=$?
usleep 5000000
if [ -z "`/sbin/pidof $prog`" ]
then
RETVAL=1
fi
if [ $RETVAL -ne 0 ]
then
echo "Startup failure"
else
echo "Startup success"
fi
echo
return $RETVAL
}
stop() {
echo "Stopping $prog:"
killall $vsftpd
RETVAL=$?
if [ $RETVAL -ne 0 ]
then
echo "Shutdown failure"
else
echo "Shutdown success"
fi
echo
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $vsftpd
RETVAL=$?
;;
restart)
stop
usleep 5000000
start
;;
*)
echo "Usage: $prog {start|stop|restart|status}"
exit 1
esac
exit $RETVAL
版权属于:
自渡
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
评论