Linux之ftp服务篇

一、什么是ftp?

文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。文件传送(file transfer)和文件访问(file access)之间的区别在于:前者由FTP提供,后者由如NFS等应用系统提供。

二、ftp协议提供的软件

在rhel中是vsftpd软件。

vsftpt提供三种远程的登录方式:
(1)匿名登录方式:不需要用户名和密码就可以登录到服务器上
(2)本地用户方式:需要用户名和密码才能登录,而且这些用户必须为系统已经存在的用户
(3)虚拟用户:同样需要用户名和密码才能登录,但是这些用户不是系统存在的用户

三、部署ftp服务

1、下载vsftpd及lftp软件

yum install vsftpd lftp -y		##安装服务端vsftpd和客户端lftp的应用软件
systemctl start vsftpd 			##开启服务
systemctl enable vsftpd			##设置开机自启动 

在这里插入图片描述

2、将ftp设置为防火墙允许的应用。

1、图形界面处理方法

systemctl start firewalld
firewall-config			##防火墙策略,将ftp作为防火墙允许访问的应用

进入此界面后作以下三件事:
(1)Configuration选择Permanent
(2)在pub选项里勾选ftp
(3)Option选择Reload Firewalld

在这里插入图片描述

firewall-cmd --list-all		##显示防火墙信息

在这里插入图片描述
分析:service一行显示防火墙不阻拦的应用列表。

2、命令设置

firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload

在这里插入图片描述

3、ftp服务的基本信息

ftp服务的基本信息
软件安装包:	vsftpd
默认发布目录:	/var/ftp
协议接口:	21/tcp
服务配置文件:	/etc/vsftpd/vsftpd.conf
报错id解析:
		500	##文件系统权限过大
		530	##用户认证失败
		550	##服务本身功能未开放
		553	##本地文件系统权限过小

4、将内核级别的防火墙selinux 关闭。

vim /etc/sysconfig/selinux

改为disabled
然后重启。
重启后出入getenforce命令查看更改是否生效。

在这里插入图片描述

四、vsftpd服务的配置参数

注意:每次更改配置文件都要重启服务让更改生效。

1、匿名用户

1)匿名用户是否可以登录

anonymous_enable=YES|NO		##匿名用户是否可以登陆

示例:

anonymous_enable=YES

在这里插入图片描述

anonymous_enable=NO

在这里插入图片描述

2)匿名用户是否可以上传文件

write_enable=YES			##ftp是否对登录用户可写
anon_upload_enable=YES		##是否允许匿名用户上传
chgrp ftp /var/ftp/pub		##更改pub目录的所有组为ftp
chmod 775 /var/ftp/pub		##更改pub目录权限

在这里插入图片描述
分析:默认匿名用户登录时采用的是系统的ftp用户身份,将pub目录的权限改为所有组为ftp并且对所有组可写。

anon_upload_enable=YES

在这里插入图片描述

anon_upload_enable=NO

在这里插入图片描述

3)匿名用户家目录修改

anon_root=/dir		##将匿名用户的家目录改为指定目录

在/mnt/下创建三个文件后,将家目录更改为/mnt/
在这里插入图片描述
在这里插入图片描述

4)匿名用户上传文件默认权限修改

anonymous_enable=YES
anon_upload_enable=YES
anon_umask=xxx

示例:
在这里插入图片描述
在这里插入图片描述

5)匿名用户是否可以建立目录

write_enable=YES
anon_mkdir_write_enable=YES|NO

示例:

6)匿名用户是否可以下载

anon_world_readable_only=YES|NO 	##设定参数值为NO表示你名用户可以下载

示例:
在这里插入图片描述

7)匿名用户是否可以删除文件

anon_other_write_enable=YES|NO

示例:
在这里插入图片描述

8)匿名用户使用的用户身份修改

chown_uploads=YES
chown_username=student
chown_upload_mode=0644

示例:
在这里插入图片描述
在这里插入图片描述

分析: 我们更改了匿名用户身份为student用户后,上传文件查看其所有者id为1000,系统上查看student用户id后,确实为1000。说明匿名用户上传文件时的确是student用户身份。

9)最大上传速率

anon_max_rate=102400		##用户的最大上传速率为1M。

示例:

更改前:
在这里插入图片描述
更改后:
在这里插入图片描述

10)最大连接数

max_clients=2		##最大允许2台客户机连接

示例:

max_clients=1

第一台客户机连接:
在这里插入图片描述
第二台客户机连接:
在这里插入图片描述

2、本地用户设定

1)本地用户是否可以登录

local_enable=YES|NO		##本地用户是否可以登陆

示例:

local_enable=YES

在这里插入图片描述

local_enable=NO

在这里插入图片描述

2)本地用户家目录修改

local_root=/dir

示例:
首先,我们创建/redhat目录,并在这个目录下创建fire文件,更改本地用户家目录为/redhat。在这里插入图片描述
在这里插入图片描述
分析:用户的家目录被唯一指定了。

3)本地用户上传文件权限

local_umask=xxx		##这里是系统回收的权限

在这里插入图片描述
在这里插入图片描述

