vsftp的安装或升级

1. 下载最新版的vsftpd
         https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gzlinux

2. 上传到Linux 服务器shell

例如  /app目录bash

3.关闭服务(升级须要)服务器

service vsftpd stopapp

4.关闭SELINUXtcp

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config;ide

5.备份配置文件 (升级须要) 
        cp -r /etc/vsftpd  /app工具

6.检查旧版vsftpd 版本 (升级须要) 
        vsftpd -v测试

7.卸载旧版vsftpd (升级须要) 
        yum remove -y vsftpdui

8.编译安装源码包
        cd  /app
        tar -xzvf vsftpd-3.0.3.tar.gz 
        cd vsftpd-3.0.3

vi builddefs.h
        将
        #undef VSF_BUILD_TCPWRAPPERS
        修改成
        #define VSF_BUILD_TCPWRAPPERS

9.修改显示
        sed -i 's/UTF8 ON/DISABLE UTF8 ON/g' opts.c

10.编译安装
        make && make install

出错的话,若是须要 tcp_wrappers-devel   安装 yum install tcp_wrappers-devel

须要libcap.so的话,选查找系统中的find / -name "*libcap.so*" , 将64位的创建软链接

cd /usr/lib
        ln -sv /lib64/libcap.so.2.16 libcap.so

11.复制配置文件
mkdir /etc/vsftpd/
cp vsftpd.conf /etc/vsftpd/
cp RedHat/vsftpd.pam /etc/pam.d/ftp
sed -i 's/lib\//lib64\//g' /etc/pam.d/ftp

12.建立虚拟用户

添加用户

Useradd –s /sbin/nologin vftp

mkdir /ftproot     //建立ftp根目录为/ftproot

建立用户和密码文件,而后用db4工具把用户名和密码转换成系统识别的格式。

vi vftpuser    //新建文件写入用户名和密码

注:第一行写用户名,第二行写密码,以此类推,要建立多少虚拟用户,依次写下去。

例如:

abc

123

cba

321

建立了两个用户abc和cba密码分别为123和321

接着使用工具将其转换,而且存放在适当的位置,如将密码文件保存到/etc/vsftpd/:

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

命名为vftpuser.db。

注意:此时若是没有安装db4工具会出现错误。

解决方法:安装rpm的db四、db4-util包

配置PAM验证文件

修改 /etc/pam.d/vsftpd

在下面添加以下两行,其余所有注释掉。

auth    required        pam_userdb.so     db=/etc/vsftpd/vftpuser

account required     pam_userdb.so     db=/etc/vsftpd/vftpuser

注意这里是vftpuser,不是vftpuser.db

新建针对虚拟用户的配置文件

mkdir –p /etc/vsftpd/vsftpd_user_conf

vi /etc/vsftpd/vsftpd_user_conf/abc //建立名为abc的控制文件。

local_root=/ftproot/        //abc这个用户登录上来的家目录是/ftproot

anon_upload_enable=YES       //容许上传

anon_mkdir_write_enable=YES   //容许建立目录

anon_other_write_enable=YES    //容许删除文件和目录

一样建立cba的配置文件。

13.修改配置文件
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=No
local_enable=YES
write_enable=YES 
dirmessage_enable=YES
max_clients=100
local_root=/app

pam_service_name=vsftpd //用vsftpd里的脚本作pam验证

tcp_wrappers=YES //开启ip控制

chroot_local_user=YES //锁定用户根目录

guest_enable=YES  //开启虚拟帐户

guest_username=vftp //虚拟帐户使用vftp(刚才建的系统帐户)映射

user_config_dir=etc/vsftpd/vsftp_user_conf  //虚拟帐户的控制文件路径

14. 测试是否启动成功

/usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf

15.制做启动脚本
cp /usr/local/sbin/vsftpd /usr/sbin/vsftpd
vi /etc/xinetd.d/vsftpd

修改成disable     = yes

vi  /etc/init.d/vsftpd
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

#!/bin/bash
#
### BEGIN INIT INFO
# Provides: vsftpd
# Required-Start: $local_fs $network $named $remote_fs $syslog
# Required-Stop: $local_fs $network $named $remote_fs $syslog
# Short-Description: Very Secure Ftp Daemon
# Description: vsftpd is a Very Secure FTP daemon. It was written completely from
# scratch
### END INIT INFO

# 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

RETVAL=0
prog="vsftpd"
start() {
        # Start daemons.
        if [ -d /etc ] ; then
                for i in `ls /etc/vsftpd/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

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

16.受权755
chmod 755 /etc/init.d/vsftpd
chkconfig vsftpd on

 

17.验证 service vsftpd start vsftpd -v

相关文章
相关标签/搜索