Linux下的FTP(vsftp)

Present by MagnumLuke_刘梦龙

1. FTP简介

FTP 文件传输协议 , 基于 TCP , 是 C/S架构 , 可同时提供给多个客户端使用

主流客户端软件 : vsftpd , ProFTPD , PureFTPd , Server-U FTP , Unix/Linux中 vsftp最为主流

2. FTP 传输模式

FTP 基于 C/S 模式 , 有两种模式 , 分别为 主动模式 和 被动模式 , 主被动模式均是以 FTP 服务器端为参考

主动模式 : 客户端任意端口 连接到 FTP服务器的21端口

被动模式 : 客户端从任意一个端口连接到客户端的21端口

防火墙要开通20 21端口

3. Vsftp服务器的登录类型

登录方式 : ① 系统用户 ② 匿名用户 ③ 虚拟用户 三种登录方式

所有的虚拟用户会被映射成一个系统用户 , 访问时的文件目录为此系统用户的家目录

匿名用户也是虚拟用户 , 映射的系统用户为 ftp

详细信息可以查看 : man vsftpd.conf

4. Vsftp服务器的安装及配置

4.0 安装准备

务必关闭selinux 和 firewalld

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# vim /etc/selinux/config 
		SELINUX=disabled

4.1 安装环境

服务端 : CentOS 7.6

客户端 : Windows10 , CentOS7

4.2 安装epel源

[root@localhost ~]# yum -y install epel-release

4.3 安装 vsftpd 及相关依赖

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

4.4 vsftpd 配置文件说明

配置文件作用
/etc/vsftpd/vsftpd.confvsftpd 的核心配置文件
/etc/vsftpd/ftpusers用于指定哪些用户不能访问FTP服务器
/etc/vsftpd/user_list指定允许使用 vsftpd 的用户列表文件
/etc/vsftpd/vsftpd_conf_migrate.sh是vsftpd操作的一些变量和设置脚本
/var/ftp/默认情况下匿名用户的根目录

4.5 配置文件详解

4.5.1 /etc/vsftpd/vsftpd.conf

属性属性值含义
anonymous_enableYES/NO是否允许匿名登录(anonymous)登录FTP , 如果该设置被注释 , 则默认允许
local_enableYES/NO是否允许本地系统用户登录
write_enableYES/NO是否开启任何形式的FTP写入命令 , 上传文件
local_umaskxxx本地用户的 umask设置 , 如果注释则该设置默认为077 , 但一般都设置成 022
anon_upload_enableYES/NO是否允许匿名用户上传文件 , 如果要设置为允许 , 则需要先开启 write_enable , 否则无效 , 此外对应目录还要具有写权限
dirmessage_enableYES/NO当进入某个用户时 , 发送消息提示给远程用户
xferlog_enableYES/NO是否开启 上传/下载 的日志记录
connect_from_port_20YES/NO是否使用20端口来连接FTP
chown_uploadsYES/NO匿名上传的文件是否由某一指定用户chown_username所拥有
chown_username有效用户名匿名上传的文件由该用户所有
xferlog_file有效路径设置日志文件的保存未知 , 默认为 /var/log/xferlog

4.6 vsftpd 配置匿名用户

4.6.1 备份主配置文件

