温故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到虚拟机中:
- 使用
virt-manager
命令进入虚拟机管理器界面 - 选择要管理的虚拟机
- 点击灯泡
- 进入虚拟机硬件管理界面,添加硬件Add HardWare
- 选择CD光盘,关联iso镜像
- 重启虚拟机
- 挂载设备到/mnt:mount /dev/sr0 /mnt
- 配置本地yum源: vim /etc/yum.repos.d/rhel_dvd.repo
- 清空缓存:yum clean all
- 刷新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虚拟用户设定的步骤:
- <创建虚拟帐号身份>
vim /etc/vsftpd/loginusers ##文件名称任意
ftpuser1 ##虚拟帐号名字
123 ##虚拟帐号密码
ftpuser2
123
ftpuser3
123
- <给创建的帐号密码文件加密>
db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db
- <编辑帐号和密码处理的库文件>
vim /etc/pam.d/ckvsftpd ##文件名称任意
account required pam_userdb.so db=/etc/vsftpd/loginusers
auth required pam_userdb.so db=/etc/vsftpd/loginusers
- 配置vsftpd配置文件
vim /etc/vsftpd/vsftpd.conf
pam_service_name=ckvsftpd # 虚拟用户信息认证文件名称
guest_enable=YES # 虚拟用户开启
- 虚拟帐号身份指定
guest_username=ftpuser
chmod u-w /home/ftpuser
- 虚拟帐号家目录独立设定
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