温故Linux 操作系统12:vsftpd服务

1.什么是FTP 服务器?

FTP 是 File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于 Internet 上的控制文件的双向传输。同时,它也是一个应用程序(Application)。 基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
在 FTP 的使用当中,用户经常遇到两个概念:“下载”(Download)和"上传"(Upload)。

2. 什么是vsftpd?

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、HP-UNIX 等系统上面,是一个完全免费的、开放源代码的 ftp 服务器软件,支持很多其他的FTP 服务器所不支持的特征。

3.安装vsftpd

3.1.配置本地yum源

在网上下载与虚拟机版本相对应的iso镜像,我这里用的是rhel-server-7.3-x86_64-dvd.iso
关联真机的iso到虚拟机中:

  1. 使用virt-manager命令进入虚拟机管理器界面
  2. 选择要管理的虚拟机
  3. 点击灯泡
  4. 进入虚拟机硬件管理界面,添加硬件Add HardWare
  5. 选择CD光盘,关联iso镜像
  6. 重启虚拟机
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  7. 挂载设备到/mnt:mount /dev/sr0 /mnt
  8. 配置本地yum源: vim /etc/yum.repos.d/rhel_dvd.repo
  9. 清空缓存:yum clean all
  10. 刷新yum列表:yum repolist
    在这里插入图片描述
    在这里插入图片描述

3.2.安装vsftpd服务

yum install vsftpd  -y		##安装vsftpd服务
yum install lftp    -y		##安装lftp工具
systemctl start vsftpd 		##开启vsftpd服务
systemctl stop firewalld 	##关闭防火墙
systemctl enable vsftpd 	##开机启动vsftpd服务
lftp ip						##能登陆并且显示,表示安装成功

**vsftpd文件信息

/var/ftp					##默认发布目录
/etc/vsftpd					##配置目录	

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.ftp服务的基本信息

1.软件安装包:vsftpd

2.默认的发布目录:/var/ftp

3.协议接口:21/tcp

4.服务配置文件:/etc/vsftpd/vsftpd.conf

注意:配置文件编辑后要重启服务

5.报错id的分析:
500 ##文件系统权限过大
530 ##用户认证失败
550 ##服务本身功能未开放
553 ##本地文件系统权限过小

5.vsftpd服务的配置参数

5.1.<匿名用户设定>

以下都是修改vsftpd配置/etc/vsftpd/vsftpd.conf的一些参数的作用
vim /etc/vsftpd/vsftpd.conf:

anonymous_enable=YES|NO		##匿名用户登陆限制

在这里插入图片描述

  • <匿名用户上传>
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
  • <匿名用户家目录修改>
anon_root=/direcotry
  • <匿名用户上传文件默认权限修改>
anon_umask=xxx

在这里插入图片描述

  • <匿名用户建立目录>
anon_mkdir_write_enable=YES|NO
  • <匿名用户下载>
anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载
  • <匿名用户删除>
anon_other_write_enable=YES|NO	
  • <匿名用户使用的用户身份修改>
chown_uploads=YES
chown_username=student
chown_uploads_mode=0644
  • <最大上传速率>
anon_max_rate=102400
  • <最大链接数>
max_clients=2

5.2.<本地用户设定>

local_enable=YES|NO		##本地用户登陆限制
write_enable=YES|NO		##本地用户写权限限制
  • 本地用户家目录修改>
local_root=/directory
  • <本地用户上传文件权限>
local_umask=xxx
  • <限制本地用户浏览/目录>
chroot_local_user=YES		##所有用户被锁定到自己的家目录中
chmod u-w /home/*
  • <用户黑名单建立>
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
  • <用户白名单建立>
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
  • <限制本地用户登陆>
vim /etc/vsftpd/ftpusers		##用户黑名单
vim /etc/vsftpd/user_list		##用户临时黑名单
  • <用户白名单设定>
userlist_deny=NO
/etc/vsftpd/user_list			##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp

5.3.<虚拟用户设定>

ftp虚拟用户设定的步骤:

  1. <创建虚拟帐号身份>
vim /etc/vsftpd/loginusers	##文件名称任意
ftpuser1					##虚拟帐号名字
123							##虚拟帐号密码
ftpuser2
123
ftpuser3
123
  1. <给创建的帐号密码文件加密>
db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db
  1. <编辑帐号和密码处理的库文件>
vim /etc/pam.d/ckvsftpd		##文件名称任意
account		required	pam_userdb.so	db=/etc/vsftpd/loginusers
auth		required	pam_userdb.so	db=/etc/vsftpd/loginusers
  1. 配置vsftpd配置文件
vim /etc/vsftpd/vsftpd.conf
pam_service_name=ckvsftpd	# 虚拟用户信息认证文件名称
guest_enable=YES		# 虚拟用户开启
  1. 虚拟帐号身份指定
guest_username=ftpuser
chmod u-w /home/ftpuser
  1. 虚拟帐号家目录独立设定
vim /etc/vsftpd/vsftpd.conf
local_root=/ftpuserhome/$USER
user_sub_token=$USER
-----------------------------
mkdir /ftpuserhome
chgrp ftpuser /ftpuserhome
chmod g+s /ftpuserhome
mkdir /ftpuserhome/ftpuser{1..3}

注意:各虚拟帐号配置独立
案例实现目标:
1). ftpuser1用户上传和下载文件限速;
2). ftpuser2用户上传和下载文件不限速, 并且可以上传文件;

vim /etc/vsftpd/vsftpd.conf
	user_config_dir=/etc/vsftpd/conf.d
	mkdir -p /etc/vsftpd/conf.d

vim /etc/vsftpd/conf.d/ftpuser1
在此文件中设定配置文件中的所有参数,此文件的优先级高
	anon_max_rate=1024

vim /etc/vsftpd/conf.d/ftpuser2
	write_enable=YES
	anon_upload_enable=YES


mkdir /ftp/ftpuser2/upload/
chown ftpuser  /ftp/ftpuser2/upload/
systemctl  restart vsftpd

测试限速:

**** server:
	dd if=/dev/zero of= /ftp/ftpuser1/hello1 bs=1M count=100
	dd if=/dev/zero of=/ftp/ftpuser2/hello2 bs=1M count=100
****client:
lftp 172.25.0.11 -u ftpuser1
> get hello1

lftp 172.25.0.11 -u ftpuser2
> get hello2

****测试文件上传:
lftp 172.25.0.11 -u ftpuser2
> cd upload/
> put /etc/passwd
发布了39 篇原创文章 · 获赞 4 · 访问量 719

猜你喜欢

转载自blog.csdn.net/weixin_44718794/article/details/103058654
今日推荐