文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,是应用层的协议, 使用 TCP进行可靠的 传输。客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。
ftp
FTP 是基于客户———服务器(C/S)模型而设计的,在客户端与 FTP 服务器之间建立两个连接。
FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而, 用户并不真正登录到自己想要存取的计算机,而是通过FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等, 即使双方计算机可能配有不同的操作系统和文件存储方式。
dnf install lftp.x86_64
vsftpd (very secure FTP daemon)最大的特点是其安全性,vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。
dnf install vsftpd.x86_64 -y
(1)关闭selinux
getenforce
vim /etc/sysconfig/selinux
reboot
(2)开启vsftpd服务:systemctl start vsftpd.service
systemctl start firewalld
firewall-cmd --list-all
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
(4)验证ftp服务是否成功开启:ftp://172.25.254.10
vsftpd.service
/etc/vsftpd/
/etc/vsftpd/vsftpd.conf
/var/ftp
报错代码 | 报错原因 |
---|---|
550 | 程序本身拒绝 |
553 | 文件系统权限限制 |
500 | 权限过大 |
530 | 认证失败 |
vsftp的主配置文件:/etc/vsftpd/vsftpd.conf
每次修改配置文件后必须重启vsftpd服务,否则更改的配置参数不生效
(1) 是否允许匿名用户登陆:anonymous_enable
anonymous_enable=NO
,匿名用户不能登陆anonymous_enable=YES
,匿名用户登陆后可以访问其中的内容local_enable=NO
local_enable=YES
(1)设定本地用户家目录:local_root=/var/ftp
(2)设定匿名用户的家目录
/var/ftp
anon_root=/westdir
(1)是否允许匿名用户上传文件:anon_upload_enable
修改ftp默认发布目录的所有组:chgrp ftp /var/ftp/pub
修改ftp默认发布目录的权限:chmod 777 /var/ftp/pub
不允许匿名用户上传文件:anon_upload_enable=YES
anon_umask=022
(3)匿名用户上传文件的权限
chown_uploads=YES
:所有匿名上传的文件的所属用户将会被更改成chown_usernamechown_username=linux
chown_upload_mode=0644
匿名登用户能否下载可读的文件的参数:anon_world_readable_only
anon_world_readable_only=NO
anon_mkdir_write_enable=NO
anon_mkdir_write_enable=YES
(1)是否允许匿名用户具有建立目录,上传之外的权限,如删除:anon_other_write_enable
anon_other_write_enable=NO
anon_other_write_enable=YES
(2)可接受的最大client数目:max_clients=1
(3)匿名用户的传输比率(b/s):anon_max_rate=10
(1)默认黑名单:/etc/vsftpd/user_list
echo linux > /etc/vsftpd/user_list
echo westos >/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
为用户登录白名单,不在此名单中的用户不能登陆userlist_deny=NO
echo westos >/etc/vsftpd/user_list
(1)将本地用户锁定在其家目录中:chroot_local_user=YES
(2)锁定用户到自己家目录中的白名单
/etc/vsftpd/vsftpd.conf
chroot_local_user=YES
chroot_list_enable=YES
,只有列在chroot_list_file之中的使用者才能访问根目录chroot_list_file=/etc/vsftpd/chroot_list
echo westos > /etc/vsftpd/chroot_list
(3)锁定用户到自己家目录中的黑名单
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
,在chroot_list_file之中的使用者不能访问根目录(1)创建认证文件:vim /etc/vsftpd/ftp_auth_file
(2)加密认证文件
db_load -T -t hash -f ftp_auth_file ftp_auth_file.db
(3)创建虚拟用户认证文件:vim /etc/pam.d/user
(4)编辑配置文件: /etc/vsftpd/vsftpd.conf
(5)重启vsftpd服务:systemctl restart vsftpd.service
(6)虚拟用户登陆检测
(1)实验环境
mkdir -p /ftpuserdir/user{1..2}
touch /ftpuserdir/user1/userfile1
touch /ftpuserdir/user1/userfile1
(2)编辑vsftpd的配置文件:vim /etc/vsftpd/vsftpd.conf
(3)重启vsftpd服务:systemctl restart vsftpd.service
(1)新建目录存放虚拟用户对应的配置文件: /etc/vsftpd/virtuserconf/
(2)新建user1的配置文件: touch /etc/vsftpd/virtuserconf/user1
(3)虚拟用户user1开放文件上传功能
echo anon_upload_enable=YES > /etc/vsftpd/virtuserconf/user1
(4) 关闭 /etc/vsftpd/vsftpd.conf
配置文件中虚拟用户上传文件的功能
(5)测试