ftp?

FTP(文件传输协议)是INTERNET上仍常用的最老的网络协议之一,它为系统提供了通过网络与远程服务器进行传输的简单方法。
tcp/ip协议中ftp协议的默认端口为21

ftp服务器的部署

1.查看selinux服务状态,若为开启则需要关闭

centos7 修改ftp主目录_ftp


可以看出这里的selinux是开启的,那么我们就需要编辑/etc/sysconfig/selinux

centos7 修改ftp主目录_上传_02


注修改selinux后需要重启计算机

2.配置yum源

cd /etc/yum.repos.d/
vim /rhel_dvd.repo

centos7 修改ftp主目录_用户登陆_03


centos7 修改ftp主目录_vim_04


3.yum安装vsftpd lftp 两个服务

yum install vsftpd lftp -y
systemctl start vsftpd
systemctl enable vsftpd

centos7 修改ftp主目录_centos7 修改ftp主目录_05


centos7 修改ftp主目录_ftp_06


4.火墙的配置

firewall-config
修改Configration为Permanent(永久),勾选ftp服务,然后重新读取防火墙

centos7 修改ftp主目录_ftp_07


火墙的配置也可以不用图形化界面来设置,也可以用命令方式来设置:
firewall-cmd --permanent --add-serverice=ftp
firewall-cmd --reload

5.用主机使用lftp去测试

主机lftp 172.25.254.117
ls
若ls可出现输出,则成功

centos7 修改ftp主目录_ftp_08


注:在用lftp去进行文件传输时一定要检查服务端vsftpd服务是否开启,还有服务端和客户端的防火墙状态

6.ftp服务的基本信息

软件安装包:		vsftpd
默认发布目录:	/var/ftp
协议接口:		21/tcp
服务配置文件:	/etc/vsftpd/vsftpd.conf

报错的id的解析:

报错id

报错id的意义

550

服务不允许

530

认证失败

500

文件权限过大(ftp的普通用户的家目录不能有写权限)

553

本地文件系统权限过小

ftp配置文件

vim /etc/vsftpd/vsftpd.conf

centos7 修改ftp主目录_用户登陆_09


通过man 5 vsftpd.conf查看帮助来使用不同的功能

centos7 修改ftp主目录_用户登陆_10

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

本地用户
local_enable=YES|NO
write_enable=YES|NO

匿名用户的设定

1.匿名用户上传

vim /etc/vsftpd/vsftpd.conf
write_enable=YES					##匿名用户写功能开启
anon_upload_enable=YES				##允许匿名用户上传
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
systemctl restart vsftpd

centos7 修改ftp主目录_ftp_11


centos7 修改ftp主目录_centos7 修改ftp主目录_12

上传:lftp连接后cd指定目录
put file

centos7 修改ftp主目录_ftp_13


2.匿名用户家目录的修改

anon_root/directory ##该配置为匿名用户登陆时进入的目录

centos7 修改ftp主目录_上传_14


centos7 修改ftp主目录_用户登陆_15


3.匿名用户上传文件默认权限修改

anon_umask=xxx

centos7 修改ftp主目录_ftp_16


centos7 修改ftp主目录_ftp_17


4.匿名用户下载

anon_world_readable_only=YES|NO

get xxx

centos7 修改ftp主目录_vim_18


centos7 修改ftp主目录_centos7 修改ftp主目录_19


centos7 修改ftp主目录_用户登陆_20


5.匿名用户建立目录

anon_mkdir_write_enable=YES|NO

centos7 修改ftp主目录_vim_21


centos7 修改ftp主目录_上传_22


6.匿名用户删除

anon_other_write_enable=YES|NO

centos7 修改ftp主目录_上传_23


centos7 修改ftp主目录_vim_24


7.匿名用户使用用户身份修改

chown_uploads=YES			##所有匿名用户上传的文件的所属用户将会被更改为chown_name
chown_username=student		##匿名用户身份指定,用户必定是服务端已有的用户

centos7 修改ftp主目录_vim_25


centos7 修改ftp主目录_上传_26


发现file2的uid已经变为1000,即student用户

8.匿名用户上传最大上传速率

anon_max_rate=1024(bits)
测试:截取数据
dd if=/dev/zero of=/ / / bs=1M count=X(多少M)
put /绝对路径
发现上传速率为设置的速率

centos7 修改ftp主目录_上传_27


centos7 修改ftp主目录_centos7 修改ftp主目录_28


9.最大连接数

max_client=x ##允许链接ftp的最大主机数量

centos7 修改ftp主目录_centos7 修改ftp主目录_29


centos7 修改ftp主目录_用户登陆_30

本地用户的设定

lftp时后面要加-u username
local_enable=YES|NO		##本地用户登陆限制
write_enable=YES|NO		##本地用户写权限限制

1.本地用户家目录修改

local_root=/directory ##用普通用户lftp登陆,发现本地用户登陆的是家目录,而不是默认的/var/ftp/pub

centos7 修改ftp主目录_ftp_31


