Vsftp 安装配置手册 ( 在linux 完整版)

2025-11-11 12:42:40

一,前言

vsftp(very secure ftp)

是一种在

unix/linux

中非常安全且快速稳定的

ftp

服务器,目前已

经被许多大型站点所采用,如

ftp.redhat.com,ftp.kde.org,ftp.gnome.org.

等。

vsftpd

的实现有三

种方式

1

、匿名用户形式:在默认安装的情况下,系统只提供匿名用户访问

2

、本地用户形式:以

/etc/passwd

中的用户名为认证方式

3

、虚拟用户形式:支持将用户名和口令保存在数据库文件或数据库服务器中。相对于

ftp

的本地用户形式来说,虚拟用户只是

ftp

服务器的专有用户,虚拟用

户只能访问

ftp

服务器所提供的资源,

这大大增强系统本身的安全性。

相对于匿名用户而言,

虚拟用户需要用户名和密码才能获取

ftp

服务器中的文件,增加了

对用户和下载的可管理性。

对于需要提供下载服务,

但又不希望所有人都可以匿名下载;

需要对下载用户进行管理,又考虑到主机安全和管理方便的

ftp

站点来

说,虚拟用户是一种极好的解决方案。

二、获取最新版的

vsftp

程序

vsftp

官方下载:

ftp: 

//vsftpd.beasts.org/users/cevans/vsftpd-2.0.3.tar.gz

,目前已经到

2.0.3

版本。假设我们已经

vsftpd-2.0.3.tar.gz

文件下载到服务器的

/home/xuchen

目录

[copy to clipboard] [ - ]code: 

# cd /home/xuchen 

# tar xzvf vsftpd-2.0.3.tar.gz //

解压缩程序

# cd vsftpd-2.0.3 

三、三种方式的实现

1

、匿名用户形式实现

# vi builddefs.h 

\

编辑

builddefs.h 

文件,文件内容如下:

#ifndef vsf_builddefs_h 

#define vsf_builddefs_h 

#undef vsf_build_tcpwrappers 

#define vsf_build_pam 

#undef vsf_build_ssl 

#endif /* vsf_builddefs_h */ 

将以上

undef

的都改为

define

,支持

tcp_wrappers

,支持

pam

认证方式,支持

ssl 

# make 

//

直接在

vsftpd-2.0.3

里用

make

编译

# ls -l vsftpd 

-rwxr-xr-x 

1 root root 86088 jun 

6 12:29 vsftpd 

//

可执行程序已被编译成功

创建必要的帐号,目录:

# useradd nobody 

//

可能你的系统已经存在此帐号,那就不用建立

# mkdir /usr/share/empty 

//

可能你的系统已经存在此目录,那就不用建立

# mkdir /var/ftp 

//

可能你的系统已经存在此目录,那就不用建立

# useradd -d /var/ftp ftp 

//

可能你的系统已经存在此帐号,那就不用建立

# chown root:root /var/ftp 

# chmod og-w /var/ftp 

请记住,如果你不想让用户在本地登陆,那么你需要把他的登陆

shell

设置成

/sbin/nologin

比如以上的

nobody

ftp

我就设置成

/sbin/nologin 

安装

vsftp

配置文件,可执行程序,

man

# install -m 755 vsftpd /usr/local/sbin/vsftpd-ano 

# install -m 644 vsftpd.8 /usr/share/man/man8 

# install -m 644 vsftpd.conf.5 /usr/share/man/man5 

# install -m 644 vsftpd.conf /etc/vsftpd-ano.conf 

这样就安装完成了,那么我们开始进行简单的配置

# vi /etc/vsftpd-ano.conf ,

将如下三行加入文件

listen=yes 

listen_port=21 

tcp_wrappers=yes 

anon_root=/var/ftp //

设置匿名用户本地目录,和

ftp

用户目录必须相同

listen=yes

的意思是使用

standalone

启动

vsftpd

,而不是

super 

daemon(xinetd)

控制它

