什么是FTP协议
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
(1)准备工作
执行getenforce命令
如果是Disabled不用管
如果是enforcing
vim /etc/sysconfig/selinux 改SELINUX=Disabled
ftp服务的基本信息
软件安装包 | vsftpd |
---|---|
默认发布目录 | /var/ftp |
默认发布目录的子目录 | /var/ftp/pub/ |
协议接口 | 21/tcp |
服务配置文件 | /etc/vsftpd/vsftpd.conf |
报错id的解析:
500 文件系统权限过大
530 用户认证失败
550 服务本身功能未开放
553 本地文件系统权限过小
安装ftp服务(搭建ftp服务器)以及进行测试
(1)寻找安装ftp服务的安装包
(2)yum install vsftpd lftp -y 安装vsftpd服务 与 lftp客户端
(3)systemctl start vsftpd 开启vsftpd服务
systemctl enable vsftpd 设置开机启动
(4)rpm -ql vsftpd 看该服务的安装目录 /var/ftp /var/ftp/pub
(5)rpm -qc vsftpd 看该服务的配置文件 /etc/vsftpd/vsftpd.conf
/etc/logrotate.d/vsftpd 日志文件
/etc/pam.d/vsftpd 认证文件
/etc/vsftpd/ftpusers 黑名单文件
/etc/vsftpd/user_list 用户名单文件
/etc/vsftpd/vsftpd.conf 配置文件
(6)在火墙里面添加ftp服务
(7)验证ftp服务器是否搭建成功
lftp 172.25.254.114 登陆ftp服务器相当于以匿名用户身份登陆
这里的匿名用户就相当于ftp用户
vsftpd服务的配置参数
主机以什么样的身份登陆ftp服务器,这些均需要在ftp服务器的客户端配置文件里面设置
在配置文件/etc/vsftpd/vsftpd.conf当中修改配置参数,每次修改完配置文件重启才会生效
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
几个报错参数:
530 | 表示认证失败 ,服务器不允许或者密码错误 |
---|---|
550 | 表示服务本身的功能没有开启 |
553 | 表示权力过小或者所访问的服务器的文件系统有问题 |
500 | 服务本身认为我所操作的服务的权力过大 |
(1)匿名用户的相关设定
匿名用户登陆限制
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
最大上传速率
anon_max_rate=102400
最大连接数
max_clients=2
(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
ftp虚拟用户的设定
(1)创建虚拟帐号身份
vim /etc/vsftpd/loginusers ##文件名称任意
db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db
解释:
db_load -T -t hash -f
加密命令 转换 建立 加密方式 文件
/etc/vsftpd/loginusers /etc/vsftpd/loginusers.db
被加密文件 加密的文件
vim /etc/pam.d/westos ##文件名称任意(设置转换桥梁)
account required pam_userdb.so db=/etc/vsftpd/loginusers
auth required pam_userdb.so db=/etc/vsftpd/loginusers
(帐号和密码 请求访问允许或者拒绝 验证程序 在该文件里面验证)
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos(使它生效)
guest_enable=YES
虚拟帐号身份指定 guest_username=ftp
测试连接
(2)虚拟帐号家目录独立设定(使虚拟用户的登陆进去不再是ftp用户的默认家目录)
vim /etc/vsftpd/vsftpd.conf
local_root=/ftpuserhome/$USER
user_sub_token=$USER
mkdir /ftphome/ftpuser{1..3} -p
touch /ftphome/ftpuser1/file1
touch /ftphome/ftpuser2/file2
touch /ftphome/ftpuser3/file3
进行测试(每个虚拟用户有各自独立的家目录)
(3)虚拟帐号配置独立(想让哪个用户干什么用户就干什么 ,vsftpd的安全性就体现在这里)
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/ftpuser1
在此文件中设定配置文件中的所有参数,此文件的优先级高
chgrp ftp /ftphome/ftpuser{1..3}/pub
chmod 775 /ftphome/ftpuser{1..3}/pub
以ftpuser1用户可以实现文件上传为例:
备注:
在ftp服务器端改权限
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
此时匿名用户就可以对pub/这个子目录进行操作