Linux系统部署FTP之Vsftp的安装及应用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_41944882/article/details/102648124

1. Vsftp介绍
特点:安全、高速、稳定
模式:c/s
查看端口的使用,从下图可以看出20端口是用于ftp传数据的,而21端口用于传指令的,ftp分为被动模式和主动模式,被动模式时由远程端决定通信的端口,主动模式时默认用本地发起ftp的端口,Vsftp是ftp的一种,顾名思义是很安全的ftp,我们就来将其部署在 Linux系统上.

[root@node2 ~]# vim /etc/services

在这里插入图片描述

2. 安装vsftp服务器
用rpm安装vsftp,执行以下指令

rpm –ivh /mnt/Packages/vsftpd-2.2.2-11.el_4.1.x86_64.rpm

或者用yum源安装

yum –y install vsftpd

安装客户端,以便在linux下便可以访问ftp

yum –y install lftp

安装后只要在linux终端输入lftp 服务器端IP地址就可以在linux端访问ftp了.

安装好了启动一下服务

service vsftpd restart

此时在windows主机中输入ftp://192.168.88.89(这是我的服务器的IP地址),进入后可以看见一个pub目录,在服务器中对应位置为 /var/ftp/pub,这个目录是ftp默认的共享目录 .

接下来了解ftp的三个配置文件

  1. /etc/vsftpd/vsftpd.conf #vsftpd的核心配置文件
[root@node2 /]# vi /etc/vsftpd/vsftpd.conf

如下图所示,红框标记的都是一些重要的参数,如第一个红框标记是否允许匿名登陆,如果值为YES,则代表允许匿名登陆,第二个红框代表是否允许本地用户登陆,也就是是否允许服务器本地的用户登陆,第三个是否允许写权限,第四项是关于权限设置的选项在,暂时不详细介绍 ,第五项是否允许匿名登陆的用户上传文件,第六项是否允许匿名登陆的用户创建目录.
在这里插入图片描述

  1. /etc/vsftpd/ftpusers #用与指定哪些用户不能访问ftp,也就是黑名单
[root@node2 ~]# cat /etc/vsftpd/ftpusers

由下图就可以就看出这个就是规定哪些用户不能访问ftp的配置文件,也就是黑名单.
在这里插入图片描述

  1. /etc/vsftpd/user_list #用于指定哪些用户能访问ftp,也就是白名单
[root@node2 ~]# cat /etc/vsftpd/user_list

在这里插入图片描述

  1. /var/ftp #默认情况下匿名用户的根目录

启动服务的方法

[root@node2 ~]# service vsftpd restart              //即刻启动

在这里插入图片描述

[root@node2 ~]# chkconfig vsftpd on         //开机自动启动

查看一下端口情况

[root@node2 ~]# netstat  -anptu | grep ftp

由下图可以发现只有21端口处于活动状态,20端口并没有活动,这是因为没有数据通信.
在这里插入图片描述
用linux服务器访问ftp

[root@node2 ~]# lftp 192.168.88.88

如下图可以看出其默认目录是/var/ftp/pub
在这里插入图片描述
用windows访问ftp,也是pub默认目录.
在这里插入图片描述

3. 修改配置文件
实例1:运维部准备搭建一台功能简单的FTP服务器,允许所有员工上传下载文件,并允许创建用户自己的目录。
(1)允许匿名访问:anonymous_enable=YES,允许匿名用户上传文件并可以创建文件:anon_upload_enable=YES
,anon_mkdir_write_enable=YES
在这里插入图片描述
到此还不能在pub目录下新建目录,也不能上传文件,暂且认为是因为目录权限的问题.
在这里插入图片描述
在这里插入图片描述

那么接下来解决以上问题,创建上传目录ftp用户的写入权限,注意,默认匿名用户家目录的权限是755,这个权限是不能改变的,切记!
下面来一步一步的实现,先修改目录权限,创建一个公司上传的用的目录,叫video,设置拥有者为ftp用户所有,目录权限是755
在这里插入图片描述
进入后看见新创建的video目录
在这里插入图片描述
此时看看video的权限

[root@node2 video]# ls -ld /var/ftp/video

该目录属于root用户,其他用户没有写权限
在这里插入图片描述
修改目录的所有者为ftp

[root@node2 video]# chown ftp /var/ftp/video

由下图可以知道,才是video目录已经ftp用户,且其权限为755
在这里插入图片描述
重启一下vsftp使以上修改生效

[root@node2 video]# service vsftpd restart

在这里插入图片描述
此时可以新建文件,但是不能改名字,也可以上传,但是不能进行删除操作!如下图所示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实例2.现在有一台FTP和WEB服务器,FTP的功能主要用于维护网站内容,包括上传文件创建目录,更新网页等等。现有两个部门负责维护任务,他们分别适用team1和team2账号进行登陆。先要求仅允许team1和team2账号登陆FTP服务器,但不能登陆本地系统,并将这两个账号的根目录限制为/var/www/html,不能进入该目录以外的其他任何目录。

  1. 创建两个用户,并设置密码为123456
[root@node2 /]# useradd -s /sbin/nologin team1
[root@node2 /]# useradd -s /sbin/nologin team2
[root@node2 /]# echo 123456 | passwd --stdin team1
[root@node2 /]# echo 123456 | passwd --stdin team2