4)限制本地用户浏览目录,将所有用户被锁定到自己家目录中

chroot_local_user=YES		##锁定用户
chmod u-w /home/*			##减小权限

为锁定之前:
在这里插入图片描述
分析:普通用户可以查看到根目录和其他目录的所有文件,这对系统来说并不安全。

锁定后:
在这里插入图片描述
分析:锁定后用户切换不到其他目录,只能在自己的家目录进行操作。系统安全大大提高。

5)本地用户的锁定家目录黑名单建立

1、更改配置文件。

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

在这里插入图片描述
2、建立黑名单

vim /etc/vsftpd/chroot_list

在这里插入图片描述
黑名单用户student登录情况:
在这里插入图片描述
分析:在黑名单的用户被锁定在自己的家目录。

其他用户登录的情况:
在这里插入图片描述
分析:不在黑名单的用户仍可以查看其他目录及文件的信息。

6)本地用户的锁定家目录白名单建立

1、更改配置文件。

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

在这里插入图片描述
2、建立白名单

vim /etc/vsftpd/chroot_list

这里可能大家会疑惑,好像白名单和黑名单用的同一个文件呢?
是的,是同一个文件,只需要改变配置文件的参数,黑名单就变成了白名单。
在这里插入图片描述
白名单用户student用户登录情况:
在这里插入图片描述
分析:白名单建立后,在名单上的用户可以访问其他目录和文件。

其他用户登录的情况:
在这里插入图片描述
分析:白名单建立后,默认不在白名单的用户都不能访问其他目录及文件。

7)限制本地用户登录黑名单。

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

永久黑名单:
示例:

  vim /etc/vsftpd/ftpusers

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分析:黑名单用户student不能成功登录,但是其他用户可以正常登录。

临时黑名单:

 vim /etc/vsftpd/user_list 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分析:这里在临时黑名单写入用户名称,student也不能正常登录,其他用户可以登录,这里可能大家会有疑问,为什么叫临时黑名单,因为你更改配置文件一些参数后,临时黑名单会变为白名单!!!

用户白名单设定

userlist_deny=NO		##参数设定,此文件变为用户白名单,只在名单中出现的用户可以登陆ftp

示例:
在这里插入图片描述
在这里插入图片描述
分析:用户临时黑名单经过更改配置文件后,成为了白名单。大家注意,/etc/vsftpd/ftpusers为永久黑名单,也就是说同在永久黑名单和白名单的用户,不可以登录系统。

3、虚拟用户的设定

1、创建虚拟帐号身份

vim /etc/vsftpd/userfile		##保存密码的文件,文件名称任意
redhat1
123
redhat2
123
redhat3
123

在这里插入图片描述

2、对保存密码的文件进行hash加密

db_load -T -t hash -f /etc/vsftpd/userfile /etc/vsftpd/userfile.db				##对保存密码的文件进行hash加密:/etc/vsftpd/userfile文件

在这里插入图片描述

3)建立对用户身份进行检查的文件。

vim /etc/pam.d/ftpauth			##对用户身份进行检查的文件,文件名称任意


文件内容:
account         required        pam_userdb.so           db=/etc/vsftpd/userfile
账户				必须满足			##使用此插件				查看此文件(已加密文件,但不用加后缀.db)
auth            required        pam_userdb.so           db=/etc/vsftpd/userfile
认证

在这里插入图片描述

4)更改配置文件相关参数

vim /etc/vsftpd/vsftpd.conf

pam_service_name=ftpauth		##使用哪个文件来检查/etc/pam.d/ftpauth
userlist_enable=YES				##开启列表
tcp_wrappers=YES			
guest_enable=YES				##开启虚拟
guest_username=ftp				##虚拟帐号身份指定

在这里插入图片描述
测试:
在这里插入图片描述
分析:虚拟用户建立成功后,默认本地用户不能登录。大家可以看到这里所有的虚拟用户的家目录都是匿名用户的默认目录,那么能否把每个虚拟帐号的家目录都独立起来呢?答案当然是,不信往下看!

5)虚拟帐号家目录独立设定

1、更改配置文件

vim /etc/vsftpd/vsftpd.conf

local_root=/var/ftpuserdir/$USER	##设定家目录为用户名
user_sub_token=$USER			##使$USER在此文件中可用

在这里插入图片描述
2、建立虚拟用户家目录。

mkdir /var/ftpuserdir/redhat{1..3} -p	##虚拟用户创建家目录

touch /var/ftpuserdir/redhat1/file1
touch /var/ftpuserdir/redhat2/filet2
touch /var/ftpuserdir/redhat3/file3
chmod u-w /var/ftpuserdir/*

在这里插入图片描述
测试:

在这里插入图片描述

6)指定某个虚拟用户的配置文件

vim /etc/vsftpd/vsftpd.conf				##修改配置文件
user_config_dir=/etc/vsftpd/userconf	##指定虚拟用户的单独配置文件的目录
mkdir -p /etc/vsftpd/userconf

vim /etc/vsftpd/userconf/ftpuser1		##必须与自己的用户名相同
在此文件中设定配置文件中的所有参数,此文件的优先级高

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
效果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值