Vsftpd基于MySQL实现用户认证

ftp:File Transfer Protocol,文件传输协议;FTP是应用层协议,使用C/S架构,工作于20/tcp,21/tcp。

FTP使用交互式访问模式,两个并行TCP连接,一个控制连接,一个数据连接,控制连接用于在客户机和服务器之间发送控制信息,比如用户和密码,改变远程目录和命令,上传下载文件等,数据连接用于真正发送数据。ftp有两种工作模式,主动模式(Active),被动模式(Passive)。

数据

命令连接:文件管理类命令,始终在线的连接

数据连接:数据传输,按需创建及关闭的连接

数据传输格式

文本传输

二进制传输

常用ftp工具

Server:wu-ftpd,proftpd,pureftod,vsftpd(Very Secure),ServU;

Client:ftp,lftp(lftpget),wget,curl,filezilla,gftp(Linux GUI),flashfxp,cuteftp;

相应码

1xx:信息

2xx:成功类的状态吗

3xx:提示需进一步提供补充类信息的状态码

4xx:客户端错误

5xx:服务端错误

两种模式

主动模式:

Vsftpd基于MySQL实现用户认证

1、客户端随机端口N/tcp向ftp服务器21/tcp端口发送连接请求,tcp三次握手建立控制连接;

2、客户端告知ftp服务器N+1/tcp端口用于数据传输;

3、ftp服务器20/tcp端口向N+1/tcp端口发送请求建立数据连接;

被动模式:

Vsftpd基于MySQL实现用户认证

玩转vsftpd服务器的四大高级配置:

vsFTPd配置教程:

Ubuntu实用简单的FTP架设

Ubuntu 上架设FTP服务器和Apache服务器

Ubuntu 13.04 安装 LAMP\vsftpd\Webmin\phpMyAdmin 服务及设置

RHEL6平台下SeLinux和vsftpd的匿名上传的简单案例

Linux系统vsftpd源码安装

openSUSE 13.2/13.1 下安装配置 FTP服务器 vsftpd 

1、客户端随机端口N/tcp向ftp服务器21/tcp端口发送连接请求,tcp三次握手建立控制连接;

2、ftp服务器告知客户端随机X/tcp用于数据传输;

3、客户端通过N+1/tcp端口向ftp服务器X/tcp端口发送请求建立数据连接;

Vsftpd服务安装配置:

# yum install vsftpd

# rpm -ql vsftpd    :安装vsftpd生成文件:

# /etc/pam.d/vsftpd    :用户认证配置文件;

# /etc/rc.d/init.d/vsftpd    :服务脚本;

# /etc/vsftpd    :配置文件目录;

# vsftpd.conf    :主配置文件;

# /usr/sbin/vsftpd    :主应用程序;

ftp服务的用户有三类

系统用户:即服务器系统中存在的用户,其默认访问的资源位置为该用户的家目录;

匿名用户:不需要账号和密码即可登陆的用户,此类用户会被映射为一个系统用户ftp,默认访问资源为ftp用户的家目录:/vat/ftp ;

虚拟用户:此类用户在ftp服务器中创建,会映射为一个系统用户;

配置文件详解

# vim /etc/vsftpd/vsftpd.conf

匿名用户配置

> anonymous_enable=YES|NO    :是否允许登陆;

> anon_mkdir_write_enable=YES|NO    :是否允许上传;

> anon_ohter_write_enable=YES|NO    :是否允许删除文件

注意:开启以上选项后,客户端使用匿名用户登陆,对/var/ftp目录仍无法上传文件,需要在系统中为ftp用户添加对目录的权限;处于安全考虑可在/var/ftp创建专门用于上传的目录,并添加权限;

# cd /var/ftp/

# mkdir upload

# setfacl -R -m u:ftp:rwx upload/

系统用户配置

> local_enable=YES|NO    :是否允许登陆;
> write_enable=YES|NO    :是否允许上传;
> local_umask=022    :上传文件默认权限,与系统umask无关;
> chroot_local_user=YES|NO    :是否禁锢所有的ftp本地用户于其家目录中;
> chroot_list_enable=YES|NO    :是否禁锢文件中指定的ftp本地用户于其家目录中;
> chroot_list_file=/etc/vsftpd/chroot_list    :禁锢用户文件路径;
> dirmessage_enable=YES|BO    :用户登录服务器看到信息;

注意:由于是系统用户登录,此类用户可访问其他的目录,可以通过禁锢选项将系统用户禁锢在其家目录中。

日志选项:

> xferlog_enable=YES|NO    :是否开启;

> xferlog_std_format=YES|NO    :标准格式;

> xferlog_file=/var/log/xferlog    :日志位置;

改变上传文件的属主:

> chown_uploads=YES|NO    :是否改变上传文件的属主;

> chown_username=whoever    :上传文件的属主;

控制用户登录:

> userlist_enable=YES|NO    :是否启用控制用户登录的列表文件;

> userlist_deny=YES|NO    :YES黑名单,NO白名单;默认名单文件为:/etc/vsftpd/user_list;

连接限制:

> max_clients=    :最大并发连接数;

> max_per_ip=    :每个IP可同时发起的并发请求数;

传输速率:

> anon_max_rate=    :匿名用户的最大传输速率, 单位是“字节/秒”;

> local_max_rate=    :本地用户的最大传输速率

vsftpd使用pam完成用户认证,其用到pam

> pam_service_name=vsftpd

虚拟用户:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4569c48a72db7fab609990ad5cdc03c5.html