在这里插入图片描述

  1. 禁止匿名登陆,修改配置文件 /etc/vsftpd/vsftpd.conf
[root@node2 /]# vi /etc/vsftpd/vsftpd.conf

在这里插入图片描述

  1. 修改主配置文件,以便禁锢指定的用户,修改如下:
local_root=/var/www/html             激活本地用户的根目录为/var/www/html
chroot_list_enable=YES          激活chroot功能
chroot_list_file=/etc/vsftpd/chroot_list      设置锁定用户在根目录中的列表文件,此文件存放要锁定的用户名

在这里插入图片描述
建立/etc/vsftpd/chroot_list文件,并添加team1和team2账号,一行一个账号

[root@node2 /]# touch /etc/vsftpd/chroot_list

在这里插入图片描述
修改目录/var/www/html的权限,使得用户可以有写的权限

[root@node2 vsftpd]# chmod -R 757 /var/www/html

在这里插入图片描述

  1. 重启vsftpd,使服务配置生效
[root@node2 vsftpd]# service vsftpd restart

在这里插入图片描述
此时到windows端访问ftp,用创建的team1用户访问ftp,如下所示
在这里插入图片描述
此时可以创建新文件夹,并且可以改文件名
在这里插入图片描述
可以删除创建的文件夹,也可以上传文件,也可以将上传的文件删除,如下所示
在这里插入图片描述
在这里插入图片描述

实例3.FTP虚拟用户的使用
概述:通过虚拟用户能将ftp的系统和用户进行分离,这样即使别人破解了ftp的账号和密码,也只能是访问ftp共享出来的内容,对服务器本身没有任何影响,能提高服务器的安全性
环境:假设A单位有一台ftp服务器,此服务器提供了供单位员工下载的一些资料,普通员工只有查看和下载的权限,但是没有上传和修改的权限,单位管理者拥有上传和下载的权限
实现步骤:

  1. 创建用户文本文件,在此文件中添加虚拟用户,两行为一组,分别对应用户名和密码
[root@node2 vsftpd]# vim /etc/vsftpd/vusers.list

在这里插入图片描述
注:xsb为普通员工账号,boss为管理者账号

2.生成数据库
使用db_load生成,如果没有此命令,可以使用以下命令安装

[root@node2 vsftpd]# yum  -y   install  db4-utils

提示我已经安装了最新版本了,所以不用折腾了
在这里插入图片描述
接下来开始生成数据库

[root@node2 vsftpd]# db_load -T -t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vusers.db
注:-T:允许应用程序能够将文本文件转译载入数据库
-t:使用加密算法,这里采用hash
-f:指定包含用户名和密码的文本文件

在这里插入图片描述
3.修改数据库文件的访问权限,提高安全性,只允许root用户拥有读写权限,防止非法用户盗取

[root@node2 vsftpd]# chmod 600 /etc/vsftpd/vusers.db

4.创建两个系统用户virtual和rm,并修改目录权限

useradd –d /var/ftp/xsb –s /sbin/nologin virtual
useradd –d /var/ftp/boss –s /sbin/nologin rm
chmod 755 /var/ftp/xsb
chmod 755 /var/ftp/boss

5.配置PAM文件
PAM概述:PAM(Plugable Authentication Module)为插拔认证模块,不必重新安装应用系统,通过修改指定的配置文件,调整对该程序的认证方式。PAM模块配置文件路径为/etc/pam.d/目录,此目录下保存着大量与认证有关的配置文件,并以服务名称命名。

vim /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers
注:文件最后调用的数据库文件时省略掉了db后缀

在这里插入图片描述
6.修改主配置文件

local_enable=YES                    #允许本地用户登陆
write_enable=YES                    #允许写入
anon_umask=022                    #设置上传文件的默认权限
chroot_local_user=YES                #限制目录
guest_enable=YES                    #开启虚拟用户支持,可以在用户单独配置文件中设置
guest_username=virtual               #设置映射本地用户,可以在用户单独配置文件中设置
pam_service_name=vsftpd.vu          #指定PAM文件
max_clients=300                       #最大接入的客户数量
max_per_id=10                         #设置每个IP地址最大连接数

如果在主配置文件中开启了虚拟用户支持,并配置了虚拟用户映射的本地用户,那么这些配置好之后虚拟用户就能在客户端登陆了,但是此种做法会让所有的虚拟用户拥有相同的权限,不能达到目的,所以要建立独立的配置文件。

7.建立独立的配置文件,设置不同用户的权限

vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir     指定用户配置文件的路径
(1)配置xsb账号的独立配置文件
vi /etc/vsftpd/vusers_dir/xsb         注意:每个独立配置文件的文件名和用户名一样
guest_enable=yes
guest_username=virtual
anon_world_readable_only=no
anon_max_rate=50000

(2)配置boss账户的独立配置文件
vi /etc/vsftpd/vusers_dir/boss
guest_enable=yes
guest_username=rm
anon_world_readable_only=no
write_enable=yes
anon_mkdir_write_enable=yes
anon_upload_enable=yes
anon_max_rate=100000
anon_other_write_enable=yes

配置完后,重启服务,刷新一下才能生效哦!!!接下来就可以登陆验证了,至此,ftp在linux的部署步骤就讲解结束了!

猜你喜欢

转载自blog.csdn.net/qq_41944882/article/details/102648124