参考网站:
http://blog.163.com/sunshine_linting/blog/static/44893323201391010522601/
http://blog.sina.com.cn/s/blog_715b47c50101k1bx.html
1 安装软件
1.1 软件安装包的获取
在ftp://vsftpd.beasts.org/users/cevans/untar/下载所需的安装包,并将其通过Xshell放置到Linux系统上
1.2 解压软件
[root@xldwhj vsftp]# tar vsftpd-2.1.0.tar.gz
[root@xldwhj vsftp]# cd vsftpd-2.1.0
1.3 vsftpd提前准备工作
[root@xldwhj vsftp]# useradd nobody
这里需要加一个nobody用户。如果提示useradd: user 'nobody' already exists则说明已存在,不需要添加该用户。
[root@xldwhj vsftp]# mkdir /usr/share/empty/
同上一步,可使用ls /usr/share/empty查看是否存在该目录,存在可跳过该步
如果需要开启匿名用户访问,需要做下面几步工作
[root@xldwhj vsftp]# mkdir /var/ftp/
创建供匿名用户使用的目录
[root@xldwhj vsftp]# useradd -d /var/ftp ftp
创建ftp用户并且指定家目录为/var/ftp,这个步骤一般的系统也有。如果创建后提示:useradd: user 'ftp' already exists就表示此用户已经存在。
1.4 源代码编译以及安装
[root@xldwhj vsftpd-2.1.0]# make
编译可能出现下述问题
sysdeputil.o: In function `vsf_sysdep_check_auth':
sysdeputil.c:(.text+0x109): undefined reference to `crypt'
sysdeputil.c:(.text+0x13a): undefined reference to `crypt'
collect2: ld 返回 1
make: *** [vsftpd] 错误 1
解决方法:
[root@xldwhj vsftpd-2.1.0]#vim Makefile
在LIBS = `./vsf_findlibs.sh`
末尾增加-lcrypt变成
LIBS = `./vsf_findlibs.sh` -lcrypt
[root@xldwhj vsftpd-2.1.0]# 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
1.5 编辑配置
[root@xldwhj vsftpd-2.1.0]# cp vsftpd.conf /etc/
将默认配置文件考贝到/etc/
[root@xldwhj vsftpd-2.1.0]# cp RedHat/vsftpd.pam /etc/pam.d/vsftpd
为了让vsftpd支持本地用户登录,我们将身份认证模块文件(PAM安全验证文件)拷贝到验证文件所在的目录。
2 配置vsftpd服务
2.1 服务的启动与停止
启动服务之前,我们先编辑配置文件/etc/vsftpd.conf. 打开配置文件后可以看到许多以“#”开始的行,这些行都是注释行,大多是帮助信息,可以仔细阅读。vsftpd.conf文件的所有项目都是以“参数=值 ”来设置的,对格式要求比较严格,必须严格区分大小写,等号两边不能有空格,每行的最后也不能有空格。每个参数都有一个默认值,没有在配置文件中明确指定 的参数就会使用默认值。我们这里不理会配置文件本来的信息,把所有内容都删掉或注释掉,最后加上下面四行,每行右边的//及后的文字是含义说明,不要输入到文件中:
listen=yes //vsftpd工作在standalone 模式下
anonymous_enable=yes //允许匿名用户登陆服务器
local_enable=yes //允许本地用户登录到服务器
pam_service_name=vsftpd //使用PAM认证
vsftpd有两种工作模式,standalone模式和xinetd守护进程模式,第1行就是让其工作在standalone模式下。此种模式中,每次 修改配置文件必须重新启动vsftpd服务才能生效,关于两种模式在后面有详细介绍。我们安装时还把 Redhat 目录下的 vsftpd.pam 文件复制成了/etc/pam.d/vsftpd 文件。这个文件就是本地用户登陆的 pam 验证配置文件。关于这个文件我们会在后面具体介绍。这里我们要知道,必须得有这个配置文件,而且主配置文件里要加上 pam_service_name=vsftpd语句,我们才能让本地用户登陆。用以下命令启动服务:
[root@xldwhj vsftpd-2.1.0]# /usr/local/sbin/vsftpd & //后台启动vsftp
[root@xldwhj vsftpd-2.1.0]# ps //查看vsftpd是否启动
PID TTY TIME CMD
1674 pts/0 00:00:00 bash
2247 pts/0 00:00:00 vsftpd //已启动
24230 pts/0 00:00:00 ps
2.2 登录服务器
[root@xldwhj vsftpd-2.1.0]# ftp 127.0.0.1
如果出现下属述错误
则说明没有安装ftp客户端
[root@xldwhj vsftpd-2.1.0]
rpm -Uvh http://mirror.centos.org/centos/6/os/x86_64/Packages/ftp-0.17-54.el6.x86_64.rpm
安装完客户端之后在尝试上述命令
[root@xldwhj vsftpd-2.1.0]# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 2.1.0)
Name (127.0.0.1:root): root
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp>
至此vsftp已经搭建完成