献给初学者:轻松快捷搭建VSFTP服务器

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
简介:

ftp服务概述

FTP,全称是File transfer protocol,即文件传输协议,是最常用的文件共享和文件传输方式。FTP常用的数据传输模式有2种,分别是主动传输模式(PORT FTP)和被动传输模式(PASV FTP)。
主动传输模式就是一般形式的FTP,首先由client建立传输请求,client通过port PORT与服务端建立连接,然后,FTP server端使用一个标准的20端口作为服务器端的数据连接端口,与客户端建立数据传输连接,并通过20端口传输数据。这里的端口20仅仅用于连接源地址是服务器的情况,同时端口20没有进程来检测client请求。
被动传输模式与PORT FTP类似,也是由client建立传输请求,client通过PASV命令与服务端建立连接,但是FTP服务端并不建立连接,而是等待client与其联系,默认情况下,服务端会通过非20端口的其它端口检测client请求。
由此我们可知两种传输模式的差异:PORT FTP模式下的数据传输port是由FTP server指定,而PASV FTP模式下的数据传输port是由FTP client 决定。通常使用的是PASV FTP模式, 用于有防火墙的环境下,透过client与server的沟通,决定数据传输的port。 
Linux下有很多FTP server软件,比较常见的有WU-FTP,VSFTP等,WU-FTP功能强大,在linux早期的版本中,都自带了这个软件,不过VSFTP是后起之秀,VSFTP非常安全,同时还具有高速和稳定的优点,因此在现在的linux版本中都默认自带了VSFTP软件包,而抛弃了WU-FTP。
 VSFTP的安装与配置
本节我们以linux下rpm包方式进行安装vsftp软件,操作系统版本为Red Hat Enterprise Linux Server release 5。
1.安装vsftp
检查vsftp是否已经安装,执行如下命令:
[root@localhost ~]#rpm -qa|grep vsftpd
没有任何输出,表示vsftp软件还没有安装。从系统的第二张光盘可找到vsftp对应的安装包vsftpd-2.0.5-10.el5.i386.rpm。
然后进行安装:
[root@localhost ~]#rpm -ivh vsftpd-2.0.5-10.el5.i386.rpm
warning: vsftpd-2.0.5-10.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:vsftpd                 ########################################### [100%]
[root@localhost ~]# rpm -qa vsftpd
vsftpd-2.0.5-10.el5
可以看到,vsftp已经安装成功。
2.配置vsftp
Vsftp相关的配置文件都在/etc/vsftpd目录,默认文件如下:
[root@localhost ~]# ll /etc/vsftpd/
total 20
-rw------- 1 root root 125 Jan 18 2007 ftpusers
-rw------- 1 root root 361 Jan 18 2007 user_list
-rw------- 1 root root 4397 Jan 18 2007 vsftpd.conf
-rwxr--r-- 1 root root 338 Jan 18 2007 vsftpd_conf_migrate.sh
其中,vsftpd.conf是vsftp的核心配置文件,user.list是允许的用户列表,而ftpusers是禁止的用户列表。
下面具体讲述vsftpd.conf文件的详细含义。
[root@localhost ~]#vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
是否允许匿名登录ftp,这里选择YES,反之,选择NO。
local_enable=YES 
是否允许本地用户登录,这里选择YES,反之,选择NO。 
write_enable=YES 
开放本地用户的写权限。
local_umask=022 
默认的umask码,设置本地用户的文件生成掩码为022。
anon_upload_enable=NO
禁止匿名上传文件。
anon_mkdir_write_enable=NO
是否允许匿名用户有创建目录的权利。这里选择NO。
dirmessage_enable=YES 
是否显示目录下的说明文件,默认是YES,但需要手工创建.message文件。
xferlog_enable=YES
是否记录ftp传输过程,如果开启记录,那么上传与下载的信息将被完整纪录在下面xferlog_file所指定的文件中。预设为开启状态。
connect_from_port_20=YES 
启用FTP数据端口的连接请求,若设为YES,则强迫服务端ftp-data的数据传送使用port 20。默认值为YES。 
#chown_uploads=YES
若是启动,所有匿名上传数据的拥有者将被更换为chown_username 指定的用户。这个选项对于安全及管理,是非常有用的。默认值为NO。这里注释此选项,也就是采用默认值。
#chown_username=whoever
这里定义当匿名登入者上传文件时,该文件所有者将被替换为chown_username设定的用户名称。预设值为root。注意chown_username指定的用户必须是系统存在的。这里注释此选项,采用默认值。
xferlog_file=/var/log/vsftpd.log
指定ftp传输日志的路径和名字默认是/var/log/vsftpd.log
xferlog_std_format=YES 
是否使用标准的ftp xferlog模式
idle_session_timeout=600 
设置FTP默认的断开不活跃session时间
data_connection_timeout=120 
设置数据传输超时时间
nopriv_user=nobody
指定运行vsftpd的非特权系统用户为nobody。
async_abor_enable=YES 
是否允许运行特殊的ftp命令async
#ascii_upload_enable=YES
#ascii_download_enable=YES
是否使用ascii码方式上传和下载文件,这里注释此选项,采用默认值。
ftpd_banner=Welcome to blah FTP service. 
定制登录FTP的欢迎信息。输入自己喜欢的登录欢迎语。
#deny_email_enable=YES 
#banned_email_file=/etc/vsftpd/banned_emails
是否禁止匿名用户使用某些邮件地址,如果是,在指定的文件下输入禁止的邮件地址的路径和文件名。这里注释此选项。
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list 
如果启动这项功能,则所有的本机使用者登入FTP后均可进到自己根目录之外的其它目录,除了在/etc/vsftpd.chroot_list文件指定的使用者之外,默认值为NO,这里选择YES。
ls_recurse_enable=YES
若是启动此功能,则允许登入者使用ls -R 这个指令,默认值为NO,这里选择YES。
pam_service_name=vsftpd 
设置PAM认证服务的配置文件名称,该文件存放于/etc/pam.d/目录下。
userlist_enable=YES
若是启动此功能,则会读取/etc/vsftpd/user_list 当中的使用者名称。此项功能可以在询问密码前就给出登录失败信息,而不需要执行检验密码程序,默认值为关闭,这里选择YES。
userlist_deny=NO
这个选项只有在userlist_enable 启动时才会被激活使用。
如果将这个选项设为YES,则在/etc/vsftpd/user_list中的使用者将无法登入FTP服务器;
若设为NO,则只有在/etc/vsftpd/user_list中的使用者才能登入。而且此项功能可以在询问密码前就出现错误讯息,而不需要检验密码的程序,这里设置为NO。
listen=YES
若设置为YES,表示vsftpd 将以独立运作的方式执行,在较新的linux版本中,vsftpd都是以独立的方式启动的,这里选择YES。
tcp_wrappers=YES
设置为YES,表示将vsftpd与TCP_wrapper结合使用。也就是可以在/etc/hosts.allow与/etc/hosts.deny中设定允许连接或是拒绝连接的来源地址。这里选择YES。
3.创建FTP用户
FTP配置完毕,接下来我们创建一个能访问FTP服务器的用户,其实就是在FTP服务器上添加一个系统用户,例如要添加ixdba这个用户,执行如下操作:
[root@localhost ~]#useradd ixdba
[root@localhost ~]#passwd ixdba
Changing password for user ixdba
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
      为了安全期间,我们希望让登录FTP的用户只能用来访问FTP资源,而不能登录系统,也就是建立FTP虚拟用户,操作如下:
