FTP服务器是平时应用最为广泛的服务之一。VSFTP是Very Secure FTP的缩写,意指非常安全的FTP服务。VSFTP功能强大,通过结合本地系统的用户认证模块及其多功能的配置项目,可以快速有效的搭建强大的多用户FTP服务。

首先我们考虑搭建FTP服务需要关注的都有哪些方面?比如我们最经常关注的有: 
  1、如何添加FTP用户? 
  2、如何临时冻结某FTP用户? 
  3、FTP用户登入后的默认目录?是否可以改变? 
  4、如何锁定FTP用户可访问的目录范围? 
  5、FTP用户可以有哪些访问权限?可否上传文件?

一、主要配置选项 
VSFTP的主配置文件是/etc/vsftpd.conf 。由于可配置的选项实在太多,无法一一详谈,只能截取比较常用的功能配置选项来加以说明。完整说明可参考man vsftpd.conf。 
这里需要注意的是,每个配置选项都是由“配置项目名称=配置值“所定义。在每个配置变量后,要紧跟等号,再紧跟设置的变量值。中间不允许出现空格之类的分隔符,否则导致配置错误,无法生效! 
另外,如果需要开通上传功能,则应注意用来登录FTP的本地系统用户对要操作的目录需要具备写权限,否则无法上传文件! 
版本vsftpd: version 2.0.6 
启动VSFTPD:sudo /etc/init.d/vsftpd start 
停止VSFTPD:sudo /etc/init.d/vsftpd stop 
重启VSFTPD:sudo /etc/init.d/vsftpd restart

