linux之ftp服务

一,FTP服务
1.FTP服务的定义
FTP ( 文件传输协议 ) 是 INTERNET 上仍常用的最老的网络协议之一 , 它为系统提供了通过网络与远程服务器进行传输的简单方法在RED HAT ENTREPRISE LINUX 6 中。 FTP 服务器包的名称为VSFTPD,它代表 Very Secure File Transfer Protocol Damon 服务器名称也叫做 vsftpd默认配置文件让 ANONYMOUS 用户只能下载位于 CHROOT 目录中的内容。 /var/ftp/ 这意味着远程 FTP 客户端能以用户anonymous 或 ftp 身份连接到服务器 ( 无需密码 ), 并从 ftp服务器上的 /var/ftp/ 目录下载文件 ( 其本地 ftp 用户可以读取这些文件 )
二,部署FTP服务
desktop虚拟机为服务端(172.25.254.177),server虚拟机为客户端(172.25.254.178)
服务端:
1.提供ftp协议的软件vsftpd
--yum install vsftpd -y

linux之ftp服务
--yum install lftp y
2.开启服务端vsftpd,设置开机自启
--systemctl start vsftpd
--systemctl enable vsftpd

linux之ftp服务

linux之ftp服务
3.查看防火墙状态,如果是关闭状态,打开防火墙
--systemctl status firewalld                     ##防火墙状态
--systemctl start firewalld

linux之ftp服务
4.防火墙设置
--firewall-cmd --permanent --add-service=ftp  ##在防火墙开启状态下,防火墙不阻止ftp服务。

linux之ftp服务
--firewall-cmd --reload                       ##重新加载防火墙服务linux之ftp服务
--firewall-cmd --list-all                     ##查看

linux之ftp服务
5.测试
--lftp 172.25.254.178
--ls可以看到内容说明服务端已经开启vsftpd服务。linux之ftp服务
6.rpm -qc vsftpd            ##查看ftp服务的配置文件linux之ftp服务
准备工作:
--getenforce
Enforcing 则需要修改配置文件
--vim /etc/sysconfig/selinux
修改 selinux=disable
getenforce
Disabled
设置完后reboot重启
客户端:
1.安装lftp软件:
--yum install lftp -y

linux之ftp服务
2.安装完成进入客户端看是否能进
--lftp 172.25.254.177
--ls

linux之ftp服务
三,ftp服务的基本使用
1.ftp服务的基本信息:
软件安装包:vsftpd
默认发布目录:/var/ftp
协议接口:21/tcp
配置文件:/etc/vsftpd/vsftpd.conf
报错id解析:
500 ##文件系统权限过大
530 ##用户认证失败
550 ##服务本身功能未开放
553 ##本地文件系统权限太小
若需要对vsftpd服务进行配置,则需要编辑此文件:/etc/vsftpd/vsftpd.conf
2.匿名用户登陆:
--vim /etc/vsftpd/vsftpd.conf
12 anonymous_enable=YES|NO    ##YES:允许匿名登陆 | NO:不允许匿名用户登陆linux之ftp服务
此时匿名用户不能登陆

linux之ftp服务
3.本地用户登陆
16 local_enable=YES|NO ##YES:允许本地用户登陆 | NO:不允许本地用户登陆linux之ftp服务
此时使用本地用户登陆,就不能再登陆linux之ftp服务
4.是否对登陆的用户写
9 write_enable=YES|NO ##YES:ftp是否对登陆的用户写 | NO:不可写

linux之ftp服务
改成NO之后,不能在写入文件:

linux之ftp服务
5.匿名用户上传文件:
--vim /etc/vsftpd/vsftpd.conf #匿名用户上传身份默认是ftp
19 write_enable=YES
29 anon_upload_enable=YES

linux之ftp服务
--chgrp ftp /var/ftp/pub/ ##将此目录的所有组改为ftp
--chmod g+w /var/ftp/pub/ ##对pub目录添加写权限
--systemctl restart vsftpd ###重启vsftpd服务linux之ftp服务

linux之ftp服务
6.匿名用户家目录修改
--vim /etc/vsftpd/vsftpd.conf
13  anon_root=/test

linux之ftp服务
在服务端/test目录下创建文件:

linux之ftp服务
在使用匿名用户登录ftp,我们可以看到,此时匿名用户的家目录已经变为/test:

linux之ftp服务
7.匿名用户上传文件权限修改
--vim /etc/vsftpd/vsftpd.conf
14  anon_umask=022

linux之ftp服务
未进行修改前,我们可以看到上传的passwd文件权限为600:
将 anon_umask修改为022,则实际匿名用户上传文件的权限为755,但由于本地文件系统,最终上传文件的权限为644:
8.匿名用户建立目录
36 anon_mkdir_write_enable=YES|NO    ##YES:允许匿名用户建立目录 | NO:不允许
在未修该此参数之前,我们可以看到,匿名用户是不能建立目录的:
修改此参数:   
可以成功建立目录:
9.匿名用户使用的身份参数修改
chown_uploads=YES        
chown_username=ww        ##此用户必须是ftp服务端的正常可登陆的用户
chown_upload_mode=0644
在客户端/mnt目录下新建文件file,上传file,我们可以看到file的拥有者与所有都为ftp:
删除file,修改参数,在上传,我们可以看到file的拥有者与所有人发生了改变
我们可以查看用户ww的信息,发现刚刚上传的文件file的拥有人变为ww:
10..最大上传速率
anon_max_rate=10240000        ##限制最大上传速率大约为10M/s
dd if=/dev/zero of=/mnt/test bs=1M count=100    ##截取100M大的数据
在未限制上传速率前,上传的速率很快:
限制之后:
11.最大连接数
max_clients=1    ##限制最大的用户连接数为1个用户
链接一个用户:
此时再链接一个用户:
我们退出用户登录:
此时就可以再登录:
12.本地用户登陆限制
local_enable=YES|NO        ##YES:允许本地用户登陆 | NO:不允许本地用户登录
此时本地用户不能再登录:
13.本地用户读写限制
write_enable=YES|NO    ##YES:本地用户允许读写 | NO:本地用户不允许读写
修改前,我们不能删除文件:
修改后,可以删除:
14.本地用户家目录修改
使用本地用户登录时的家目录就是此用户的家目录,已经说过如何修改匿名用户的家目录,也可以修改本地用户的登录家目录:
local_root=/mnt       ##/mnt表示索要设定的家目录
修改本地用户家目录为:/mnt
在/mnt目录下新建几个文件:
此时使用本地用户ww登录,我们可以看到此时的家目录就是/mnt:
15.本地用户上传文件权限
local_umask=022        ##修改本地用户上传的文件的umask值
修改umask值为022,则本地上传的文件的权限为644:
16.限制本地用户登陆
1.用户黑名单:
--vim /etc/vsftpd/ftpusers    ##用户永久黑名单
--vim /etc/vsftpd/user_list    ##用户临时黑名单
永久黑名单指:在此名单中的用户无论如何都不能登录
临时黑名单指:当系统限制所有用户登陆时,此名单变为白名单,仅有名单中的用户可以登陆
我们将用户ww添加进永久黑名单:
此时,ww不能登录:
2.用户白名单的设定
--vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO
限制所有用户登录后,此时/etc/vsftpd/user_list此名单成为白名单,仅有此名单中的用户可以登录:
将root在永久黑名单中删除,并且添加到临时黑名单,此时root可以正常登录: