漫漫运维路——文件服务系列之VSFTP

Linux中,用于实现文件传输和共享的服务比较多,VSFTP就是其中被使用较多的一个文件服务,而说到VSFTP就不得不说一个话题,那就是FTPmysql

FTPFile Transfer Procotol的首字母缩写,是一个用于控制Internet上文件传输的协议,FTP协议通常采用明文进行数据传输,虽然较之安全性不如HTTPS,设置HTTP,可是其创建链接的过程比较简单,因此其传输速率就更快。sql

FTP在完成数据传输以前就须要创建链接,而传输数据的时候又要创建专门的数据传输链接,由此可把FTP链接分为两种,一种叫命令链接,一种叫数据链接,命令链接开始于数据链接以前,负责把用户登陆后输入的相关命令发送到服务器端,实现于服务器端交互;而数据链接则发生于当创建命令链接后客户端开始请求相关文件时,客户端每请求一个文件就会新创建一个数据链接,而当请求的文件传输完成后,该数据链接就会被拆除。而从数据链接请求发出方的角度来看,又可把FTP的链接分为主动链接和被动链接。其区别以下:数据库

链接类型vim

发起方安全

发起端口服务器

响应方tcp

响应端口ide

主动链接(命令链接)测试

Clientui

tcp/5000

Server

tcp/21

主动链接(数据链接)

Server

tcp/20

Client

tcp/5000+1

被动链接(命令链接)

Client

tcp/5000

Server

tcp/21

被动链接(数据链接)

Client

tcp/5000+1

Server

随机

Linux中实现FTP文件传输功能的软件以VSFTP最多见,接下来就将经过实验的方式对VSFTP进行介绍。

1:配置vsftp让匿名用户具备上传和下载权限。

安装vsftp

[root@localhost ~]# yum install vsftpd -y

编辑vsftp主配置文件/etc/vsftpd.conf

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 

listen=YES#以独立守护进程监听在21号端口

write_enable=YES#设置可写

anonymous_enable=YES#设置启用匿名用户

anon_mkdir_write_enable=YES#设置匿名用户能够新建目录

anon_other_write_enable=YES#设置匿名用户新建的文件或目录其余用户有权限

anon_upload_enable=YES#设置匿名用户可上传文件

新建匿名用户上传文件专用目录,并更改属主为ftp

[root@localhost ~]# mkdir /var/ftp/upload

[root@localhost ~]# chown ftp:ftp /var/ftp/upload/

重启服务并测试

[root@localhost ~]# service vsftpd restart

Shutting down vsftpd:                                      [  OK  ]

Starting vsftpd for vsftpd:                                [  OK  ]

[root@localhost ~]# service iptables stop#关闭防火墙,也能够设置规则方形ftp

登陆进入ftp并切换至upload目录


wKiom1VRW8jQsSq7AAH6rB_ZfvA133.jpg 

 

新建空目录


wKiom1VRW-KTpLWfAAImdWEwsdw861.jpg

 

成功!

2:设置容许本地用户登陆,并禁锢其只能在其家目录内

编辑配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 

把配置文件内容更改成以下所示

listen=YES

anonymous_enable=NO#设置禁止匿名用户登陆

write_enable=YES#设置可写

local_enable=YES#:设置容许本地用户登陆

chroot_local_user=YES#:设置把本地用户禁锢在家目录里

userlist_enable=YES#设置启用控制用户登陆的列表文件

userlist_file=/etc/vsftpd/userlist#和上一项同用,定位列表文件位置

userlist_deny=YES#设置使用登陆列表为拒绝用户的名单

pam_service_name=vsftpd#设置使用可插入式认证模块的服务名为vsftpd

添加用户用于测试


wKiom1VRW_vgXHxMAAEepqipVko302.jpg

 

新建userlist文件并设置禁止root用户登陆ftp服务

[root@localhost test]# echo "root">>/etc/vsftpd/userlist

