FTP 是File Transfer Protocol(文件传输协议)的英文简称,是internet上仍常用的最老的协议之一,FTP服务器包的名称为VSFTP
在rhel7中,FTP的软件包名称为vsftpd。
一.部署ftp服务
服务端: yum install vsftpd -y 安装vsftp服务
yum install lftp -y 安装lftp服务
systemctl start vsftpd 开启vsftp服务
ystemctl enable vsftpd 开机自启动ftp服务
systemctl start firewalld 开启防火墙
firewall-cmd --permanent --add-service=ftp 允许ftp服务
firewall-cmd --reload 重装载防火墙
客户端:yum install lftp -y 安装lftp服务
lftp 172.25.75.130 然后ls会看到一个pub目录
这个时候,用户就可以登陆服务端上传和下载文件了。但需要服务端配置相应的文件,下面我会提出。
如果lftp用不了,可以在服务端上输入命令:getenforce ,如果输出的是Enforcing,就vim /etc/sysconfig/selinux改为disabled,保存退出后reboot
二. ftp服务的基本信息
软件安装包: vsftp
默认发布目录:/var/ftp
协议接口: 21/tcp
服务配置文件: /etc/vsftpd/vsftpd.conf
报错id的解析:
500 文件系统权限过大
530 用户认证失败
550 服务本身功能未开放
三.服务配置文件的设置
匿名用户: 匿名用户就是通过客户端登陆,不会显示用户名
anonymous_enable=YES 匿名用户可以登陆,默认是YES
anonymous_enable=NO 匿名用户不可以登陆
重启服务
客户端测试
本地用户:local_enable=YES 本地用户可以登陆,默认是YES
local_enable=NO 本地用户不能登陆
write_enable=YES|NO ftp是否对登陆用户可写
测试1:先在服务端新建立一个用户,然后为其设置密码。然后在客户端输入命令:lftp 172.25.75.130 -u xxx 登陆本地用户名。
测试2:在服务端vim /etc/vsftpd/vsftpd.conf 将 local_enable=YES 的YES改为NO,然后重启服务。在客户端输入命令:lftp 172.25.75.130 -u xxx 登陆本地用户名。
错误530,用户认证失败。
匿名用户上传:
要想匿名用户可以上传文件,就需要进行以下操作:
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
客户端:
这里我暴露了一个错误,我改变pub目录下的权限时,把命令写成了chmod 755 /var/ftp/pub ,误将775写成了755,这样,pub的ftp组依然没有写的权力,所以执行不了put的命令。
匿名用户家目录修改:
anon_root=/directory
客户端:
匿名用户上传文件默认权限修改:
anon_umask=xxx
客户端:
匿名用户建立目录:
anon_mkdir_write_enable=YES|NO YES表示可以创建目录,NO表示不可以创建目录
客户端:
匿名用户下载:
anon_world_readable_only=YES|NO NO表示可以下载
客户端:
匿名用户删除:
anon_other_write_enable=YES|NO
客户端:
匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student
chown_upload_mode=0644
最大上传速率:
anon_max_rate=102400
最大链接数:
max_clients=2
如果超过两个,就不能再登陆了
客户端:
本地用户
本地用户上传文件权限:
local_umask=xxx
本地用户家目录修改:
local_root=/directory
四.用户黑白名单设定
vim /etc/vsftpd/ftpusers 用户黑名单,此文件优先级最大,只要出现在此文件里的用户,则不能登陆
vim /etc/vsftpd/user_list 用户临时黑名单
用户白名单设定
userlist_deny=NO 参数设定
/etc/vsftpd/user_list 此文件变成用户白名单,只在名单中出现的用户可以登陆ftp