以下为常用的配置选项: 
1、listen=YES 
若设置为YES,开启监听网络。 
2、anonymous_enable 
若设置为YES,则允许匿名用户访问;若设置为NO则拒绝匿名用户访问。 
如果开启的话,则可以通过用户名ftp或者anonymous来访问,密码随便。 
3、local_enable 
若设置为YES,则允许通过本地用户帐号访问;若设置为NO,则拒绝本地用户帐号访问。如果你拒绝了陌生人访问,那么这个必须设置为YES吧,否则谁能访问你的FTP呢? 
4、write_enable 
若设置为YES,则开启FTP全局的写权限;若设置为NO,则不开。 
若为NO则所有FTP用户都无法写入,包括无法新建、修改、删除文件、目录等操作,也就是说用户都没办法上传文件!! 
5、anon_upload_enable 
若设置为YES,开启匿名用户的上传权限。前提是write_enable有开启,并且用户具有对当前目录的可写权限。 若设置为NO,则关闭匿名用户的上传权限。 
6、anon_mkdir_write_enable 
若设置为YES,开启匿名用户新建目录的权限。前提是write_enable有开启,并且用户具有对当前目录的可写权限。 若设置为NO,则关闭匿名用户新建目录的权限。 
7、dirmessage_enable 
若设置为YES,则可开启目录信息推送,也就是用户登录FTP后可以列出当前目录底下的文件、目录。 这个应该要开启吧! 
8、xferlog_enable 
若设置为YES,则开启登录、上传、下载等事件的日志功能。应开启! 
9、xferlog_file=/var/log/vsftpd.log 
指定默认的日志文件,可指定为其他文件。 
10、xferlog_std_format 
若设置为YES,则启用标准的ftpd日志格式。可以不启用。 
11、connect_from_port_20 
若设置为YES,则服务器的端口设为20。 
如果不想用端口20,可以另外通过ftp_data_port来指定端口号。 
12、chown_uploads 
若设置为YES,则匿名用户上传文件后系统将自动修改文件的所有者。 
若要开启,则chown_username=whoever也需指定具体的某个用户,用来作为匿名用户上传文件后的所有者。 
13、idle_session_timeout=600 
不活动用户的超时时间,超过这个时间则中断连接。 
14、data_connection_timeout=120 
数据连接超时时间 。 
15、ftpd_banner=Welcome to blah FTP service. 
FTP用户登入时显示的信息 。 
16、local_root=/home/ftp 
指定一个目录,用做在每个本地系统用户登录后的默认目录。 
17、anon_root=/home/ftp 
指定一个目录,用做匿名用户登录后的默认目录。 
18、chroot_local_user、 chroot_list_enable、chroot_list_file 
这个组合用于指示用户可否切换到默认目录以外的目录。 
其中,chroot_list_file默认是/etc/vsftpd.chroot_list,该文件定义一个用户列表。 
若chroot_local_user 设置为NO,chroot_list_enable设置为NO,则所有用户都是可以切换到默认目录以外的。 
若chroot_local_user 设置为YES,chroot_list_enable设置为NO,则锁定FTP登录用户只能在其默认目录活动,不允许切换到默认目录以外。 
若chroot_local_user 设置为YES,chroot_list_enable设置为YES,则chroot_list_file所指定的文件里面的用户列表都可以访问默认目录以外的目录,而列表以外的用户则被限定在各自的默认目录活动。 
若chroot_local_user设置为NO,chroot_list_enable设置为YES,则chroot_list_file所指定的文件里面的用户列表都被限定在各自的默认目录活动,而列表以外的用户则可以访问默认目录以外的目录。 
建议设置:chroot_local_user与chroot_list_enable都设置为YES。这样就只有chroot_list_file所指定的文件里面的用户列表可以访问默认目录以外的目录,而列表以外的用户则被限定在各自的默认目录活动! 
好处:所有人都被限制在特定的目录里面。如果某些特定用户需要访问其他目录的权限,只需将其用户名写入chroot_list_file文件就可以赋予其访问其他目录的权限! 
19、userlist_file、userlist_enable、userlist_deny 
这个组合用于指示用户可否访问FTP服务。 
其中,userlist_file默认是/etc/vsftpd.user_list,该文件定义一个用户列表。 
若userlist_enable设置为YES,userlist_deny设置为NO,则只有userlist_file所指定的文件里面的用户列表里面的用户可以访问FTP。 
若userlist_enable设置为YES,userlist_deny设置为YES,则userlist_file所指定的文件里面的用户列表里面的用户都被拒绝访问FTP。 
若userlist_enable设置为NO,userlist_deny设置为YES,则这个列表没有实际用处,起不到限制的作用!因为所有用户都可访问FTP。 
建议设置:userlist_enable与userlist_deny都设置为YES。这样则userlist_file所指定的文件里面的用户列表里面的用户都被拒绝访问FTP。 
好处:只需将某用户帐号加入到userlist_file所指定文件里面的用户列表,就可以起到暂时冻结该用户的功能! 
20、user_config_dir 
指定一个目录用于存放针对每个用户各自的配置文件,比如用户kkk登录后,会以该用户名建立一个对应的配置文件。 
比如指定user_config_dir=/etc/vsftpd_user_conf, 则kkk登录后会产生一个/etc/vsftpd_user_conf/kkk的文件,这个文件保存的配置都是针对kkk这个用户的。可以修改这个文件而 不用担心影响到其他用户的配置。

二、我的VSFTP的配置方案 
#首先要安装VSFTP。源码编译或软件包安装都可以。

sudo apt-get install vsptpd

#以下方案实现以下功能: 
#1、锁定用户在/home/ftp默认目录活动, 
#     并保留/etc/vsftpd.chroot_list文件里面的用户列表可访问其他目录。 
#2、具备暂时冻结FTP用户的功能,将需暂停的用户名加入到/etc/vsftpd.usr_list即可。 

#设置配置文件: 
#复制以下文件并保存为/etc/vsftpd.conf 
#新建两文件:touch /etc/vsftpd.chroot_list 
#                  touch /etc/vsftpd.user_list 
#新建目录:mkdir /home/ftp 
#新建群组:addgroup ftp 
#修改/home/ftp属性:chown ftp:ftp /home/ftp 
#新增FTP用户: adduser --shell /bin/false --home /home/ftp your_usr_name 
#把需要开通FTP的用户名加入到ftp群组:usermod -aG ftp your_usr_name 
#注意: 
#如果你的/etc/shells里面没有包含/bin/false,则你用上述的方法建立的用户将法访问#FTP,解决方法:编辑/etc/shells,加入/bin/false这行。 

