Linux—vsftpd服务

文章目录

  • 一.什么是FTP服务器
  • 二.什么是Vsftpd
  • 三.安装vsftpd
  • 四.vsftpd服务的配置参数
    • 1.匿名用户设定
    • 2.本地用户设定
    • 3.虚拟用户设定
      • (1)虚拟用户的创建
      • (3)虚拟用户设定

一.什么是FTP服务器

FTP 是 File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于 Internet 上的控制文件的双向传输。同时,它也是一个应用程序(Application)。 基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
在 FTP 的使用当中,用户经常遇到两个概念:“下载”(Download)和"上传"(Upload)。

二.什么是Vsftpd

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、HP-UNIX 等系统上面,是一个完全免费的、开放源代码的 ftp 服务器软件,支持很多其他的FTP 服务器所不支持的特征。

三.安装vsftpd

  • 通过yum install vsftpd -y安装vsftpd服务
    Linux—vsftpd服务_第1张图片
    安装完成如图下所示:
    Linux—vsftpd服务_第2张图片
  • 开启vsftpd服务,并设置为开机自动启动
    Linux—vsftpd服务_第3张图片
  • 关闭防火墙,并将防火墙设置为开机不启动
    Linux—vsftpd服务_第4张图片
  • 测试lftp ip是否可以成功,发现并没有找到lftp该命令,我们需要通过``yum install lftp -y```安装才可以测试
    ,安装成功后,再次重新连接,能登录并且显示,表示安装成功
    Linux—vsftpd服务_第5张图片- vsftpd文件信息
/var/ftp		# 默认发布目录
/etc/vsftpd		#配置目录

Linux—vsftpd服务_第6张图片

四.vsftpd服务的配置参数

安装完后,在/etc/vsftpd/vsftpd.conf 文件,是 vsftp 的配置文件。
客户端访问时, 用户身份可以分为:

  • 匿名用户:没有指定用户身份, ftp身份实现从服务器上传和下载文件;
  • 本地用户: -u指定用户身份,用户是服务器端的用户;
  • 虚拟用户: -u指定用户身份,但是服务器端并不存在该用户(id username)

1.匿名用户设定

  • 匿名用户登录限制,修改完配置文件后,必须要重启vsftpd服务
    anonymous_enable=YES|NO
    Linux—vsftpd服务_第7张图片
    Linux—vsftpd服务_第8张图片
  • 匿名用户上传
write_enable=YES
anon_upload_enable=YES

Linux—vsftpd服务_第9张图片
修改配置文件后,修改/var/ftp/pub的所有人或者所属组,增加所有人或所属组的权限,注意在此步骤一定要修改selinux的模式为Permissive,否则不能上传成功
Linux—vsftpd服务_第10张图片

  • 匿名用户家目录修改
    anon_root=/direcotry
    通过以上参数的修改可以指定匿名用户的家目录,默认是没有这一参数的,需要手动在配置文件中添加,如下:
    Linux—vsftpd服务_第11张图片
    然后创建一个/public目录,并在里面创建了三个文件,如下:
    Linux—vsftpd服务_第12张图片
    在测试端登录,登录进来就直接是刚设定好的/public目录
    Linux—vsftpd服务_第13张图片
  • 匿名用户上传文件默认权限修改
    anon_umask=xxx
    umask设定022,则创建文件的默认权限为644
    Linux—vsftpd服务_第14张图片

Linux—vsftpd服务_第15张图片

  • 匿名用户建立目录
    anon_mkdir_write_enable=YES|NO
    当参数设定为YES时为匿名用户可以创建目录,参数设定为NO时为不可创建目录Linux—vsftpd服务_第16张图片
    修改完配置文件后,测试端连接,创建目录
    Linux—vsftpd服务_第17张图片
  • 匿名用户下载
    anon_world_readable_only=YES|NO
    设定参数值为NO 表示匿名用户可以下载,该参数在配置文件中也是没有的,需要手动添加,添加如下
    Linux—vsftpd服务_第18张图片
    测试
    Linux—vsftpd服务_第19张图片
  • 匿名用户删除
    anon_other_write_enable=YES|NO
    匿名用户是否有其它写的权限,设定为YES时为匿名用户可以进行其它写的操作,该项也需要手动在配置文件中添加,如下:
    Linux—vsftpd服务_第20张图片
    连接客户端测试
    删除文件,重命名文件:
    Linux—vsftpd服务_第21张图片
  • 匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student

配置文件中,默认是没有开启的,我们设置好匿名用户以什么身份登录后,在客户端测试
Linux—vsftpd服务_第22张图片
Linux—vsftpd服务_第23张图片

  • 最大上传速率
    anon_max_rate=102400
    Linux—vsftpd服务_第24张图片
    在测试之前需要在共享文件中放一个比较大的文件进行传输测试,如下:
    Linux—vsftpd服务_第25张图片
    然后再连接客户端测试,我们可以看到下载速度特别慢
    Linux—vsftpd服务_第26张图片
  • 最大连接数设定
    max_clients=2
    通过此参数的设定,可以闲置用户链接的最大数量,在此设定为2进行测试,在配置文件中编辑如下:
    Linux—vsftpd服务_第27张图片
    然后在客户端连接测试
    Linux—vsftpd服务_第28张图片

2.本地用户设定

配置文件中有两个参数是限定本地用户的:
local_enable=YES | NO
该参数作用是本地用户登录限制,默认设定为YES,代表本地用户可以登录。
write_enable=YES | NO
该参数作用是本地用户写权限限制,默认设定为YES,代表本地用户有写的权限。

  • 本地用户家目录修改
    local_root =/directory通过该参数的设定可以修改本地用户登录后的家目录
    Linux—vsftpd服务_第29张图片
    在客户端以student身份进行连接测试
    Linux—vsftpd服务_第30张图片
  • 本地用户上传文件权限
    local_umask=xxx
    该参数和匿名用户上传文件权限参数是一样的,通过修改umask值,可以改变上传文件的默认权限
  • 限制本地用户浏览根目录
    如果任意的本地用户链接之后可以进入到根目录,这样将非常的不安全,因此需要修改某些参数来限制本地用户浏览根目录,达到安全的目的。
    chroot_local_user=YES
    Linux—vsftpd服务_第31张图片
    为了使连接更加安全,我们给本地用户去掉了写权限
    Linux—vsftpd服务_第32张图片
    在客户端以student用户身份进行连接测试,在客户端可以看到,我们切换到根目录没有看到根目录中的任何内容
    Linux—vsftpd服务_第33张图片
  • 限制本地用户登录
    在vsftpd服务的配置目录中有两个黑名单文件是专门存放限制本地用户登录的名单
vim /etc/vsftpd/ftpusers   用户黑名单
vim /etc/vsftpd/user_list   用户临时黑名单

然后再通过配置文件中下面的参数,可以实现黑白名单转换:

userlist_deny=NO

当参数设定为NO时,user_list名单为白名单,当设定为YES时,user_list名单为黑名单。
我们现在配置文件中进行如下配置:
Linux—vsftpd服务_第34张图片
然后在/etc/vsftpd/user_lis文件中加入 student用户
Linux—vsftpd服务_第35张图片
在客户端以student用户身份进行连接,发现student用户没有权限登录
Linux—vsftpd服务_第36张图片

3.虚拟用户设定

(1)虚拟用户的创建

在对虚拟用户参数设定之前需要先进行虚拟用户的创建

  • 创建虚拟账号身份文件
    在/etc/vsftpd/目录下任意创建一个文件用于存放虚拟账号身份及密码,文件名可以任意
    Linux—vsftpd服务_第37张图片
    注意:该文件中一定不能出现空行或者多余的空格
  • 对用户账号和密码进行加密
    db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db
    这里的-T参数允许应用程序能够将文本文件转译载入进数据库中,如果指定了参数-T,那么一定要追跟子参数-t,-t参数是用来指定转译载入的数据库类型,在这里设定为hash哈希加密;-f 参数后面接包含用户名和密码的文本文件,后面那个文件是转换之后将输出到哪个文件中去。
    Linux—vsftpd服务_第38张图片
    执行完该命令后,为了安全起见,需要将缩减存放密码文件和转换之后的文件权限
    chmod 600 /etc/vsftpd/loginusers*
  • 编辑/etc/pam.d/ckvsftpd
    /etc/pam.d下的文件存放的各个命令的pam模块的配置,在该目录下创建一个文件,文件名为ckvsftpd,文件编辑内容如下:
    Linux—vsftpd服务_第39张图片
  • 开启虚拟用户登录
    编辑vim /etc/vsftpd/vsftpd.conf
    配置以下两个参数
    pam_service_name=ckvsftpd
    guest_enable=YES
    Linux—vsftpd服务_第40张图片

(3)虚拟用户设定

虚拟用户创建好了之后,我们可以设定虚拟用户的相关参数

  • 虚拟账号身份指定
    guest_username=ftp
    Linux—vsftpd服务_第41张图片
    用客户端以虚拟用户ftpuser1的身份连接,测试是否成功
    Linux—vsftpd服务_第42张图片
  • 虚拟账号家目录独立设定
local_root=/userhome/$USER   定义各个用户的本地家目录
user_sub_token=$USER			在本地家目录中插入用户名

在修改配置文件之前,我们需要先创建好虚拟账号家目录/userhome,修改该目录的所属组,修改该目录的权限,使该目录下创建的所有目录的所属组保持一致
Linux—vsftpd服务_第43张图片另外需要分别在每一个指定家目录中创建一个文件用于标识测试时是否进入家目录
Linux—vsftpd服务_第44张图片

接下来我们修改配置文件中的相关参数
Linux—vsftpd服务_第45张图片
我们可以在客户端以创建好的任意虚拟用户身份进行测试
Linux—vsftpd服务_第46张图片

  • 虚拟账号独立配置
    我们需要实现ftpuser1用户上传和下载文件限速
    ftpuser2用户上传和下载文件不限速,并且可以上传文件

/etc/vsftpd/vsftpd,conf配置文件中编辑用户配置目录这个参数
user_config_dir=/etc/vsftpd/users.conf
Linux—vsftpd服务_第47张图片
mkdir -p /etc/vsftpd/users.conf,接着,我们去第归创建该目录
Linux—vsftpd服务_第48张图片
我们在/etc/vsftpd/users.conf/ftpuser1文件中设置限速参数
Linux—vsftpd服务_第49张图片
设置完ftpuser1之后,我们去配置ftpuser2的相关参数
Linux—vsftpd服务_第50张图片
我们需要给ftpuser2创建一个上传文件的目录,并且修改该文件的所有人为ftp,用dd命令模拟创建一个100M的文件,再连接客户端以fptuser1身份先测试限速:
Linux—vsftpd服务_第51张图片
连接客户端测试,我们可以看到下载速度是非常慢的,说明我们的限速测试成功
Linux—vsftpd服务_第52张图片

ftpuser2我们测试的是文件上传,我们可以连接客户端,以ftpuser2的身份进入,测试是否可以上传文件
Linux—vsftpd服务_第53张图片

通过客户端测试,ftpuser2身份是可以成功上传文件的。

你可能感兴趣的:(Linux)