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

相關文章
相關標籤/搜索