# Example config file /etc/vsftpd.conf 
listen=YES 
#listen_ipv6=YES 
anonymous_enable=YES 
local_enable=YES 
write_enable=YES 
#anon_upload_enable=YES 
#anon_mkdir_write_enable=YES 
dirmessage_enable=YES 
xferlog_enable=YES 
connect_from_port_20=YES 
#chown_uploads=YES 
#chown_username=whoever 
#xferlog_file=/var/log/vsftpd.log 
#xferlog_std_format=YES 
#idle_session_timeout=600 
#data_connection_timeout=120 
#nopriv_user=ftpsecure 
#async_abor_enable=YES 
#ascii_upload_enable=YES 
#ascii_download_enable=YES 
#ftpd_banner=Welcome to blah FTP service. 
#deny_email_enable=YES 
#banned_email_file=/etc/vsftpd.banned_emails 
chroot_local_user=YES 
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd.chroot_list 
#ls_recurse_enable=YES 
secure_chroot_dir=/var/run/vsftpd 
pam_service_name=vsftpd 
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem 
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key 
anon_root=/home/ftp 
local_root=/home/ftp 
userlist_file=/etc/vsftpd.user_list 
userlist_enable=YES 
userlist_deny=YES

三、回答前面提到的问题 
1、如何添加FTP用户? 
设置local_enable为YES可以开放系统用户访问FTP。 
在系统里面添加用户,将shell设置为/bin/false,并将其家目录若设置为/home/ftp或者其他目录。这样就可以建立只访问FTP而无法登录shell环境的用户。 
注意:可以新建一个ftp组,把/home/ftp的所有者设为ftp,群组也设为ftp。然后所有新添加的FTP用户只需加入到FTP群组就可以具有对/home/ftp的访问权限了。这样也方便管理用户量比较大的FTP系统。如: 
sudo addgroup ftp #如果有了就不用添加 
sudo chown ftp:ftp /home/ftp #如果改过了就不用再改 
sudo adduser --shell /bin/false --home /home/ftp user1 #添加用户user1 
sudo usermod  -aG ftp  user1  #把用户user1加入到ftp组 
这样便可以通过用户名user1来访问FTP服务了。 
2、如何临时冻结某FTP用户? 
将userlist_enable与userlist_deny都设置为YES。这样userlist_file所指定的文件里面的用户列表里面的用户都 被拒绝访问FTP。只需将某用户帐号加入到userlist_file所指定文件里面的用户列表,就可以起到暂时冻结该用户的功能!如需重新开通使用权 限,则只需从该文件中去掉相应的用户名。 
3、FTP用户登入后的默认目录?是否可以改变? 
可以通过local_root、anon_root来指定相应的默认目录。 
4、如何锁定FTP用户可访问的目录范围? 
将chroot_local_user与chroot_list_enable都设置为YES。这样就只有chroot_list_file所指定的文件 里面的用户列表可以访问默认目录以外的目录,而列表以外的用户则被限定在各自的默认目录活动!如果某些特定用户需要访问其他目录的权限,只需将其用户名写 入chroot_list_file文件就可以赋予其访问其他目录的权限! 
5、FTP用户可以有哪些访问权限?可否上传文件? 
设置write_enable可以开启全局的写权限。这样FTP用户就可以在本地帐号管理系统允许的范围内进行写操作了

6、root用户无法登录ftp?

编辑/etc/ftpusers,将root注视掉就ok了

