centos6.9编译安装vsftpd最新版

创建FTP用户和指定访问目录

查看创建的账号

cat /etc/passwd

创建一个ftp的访问目录
mkdir -p /www/wwwroot

因为我之前已经创建了/www/wwwroot/目录,并且这个目录的归属是www组的www用户,
所以现在只需要新建一个ftp宿主用户sftp

useradd -g www -s /bin/false -u 1003 sftp
# 更改目录权限
chown www:www /www/wwwroot
chmod -R 775 /www/wwwroot

如果还没有/www/wwwroot/目录和www组和www用户的

# 创建一个组
groupadd www
# 创建一个用户,不允许登陆和不创主目录 
useradd -s /bin/false -g www -M www
useradd -g www -s /bin/false -u 1003 sftp
# 更改目录权限
chown www:www /www/wwwroot
chmod -R 775 /www/wwwroot

安装vsftpd

安装依赖

yum -y install gcc gcc-c++ db4-utils pam-devel libcap tcp_wrappers-devel libXtst-devel libcap-devel

进入下载目录

mkdir -p /www/local/src
cd /www/local/src

编译安装配置vsftpd

#下载
wget https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz
#解压
tar zxvf vsftpd-3.0.3.tar.gz

进入vsftpd目录

cd /www/local/src/vsftpd-3.0.3

编辑

vim builddefs.h

显示如下

#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL

## 改成

#define VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#define VSF_BUILD_SSL

手动创建这两个目录即可,否则下面make install 会报错

mkdir -p /usr/local/man/man8/
mkdir -p /usr/local/man/man5/

编译源码

make

安装

make install

创建配置目录

mkdir -p /etc/vsftpd

拷贝配置文件

cp vsftpd.conf /etc/vsftpd

拷贝身份验证模块文件,让vsftpd支持本地用户登录

cp RedHat/vsftpd.pam /etc/pam.d/vsftpd 

添加vsftpd自启动服务

配置vsftpd独立启动

vim /etc/xinetd.d/vsftpd

disable = no改成disable = 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

# 添加开机自动启动服务 
chkconfig --add vsftpd
chkconfig vsftpd on 

# 查看vsftpd服务状态
service vsftpd status

# 启动vsftpd服务
service vsftpd start

# 重启vsftpd服务
service vsftpd restart

编辑配置文件

直接查看当前有效配置

cat vsftpd.conf | grep -v "#"

这是看看没有注释掉的配置参数

如下

anonymous_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
listen=YES

然而这并不是我们想要的,接下来配置我们需要的参数

备份默认配置文件

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.default

删除默认配置文件

rm /etc/vsftpd/vsftpd.conf

新建一份配置文件

vim /etc/vsftpd/vsftpd.conf

写入内容如下

#端口
listen_port=10080
local_root=/www/wwwroot
anonymous_enable=NO
tcp_wrappers=YES

#读写配置
listen=YES
local_enable=YES
write_enable=YES

#功能设置
max_clients=5
max_per_ip=3
local_umask=022
dirmessage_enable=YES
connect_from_port_20=YES
ascii_upload_enable=YES
ascii_download_enable=YES

#日志配置
dual_log_enable=YES
xferlog_std_format=YES
xferlog_enable=YES
vsftpd_log_file=/var/log/vsftpd/vsftpd.log
xferlog_file=/var/log/vsftpd/xferlog

#限制用户设置
allow_writeable_chroot=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

#虚拟用户模式
user_config_dir=/etc/vsftpd/virtual_user
guest_enable=YES
guest_username=sftp
pam_service_name=vsftpd
virtual_use_local_privs=YES

#设置被动模式及端口范围
pasv_enable=YES
pasv_min_port=52800
pasv_max_port=52900
pasv_promiscuous=YES

创建虚拟用户

创建虚拟用户目录

mkdir /etc/vsftpd/virtual_user

创建用户列表,注意奇数行是用户名,偶数行是密码

vim /etc/vsftpd/virtual_user.txt

添加用户如下,注意奇数行是用户名,偶数行是密码

test
123456
test2
123456

生成虚拟口令认证的db文件

db_load -T -t hash -f /etc/vsftpd/virtual_user.txt /etc/vsftpd/virtual_user.db

编辑vsftpd的PAM认证文件

vim /etc/pam.d/vsftpd

保留第一行,将里面其他的都注释掉,在最后增加以下两句

# 32位系统
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/virtual_user
account required /lib/security/pam_userdb.so db=/etc/vsftpd/virtual_user

# 64位系统
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_user
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_user

创建虚拟用户目录配置文件

添加账户,文件名等于virtual_user.txt里面的账户名,否则下面设置无效

vim /etc/vsftpd/virtual_user/test

写入内容如下

# 每个虚拟用户的单独配置,会覆盖模板配置文件配置
local_root=/www/wwwroot
anon_umask=022
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

建立限制用户访问目录的空文件

touch /etc/vsftpd/chroot_list

创建日志文件

mkdir -p /var/log/vsftpd
touch /var/log/vsftpd/vsftpd.log
touch /var/log/vsftpd/xferlog

重启vsftpd服务

service vsftpd restart

添加SSL证书支持

建立证书

检查vsftpd是否支持ssl模块

ldd $(which vsftpd) | grep ssl
#显示如下
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f64c2470000)

建立专门给vsftpd使用的凭证数据。CentOS有一个建立凭证的地方/etc/pki/tls/certs/

cd /etc/pki/tls/certs

# 生成密钥文件
make vsftpd.pem
#
# 接下来就是证书的一些签名信息,按照具体的填完即可
#
#
#
# 复制证书到vsftpd目录
cp -a vsftpd.pem /etc/vsftpd/
ll /etc/vsftpd/vsftpd.pem
# -rw------- 1 root root 3145 Aug 13 17:35 /etc/vsftpd/vsftpd.pem

修改vstpd.conf配置文件

#停止服务
service vsftpd stop
#编辑配置文件
vim /etc/vsftpd/vsftpd.conf

添加SSL配置,具体如下

ssl_enable=YES
allow_anon_ssl=YES
force_anon_data_ssl=YES
force_anon_logins_ssl=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
#ssl_sslv2=NO
#ssl_sslv3=NO
rsa_cert_file=/etc/vsftpd/vsftpd.pem

最后保存,重启服务就OK了

#启动服务
service vsftpd start
#重启服务
service vsftpd restart

OK,到此安装完成

END

推荐阅读更多精彩内容

  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 2,649评论 0 10
  • ftp 文件传输协议 跨平台 上传下载文件 vsftpd 工具:非常安全的文件传输协议;默认的命令端口21号,数据...
    柒夏锦阅读 2,531评论 1 9
  • 配置ftp的时候遇到了许多坑.网上多数说默认目录在/var/ftp 下 结果ubuntu下默认实在/srv/ft...
    lotawei阅读 464评论 0 0
  • 剪破崇明欢跃去,裙拖帆影拍天流。乌云起落沉浮,十里秋风,烟雨里灵动,透着细腻深情,明媚动人,洋溢着青春的风采,在叶...
    雪狐狸阅读 1,319评论 1 2
  • 拆书帮2017年知识体系精深营,思考琦班同学线下第一次私董会的活动流程。 2017.7.9
    大梦010阅读 345评论 0 0