热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Ubuntu系统中配置vsftpd服务器

FTP服务器是平时应用最为广泛的服务之一。VSFTP是VerySecureFTP的缩写,意指非常安全的FTP服务。VSFTP功能强大,通过结合本地系统的用户认证模块及其多功能的配置项目,可以快速有效的搭建强大的多用户FTP服务。首先我们考虑搭建FTP服务需要关注的都有哪些

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

首先我们考虑搭建FTP服务需要关注的都有哪些方面?比如我们最经常关注的有:

1、如何添加FTP用户? 

2、如何临时冻结某FTP用户? 

3、FTP用户登入后的默认目录?是否可以改变? 

4、如何锁定FTP用户可访问的目录范围? 

5、FTP用户可以有哪些访问权限?可否上传文件?

我们将带着这些问题来探讨如何配置VSFTP以达到预定目标。

一、主要配置选项

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。源码编译或软件包安装都可以。

#以下方案实现以下功能:

#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 -s /bin/false -d /home/ftp  your_usr_name

#把需要开通FTP的用户名加入到ftp群组:usermod -gG 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 root:ftp /home/ftp #属组不能是ftp

sudo adduser --shell /bin/false --home /home/ftp user1 #添加用户user1

sudo usermod  -gG 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  500 OOPS: vsftpd: refusing to run with writable anonymous root

vsftpd是不允许“危险(不安全)”的配置的。出现这个错误信息的原因通常是ftp的家(home)目录的属主权限不正确。 家(home)目录的属主不应该是ftp用户自己,而且ftp用户也不能有写的权限。 sudo chown root.ftp  /home/ftp


推荐阅读
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 了解多域名SAN SSL证书及其工作原理
    本文介绍了多域名SAN SSL证书的概念及其工作方式,探讨其在现代网络安全中的重要性和应用。 ... [详细]
  • 解决PHP项目在服务器无法抓取远程网页内容的问题
    本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 解决Word文档无法打开的问题
    本文探讨了Word文档无法正常打开的原因及解决方案,包括病毒感染和模板损坏等常见问题。 ... [详细]
  • 本项目分为七个主要阶段,包括项目启动、现状评估、风险管理、体系文件编写、体系发布与试运行、体系认证审核及项目收尾。每个阶段都设定了明确的任务和目标,以确保ISMS(信息安全管理体系)的有效实施。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 理财规划:迈向财务自由的路径
    实现财务自由,摆脱经济压力,是许多人的梦想。财务自由不仅意味着有足够的财富支持生活,还包括能够灵活应对未来可能遇到的各种经济挑战。本文将探讨如何通过有效的理财规划达到这一目标。 ... [详细]
  • 本文介绍了SELinux的两种主要工作模式——强制模式和宽容模式,并提供了如何在CentOS 7中正确启用和配置SELinux的方法,以及在遇到登录问题时的解决策略。 ... [详细]
  • 龙蜥社区开发者访谈:技术生涯的三次蜕变 | 第3期
    龙蜥社区的开发者们通过自己的实践和经验,推动着开源技术的发展。本期「龙蜥开发者说」聚焦于一位资深开发者的三次技术转型,分享他在龙蜥社区的成长故事。 ... [详细]
  • 最新版 EasyCriteria 3.0 已正式上线,该版本经过全面重构,带来了多项性能优化与功能增强。更多详情请参阅官方文档:http://uaihebert.com/?p=1898 ... [详细]
  • 解决Win10系统自动删除破解软件的问题
    如何处理Win10系统频繁自动删除安装的破解软件?本文将详细介绍可能的原因及解决方案,帮助用户顺利安装所需软件。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
author-avatar
幸福不要躲008_784
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有