CentOS6.x下编译安装vsftpd-3.0.3
好几年不用ftp了,本来想着yum安装下完事,发现版本太低了,2.x,官方已经3.0.3了,故编译安装。记录安装步骤如下:
最好关闭掉selinux。
一、安装基础依赖包下载源码包:
yum install gcc gcc-c++ db4-utils pam-devel libcap libcap-devel -y
wget https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz
官网地址在这里https://security.appspot.com/vsftpd.html
二、编译安装:
tar xvf vsftpd-3.0.3.tar.gz
cd vsftpd-3.0.3
make
make install
即可安装完成,使用
vsftpd -v #查看版本号
vsftpd: version 3.0.3
三、配置
把身份认证模块拷贝至系统目录中
cp vsftpd-3.0.3/RedHat/vsftpd.pam /etc/pam.d/vsftpd
vim /etc/xinetd.d/vsftpd 将disable中no改成yes
设置为服务
vim /etc/rc.d/init.d/vsftpd
#!/bin/bash
#
# vsftpd This Shell script takes care of starting and stopping
# standalone vsftpd.
#
# chkconfig: - 60 50
# description: Vsftpd is a ftp daemon, which is the program
# that answers incoming ftp service requests.
# processname: vsftpd
# config: /etc/vsftpd/vsftpd.conf
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x /usr/local/sbin/vsftpd ] || exit 0
RETVAL=0
prog="vsftpd"
start() {
# Start daemons.
if [ -d /etc/vsftpd ] ; then
for i in `ls /etc/vsftpd/*.conf`; do
site=`basename $i .conf`
echo -n $"Starting $prog for $site: "
/usr/local/sbin/vsftpd $i &
RETVAL=$?
[ $RETVAL -eq 0 ] && {
touch /var/lock/subsys/$prog
success $"$prog $site"
}
echo
done
else
RETVAL=1
fi
return $RETVAL
}
stop() {
# Stop daemons.
echo -n $"Shutting down $prog: "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
return $RETVAL
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
RETVAL=$?
;;
condrestart)
if [ -f /var/lock/subsys/$prog ]; then
stop
start
RETVAL=$?
fi
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1
esac
exit $RETVAL
保存,再给该文件加上执行权限:
chmod +x /etc/rc.d/init.d/vsftpd
service vsftpd {start|stop|restart|condrestart|status}
现在就可以把vsftpd当作服务来启动了;
service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
创建目录
mkdir /etc/vsftpd/
mkdir /etc/vsftpd/userconfig
创建虚拟用户
添加虚拟用户名和密码,一行用户名,一行密码,以此类推。奇数行为用户名,偶数行为密码。
vim /etc/vsftpd/vuser.txt
test001 #用户名
123456 #密码
test002 #用户名
123456 #密码
将刚添加的vuser.txt虚拟用户口令文件转换成系统识别的口令认证文件。
db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
编辑vsftpd的PAM认证文件
vim /etc/pam.d/vsftpd
将里面其他的都注释掉,添加下面这两行:
32位系统:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
64位系统
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
建立本地映射用户并设置宿主目录权限
所有的FTP虚拟用户需要使用一个系统用户,这个系统用户不需要密码。
useradd vftp -d /data -s /bin/false
vsftpd.conf配置文件说明
直接查看cat vsftpd.conf | grep -v "#"
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to XXXXXX server.
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list #chroot_list加入登陆用户的名字,限制主目录
user_config_dir=/etc/vsftpd/userconfig #用户配置文件目录,一个用户一个配置文件
allow_writeable_chroot=YES
listen=YES
listen_port=21 #默认端口号
guest_enable=YES
guest_username=vftp
pam_service_name=vsftpd
virtual_use_local_privs=YES
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10005
pasv_promiscuous=YES
虚拟用户配置实例
/etc/vsftpd/userconfig/test001
test001的根目录为/data/upfile/test,权限为可上传、下载、创建、改名和删除的权限。
local_root=/data/upfile/test
anon_world_readable_only=no
write_enable=yes
anon_upload_enable=yes
anon_other_write_enable=yes
anon_mkdir_write_enable=yes
限速的几个全局设置:
anon_max_rate 设置匿名用户每条连接最大上传或下载速率
local_max_rate 设置本地用户每条连接最大上传或下载速率
max_per_ip 设置每个用户允许连接最大连接数,即每台电脑同时可以打开几个ftp连接
max_clients 设置允许同时连接服务器最大客户端数
对具体单个用户进行限速:
在用户设置文件中加入这句local_max_rate=1000000即限制某个用户上传、下载速度为最大1M
报错解决:
vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误的解决方法.
限定了用户不能跳出其主目录之后,使用该用户登录FTP时往往会遇到这个错误:
在vsftpd的配置文件中增加下列两项中的一项:
allow_writeable_chroot=YES
然后设置下根目录权限
chmod a-w /data
更改下级主目录属主为vftp
chown -R vftp.vftp /data/upfile
chroot_list文件里面要加入登陆用户的名字,限制主目录,不写也会包500错误
即可解决·
/etc/pam.d/vsftpd文件设置如下:
#%PAM-1.0
#auth required /lib64/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
#auth required /lib64/security/pam_unix.so shadow nullok
#auth required /lib64/security/pam_shells.so
#account required /lib64/security/pam_unix.so
#session required /lib64/security/pam_unix.so
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
Tag标签:「vsftpd ftp」更新时间:「2021-11-03 16:01:13」阅读次数:「698」