详解FTP服务

1.什么是FTP协议?

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一
FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端
其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源
在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上
由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议
默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息
但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关
如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定

同大多数Internet服务一样,FTP也是一个客户/服务器系统
用户通过一个客户机程序连接至在远程计算机上运行的服务器程序
依照 FTP 协议提供服务,进行文件传送的计算机就是 FTP服务器
而连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端
用户要连上FTP 服务器,就要用到 FTP 的客户端软件,通过lftp命令连接

2.ftp服务的基本信息

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

3.安装ftp服务(搭建ftp服务器)以及进行测试 ,lftp其实是一个客户端

测试可以用真机, 也可以用所安装ftp服务的本机进行测试
一台主机可以同时当客户端和服务端

步骤一:yum install vsftpd lftp -y 安装vsftpd服务 与 lftp客户端
步骤二:systemctl start vsftpd 开启vsftpd服务,
       systemctl enable vsftpd 设置开机启动

在这里插入图片描述

步骤三:rpm -ql vsftpd 看该服务的安装目录 /var/ftp /var/ftp/pub
       rpm -qc vsftpd 看该服务的配置文件 /etc/vsftpd/vsftpd.conf

步骤四:在火墙里面添加ftp服务

 firewall-cmd --list-all 
 firewall-cmd --perman ent --add-service=ftp
 firewall-cmd   --relaod

在这里插入图片描述步骤五:验证ftp服务器是否搭建成功

lftp 172.25.254.111 登陆ftp服务器相当于以匿名用户身份登陆
这里的匿名用户就相当于ftp用户

在这里插入图片描述

4.vsftpd服务的配置参数

主机以什么样的身份登陆ftp服务器,这些均需要在ftp服务器的客户端配置文件里面设置 在配置文件/etc/vsftpd/vsftpd.conf当中修改配置参数,每次修改完配置文件重启才会生效 vim /etc/vsftpd/vsftpd.conf systemctl restart vsftpd

报错id的解析:

500文件系统权限过大
530用户认证失败
550服务本身功能未开放
553本地文件系统权限过小

(1)匿名用户的相关设定

匿名用户登陆限制

编辑 : vim /etc/vsftpd/vsftpd.conf 文件
anonymous_enable=YES|NO 
  注意:修改完参数需重启服务  systemctl  restart  vsftpd 

当参数为NO,表示匿名用户不可登陆
在这里插入图片描述
当参数为YES,表示匿名用户可以登陆
在这里插入图片描述

local_enable=YES     #表示本地用户可以登陆

在这里插入图片描述

local_enable=NO     #表示本地用户不能登陆

在这里插入图片描述

write_enable=YES    #本地用户可写

在这里插入图片描述

write_enable=NO    #本地用户不可写

在这里插入图片描述

anon_upload_enable=YES    #表示匿名用户可写,YES表示开启,但默认不开启   
chmod 775 /var/ftp/pub/    #修改该目录对组用户可写
chgrp ftp /var/ftp/pub     #修改该目录组用户为ftp

在这里插入图片描述

anon_upload_enable=NO    #表示匿名用户不可写,默认不开启

在这里插入图片描述

 anon_world_readable_only=NO    #设定为no,表示匿名用户可以下载,默认没有,需手动添加

在这里插入图片描述

 anon_world_readable_only=YES    #设定为YES,表示匿名用户不可以下载

在这里插入图片描述

  anon_mkdir_write_enable=YES   #匿名用户可建立目录

在这里插入图片描述

anon_other_write_enable=YES   #匿名用户可删除目录,或对目录重命名

在这里插入图片描述

 anon_umask=022   #修改默认上传文件的权限,默认为600,修改后为744

在这里插入图片描述

anon_root=/westos         #修改匿名用户登陆的默认所在的目录

在这里插入图片描述

anon_max_rate=102400       #设置最大传输速率为100k

在这里插入图片描述

 max_clients=2    #限制最多可以连接服务器的客户端的数量为2

当连接第三个时,会显示连接不上
在这里插入图片描述

本地用户相关参数的设定

local_root=/westos           #修改本地用户登陆的家目录为/westos

在这里插入图片描述

