博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vsftp基于mysql实现账号认证
阅读量:6123 次
发布时间:2019-06-21

本文共 2861 字,大约阅读时间需要 9 分钟。

hot3.png

ftp简介:

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:服务端错误
两种模式:
主动模式:
1、客户端随机端口N/tcp向ftp服务器21/tcp端口发送连接请求,tcp三次握手建立控制连接;
2、客户端告知ftp服务器N+1/tcp端口用于数据传输;
3、ftp服务器20/tcp端口向N+1/tcp端口发送请求建立数据连接;
被动模式:
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
虚拟用户:
所有的虚拟用户会被统一映射为一个指定的系统账号,访问的共享位置即为此系统账号的家目录;各虚拟用户可被赋予不同的访问权限;通过匿名用户的权限控制参数进行指定;
用户认证:
虚拟用户:仅用于访问某特定服务中的资源;
nsswitch:networkserver switch,名称解析框架;
配置文件:/etc/nsswitch.conf
模块:/lib64/libnss*,/usr/lib64/libnss*
pam:pluggableauthentication module,用户认证框架;
模块:/lib64/security/
配置文件:/etc/pam.conf,/etc/pam.d/*
虚拟用户账号的存储方式:
文件:编辑文件
奇数行为用户名
偶数行为密码
此文件需要被编码为hash格式;
关系型数据库中的表中:即时查询数据库完成用户认证;
mysql库:pam要依赖于pam_mysql
# yum install pam_mysql
注意:pam_mysql来自于epel源;
如果想深入体验LINUX系统的新手,也可以先下载一个方德Linux软件中心试用一下。
免费下载地址:

转载于:https://my.oschina.net/foundation00523wuxi/blog/612820

你可能感兴趣的文章
UIBezierPath
查看>>
should be mapped with insert="false" update="false
查看>>
elixir 高可用系列(五) Supervisor
查看>>
李洪强-C语言关键字、标识符和注释
查看>>
单向和双向tvs管
查看>>
JS监听回车事件
查看>>
懒加载 与 富文本编辑器 的 相爱相杀
查看>>
模拟登陆并且登陆封装工具类
查看>>
[Nginx] - PHP+FPM相关的配置
查看>>
SQL转Java代码小工具
查看>>
Android Studio安装后第一次进不去
查看>>
Microsoft Office Excel 2007 使用笔记
查看>>
如何使用git在github上开发的时候和别人在别人仓库上进行协作编程,最后再统一提交...
查看>>
pandas 前后行操作
查看>>
二维数组去重
查看>>
TDatabase TQuery TDataSource TDBGrid 设定方法
查看>>
Linux 进程间通信
查看>>
Struts2核心技术简介
查看>>
记录一次bug解决过程:resultType和手动开启事务
查看>>
spring源码:ApplicationContext的增强功能(li)
查看>>