重启测试


wKioL1VRXZCzWrUJAAKyozmq6ak176.jpg

 

使用root用户登陆测试


wKioL1VRXbOiYj9uAAP7CSRFLdc703.jpg

 

到此能够看出当使用root登陆时直接会拒绝,而当使用test用户登陆时则一切正常,且被禁锢于test用户的家目录/home/test目录下。

3:把虚拟用户的帐号信息保存于单独的服务器的MariaDB数据库上

1、实验规划:

主机

IP

安装服务

A

192.168.252.11

VSFTPD

B

192.168.252.10

MariaDB

二、配置主机B

安装MariaDB就再也不赘述,在此直接配置MariaDB

首先建立保存帐号信息的数据库,并受权给远程主机A能经过ftp用户登陆

MariaDB [ftp]> CREATE DATABASE ftp;#建立数据库

MariaDB [ftp]> GRANT ALL ON ftp.* TO 'ftp'@'192.168.252.11' IDENTIFIED BY "test";#受权

MariaDB [ftp]> FLUSH PRIVILEGES;#通知MariaDB重读受权信息

MariaDB [ftp]> CREATE TABLE users (

    -> id int AUTO_INCREMENT NOT NULL,

    -> name char(20) binary NOT NULL,

    -> password char(48) binary NOT NULL,

    -> primary key(id)

    -> );#建立users表,

在数据库里插入两条用户信息


wKioL1VRXd3z9Qj2AAFZnUt-l_o320.jpg

 

建立完成后不要忘记使用主机A进行测试


wKiom1VRXJiCfxhfAAJtAN4bZzc695.jpg

 

如上所示则成功

三、配置主机A

安装pam_mysql模块

[root@localhost ~]# yum install pam_mysql -y

提供pam.mysql文件并编辑,内容以下

[root@localhost ~]# vim /etc/pam.d/vsftpd.mysql

auth required /lib/security/pam_mysql.so user=ftp passwd=test host=192.168.252.10 db=ftp table=users usercolumn=name passwdcolumn=password crypt=2

account required /lib/security/pam_mysql.so user=ftp passwd=test host=192.168.252.10 db=ftp table=users usercolumn=name passwdcolumn=password crypt=2

新建虚拟用户映射的系统用户及相应目录

[root@localhost ~]# useradd -s /sbin/nologin -d /var/ftproot/ vuser

[root@localhost ~]# chmod go+rx /var/ftproot/

修改vsftpd配置文件,其内容以下

listen=YES

anonymous_enable=YES

local_enable=YES

write_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES

guest_enable=YES

guest_username=vuser

pam_service_name=vsftpd.mysql

 

重启测试


wKiom1VRXK7CUarwAAH7xsoCdQg556.jpg

 

~                                                                                   

成功

4、设置vsftpd相关欢迎和提示信息,以及日志功能

编辑配置文件,使其内容以下所示

listen=YES

anonymous_enable=NO

write_enable=YES

local_enable=YES

chroot_local_user=YES

userlist_enable=YES

userlist_file=/etc/vsftpd/userlist

userlist_deny=YES

pam_service_name=vsftpd

dirmessage_enable=YES

ftpd_banner=Hello Welcome to login my FTP server.

xferlog_enable=YES

xferlog_std_format=YES

xferlog_file=/var/log/vsftpd_log

在此使用test用户测试,切换目录到/home/test下,新建ftp目录,并在目录下添加.message文件

[root@localhost ~]# mkdir /home/test/ftp

[root@localhost ftp]# echo "Hello this is ftp dirctory" >.messages

 重启服务测试

  

wKioL1VRXmeCf5ZgAAGni1C4AQA292.jpg

 

查看日志

     

wKioL1VRXrXTpKcUAAQxVDF4dgM073.jpg

 

到此vsftp服务介绍完毕                                    

~                      

相关文章
相关标签/搜索