vsftpd普通玩法

上一期我们说到了使用wordpress通过ftp协议对wordpress程序更新,插件更新、下载等功能。但是并没有说到通过配置vsftpd来实现ftp,这周我们说说vfstpd普通玩法!

对于vsftpd我来首先说说ftp协议,ftp协议默认监听的端口为21号端口,这个想必大家都知道,但是在传送数据的时候可不是在21号端口上进行传输。这里就是涉及到ftp数据传输的分类了。数据传输分为:

  • 命令连接:文件管理类命令,始终在线的链接
  • 数据连接:数据传输,按需创建及关闭的链接

既然ftp的协议这么奇葩,竟然传送数据和指令接收都是不同位置。那么接下来我们看看ftp的两种模式:(竟然还有模式,看上去挺复杂的样子!)

  1. 主动模式:由服务器创建连接:
    命令连接:客户端主动连接
    client 50000随机端口→server 21端口
    数据连接:server传输到client
    server:20→client 50000++的随机端口
  2.  被动模式:由客户端创建链接:
    命令连接:由客户端主动连接:
    client:50000随机端口→server:21
    数据连接:由客户端接受服务器端的数据
    server随机端口→client 50000+1随机端口

总而言之、言而总之,反正ftp就是这么奇葩谁叫它有着这么古老的协议呢?不过对于ftp相信现在在公司共享也会经常用到,毕竟比QQ传输或者拿着U盘插来插去要方便的多,而且聪明的多!

下面来说说除了vsftpd这个程序可以支持ftp协议,毕竟还得有其他程序也支持ftp协议作为服务器端的程序!

比如:proftpd(强大ftp)、pureftp(纯净的ftp)、vsftpd:(very secure ftp安全的ftp)、servu

好吧关于强大的和纯净的ftp没有安全的ftp好,因为他们不支持ssl安全方式传输数据!

说完毕了ftp基础知识,下面我们就结合一个示例来看看配置vsftpd让wordpress基于ftp格式进行更新!


对了在案例之前我得说说关于vsftpd用户认证(三种):

  • 匿名用户:顾名思义就是不用输入账号密码就可以登陆而且传输数据!
  • 系统用户:也是顾名思义使用/etc/psswd文件中的用户进行登陆,不过有个坏处就是默认情况系统用户可以直接进入任何目录…比如/etc、/var等关键的文件夹。
  • 虚拟用户:当然是自己创造的用户,通过数据库、文本文件定义的账号密码。当然如果需要数据库来存储账号密码的话,还需要一个小小pam的模块!

接下来的示例来看看如果使用系统账号来配置wordpress的ftp功能:

首先需要的虚拟机只要一台足以,然后也不用编译安装只需要yum安装apache、php、php-mysql、mariadb即可。并且帮助apache打开rewrite模块,不开也可以具体可以看看wordpress的需求文档!

关于需求安装我也就不多说了,对了别忘了安装vsftpd这个程序!安装应该是这样地:yum install -y httpd php php-mysql mariadb-server vsftpd

接下来看看vsftpd的配置文件:

关于主要的配置文件在/etc/vsftpd/vsftpd.conf

里面包含许多的选项可以选择,大多数都有英文的配置注解,对英文好的同学来说不是啥问题!不过大范围的框架包含如下几个:

匿名用户的设置:

  • anonymous_enable=YES|NO 是否允许匿名用户?
  • anon_upliads_enable=YES|NO 是否允许匿名用户上传文件?
  • anon_mkdir_write_enable=YES|NO 是否允许匿名用户添加目录?
  • anon_other_write_enabke=YES|NO 是否允许匿名用户有其他写权限?(如删除等)

对于匿名用户来说如果企业中有共享需要的话可以设置,如果在你自己的VPS网站我强烈推荐将匿名用户登录选择”NO”

当然还有系统用户的设置、日志。我就不一一叙说了,我发张图可以参考我的实验配置:

vsftpd01

vsftpd02

vsftpd03

我的实验设置就是这么玩的,将所有用户锁定在家目录中比较合适。不然可以cp你的系统文件,那该多危险?

vsftpd就算配置完毕了,(还有创建一个系统用户这个待会配置)接下来该配置wordpress了:

vsftpd04

首先打开httpd的配置文件,随后:

vsftpd05

注释掉DocumentRoot的主机,然后定义虚拟主机:

vsftpd06

定义虚拟主机在/etc/httpd/conf.d下面自己创建一个文件即可,然后我这边定义了日志所以还得创建一个文件夹:

vsftpd07

然后再配置wordpress,首先下载wordpress的安装包,请在wordpress中下载并且解压到你指定的虚拟主机的目录下:

vsftpd08

随后修改wordpress中config.php文件:

vsftpd09

vsftpd10

上面有中文根据提示来填写,不过我数据库还没有进行初始化所以没有密码,(偷个懒嘿嘿!)然后注意的是在生产环境中不要使用root账号密码写在上面,应该使用其他用户并且授权一个数据库的权限即可!对咯还没有创建数据库呢!来创建一个wordpress的数据库:

vsftpd11

对了在创建之前请启动数据库:systemctl start mariadb

现在看看LAMP能不能进行访问:(别忘了启动httpd)

vsftpd12

成功搞定,对了上面的地址我做了端口映射!随后就是创建一个专门的vsftpd系统账户并且将家目录设定为wordpress的根目录,并且将wordpress目录的属主属组修改为该用户:

vsftpd13

我忘记了一件事情指定系统用户的家目录最好不要事先存在…这回又很多文件没拷贝进去…不过没关系我们只是那它当FTP使用!

vsftpd14

修改完毕属主属组以后应该这样的。最后我们开启vsftpd程序然后设定wordpress的ftp账户!使用systemctl start vsftpd

然后进入wordpress配置:比如我现在升级一个主题

vsftpd15

填写如下信息,对了我们刚刚创建的用户还没有密码,别忘了使用passwd wordpress添加一个密码!

输入账号密码和主机名后即可更新:

vsftpd16

最后看看安全:

vsftpd17

看到了不?用户的家目录就是根所以哪里也去不了了!

Comments

Leave a Reply

Your email address will not be published. Name and email are required