chroot_local_user=YES               #将本的用户锁在家目录,不能浏览家目录之外的目录
chmod  u-w   /home/*                  #将/home目录下的uid写写权限去掉

在这里插入图片描述

chroot_local_user=NO              #将本地用户可以浏览家目录之外的目录

在这里插入图片描述
限制某个用户只能访问家目录,不能访问其他目录,但对其他用户不影响

首先创建一个新用户,并修改用户密码,
在这里插入图片描述

将lee用户uid 可写权限消除,要不然不能登陆
chmod  u-w  /home/lee

设定限制特定用户锁定家目录参数

chroot_local_user=NO         #设定所有用户都可以访问其他目录
chroot_list_enable=YES       #
chroot_list_file=/etc/vsftpd/chroot_list   #设定用户不可以访问其他目录名单

/etc/vsftpd/chroot_list这个文件默认不存在,需手动建立/etc/vsftpd/chroot_list,添加限制用户锁定家目录黑名单用户lee

重启服务systemctl restart vsftpd ,使其生效,黑名单建立成功
为启用限制用户锁定黑名单lee之前,可以访问根目录
在这里插入图片描述启用限制用户锁定黑名单lee之后,不能访问根目录
在这里插入图片描述
但student 用户不受限制,可以访问根目录
在这里插入图片描述
设定限制特定用户可以访问其他目录,默认用户限制锁定 家目录

chroot_local_user=YES         #设定所有用户都不可以登陆
chroot_list_enable=YES       #
chroot_list_file=/etc/vsftpd/chroot_list   #设定用户可以登陆名单

/etc/vsftpd/chroot_list这个文件默认不存在,需手动建立/etc/vsftpd/chroot_list,添加不受限制锁定家目录的白名单用户lee
重启服务systemctl restart vsftpd ,使其生效,白名单建立成功

未启用白名单之前lee用户不可访问根目录,其他用户可以访问,启用之后,只有lee用户可以访问根目录,其他用户不能访问根目录,只能锁定在家目录
在这里插入图片描述在这里插入图片描述设定登陆用户的黑白名单

永久黑名单:/etc/vsftpd/ftpusers    #添加黑名单用户,eg:student

即该即生效 ,不需重启服务
在这里插入图片描述

临时黑名单:/etc/vsftpd/user_list   ##添加黑名单用户,eg:lee

即该即生效 ,不需重启服务
在这里插入图片描述
将临时黑名单user_list修改为白名单

临时黑名单:/etc/vsftpd/user_list   ##添加白名单用户,eg:lee
vim  /etc/vsftpd/vsftpd.conf 文件
添加:userlist_deny=NO

重启服务:systemctl restart vsftpd
可以看到只有lee用户可以登陆,student用户不可以登陆
在这里插入图片描述
在这里插入图片描述ftp虚拟用户的设定,创建虚拟帐号身份
步骤一:vim /et c/vsftpd/v_users #文件名称任意,编辑以下内容(虚拟用户名,以及密码)
在这里插入图片描述
步骤二:对 /etc/vsftpd/v_users 文件进行加密

db_load -T -t hash -f v_users v_users.db

步骤三:将加密文件v_users.db 指定到策略文件中

编辑 vim  /etc/pam.d/ftpuser   #文件名称任意
添加 account  required   pam_userdb.so  db=/etc/vsftpd/v_users
    auth     required   pam_userdb.so  db=/etc/vsftpd/v_users

在这里插入图片描述步骤三:编辑vsftpd主配置文件,更改认证方式

vim  /etc/vsftpd/vsftpd.conf  添加以下内容
pam_service_name=ftpuser
guest_enable=YES
guest_username=ftp

在这里插入图片描述
重启服务:systemctl restart vsftpd.service
测试
在这里插入图片描述
虚拟用户家目录独立设定
步骤一:准备工作:

mkdir /var/ftpuserdir/user{1..3}  -p      
mkdir /var/ftpuserdir/user{1..3}/pub  -p
touch /var/ftpuserdir/user1/user1file
touch /var/ftpuserdir/user2/user2file
touch /var/ftpuserdir/user3/user3file

步骤二:编辑配置文件

vim  /etc/vsftpd/vsftpd.conf  
添加:
local_root=/var/ftpuserdir/$USER   #将虚拟用户的家目录分别指向自己的家目录
user_sub_token=$USER   #使$USER参数生效

重启服务:systemctl restart vsftpd.service

测试
在这里插入图片描述
虚拟用户授权独立

chmod 775 /var/ftpuserdir/user{1..3}/pub   #更改虚拟用户家目录下的pub目录权限
chgrp ftp /var/ftpuserdir/ -R    #修改虚拟用户家目录所属组

到此任一虚拟用户都可以上传文件
在这里插入图片描述
如何指定虚拟用户上传,其他虚拟用户不可上传呢?
步骤一:

编辑vim  /etc/vsftpd/vsftpd.conf  文件
注释掉之前对任意用户设定参数的影响
添加: user_config_dir=/dir/vsftpd/user_config

在这里插入图片描述
在这里插入图片描述
步骤二:

mkdir -p /dir/vsftpd/user_config    #建立设置目录
cd /dir/vsftpd/user_config          
vim user2                           #建立你所需要指定用户为名的文件,写入上传功能的参数 anon_upload_enable=YES

重启服务:systemctl restart vsftpd.service

在这里插入图片描述
在这里插入图片描述
测试:可见只有用户user2可以上传,用户user1和user2不可以上传
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值