vsftpd基础
一、简单介绍
ftp是一种非常古老的应用层协议,全称为文件传输协议(file transfer protocol),它比http协议年龄大的多,TCP/IP协议刚刚诞生不久,ftp就诞生了。主要用于在各主机之间完成文件传送
二、链接类型
1. 命令链接
用于传输命令
2. 数据链接
用于传输数据,只有需要进行数据传输时才建立,数据传输完成就拆除
- 主动模式(PORT):当需要传输数据时,服务端会通过20/TCP端口去链接客户端命令链接端口随后的端口,而后开始传输数据
- 被动模式(PASV):当需要传输数据时,客户端通过命令链接通知客户端一个随机端口,而后客户端也通过一个随机端口去链接客户端告知的端口。有意思的是,服务端并不会直接告诉客户端随机端口号,而是将随机端口号除以256后,将商和余数发送给客户端
三、ftp协议的实现
1. 服务端程序
- Serv-U
- IIS
- filezilla
- wuftpd
- proftpd
- pureftpd
- vsftpd
2. 客户端程序
- ftp命令
- filezilla
- CuteFTP
- FlashFXP
- lftp
四、vsftpd配置
1. 文件路径
- 主配置文件:
/etc/vsftpd/vsftpd.conf
- unit文件:
/usr/lib/systemd/system/vsftpd.service
- 主程序:
/usr/sbin/vsftpd
- 共享文件路径:
/var/ftp/
2. 用户类型
- 匿名用户:
- 系统用户:使用系统用户完成登录,有些具有管理权限的系统用户应该限制其登录,需定义在
/etc/vsftpd/ftpuser
文件中 - 虚拟用户:使用非系统用户完成登录
3. 主配文件关键指令
anonymous_enable
:是否开启匿名用户登录anon_world_readable_only
:是否为全局只读anon_upload_enable
:匿名用户是否可以上传文件anon_mkdir_write_enable
:匿名用户是否可以创建目录anon_other_write_enable
:匿名用户是否可以删除文件、删除目录anon_umask
:匿名用户上传文件的掩码chown_uploads
:定义上传文件是否修改其属主,需要结合chown_username选项使用chown_username
:定义上传的文件属主是谁local_enable
:是否启用本地用户write_enable
:是否允许本地用户上传、下载、删除local_umask
:本地用户上传文件的掩码userlist_enable
:是否启用登录限制列表userlist_deny
:设置登录用户的名单,YES为黑名单,NO为白名单,结合/etc/vsftpd/user_list
使用chroot_list_enable
:定义系统用户是否可以chroot,设定完成后需要将系统用户家目录的写权限移除chroot_list_file=/etc/vsftpd/chroot_list
:定义锁定chroot的用户名称xferlog_enable
:是否启用ftp上传下载日志xferlog_file
:日志文件位置accept_timeout
:链接建立的超时时长anon_max_rate
:匿名用户传输速率local_max_rate
:本地用户的传输速率max_clients
:并发链接限制数max_per_ip
:单ip的最大并发连接数
4. 虚拟用户
可以使用虚拟账户对ftp登录进行认证,ftp可以用过pam机制对接多种认证方式,认证信息可以存放在文件中、数据库中,不过要是存放在数据库中需要pam可以链接相应的数据库,本部分讲解pam对接mariadb
(1) 安装环境依赖包,创建用户
yum install mariadb-server mariadb-devel pam-devel
yum groupinstall "Development Tools" "Server Platform Devlopment"
useradd vuser
:虚拟用户需要映射到本地的一个用户,所以需要创建一个本地用户
(2) 编译安装pam-mysql
./configure --with-mysql=/usr --with-pam=/usr --with-pam-mods-dir=/usr/lib64/security/
make && make install
此时在/usr/lib64/security/
目录中就存在pam_mysql.so
模块了,可实现使用mysql完成认证
(3) 配置mysql并授权用户
|
(4) 配置pam认证
编辑配置文件/etc/pam.d/vsftpd.vusers
|
(5) 配置ftpd服务端
|
(6) 虚拟账号权限设置
需要在配置文件中加入user_config_dir=/etc/vsftpd/vusers_config/
,这个选项用来定义虚拟账号权限目录,在目录中使用与账号名称相同的名称创建文件,在文件中使用匿名权限关键词来做授权,如tom用户就需要在/etc/vsftpd/vusers_config/
目录下创建一个tom
文件,如果允许其上传就在文件中定义anon_upload_enable=yes
五、其他的一些小知识
- DAS(Direct Attached Storage):直接附加设备,设备与主板直接通过总线相连。这种数据存取接口是以block的方式呈现的,常见的有SATA、SAS、IDE、SCSI、USB
- NAS(Network Attached Storage):网络附加存储,可以将网络上的文件系统挂载到本地,就像使用本地的文件系统一样。这种数据存取方式是以文件的方式呈现,所以其不可以分区格式化。典型的存储协议有CIFS(samba)、NFS(Network File System)
- SAN(Storage Area Network):存储区域网络,接口类型为块,但是其接口是通过网络进行输出的。常见的协议为ISCSI(IP-SAN)、FCSAN、FCoE