当前位置:首页 > FTP
Linux 系统下 vsftpd 的安装与配置
来源:靑龍一笑的博客  作者:靑龍一笑  发布时间:2016-10-03 00:42:56  点击量:1280  评论:0

    一、解压 vsftpd-3.0.3.tar.gz 并进入到解压后的目录:

[root@RicenOS ftp]# tar xvf vsftpd-3.0.3.tar.gz
[root@RicenOS ftp]# cd vsftpd-3.0.3

    针对 64 位系统,需要修改 vsf_findlibs.sh 文件:

[root@RicenOS vsftpd-3.0.3]# vi vsf_findlibs.sh

    输入命令::%s?lib/?lib64/?
    然后保存。接着,修改相关的 lib 链接:

[root@RicenOS vsftpd-3.0.3]# rm -rf /lib/libpam.so.0
[root@RicenOS vsftpd-3.0.3]# ln -s /lib64/libpam.so.0 /lib/libpam.so.0

    对于 32 位系统,上述步骤可以省略。
    二、编译:

[root@RicenOS vsftpd-3.0.3]# make

    针对 6.5 版本的 RHEL,这里编译完以后,是没有加载到 libpam.so.0 这一动态库文件,这会导致虚拟用户 530 登录失败。可以使用如下命令来查看是否成功加载了 libpam.so.0 这一动态库文件:

[root@RicenOS vsftpd-3.0.3]# ldd vsftpd

    针对 6.5 版本 RHEL 的这一问题,只需要安装 pam-devel 软件包,然后重新编译下即可。

[root@RicenOS softwares]# rpm -ivh pam-devel-1.1.1-17.el6.x86_64.rpm

    三、拷贝相关的文件:

[root@RicenOS vsftpd-3.0.3]# cp vsftpd /usr/local/sbin/vsftpd
[root@RicenOS vsftpd-3.0.3]# mkdir -pv /usr/local/man/man5
[root@RicenOS vsftpd-3.0.3]# mkdir -pv /usr/local/man/man8
[root@RicenOS vsftpd-3.0.3]# cp vsftpd.conf.5 /usr/local/man/man5/
[root@RicenOS vsftpd-3.0.3]# cp vsftpd.8 /usr/local/man/man8/
[root@RicenOS vsftpd-3.0.3]# mkdir -pv /etc/vsftpd
[root@RicenOS vsftpd-3.0.3]# cp vsftpd.conf /etc/vsftpd/

    四、安装:

[root@RicenOS vsftpd-3.0.3]# make install

    五、为虚拟用户创建本地系统用户 vsftpd,并且禁止这个用户登录访问系统:

[root@RicenOS vsftpd-3.0.3]# useradd -d /home/vsftpd -s /sbin/nologin vsftpd

    六、创建虚拟用户列表:

[root@RicenOS vsftpd-3.0.3]# vi /home/vsftpd/ftpusers
ricen
12345678
smart
87654321

    其中,第一行为第一个用户的帐号 ricen,第二行为 ricen 用户的密码。第三行为第二个用户的帐号 smart,第四行为 smart 用户的密码。以此类推……
    七、创建虚拟用户数据库,在此之前需要先安装 db4-utils 工具包,该软件包可以在系统镜像安装包里找到:

[root@RicenOS vsftpd-3.0.3]# rpm -ivh db4-utils-4.3.29-10.el5_5.2.x86_64.rpm

    使用 db_load 命令创建虚拟用户数据库:

[root@RicenOS vsftpd-3.0.3]# db_load -T -t hash -f /home/vsftpd/ftpusers /etc/vsftpd/vsftpd_login.db

    设置虚拟用户数据库文件只有所有者有读写权限:

[root@RicenOS vsftpd-3.0.3]# chmod 600 /etc/vsftpd/vsftpd_login.db

    八、配置 PAM 文件:

[root@RicenOS vsftpd-3.0.3]# vi /etc/pam.d/vsftpd

    内容如下:

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

    九、配置 vsftpd:

[root@RicenOS vsftpd-3.0.3]# vi /etc/vsftpd/vsftpd.conf

    1、anonymous_enable=YES 改为 anonymous_enable=NO,阻止匿名上传。
    2、去掉 local_enable=YES、write_enable=YES 和 local_umask=022 前的注释。
    3、去掉 ascii_upload_enable=YES 和 ascii_download_enable=YES 前的注释,允许使用 ASCII 模式上传和下载文件。
    4、去掉 chroot_local_user=YES 前的注释,阻止用户向上级切换目录。
    5、添加 allow_writeable_chroot=YES,解决 vsftpd 用户因为 home 目录为 root 权限而无法登录问题。
    6、添加 pam_service_name=vsftpd,允许本地用户登录。
    7、添加 guest_enable=YES,开启虚拟用户。
    8、添加 guest_username=vsftpd,虚拟用户对应的系统用户 vsftpd。
    9、添加 user_config_dir=/etc/vsftpd/vusers,设置用户配置文件的存放目录。
    十、创建虚拟用户配置文件:

[root@RicenOS vsftpd-3.0.3]# mkdir -pv /etc/vsftpd/vusers

    以 ricen 用户配置为例:

[root@RicenOS vsftpd-3.0.3]# vi /etc/vsftpd/vusers/ricen

    内容如下:

# 虚拟用户的根目录
local_root=/opt/websites
# 开放 ricen 的下载权限
anon_world_readable_only=NO
# 开放 ricen 的上传权限
anon_upload_enable=YES
# 开放 ricen 创建目录的权限
anon_mkdir_write_enable=YES
# 开放 ricen 删除和重命名的权限
anon_other_write_enable=YES
# 虚拟用户的上传掩码
anon_umask=022

    十一、把虚拟用户根目录的权限赋给虚拟用户映射的本地系统用户 vsftpd:

[root@RicenOS vsftpd-3.0.3]# chown -R vsftpd:vsftpd /opt/websites/

    十二、配置系统服务:

[root@RicenOS vsftpd-3.0.3]# vi /etc/rc.d/init.d/vsftpd

    内容如下:

#!/bin/sh
# chkconfig: 35 23 28
# description: vsftpd Server
set -e
DESC="vsftpd"
DAEMON="/usr/local/sbin/vsftpd"
CONFIGFILE="/etc/vsftpd/vsftpd.conf"
PID=`lsof -i :21 | grep vsftpd | awk '{print $2}'`
start(){
    if [[ $PID != "" ]]; then
        echo "$DESC is already running."
    else
        echo "Starting $DESC ..."
        $DAEMON $CONFIGFILE &
    fi
}
stop(){
    if [[ $PID != "" ]]; then
        echo "Stopping $DESC ..."
        lsof -i :21 | grep vsftpd | awk '{print $2}' | xargs kill -9 >/dev/null 2>&1
    else
        echo "$DESC is not running.";
    fi
}
restart(){
    if [[ $PID != "" ]]; then
        echo "Stopping $DESC ..."
        lsof -i :21 | grep vsftpd | awk '{print $2}' | xargs kill -9 >/dev/null 2>&1
    fi
    echo "Starting $DESC ..."
    $DAEMON $CONFIGFILE &
}
status(){
    if [[ $PID != "" ]]; then
        echo "$DESC is running."
    else
        echo "$DESC is not running."
    fi
}
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    status)
        status
        ;;
    *)
        echo "Usage: $0{start | stop | restart | status}"
        exit 1
        ;;
esac
exit 0
[root@RicenOS vsftpd-3.0.3]# chmod +x /etc/rc.d/init.d/vsftpd
[root@RicenOS vsftpd-3.0.3]# chkconfig --level 35 vsftpd on

    十三、取消 xinetd 方式启动:

[root@RicenOS vsftpd-3.0.3]# vi /etc/xinetd.d/vsftpd

    把 disable = no 改成 disable = yes。如果有启用 xinetd 的话,需要重启 xinetd:

[root@RicenOS vsftpd-3.0.3]# service xinetd restart
版权所有 © 2005-2023 靑龍一笑的博客  Powered by C.S.Ricen
Copyright © 2005-2023 by www.ricensoftwares.com.cn  All Rights Reserved.

欢迎光临本站,这里是靑龍一笑的博客。

因资金匮乏,本站已迁到国外的免费空间,可能导致本站的访问速度较慢,由此给您带来的不便,敬请谅解。

您可以通过下方的“支持本站建设”链接,给本站提供资金支持。

Free Web Hosting