[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# cp vsftpd.conf{,.bak}

4.6.2 修改主配置文件

write_enable=YES
anon_umask=022
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

4.6.3 重启vsftpd服务并测试

[root@localhost vsftpd]# systemctl restart vsftpd
[root@localhost vsftpd]# ps -aux | grep vsftpd
root      59902  0.0  0.0  53292   572 ?        Ss   22:09   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      59952  0.0  0.0 112808   968 pts/0    S+   22:10   0:00 grep --color=auto vsftpd

在这里插入图片描述

4.6.4 设置允许匿名用户上传文件

[root@localhost var]# cd /var/ftp/
[root@localhost ftp]# ls
pub
[root@localhost ftp]# chown -R ftp.ftp pub
[root@localhost ftp]# systemctl restart vsftpd

4.7 配置本地系统账户登录

本地系统账户登录 默认FTP目录为 用户家目录

4.7.1 创建账户

[root@localhost ~]# useradd zhangsan
[root@localhost ~]# useradd lisi
[root@localhost ~]# passwd zhangsan
[root@localhost ~]# passwd lisi

4.7.2 修改vsftpd配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
#---------------------------------------------------------------
local_enable=YES
local_umask=077
chroot_local_user=YES
allow_writeable_chroot=YES
write_enable=YES

dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd

userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES

#----------------------------重启检查配置文件是否有误
[root@localhost ~]# systemctl restart vsftpd

4.7.3 其他常用本地用户FTP配置项

local_enable=YES						# 是否允许本地系统用户访问
local_umask=022							# 本地用户所上传文件的权限掩码
local_root=/var/ftp						# 设置本地用户的FTP根目录
chroot_list_enable=YES					# 表示是否开启chroot的环境 , 默认没有开启
chroot_list_file=/etc/vsftpd/chroot_list	#表示卸载/etc/vsftpd/chroot_list文件里面的用户不可以出chroot环境的 , 默认是可以的
chroot_list_user=YES					# 表示所有写在/etcvsftpd/chroot_list文件里面的用户时可以出chroot环境的 , 和上面的相反
local_max_rate=0						# 限制最大传输速率(字节/秒) , 0为无限制

4.7.4 添加本地用户到白名单

[root@localhost ~]# vim /etc/vsftpd/user_list 
		zhangsan
		lisi

4.7.5 重新启动vsftpd服务测试

[root@localhost ~]# systemctl restart vsftpd

在这里插入图片描述

4.8 配置虚拟用户登录

4.8.1 建立虚拟FTP用户的账号

[root@localhost ~]# useradd -s /sbin/nologin vu

4.8.2 创建虚拟用户文件

root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim user
$
wangwu
12345
maliu
12345
$
  • 奇数行代表用户名 , 偶数行代表密码

4.8.3 创建数据文件

通过 db_load工具创建出 Berkeley DB 格式的数据库文件

[root@localhost vsftpd]# db_load -T -t hash -f user user.db
[root@localhost vsftpd]# ls
ftpusers  user  user.db  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh
  • -f 指定数据源文件
  • -T 允许非 Berkeley DB 的应用程序使用文本格式转换的DB数据文件
  • -t hash 读取文件的基本方法

4.8.4 建立支持虚拟用户的 PAM 认证文件

[root@localhost vsftpd]# vim /etc/pam.d/vsftpd.vu
auth    required        /lib64/security/pam_userdb.so   db=/etc/vsftpd/user
account required        /lib64/security/pam_userdb.so   db=/etc/vsftpd/user

4.8.5 修改配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
#----------------------------------------------------------------------------
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
userlist_enable=YES
tcp_wrappers=YES
allow_writeable_chroot=YES
guest_enable=YES
guest_username=vu
pam_service_name=vsftpd.vu
local_enable=YES
local_umask=077
chroot_local_user=YES
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/user_dir

4.8.6 常用的全局配置项

listen=YES								# 是否已独立运行的方式监听服务
listen_address=192.168.200.130			# 设置监听FTP服务的IP地址
listen_port=21							# 设置监听FTP服务的端口号
write_enable=YES						# 是否启用写入权限(上传, 删除文件)
download_enable=YES						# 是否允许下载文件
dirmessage_enable=YES					# 用户切换进入目录是显示 .message文件
xferlog_enable=YES						# 启用日志文件 , 记录到/var/log/xferlog
connect_from_port_20=YES				# 允许服务器主动模式(从20端口建立数据连接)
pasv_enable=YES							# 允许服务器被动模式
pasv_max_port=24600						# 设置被动模式服务器的最大端口号
pasv_min_port=24500						# 设置被动模式服务器的最小端口号
pam_service_name=vsftpd					# 用户认证的PAM文件未知(/etc/pam.d/vsftpd.vu)
userlist_enable=YES						# 是否启用user_list列表文件
userlist_deny=YES						# 是否金庸user_list中的用户
max_clients=0							# 限制并发客户端连接数
max_per_ip=0							# 限制同一IP地址的并发连接数
tcp_wrappers=YES						# 是否启用 tcp_wrappers主机访问控制
chown_username=root						# 表示匿名用户名上传的文件的用有人是root,默认关闭
ascii_upload_enable=YES					# 表示是否允许用户可以上传一个二进制文件(默认不允许)
ascii_download_enable=YES				# 这个是代表是否允许用户可以下载一个二进制文件,默认是不允许的
nopriv_user=vsftpd						# 设置支持vsftpd服务的宿主用户为手动建立的vsftpd用户
async_abor_enable=YES					# 设定支持异步传输功能
ftpd_banner=Welcome to FTP Server		# 设定vsftpd的登录标题语
guest_enable=YES						# 设置启用虚拟用户功能
guest_username=ftpuser					# 指定虚拟用户的宿主用户
virtual_use_local_privs=YES				# 设定虚拟用户的权限符合他们的宿主用户
user_config_dir=/etc/vsftpd/vconf		# 设定虚拟用户个人vsftp的配置文件存放路径

4.8.7 为用户建立独立的配置目录及文件

[root@localhost ~]# mkdir /etc/vsftpd/user_dir
[root@localhost ~]# vim /etc/vsftpd/user_dir/wangwu
local_root=/etc/vsftpd/data

4.8.8 创建虚拟用户数据存放目录

[root@localhost ~]# mkdir /etc/vsftpd/data
[root@localhost ~]# chmod 777 /etc/vsftpd/data/

4.8.9 重启vsftpd服务测试

[root@localhost ~]# systemctl restart vsftpd

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值