vsftp安装

来源:岁月联盟 编辑:exp 时间:2011-10-27

 

    -----趁这夜深人静的大好机会,偶有来安装vsftpd试试,其间也遇到了些问题,不过最终还是顺利的解决啦,很不错,就把经历写一下,希望能给其他人带来帮助。

 

一、前言

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程序

       目前已经到vsftpd-2.0.6版本

(1)解压并编译软件

 

# tar xzvf vsftpd-2.0.6.tar.gz //解压缩程序

# cd vsftpd-2.0.6

 

 

# 开始安装,使用make命令

[root@localhost vsftpd-2.0.6]# make

 

注意,这一步可能会遇到如下错误,代码:

sysdeputil.c:1129: error: storage class specified for parameter 's_utent'

sysdeputil.c:1134: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token

sysdeputil.c:1173: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token

sysdeputil.c:1189: error: old-style parameter declarations in prototyped function definition

sysdeputil.c:162: error: parameter name omitted

sysdeputil.c:162: error: parameter name omitted

sysdeputil.c:162: error: parameter name omitted

sysdeputil.c:1189: error: expected '{' at end of input

make: *** [sysdeputil.o] Error 1

个人认为是sysdeputil.c 文件出错, 姑且网上有相应的补丁文件,于是决定下载attachment.bin打补丁:

        # patch sysdeputil.c attachment.bin

# ls -l vsftpd

        -rwxr-xr-x 1 root root 86088 Jun 6 12:29 vsftpd //可执行程序已被编译成功

 

偶就是在这遇到了问题,在网上搜了半天,也没找到解决办法,最后好不容易才在一个论坛上给我发现啦,还算不错,呵呵。

 

(2)安装VSFTPD的配置、执行和帮助文件。

# 进行安装的第二步,执行命令:make install过程如下。

[root@localhost vsftpd-2.0.6]# make install

if [ -x /usr/local/sbin ]; then /

        install -m 755 vsftpd /usr/local/sbin/vsftpd; /

else /

        install -m 755 vsftpd /usr/sbin/vsftpd; fi

if [ -x /usr/local/man ]; then /

        install -m 644 vsftpd.8 /usr/local/man/man8/vsftpd.8; /

        install -m 644 vsftpd.conf.5 /usr/local/man/man5/vsftpd.conf.5; /

elif [ -x /usr/share/man ]; then /

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

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

else /

        install -m 644 vsftpd.8 /usr/man/man8/vsftpd.8; /

        install -m 644 vsftpd.conf.5 /usr/man/man5/vsftpd.conf.5; fi

install: 无法创建一般文件‘/usr/local/man/man8/vsftpd.8’: 没有那个文件或目录

install: 无法创建一般文件‘/usr/local/man/man5/vsftpd.conf.5’: 没有那个文件或目录

make: *** [install] 错误1

# 由上观之,产生错误,原因大致为man8与man5两个文件没有建立,建立之。

[root@localhost vsftpd-2.0.6]# mkdir /usr/local/man/man8

[root@localhost vsftpd-2.0.6]# mkdir /usr/local/man/man5

 

呵呵 这里又有个错误,不过这个很好解决吧。

# 再次执行make install命令,详情如下。

[root@localhost vsftpd-2.0.6]# make install

if [ -x /usr/local/sbin ]; then /

        install -m 755 vsftpd /usr/local/sbin/vsftpd; /

else /

        install -m 755 vsftpd /usr/sbin/vsftpd; fi

if [ -x /usr/local/man ]; then /

        install -m 644 vsftpd.8 /usr/local/man/man8/vsftpd.8; /

        install -m 644 vsftpd.conf.5 /usr/local/man/man5/vsftpd.conf.5; /

elif [ -x /usr/share/man ]; then /

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

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

else /

        install -m 644 vsftpd.8 /usr/man/man8/vsftpd.8; /

        install -m 644 vsftpd.conf.5 /usr/man/man5/vsftpd.conf.5; fi

if [ -x /etc/xinetd.d ]; then /

        install -m 644 xinetd.d/vsftpd /etc/xinetd.d/vsftpd; fi

 

# install成功,查看/etc下是否已经有文件:vsftpd.conf

# 若是没有,从当前工作目录拷贝之。

[root@localhost vsftpd-2.0.6]# ls /etc/ |grep vsftpd.conf

[root@localhost vsftpd-2.0.6]# cp vsftpd.conf /etc/

 

# 编辑/etc/vsftpd.conf,在最下面加入以下这一行:listen=YES

[root@localhost vsftpd-2.0.6]# vi /etc/vsftpd.conf

 

# 查看/var/下是否存在ftp文件夹,若没有创建之

[root@localhost vsftpd-2.0.6]# ls /var/|grep ftp

[root@localhost vsftpd-2.0.6]# mkdir /var/ftp

# 为测试方便,在/var/ftp/下创建文件夹pub

[root@localhost vsftpd-2.0.6]# mkdir /var/ftp/pub

# 试在后台运行vsftpd

# 若是不知道命令vsftpd的路径可执行命令:which vsftpd查看。

[root@localhost vsftpd-2.0.6]# /usr/local/sbin/vsftpd &

[1] 3594

# 测试ftp服务

[root@localhost vsftpd-2.0.6]# ftp localhost

Connected to localhost.localdomain.

220 (vsFTPd 2.0.6)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

# 登录时用户名为ftp;密码为空。

Name (localhost:root): ftp

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

# 使用ls查看命令可以看到pub的详细信息。

ftp> ls

227 Entering Passive Mode (127,0,0,1,250,71)

150 Here comes the directory listing.

drwxrwxrwx    2 0        0            4096 Sep 26 00:05 pub

226 Directory send OK.

# 执行quit命令退出。

ftp> quit

 

# 注:若要开机自动启动vsFTPd,请在/etc/rc.d/rc.local中加入:/usr/local/sbin/vsftpd &

 

 

         好啦,简单的安装就完成啦。

 

 

摘自:阿休哥