(vsftpd

推荐使用

standalone

方式

# /usr/local/sbin/vsftpd-ano /etc/vsftpd-ano.conf & 

//

以后台方式启动

vsftpd 

注意:每行的值都不要有空格,否则启动时会出现错误,举个例子,假如我在

listen=yes

多了个空格,那我启动时就出现如下错误:

500 oops: bad bool value in config file for: listen 

测试搭建好的匿名用户方式

# ftp 127.0.0.1 

connected to 127.0.0.1. 

220 (vsftpd 2.0.3) 

530 please login with user and pass. 

530 please login with user and pass. 

kerberos_v4 rejected as an authentication type 

name (127.0.0.1:root): ftp 

331 please specify the password. 

password: 

230 login successful. 

remote system type is unix. 

using binary mode to transfer files. 

ftp>; pwd 

257 "/" 

ftp>; quit 

221 goodbye. 

ok

,已经完成了,

very nice. 

高级配置

细心的朋友可能已经看出来我们只在默认配置文件增加了四行,就实现了

ftp

连接(也证明

vsftpd

的易用性)

,那么让我们传个文件吧,呀!

!传输失败了(见图

1

为什么呢?因为

vsftpd 

是为了安全需要,

/var/ftp

目录不能把所有的权限打开,所以我们这

时要建一个目录

pub

,当然也还是需要继续修改配置文件的。

# mkdir /var/ftp/pub 

# chmod -r 777 /var/ftp/pub 

为了测试方便,我们先建立一个名为

kill-ano

的脚本,是为了杀掉

ftp

程序的

#!/bin/bash 

a=`/bin/ps -a | grep vsftpd-ano | awk '{print $1}'` 

kill -9 $a 

那么现在大家看看我的匿名服务器配置文件吧

anonymous_enable=yes 

//

允许匿名访问,这是匿名服务器必须的

write_enable=yes 

//

全局配置可写

no_anon_password=yes //

匿名用户

login

时不询问口令

anon_umask=077; //

匿名用户上传的文件权限是

-rw---- 

anon_upload_enable=yes 

//

允许匿名用户上传文件

anon_mkdir_write_enable=yes 

//

允许匿名用户建立目录

anon_other_write_enable=yes 

//

允许匿名用户具有建立目录,上传之外的权限,如重命名,

删除

dirmessage_enable=yes 

//

当使用者转换目录

,

则会显示该目录下的

.message

信息

xferlog_enable=yes 

//

记录使用者所有上传下载信息

xferlog_file=/var/log/vsftpd.log 

//

将上传下载信息记录到

/var/log/vsftpd.log

xferlog_std_format=yes 

//

日志使用标准

xferlog

格式

idle_session_timeout=600 

//

客户端超过

600s

没有动作就自动被服务器踢出

data_connection_timeout=120 

//

数据传输时超过

120s

没有动作被服务器踢出

chown_uploads=yes 

chown_username=daemon 

//

上传文件的属主

ftpd_banner=welcome to d-1701.com ftp service. 

//ftp

欢迎信息

anon_max_rate=80000 

//

这是匿名用户的下载速度为

80kbytes/s 

check_shell=no 

//

不检测

shell 

[nextpage] 

现在再测试,先

kill

掉再启动

ftp

程序

# ./kill-ano 

# /usr/local/sbin/vsftpd-ano /etc/vsftpd-ano.conf & 

上传一个文件测试一下,怎么样?

ok

了吧,下载刚上传的那个文件,恩?不行,提示

550 failed to open file. 

传输已失败!

传输队列已完成

个文件传输失败

没有关系,你记得咱们设置了

anon_umask=077

了吗?所以你下载不了,如果你到服务器上

touch 

一个文件

644

测试一下,

是可以被下载下来的,

好了,

匿名服务器就说到这里了。

2

、本地用户形式实现

# cd /home/xuchen/vsftpd-2.0.3 

//

进入

vsftpd-2.0.3

的源代码目录

# make clean 

//

清除编译环境

# vi builddefs.h 

\

继续编辑

builddefs.h 

文件,文件内容如下:

#ifndef vsf_builddefs_h 

#define vsf_builddefs_h 

#define vsf_build_tcpwrappers 

#define vsf_build_pam 

#define vsf_build_ssl 

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:109
  • 阅读量:20
  • 阅读量:100
  • 阅读量:72
  • 阅读量:196
  • 猜你喜欢