服务器搭建2 VSFTP搭建FTP服务器的更多相关文章

  1. 快速搭建一个本地的FTP服务器

    快速搭建一个本地的FTP服务器   如果需要开发FTP文件上传下载功能,那么需要在本机上搭建一个本地FTP服务器,方便调试. 第一步:配置IIS Web服务器 1.1 控制面板中找到"程序& ...

  2. 快速搭建一个本地的FTP服务器 win10及win7

    快速搭建一个本地的FTP服务器   如果需要开发FTP文件上传下载功能,那么需要在本机上搭建一个本地FTP服务器,方便调试. (win10) 第一步:配置IIS Web服务器 1.1 控制面板中找到“ ...

  3. 搭建windows下filezilla FTP服务器

    FTP服务器必不可少,鉴于serv-u越来越冗余繁多的设置,个人还是比较喜欢简单.干净,满足需求即可的东东,所以选择filezilla.更主要的原因是ta是开元免费使用的,虽然免费,功能却齐全,我发现 ...

  4. 搭建一个简单的FTP服务器

    本文介绍通过win7自带的IIS来搭建一个只能实现基本功能的FTP服务器,第一次装好WIN7后我愣是没整出来,后来查了一下网上资料经过试验后搭建成功,其实原理和步骤与windows前期的版本差不多,主 ...

  5. 搭建 Windows Server 2012 FTP 服务器

    在Server2012打开 服务器管理器,选择 添加角色与功能,添加Web服务下的FTP服务器 单击安装 我们现在C盘创建一个名字为FTP的文件夹,里面创建一个ftp的文件,做测试用,如图 打开服务器 ...

  6. 1 Linux平台下快速搭建FTP服务器 win7下如何建立ftp服务器

    百度经验连接(亲测可用) http://jingyan.baidu.com/article/380abd0a77ae041d90192cf4.html win7下如何建立ftp服务器 http://j ...

  7. asp.net 服务器 上传文件到 FTP服务器

    private string ftpServerIP = "服务器ip";//服务器ip private string ftpUserID = "ftp的用户名" ...

  8. FTP服务器上传工具,FTP服务器上传工具下载!

    IIS7服务器管理工具能够作为FTP的客户端,进行FTP的命令操作,可在客户端,下载,安装FTP软件! 同时,它也可以作为VNC的客户端,进行VNC的命令操作!它能够批量连接Windows和Linux ...

  9. pure-ftpd搭建简单的Ubuntu FTP服务器

    Linux下的ftpd很多,Ubuntu下常用vsftpd, proftpd和pure-ftpd,当初使用的就是proftpd. 不过前两者有个致命的问题就是内码转换,它们默认使用UTF-8编码,而W ...

随机推荐

  1. 采集的时候,列表的编码是gb2312,内容页的编码却是UTF-8,这种网站怎么采集?

    采集的时候,列表的编码是gb2312,内容页的编码却是UTF-8,这种网站怎么采集? 采集的时候,列表的编码是UTF-8,内容页的编码却是gb2312,这种网站怎么采集? 这种情况怎么解决呢? 哈哈哈 ...

  2. vue diff算法 patch

    1.diff比较算法 图示: diff比较只会在同层级进行, 不会跨层级比较. 所以diff是:广度优先算法. 时间复杂度:O(n) 代码示例: <!-- 之前 --> <div&g ...

  3. 解决运行Maven是报错:No goals have been specified for this build

    pom.xml文件<build>标签后面加上<defaultGoal>compile</defaultGoal>即可

  4. js-form表单元素的自定义属性

      form表单元素的自定义属性 CreateTime--2016年9月22日09:03:40 Author:Marydon 场景: <script type="text/javasc ...

  5. mysql字符集和字符排序

    mysql的字符集和字符序:    字符序:字符序(Collation)是指在同一字符集内字符之间的比较规则    一个字符序唯一对应一种字符集,但一个字符集可以对应多种字符序,其中有一个是默认字符序 ...

  6. 基于.net 的加载自定义配置-误操作

    有时候 需要 将程序加载自定义的配置文件,除了自己写解析xml文件.内置的ConfigutionManager对象 是个不错的选项. 按照 app.config 的方式,做一个副本.然后从你的配置文件 ...

  7. cocos2dx 3.2 解决输入框(TextField,TextFieldTTF) 中文乱码问题

    近期开发cocos2dx 项目,做一个小游戏.(个人喜欢用最新版本号) 没系统学习就是问题多多,遇到了非常多问题,比方全部的opengl api都必须在主线程中调用, 这让我在多线程载入方面吃了不少亏 ...

  8. 使用CXF实现基于Rest方式的WebService(转)

    转自:https://www.cnblogs.com/zjm701/p/6845813.html原文更清晰 本文介绍使用CXF实现基于Rest方式的WebService(CXF的版本是3.0.0) 一 ...

  9. poj----2155 Matrix(二维树状数组第二类)

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 16950   Accepted: 6369 Descripti ...

  10. python网络编程详解

    最近在看<UNIX网络编程 卷1>和<FREEBSD操作系统设计与实现>这两本书,我重点关注了TCP协议相关的内容,结合自己后台开发的经验,写下这篇文章,一方面是为了帮助有需要 ...