CentOS 6.5 下搭建vsftp服务

参考网站:

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已经搭建完成

原文地址:https://www.cnblogs.com/whutxldwhj/p/5973729.html