ftp?

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

ftp服务器的部署

1.查看selinux服务状态,若为开启则需要关闭
linux下的ftp服务配置? 就是这么简单!
可以看出这里的selinux是开启的,那么我们就需要编辑/etc/sysconfig/selinux
linux下的ftp服务配置? 就是这么简单!
注修改selinux后需要重启计算机
2.配置yum源

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

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
3.yum安装vsftpd lftp 两个服务

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

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
4.火墙的配置

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

linux下的ftp服务配置? 就是这么简单!
火墙的配置也可以不用图形化界面来设置,也可以用命令方式来设置:
firewall-cmd --permanent --add-serverice=ftp
firewall-cmd --reload

5.用主机使用lftp去测试

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

linux下的ftp服务配置? 就是这么简单!
注:在用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
linux下的ftp服务配置? 就是这么简单!
通过man 5 vsftpd.conf查看帮助来使用不同的功能
linux下的ftp服务配置? 就是这么简单!

匿名用户
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

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!

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

linux下的ftp服务配置? 就是这么简单!
2.匿名用户家目录的修改

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

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
3.匿名用户上传文件默认权限修改

anon_umask=xxx

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
4.匿名用户下载

anon_world_readable_only=YES|NO

get xxx

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
5.匿名用户建立目录

anon_mkdir_write_enable=YES|NO

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
6.匿名用户删除

anon_other_write_enable=YES|NO

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
7.匿名用户使用用户身份修改

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

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
发现file2的uid已经变为1000,即student用户
8.匿名用户上传最大上传速率

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

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
9.最大连接数

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

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!

本地用户的设定

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

1.本地用户家目录修改
local_root=/directory ##用普通用户lftp登陆,发现本地用户登陆的是家目录,而不是默认的/var/ftp/pub
linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
2.本地用户上传文件权限

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

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
3.限制本地用户浏览根目录

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

其实chroot_local_user=YES代表的就是白名单,NO为黑名单,故开启限制后无法访问根目录
linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
用户黑名单的建立:

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

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
白名单的建立:

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

在这里我们就不修改chroot_list里的用户名了
linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
4.限制本地用户登陆
黑名单:

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

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
可以很明显地看出黑名单的用户会出现530认证失败的报错
白名单:

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

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
注:在lftp时一定要将永久黑名大ftpusers的内容改回去,否则会一直530报错

ftp虚拟用户设定

1.创建虚拟账号身份

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

linux下的ftp服务配置? 就是这么简单!
进行hash加密

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

linux下的ftp服务配置? 就是这么简单!

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

linux下的ftp服务配置? 就是这么简单!

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

linux下的ftp服务配置? 就是这么简单!
尝试用不同的虚拟账户登陆
linux下的ftp服务配置? 就是这么简单!
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也生效

linux下的ftp服务配置? 就是这么简单!

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

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
3.虚拟帐号配置独立

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

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!

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

linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!
结果:
linux下的ftp服务配置? 就是这么简单!
linux下的ftp服务配置? 就是这么简单!

相关文章: