Linux的FTP服务的搭建及管理

1.FTP的定义

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

ftp://	##文件传输协议

2.FTP协议提供的软件

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

3.部署FTP服务

1.安装vsftpd、lftp服务

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

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

2.将ftp服务设置为防火墙允许的服务

图形界面处理方法

systemctl start firewalld 
firewall-config ##防火墙策略,将ftp作为防火墙允许访问的应用 
进入此界面后作以下三件事: 
(1)Configuration选择Permanent 
(2)在pub选项里勾选ftp 
(3)Option选择Reload Firewalld

在这里插入图片描述

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

在这里插入图片描述

分析:service一行显示防火墙不阻拦的应用列表。

命令行界面处理方法

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

在这里插入图片描述

3.ftp服务的基本信息

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

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

vim /etc/sysconfig/selinux

改为 disabled
然后 重启
重启后输入 getenforce 命令查看更改是否生效。
在这里插入图片描述
在这里插入图片描述

4.ftp服务对用户的配置设定

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

vim /etc/vsftpd/vsftpd.conf

1.匿名用户

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

anonymous_enable=YES/NO	

anonymous_enable=YES
在这里插入图片描述
anonymous_enable=NO
在这里插入图片描述

2)匿名用户上传

vim /etc/vsftp/vsftpd.conf
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=/directory
/mnt/ 下创建三个文件后,将家目录更改为 /mnt/
在这里插入图片描述
在这里插入图片描述
4)匿名用户上传文件默认权限修改
anon_umask=xxx
在这里插入图片描述
在这里插入图片描述
5)匿名用户建立目录
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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分析: 我们更改了匿名用户身份为jiekouma用户后,上传文件查看其所有者id为1000,系统上查看jiekouma用户id后,确实为1000。说明匿名用户上传文件时的确是jiekouma用户身份。

9)最大上传速率
anon_max_rate=102400

更改前
在这里插入图片描述
更改后
在这里插入图片描述
10)最大连接数
max_client=2

例子:
max_client=1

第一台连接
在这里插入图片描述
第二台连接
在这里插入图片描述

2.本地用户

1)本地用户能否登录

local_enable=YES/NO #本地用户是否可以登录
write_enable=YES/NO #ftp是否对登录用户可写

local_enable=YES
在这里插入图片描述
local_enable=NO

在这里插入图片描述
2)本地用户家目录修改

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

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

local_umask=xxx
在这里插入图片描述
在这里插入图片描述
4)限制本地用户浏览/目录

所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/
*

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

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

5)用户黑名单建立

更改配置文件
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

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

vim /etc/vsftpd/chroot_list

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

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

6)用户白名单建立

更改配置文件
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

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

vim /etc/vsftpd/chroot_list

在这里插入图片描述
这里需要注意的是:白名单和黑名单配置文件为同一个文件,只需要改变 vsftp 配置文件的参数,黑名单就变成了白名单

白名单用户jiekouma用户登录情况:
在这里插入图片描述
分析: 白名单建立后,在名单上的用户可以访问其他目录和文件。

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

7)限制本地用户登录
vim /etc/vsftpd/ftpusers ##用户黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单

永久黑名单:

vim /etc/vsftpd/ftpusers

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

临时黑名单

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分析:这里在临时黑名单写入用户名称,jiekouma也不能正常登录,其他用户可以登录,但是更改配置文件一些参数后,临时黑名单会变为白名单~

用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登录ftp
在这里插入图片描述
在这里插入图片描述
分析:用户临时黑名单经过更改vsftp.conf配置文件后,成为了白名单。需要注意的是,/etc/vsftpd/ftpusers为永久黑名单,也就是说同在永久黑名单和白名单的用户,仍然不可以登录系统。

3.ftp虚拟用户的设定

1.创建虚拟帐号身份

vim /etc/vsftpd/userfile
ftpuser1
123
ftpuser2
123
ftpuser3
123

在这里插入图片描述

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

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

在这里插入图片描述

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=/ftphome/$USER	##设定家目录为用户名
user_sub_token=$USER		##使$USER在此文件中可用

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

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

touch /var/ftpuserdir/ftpuser1/file1
touch /var/ftpuserdir/ftpuser2/file2
touch /var/ftpuserdir/ftpuser3/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 ##必须与自己的用户名相同 在此文件中设定配置文件中的所有参数,此文件的优先级高 
在此文件中设定配置文件中的所有参数,此文件的优先级高

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

关于FTP的内容就是这些。

猜你喜欢

转载自blog.csdn.net/qq_43570369/article/details/86608099