centos7 修改ftp主目录_用户登陆_32


centos7 修改ftp主目录_用户登陆_33


2.本地用户上传文件权限

local_umask=xxx
上传时得-u普通户用登陆,然后直接上传文件,文件默认上传到普通用户家目录,且权限已改

centos7 修改ftp主目录_vim_34


centos7 修改ftp主目录_centos7 修改ftp主目录_35


3.限制本地用户浏览根目录

所有用户被锁定到自己的家目录中
chroot_local_user=YES		##约107行左右,用户被锁后,就看不了服务端的文
件,解决办法:注释掉,或者设置黑白名单
chmod u-w /home/*			##用户家目录的权限不能太大,否则会出现500报错

其实chroot_local_user=YES代表的就是白名单,NO为黑名单,故开启限制后无法访问根目录

centos7 修改ftp主目录_上传_36


centos7 修改ftp主目录_上传_37


用户黑名单的建立:

用户黑名单的建立				##需要注意的是,黑名单开启时,/etc/vsftpd/下是没有黑名单的,须得自行建立
chroot_local_user=NO	
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

centos7 修改ftp主目录_vim_38


centos7 修改ftp主目录_vim_39


centos7 修改ftp主目录_centos7 修改ftp主目录_40


centos7 修改ftp主目录_上传_41


白名单的建立:

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

在这里我们就不修改chroot_list里的用户名了

centos7 修改ftp主目录_vim_42


centos7 修改ftp主目录_上传_43


centos7 修改ftp主目录_centos7 修改ftp主目录_44


4.限制本地用户登陆

黑名单:

vim /etc/vsftpd/ftpusers		##用户黑名单
vim /etc/vsftpd/user_list		##用户临时黑名单

centos7 修改ftp主目录_用户登陆_45


centos7 修改ftp主目录_用户登陆_46


centos7 修改ftp主目录_ftp_47


可以很明显地看出黑名单的用户会出现530认证失败的报错

白名单:

vim /etc/vsftpd/vsftpd.conf
底部添加/userlist_deny=NO
/etc/vsftpd/user_list			##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp

centos7 修改ftp主目录_ftp_48


centos7 修改ftp主目录_vim_49


centos7 修改ftp主目录_vim_50


centos7 修改ftp主目录_vim_51


注:在lftp时一定要将永久黑名大ftpusers的内容改回去,否则会一直530报错

ftp虚拟用户设定

1.创建虚拟账号身份

vim /etc/vsftpd/guestgroup		##文件名称任意
ftpuser1
123
ftpuser2
123
ftpuser3
123

centos7 修改ftp主目录_centos7 修改ftp主目录_52


进行hash加密

db_load -T -t hash -f /etc/vsftpd/guestgroup /etc/vsftpd/guestgroup.db

centos7 修改ftp主目录_vim_53

vim /etc/pam.d/guest												##文件名称任意
account		required	pam_userdb.so	db=/etc/vsftpd/guestgroup	#这里不用写db文件,否则生成的就是guestgroup.db.db
auth		required	pam_userdb.so	db=/etc/vsftpd/guestgroup

centos7 修改ftp主目录_用户登陆_54

vim /etc/vsftpd/vsftpd.conf
pam_service_name=guest			##用户身份检测服务
guest_enable=YES				##允许虚拟用户登陆
guest_username=ftp				##虚拟用户登陆身份

centos7 修改ftp主目录_上传_55


尝试用不同的虚拟账户登陆

centos7 修改ftp主目录_ftp_56


2.虚拟账户独立家目录的设置

给每个虚拟用户一个指定目录

mkdir /var/ftpuserdir/guest{1..3} -p

vim /etc/vsftpd/vsftpd.conf
local_root=/var/ftpuserdir/$USER		##指定虚拟用户家目录($USER与每个虚拟用户名同)
user_sub_token=$USER					##使$USER在shell中生效,在vsftpd.conf也生效

centos7 修改ftp主目录_用户登陆_57

mkdir /var/ftpuserdir/ftpuser{1..3}/pub
mkdir /var/ftpuserdir/ftpuser1/guestgroup1
mkdir /var/ftpuserdir/ftpuser2/guestgroup2
mkdir /var/ftpuserdir/ftpuser3/guestgroup3

centos7 修改ftp主目录_上传_58


centos7 修改ftp主目录_vim_59


3.虚拟帐号配置独立

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

centos7 修改ftp主目录_vim_60


centos7 修改ftp主目录_centos7 修改ftp主目录_61

例如:将vsftpd.conf中的匿名用户权力禁止,然后编辑vim /etc/vsftpd/userconf/ftpuser1
anon_upload_enable=YES
然后实验发现只有ftpuser1可以有写(put)的权力,其他用户均会出现550报错

centos7 修改ftp主目录_ftp_62


centos7 修改ftp主目录_vim_63


结果:

centos7 修改ftp主目录_上传_64


centos7 修改ftp主目录_centos7 修改ftp主目录_65