[root@localhost ~]#userdel -r ixdba
[root@localhost ~]#useradd -g ftp -s /sbin/nologin ixdba
Changing password for user ixdba
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
      上面先删除了原来建立的ixdba用户,然后创建了一个属于ftp组,但是不能登录操作系统的用户。
接着将这个用户导入到允许访问列表即可:
[root@localhost ~]#echo “ixdba”>>/etc/vsftpd/user.list
4.测试vsftp
在测试ftp功能之前,先启动vsftp服务,执行如下:
启动vsftpd服务
[root@localhost ~]#/etc/init.d/vsftpd start
停止vsftpd服务
[root@localhost ~]#/etc/init.d/vsftpd stop 
重启vsftpd服务
[root@localhost ~]#/etc/init.d/vsftpd restart
接着测试ftp配置是否成功,看下面的操作演示:
[root@localhost vsftpd]# ftp 127.0.0.1
Connected to 127.0.0.1.
220 Welcome to blah FTP WWW.IXDBA.NET.
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): ixdba (这里是登录ftp的用户名)
331 Please specify the password.
Password: (输入密码)
230 Login successful. 
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd (查看登录ftp后的当前目录,其实就是系统用户的主目录)
257 "/home/ixdba"
ftp> mkdir ftp_data (创建一个目录)
257 "/home/ixdba/ftp_data" created
ftp> ? (输入”?”即可显示在ftp命令行下可执行的所有命令)
Commands may be abbreviated. Commands are:
!               cr              mdir            proxy           send
$               delete          mget            sendport        site
account         debug           mkdir           put             size
append          dir             mls             pwd             status
ascii           disconnect      mode            quit            struct
bell            form            modtime         quote           system
binary          get             mput            recv            sunique
bye             glob            newer           reget           tenex
case            hash            nmap            rstatus         trace
ccc             help            nlist           rhelp           type
cd              idle            ntrans          rename          user
cdup            image           open            reset           umask
chmod           lcd             passive         restart         verbose
clear           ls              private         rmdir           ?
close           macdef          prompt          runique
cprotect        mdelete         protect         safe
ftp> cd /usr/local (尝试切换到其它目录)
250 Directory successfully changed.
ftp> pwd (可以切换到其它目录下,因为在vsftp配置中开放了chroot_list_enable指令)
257 "/usr/local"
ftp> quit
221 Goodbye.
[root@localhost vsftpd]# su - ixdba
This account is currently not available. (这里的ixdba是虚拟用户,因此无法登录系统)
当然,我们也可以通过浏览器输入ftp://ip地址/的方式访问ftp服务器,这个自己测试一下就可以了。
到此为止,一台FTP服务器已经架设完毕了。
















本文转自南非蚂蚁51CTO博客,原文链接: http://blog.51cto.com/ixdba/526437,如需转载请自行联系原作者



相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
网络安全 数据安全/隐私保护
Mac iterm2快捷登录\免密登录服务器
Mac iterm2快捷登录\免密登录服务器
Mac iterm2快捷登录\免密登录服务器
|
Linux
vsftp 基于虚拟用户的ftp服务器 如何做配额
做配额的方法: 1,是用磁盘配额,但是虚拟用户好像没有好办法。只能应用于本地用户。与Vsftpd设置无关 2,文件夹限制大小,是占用的。这和Vsftpd没有关系 所以可以先把用户禁锢在自己工作目录里面,然后结合第2个方法 Linux下如何限制单个文件夹大小  需要root权限 创建一个指定大小的磁盘镜像文件: dd if=/dev/zero of=/root/augusite/disk.img bs=2M count=10 这样就创建了一个大小为20M的磁盘镜像。
1415 0
|
安全 Linux 开发工具
VSFTP FTP服务器安装与配置(转载)
1. Vsftpd文件共享 1.1简介 Vsftpd是“very secure FTP daemon”的缩写,是一款非常安全的FTP软件。支持IPv6以及SSL加密。
1447 0

热门文章

最新文章