文章允许转载,请注明来源:https://blog.csdn.net/feiniao8651/article/details/96039205

背景

ftp是大家常用的一个文件传输工具,自己有过多次搭建ftp的经历,但是每次环境都多少有些区别,搭建的时候往往还是会遇到不同的问题,不能做到得心应手。网上的资料也是参差不齐,大多数都是一个操作的步骤,但是有的关键步骤,为什么这么做的原因却没有说清楚,这里做一个总结,也便于自己以后处理类似的问题。
这里的应用场景是在nginx目录下配置的php工程,因为有其他人需要通过ftp访问修改php文件,所以需要有一个ftp服务能提供对应目录下的文件下载及上传,同时也不能影响到ngnix对工程的访问。
环境:CentOS 6.9

安装vsftp

安装很简单,就是通过yum来安装

$sudo yum install vsftpd

安装完成后,接下来就需要进行相应的配置了。主要是对用户及对应访问路径的配置。

配置vsftp

用户配置

ftp支持配置的用户分为三种,分别是:

本地用户(local):用户在FTP服务器拥有账号,且该账号为本地用户的账号,可以通过自己的账号和口令进行授权登录,登录目录为自己的home目录$HOME
虚拟用户(guest):用户在FTP服务器上拥有账号,但该账号只能用于文件传输服务。登录目录为某一特定的目录,通常可以上传和下载
匿名用户(anonymous):用户在FTP服务器上没有账号,登录目录为/var/ftp
(数据来自https://blog.csdn.net/kxwinxp/article/details/78595044)

我们是要访问特定的目录,所以可以配置虚拟用户。
1. 安装虚拟用户验证所需要的依赖包

$sudo yum install db4 db4-utils

2. 创建虚拟用户账号及密码

$sudo vim /etc/vsftpd/virtualusers

按以下格式添加内容(奇数行为账号,账号后的偶数行为密码)

testuser
123456

3. 生成虚拟用户认证的db文件

$sudo db_load -T -t hash -f /etc/vsftpd/virtualusers /etc/vsftpd/virtualusers_passwd.db
$sudo chmod 600 /etc/vsftpd/virtualusers_passwd.db

4. 配置PAM信息

PAM(Pluggable Authentication Modules)即可插拔式认证模块,它是一种高效而且灵活便利的用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方式。
PAM 是关注如何为服务验证用户的API,通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分离,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时,PAM是一种认证框架,自身不做认证。

配置过程就是修改原有vsftp的PAM配置文件

$sudo vim /etc/pam.d/vsftpd

注释掉文件中原有的规则,添加以下两条规则

auth required pam_userdb.so db=/etc/vsftpd/virtualusers_passwd
account required pam_userdb.so db=/etc/vsftpd/virtualusers_passwd

注意:这里的db=后面其实就是对应我们刚才在第3步生成的db文件,但是这里不能带文件后缀名,否则系统会报错

pam_userdb(vsftpd:auth): user_lookup: could not open database `/etc/vsftpd/virtualusers_passwd.db': No such file or directory

原因是这里使用的pam_userdb.so库会自动在文件后面加.db的后缀,所以我们如果路径里写了.db,反而就是冗余了。有一篇文章提到了这个问题。
5. 配置vsftpd.conf
这个文件是vsftpd的核心配置文件,基本上大多数常用的设置都在这里面。
我这里设置的主要是以下几点:

anonymous_enable=NO
#设置虚拟用户一定要把local_enable设为yes,否则不能登录
local_enable=YES
write_enable=NO
chroot_local_user=YES
chroot_list_file=/etc/vsftpd/chroot_list
#这里的username,可以理解成虚拟账号需要绑定的一个服务器上的用户
guest_username=www
guest_enable=YES
user_config_dir=/etc/vsftpd/virtualusers_conf
virtual_use_local_privs=YES
# 以下是开启被动模式,可以解决部分因网络引起的访问异常
pasv_enable=YES
pasv_min_port=4000
pasv_max_port=5000

guest_username这里特别强调一下,这里填写用户需要有对我们要访问的资源的读写权限,比如我这里nginx下的资源,所有者都是www用户,所以我绑定的用户名是www。同时要设置virtual_use_local_privs为yes,即虚拟用户享有和绑定用户同样的权限。
6. 创建虚拟用户对应的配置文件
为了对不同的虚拟用户做权限划分,每个虚拟用户都有一个单独的配置文件,接下来我们就为刚才创建的testuser用户添加配置文件。所有的虚拟用户配置文件都是在上面配置的user_config_dir目录下,文件名称即为用户名。

$sudo vim /etc/vsftpd/virtualusers_conf

文件中添加以下内容

#local_root即为想让虚拟用户访问的目录
local_root=/home/aaa/php
write_enable=yes
download_enable=yes

这里为每一个虚拟用户创建单独的文件,主要目的就是为了能够灵活配置不同虚拟用户的权限。比如可以在vsftpd.conf里将write_enable都设置为NO,然后在需要有写权限的虚拟用户配置文件中配置write_enable为YES即可。
配置完之后重启vsftpd即可。

$sudo service vsftpd restart

ps:一定要在创建完对应用户配置文件后再去访问ftp。如果在创建用户配置文件前就去登录,会导致该用户访问到绑定用户的用户目录下,而且这个初始路径即使再增加单用户配置文件也无法修改,只能将该用户删除

虚拟用户的增加和删除

  1. 增加虚拟用户
    添加新的虚拟用户账号和密码到/etc/vsftpd/virtualusers,在/etc/vsftpd/virtualusers_conf目录下添加对应账号名的配置文件。使用以下命令重新生成验证用的db文件
$sudo db_load -T -t hash -f /etc/vsftpd/virtualusers /etc/vsftpd/virtualusers_passwd.db
  1. 删除虚拟用户
    删除/etc/vsftpd/virtualusers中的账号和密码,删除/etc/vsftpd/virtualusers_conf下对应用户的配置文件,使用命令重新生成验证用的db文件即可。

后记

通过虚拟用户配置文件,既能保证一定的系统安全性,实现灵活的用户权限控制,可谓一举两得。但是配置过程中,容易出现一些配置上的问题,导致ftp访问异常。在查资料的过程中,网上大部分解决问题的方式都是简单粗暴的chmod 777,但是却没有想一下为什么会出现权限的问题。其实vsftp已经提供了很完善的权限配置支持,我们只需要稍微花费点时间了解和配置一下,就能体会到他的灵活性和便利性。

参考:
linux下WEB服务器安装、配置VSFTP
vsftp日志xferlog格式分析
vsftpd setup – the missing information
Centos6.9安装vsftpd并配置虚拟多用户
centos 7基于虚拟用户配置vsftpd
CentOS 7 安装FTP服务器(vsftpd)

centos6下的vsftpd配置相关推荐

  1. Linux下的Vsftpd配置篇

    1.         主动与被动模式 1)         主动模式(PORT方式) 连接过程为:客户端向服务器FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路.当需要传送数据时 ...

  2. centos6 安装 mantisbt-1.2.8 —— (3)Linux系统下yum源配置(Centos 6)

    Linux系统下yum源的配置(阿里云): 1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.ba ...

  3. linux6 ftp配置,centos6.x vsftpd配置FTP服务器详细教程

    centos6.x vsftpd配置FTP服务器详细教程 centos6.x中搭建FTP服务器步骤如下 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | grep vsftp ...

  4. linux ftp服务器防火墙设置,【许望】linux(RHEL) 下 FTP(vsftpd) 服务器的防火墙配置...

    linux(RHEL) 下 FTP(vsftpd) 服务器的防火墙配置 FTP服务器在与客户端通讯的过程中会用到两个端口,一个是控制端口,通常是21/tcp,一个是数据端口,运行在主动模式下的FTP服 ...

  5. CentOS6 下Samba服务器的安装与配置

    原地址:http://www.cnblogs.com/mchina/archive/2012/12/18/2816717.html 一.简介 Samba是一个能让Linux系统应用Microsoft网 ...

  6. CentOS下安装vsftpd

    因为FTP的端口是 两个,一个是固定21端口,还有一个任意端口的数据通道.关键是任意端口不好搞. 首先在vsftpd的配置文件中设置 任意端口的范围 [root@localhost root]# vi ...

  7. centos6一键安装vsftpd脚本

    centos6一键安装vsftpd脚本 手动安装vsftpd参考教程:Centos下安装Vsftpd的图文教程 vsftpd脚本功能: 1.安装 (命令执行:sh xxx.sh)2.添加ftp用户 ( ...

  8. centos6 安装 mantisbt-1.2.8 —— (4)在CentOS6.4中安装配置LAMP环境

    一.修改设置对安装做准备 1 1. 防火墙设置 2 2. 关闭SELINUX 3 二.开始安装软件 4 1. MySql的安装和配置 4 2. Apache服务的安装和配置 8 3.安装PHP 10 ...

  9. CentOS6.3 Samba安装配置、多用户、加域

    CentOS6.3 Samba安装配置.多用户.加域 2013-09-09 20:24:27 标签:Samba AD samba 域 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...

  10. 引用 vsftpd配置手册(实用)

    引用 xyz 的 vsftpd配置手册(实用) 作者: 木頭    来源: PHPChina 开源社区门户 1.vsftpd配置参数详细整理 #接受匿名用户 anonymous_enable=YES ...

最新文章

  1. java map缓存6_Java内存缓存-通过Map定制简单缓存
  2. 一个基于xml的超级orm框架-世界是由懒人创造的。
  3. Boost:循环缓冲区总和的测试程序
  4. hadoop 学习笔记:mapreduce框架详解
  5. Linux下Crontab定时执行命令
  6. php 验证码文件,php实现的验证码文件类实例
  7. 《那些年啊,那些事——一个程序员的奋斗史》——49
  8. 超融合硬件损坏导致Oracle RAC异常恢复实录
  9. 10以内逆向运算题_【七年级上】数学 有理数运算典型易错题分析(下)
  10. 问题十三:怎么用ray tracing画个球
  11. 山寨式创业 八百客誓做“管理软件终结者 ”
  12. Jenkins Pinned Plugins(Jenkins绑定插件)
  13. 对离散点进行积分的python程序实现_Stochastic Calculus(Python)(四)
  14. [excel]解决Excel和txt转换出现的“问题
  15. python批量识别二维码图片_python+selenium 识别二维码
  16. #379 – 将ToolTip当做放大器使用(Using a Tooltip As a Magnifier)
  17. HTML_多媒体效果_embed标签详解
  18. 接口设计需要考虑哪些方面
  19. Android uiautomatorviewer无法启动
  20. 【已解决】TF_REPEATED_DATA ignoring data with redundant timestamp for frame

热门文章

  1. Spring Boot配置QueryDSL(生成Query查询实体类,查询数据)
  2. AltRun调用cmd并刷新DNS
  3. python宠物系统_小练习 宠物管理系统
  4. “开闭原则”实现图书售卖简单实现
  5. forEach(BiConsumer action)方法遍历Map集合
  6. 上海富勒wms_【3PL | 多家三方物流应用富勒WMS,仓配一体助力供应链升级】
  7. 自动移动鼠标避免锁屏
  8. Unity 创建fnt字体
  9. STM32解析SBUS信号例程详解
  10. 中国大学mooc和BiliBili视频批量下载