Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )

Linux下的 FTP 文件传输协议


  • FTP

FTP 是 File Transfer Protocol (文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:”下载”(Download)和”上传”(Upload)。”下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
在进行ftp协议应用前需要先在服务端编辑/etc/sysconfig/selinux,打开selinux,否则将会限制ftp服务
 [root@server ~]# vim /etc/sysconfig/selinux
 内容如下:
 ......(省略前几行)......
 6 # disabled - No SELinux policy is loaded. 
 7 SELINUX=disabled   #将第七行改为: SELINUX=disabled 禁用selinux
 编辑后后重启机器reboot(不重启机器不会生效)
 重启后执行:
 [root@server ~]# getenforce
 若显示Disabled,则表示修改成功

执行如下:
编辑/etc/sysconfig/selinux的第七行,禁用selinux
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第1张图片
重启后执行getenforce,验证是否成功关闭selinux
这里写图片描述

1.安装vsftpd(在服务端)

 [root@server ~]# yum install vsftpd.x86_64 
......(此处省略安装过程)......
Installed:
  vsftpd.x86_64 0:3.0.2-9.el7                                                   

Complete!

安装成功后,启动vsftpd服务,并使其开机自启:
 [root@server ~]# systemctl start vsftpd #启动vsftp
 [root@server ~]# systemctl enable vsftpd #开机自启vsftp 

开启防火墙,并让防火墙允许ftp服务:
 [root@server ~]# systemctl start firewalld #开启防火墙
 [root@server ~]# firewall-cmd --list-all #列出在防火墙中添加或启用的所有内容。 
 [root@server ~]# firewall-cmd --permanent --add-service=ftp #让防火墙永久允许ftp服务运行
 [root@server ~]# firewall-cmd --reload #重新加载防火墙

执行如下:
列出在防火墙中添加或启用的所有内容。
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第2张图片
让防火墙永久允许ftp服务运行
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第3张图片

2.在/var/ftp/下建立文件,在客户端安装lftp并执行lftp服务连接服务端进行验证服务

在服务端建立文件

 [root@server ~]# touch /var/ftp/test

在客户端

 [root@client ~]# yum install lftp.x86_64 -y
 ......(略去安装过程)...... 
 Installed:
  lftp.x86_64 0:4.4.8-3.el7

 Complete!

 [root@client ~]# lftp 172.25.254.239 #连接服务端主机
 lftp 172.25.151.150:~> ls

执行结果如下:
这里写图片描述

3.ftp中的本地用户,匿名用户,虚拟用户

3.1ftp服务的基本信息

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

3.2 本地用户(Local users)

所谓本地用户就是以本地已存在的用户的身份进行lftp连接
编辑 /etc/vsftpd/vsftpd.conf 进行对本地用户的管理
注:本地用户在不加限定的情况才可以通过lftp访问服务器的/目录。且执行lftp命令后进入的目录为本地用户对应的家目录

3.2.1限制本地用户登录和对lftp下的文件文件夹可不可写

编辑 /etc/vsftpd/vsftpd.conf 第16,19行进行本地用户的读写限制:
 [root@server ~]# vim /etc/vsftpd/vsftpd.conf #编辑配置文件
 内容如下(第16行,第19行):
 14 # Uncomment this to allow local users to log in.
 15 # When SELinux is enforcing check for SE bool ftp_home_dir
 16 local_enable=YES        #YES表示允许本地用户登录
 17 #
 18 # Uncomment this to enable any form of FTP write command.
 19 write_enable=YES        #YES表示允许本地用户执行写

执行完成后,可在客户端进行验证

以服务端存在的用户student为例,首先在服务端student加目录下建立文件用来测试
 [root@server student]# touch /home/student/studentfile
在客户端连接服务端
 [root@client ~]# lftp 172.25.151.150 -u student #以student身份登录lftp服务
 lftp student@172.25.151.150:~> ls      #执行 ls 验证是否为student家目录
 lftp student@172.25.151.150:~> rm studentfile #执行rm验证本地用户是否可写

具体执行如下:

在客户端student家目录下创建文件

这里写图片描述

以本地用户身份连接后,验证是否为本地用户家目录,并看本地用户是否可写

Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第4张图片

3.2.2 限制本的用户浏览(将本地用户浏览范围限制在其家目录下)

限制本地用户活动范围,在不限制的情况下,本地用户可以访问系统家目录,权限过大
编辑 /etc/vsftpd/vsftpd.conf 第100行对本地用户进行限制
 [root@server student]# vim /etc/vsftpd/vsftpd.conf #编辑配置文件
内容如下(第100行左右):

 100 chroot_local_user=YES     #YES表示对本地用户活动范围进行限制

 [root@server student]# systemctl restart vsftpd.service #重启服务
 [root@server student]# chmod u-w /home/* #修改用户对于用户家目录的权限,否则权限过大,无法通过lftp连接 
                                             #修改后本地用户无法进行上传 

具体执行如下:

进行限制前,可进入服务端根目录

Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第5张图片

进行限定后,只能进入普通用户家目录

Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第6张图片

3.2.3 限制本地用浏览的白名单

编辑 /etc/vsftpd/vsftpd.conf 进行建立
 [root@server ~]# vim /etc/vsftpd/vsftpd.conf
 内容如(100行左右)下:
 100 chroot_local_user=YES     #YES 表示用户浏览白名单
 101 chroot_list_enable=YES
 102 # (default follows)
 103 chroot_list_file=/etc/vsftpd/chroot_list #编辑/etc/vsftpd/chroot_list规定白名单用户
 [root@server student]# systemctl restart vsftpd.service #重启服务
 [root@server ~]# vim /etc/vsftpd/chroot_list 
 内容如下:
 student    #输入用户名
~             

执行如下:
编辑/etc/vsftpd/vsftpd.conf
这里写图片描述
编辑白名单,将用户student加入白名单
这里写图片描述
在客户端进行验证
白名单内的student用户可以访问服务端"/"目录
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第7张图片
非白名单用户,如用户linux,则只能访问linux用户家目录
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第8张图片

<注:还可以编辑 /etc/vsftpd/vsftpd.conf 规定本地用户通过lftp登录的家目录>

 [root@server ~]# vim /etc/vsftpd/vsftpd.conf 
内容如下:
20 local_root=/pub #设定本地用户登录后的目录为/pub
 [root@server ~]# systemctl restart vsftpd.service

执行如下:
编辑 /etc/vsftpd/vsftpd.conf :
这里写图片描述
重启服务后,在 /pub/ 新建文件,然后在客户端验证
建立用来测试的文件
这里写图片描述
在客户端,分别用本地用户linux和student进行测试
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第9张图片

3.2.4 限制本地用浏览的黑名单

编辑 /etc/vsftpd/vsftpd.conf 进行建立
 [root@server ~]# vim /etc/vsftpd/vsftpd.conf 
 100 chroot_local_user=NO  #NO表示用用户黑名单
 101 chroot_list_enable=YES
 102 # (default follows)
 103 chroot_list_file=/etc/vsftpd/chroot_list #编辑/etc/vsftpd/chroot_list 规定黑名单用户
 [root@server student]# systemctl restart vsftpd.service #重启服务
 [root@server ~]# vim /etc/vsftpd/chroot_list 
 内容如下:
 student    #输入用户名拉入限制黑名单

执行如下:
编辑/etc/vsftpd/vsftpd.conf
这里写图片描述
编辑黑名单,将用户student加入黑名单
这里写图片描述
在客户端进行验证
黑名单内的student用户仅能访问sutudent用户家目录
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第10张图片
非黑名单用户,如linux用户可以访问服务端 "/"目录
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第11张图片

3.2.5限制本地用户登录黑名单

限制本地用户通过lftp连接主机

  • vsftpd服务的黑名单有两个
    /etc/vsftp/ftpusers
    /etc/vsftpd/suer_list
    以上两者默认都为限制用户登陆的黑名单,/etc/vsftpd/ftpusers优先级别最高

通过 /etc/vsftpd/ftpusers 添加黑名单:

 [root@server ~]# vim /etc/vsftpd/ftpusers 
  1 # Users that are not allowed to login via ftp
    # 不允许通过ftp登录的用户。
  2 root
 ......(我是用来省略的)......
 15 nobody
 16 student                #将用户student加入黑名单
~               

通过 /etc/vsftpd/user_list 添加黑名单

编辑user_list前,先编辑/etc/vsftpd/vssftpd.conf
在127行左右添加如下内容
 [root@server ~]# vim /etc/vsftpd/vsftpd.conf 
 内容如下:
 127 userlist_deny=YES    #YES表示 /etc/vsftpd/user_list 为黑名单
 [root@server ~]# systemctl restart vsftpd.service #重启服务
再编辑/etc/vsftpd/user_list
 [root@server ~]# vim /etc/vsftpd/user_list 
  1 # vsftpd userlist
  2 # If userlist_deny=NO, only allow users in this file
    # 如果userlist_deny=NO,则只允许此文件中的用户。
  3 # If userlist_deny=YES (default), never allow users in this file, 
    # 如果userlist_deny=YES(默认),则不允许此文件中的用户
......(我是用来省略的)......
 20 nobody
 21 student                            #将student用户加入黑名单

具体执行如下(以 user_list 为例):
编辑 /etc/vsftpd/user_list :
这里写图片描述
编辑 /etc/vsftpd/user_list 进行黑名单添加
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第12张图片
在客户端进行验证
黑名单内的student用户不能通过lftp访问
这里写图片描述
非黑名单用户,如linux用户可以访问
这里写图片描述

3.2.6限制本地用户登录白名单

用户登陆白名单设定( /ect/vsftpd/user_list )

 编辑user_list前,先编辑/etc/vsftpd/vssftpd.conf
 在127行左右添加如下内容
 [root@server ~]# vim /etc/vsftpd/vsftpd.conf 
 内容如下:
 127 userlist_deny=NO    #NO表示 /etc/vsftpd/user_list 为白名单
 [root@server ~]# systemctl restart vsftpd.service #重启服务
 再编辑 /etc/vsftpd/user_list
 [root@server ~]# vim /etc/vsftpd/user_list 
  1 # vsftpd userlist
  2 # If userlist_deny=NO, only allow users in this file
    # 如果userlist_deny=NO,则只允许此文件中的用户。
  3 # If userlist_deny=YES (default), never allow users in this file, 
    # 如果userlist_deny=YES(默认),则不允许此文件中的用户
 ......(我是用来省略的)......
 20 nobody
 21 student                            #将student用户加入白名单
注:当user_list作为白名单,且用户同时出现再user_list和ftpusers中时,ftpusers生效

执行如下:
编辑 /etc/vsftpd/user_list :
这里写图片描述
编辑 /etc/vsftpd/user_list 进行白名单添加
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第13张图片
在客户端进行验证
白名单内的用户student,可以通过lftp访问
这里写图片描述
非白名单用户,如linux用户则不可以访问
这里写图片描述

<注:本地用户是否可以登录,取决于 /etc/vsftpd/vsftpd.conf 中的第16行>

 编辑/etc/vsftpd/vsftpd.conf 
 [root@server ~]# vim /etc/vsftpd/vsftpd.conf 
 编辑第1616 local_enable=NO  #NO表示本地用户不可以登陆,若是YES则表示本地用户可以登录
 [root@server ~]# systemctl restart vsftpd.service #重启服务

执行如下:
编辑 /etc/vsftpd/vsftpd.conf 进行本地用户限制
这里写图片描述
重启服务后在客户端进行测试
这里写图片描述

3.2.7 本地用户登录后的权限

本地用户通过lftp登录后,对登录后的目录进行可进行上传,下载,删除等操作,我们可以通过编辑 /etc/vsftpd/vsftpd.conf 对这些权限进行限制
 编辑 /etc/vsftpd/vsftpd.conf
 [root@server ~]# systemctl restart vsftpd.service 
 对第19行进行编辑:
  19 write_enable=NO            #NO表示用户不可写,YES表示用户可写
 [root@server ~]# systemctl restart vsftpd.service #重启服务

注:本地用户如果可写,就可以对登录后的目录进行:上传,下载,删除等操作,如果不可写,则只可以下载

执行如下:
*编辑/etc/vsftpd/vsftpd.conf 让本地用户不可写*
这里写图片描述
重启服务后,在客户端进行验证(不可上传,不可删除,可以下载)
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第14张图片

3.3 匿名用户(Anonymous users)

除了上面介绍的本地用户外,匿名用户也可以通过lftp访问服务端

3.3.1 匿名用户登录

通过编辑 /etc/vsftpd/vsftpd.conf 来进行对匿名用户登录的限制

 编辑/etc/vsftpd/vsftpd.conf
 [root@server ~]# vim /etc/vsftpd/vsftpd.conf 
 编辑第1212 anonymous_enable=NO        #NO表示不允许匿名用户登录,YES表示允许
 [root@server ~]# systemctl restart vsftpd.service #重启服务

执行如下:
编辑配置文件,不允许匿名用户登录,并重启服务
这里写图片描述
在客户端进行验证
这里写图片描述
<匿名用户也同本地用户相同,可以进行用户访问家目录规定>

 编辑/etc/vsftpd/vsftpd.conf
 [root@server ~]# vim /etc/vsftpd/vsftpd.conf 
 编辑内内容如下:
 21 anon_root=/pub #匿名用户访问目录修改为/pub
 [root@server ~]# systemctl restart vsftpd.service #重启服务

执行如下:
编辑配置文件,指定匿名用户访问目录,并重启服务
这里写图片描述
在客户端进行验证
这里写图片描述

3.3.2 匿名用户上传

通过编辑 /etc/vsftpd/vsftpd.conf 来进行对匿名用户上传权限进行限制
注:匿名用户上传的另一前提是匿名用户访问的目录,对你名用户来说有写的权限

 编辑/etc/vsftpd/vsftpd.conf
 [root@server ~]# vim /etc/vsftpd/vsftpd.conf 
 编辑内内容如下:
 19 write_enable=YES       ##匿名用户上传的前提是本地用户可写
 ......(我是用来省略的)......
 30 anon_upload_enable=YES      #YES表示允许匿名用户上传
 [root@server ~]# systemctl restart vsftpd.service #重启服务
 [root@server ~]# chmod o+w /var/ftp/pub/ #修改目录权限,保证匿名用户可写

执行如下:
编辑配置文件,设定匿名用户可以上传,并重启服务
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第15张图片
修改目录权限
这里写图片描述
在客户端进行验证
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第16张图片

3.3.3 匿名用户写与下载

匿名用户默认情况下是不可以对自己无法读的文件进行下载,建立目录,删除等操作

通过编辑 /etc/vsftpd/vsftpd.conf 来进行对匿名用户下载等权限进行限制

 编辑/etc/vsftpd/vsftpd.conf
 [root@server ~]# vim /etc/vsftpd/vsftpd.conf 
 编辑内内容如下:
 31 anon_other_write_enable=YES   #匿名用户可以对文件进行删除
 32 anon_world_readable_only=NO   #设定参数位NO表示匿名用户可以下载
 33 anon_mkdir_write_enable=YES   #匿名用户可以进行创建目录
 [root@server ~]# systemctl restart vsftpd.service #重启服务

<注:匿名用户进行删除,建立目录等操作的前提是:对当前目录可写>
编辑配置文件,设定匿名用户可进行下载等操作,并重启服务
这里写图片描述
在客户端进行验证
匿名用户登录后,默认情况下,进入服务端 /var/ftp/目录下进行操作,因为匿名用户对该目录没有写的权限,所以无法进行删除test的操作,切换到 pub 目录,因为前面修改了pub 目录对于其他用户的权限,匿名用户对该目录可写,故可以进行删除 passwd 的操作,下载操作亦能进行。
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第17张图片)

3.3.4 限制用户上传(下载)速率

通过编辑 /etc/vsftpd/vsftpd.conf 来进行对匿名用户上传(下载)速率进行限制

 编辑/etc/vsftpd/vsftpd.conf
 [root@server ~]# vim /etc/vsftpd/vsftpd.conf 
 编辑内内容如下:
 35 anon_max_rate=102400   #限制匿名用户下载上传速率,单位为字节(此处限制为100k)
 [root@server ~]# systemctl restart vsftpd.service #重启服务

编辑配置文件,限制匿名用户下载(上传)速度,并重启服务
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第18张图片
在客户端进行验证
先从内存中截取一大块文件进行限速的材料。
这里写图片描述
限速前:速度大约(213.54M/s)
这里写图片描述
限速后:
这里写图片描述

3.3.5 上传文件的默认权限

通过编辑 /etc/vsftpd/vsftpd.conf 来进行对匿名用户和本地用户上传后的默认权限进行设定

 编辑/etc/vsftpd/vsftpd.conf
 [root@server ~]# vim /etc/vsftpd/vsftpd.conf 
 编辑内内容如下:  
 24 local_umask=022  #本地用户上传后文件的默认权限保留值
 25 anon_umask=077   #匿名用户上传后文件的默认权限保留值
 [root@server ~]# systemctl restart vsftpd.service #重启服务

执行如下:
编辑配置文件,进行对匿名用户和本地用户上传后的默认权限进行设定,并重启服务
这里写图片描述
在客户端进行验证
虚拟用户预留权限umask=077
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第19张图片
本地用户预留权限umask=022
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第20张图片

3.4 虚拟用户认证

在linux之下,使用vsftp服务时,默认使用ftp访问的时候,如果想多个用户同时访问某一个目录,同时对同一目录下有着不同的权限,比如部分用户只能看,不修改,或者有的用户只能下载不能上传这些权限,这些设定只能通过vsftp中的虚拟用户来进行设定,本地用户用户无法达到这样的效果。

要完成虚拟用户的建立还需要认证插件的帮助(PAM)
  • PAM主要是由一组共享库文件(也就是后缀名为.so文件)和一些配置文件组成的用于系统服务授权的一套东西,其中,PAM 就是 Pluggable Authentication Modules 这几个英文单词的缩写。当你在请求服务的时候,具有PAM认证功能的应用程序将与这些.so文件进行交互,以便得知是否可以授权给发起请求的用户来使用服务,比如su, vsftp, httpd,等。如果认证成功了,那么这个用户便可以使用服务或完成命令,如果认证失败了,那么这个用户将不能使用服务,同时,PAM将向指定的log文件写入警告信息。我们可以将PAM看作是一个中间裁判,它不依赖于任何应用或服务。你完全可以升级这些应用或服务而不必管PAM的共享库的更新或升级,反之亦然。所以它非常的灵活。

3.4.1 创建虚拟帐号身份

在/etc/vsftpd/下建立文文件用来放置虚拟用于的账户密码,用于后面的用户认证

 [root@server ~]# vim /etc/vsftpd/virt-user #文件名自拟,用来放置虚拟用户的账
                                                #户密码,用于后面的用户认证
 #编辑内容如下: 
  1 user1                #虚拟用户的用户名
  2 123                  #密码
  3 user2                #虚拟用户的用户名
  4 123                  #密码
  5 user3                #虚拟用户的用户名
  6 123                  #密码

执行如下
编辑 /etc/vsftpd/virt-user
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第21张图片

3.4.2 对文件进行加密
保存虚拟帐号和密码的文本文件无法被系统帐号直接调用。我们需要使用db_load 命令生成db 数据库文件
 [root@server ~]# db_load -T -t hash -f /etc/vsftpd/virt-user /etc/vsftpd/virt-user.db
    -T:允许应用程序能够将文本文件转译载入进数据库。     -t hash:使用hash码加密     -f:指定包含用户名和密码文本文件。此文件格式要示:奇数行用户名、偶数行密码

执行如下:
对/etc/vsftpd/virt-user进行加密
这里写图片描述
查看加密后生成的密文(为乱码,保证系统安全性)
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第22张图片

3.4.3 进行插件配对 (编辑/etc/pam.d/ftpuser <文件名自拟>)
 [root@server ~]# vim /etc/pam.d/ftpuser
 编辑内容如下:             
  1 account   required      pam_userdb.so     db=/etc/vsftpd/virt-user
  2 auth      required      pam_userdb.so     db=/etc/vsftpd/virt-user
              #required:表示本模块必须返回成功才能通过认证
              #pam_userdb.so:pam插件,是PAM模块对db数据库进行身份验证
              #db=目录:规定要认证的数据路径

执行如下:
这里写图片描述

3.4.4 进行vsftpd配置文件编辑

编辑 /etc/vsftpd/vsftpd.conf 修改pam服务名称,让系统识别虚拟用户

 [root@server ~]# vim /etc/vsftpd/vsftpd.conf 
 内容如下:
 132 pam_service_name=ftpuser  #pam服务名称(上面新建的/etc/pam.d/ftpuser)
 133 guest_enable=YES          #虚拟账户是否可以登陆
 134 guest_username=ftp        #虚拟用户指定一个用户身份
 [root@server ~]# systemctl restart vsftpd.service #重启服务

注:修改了 pam_service_name 以后本地用户是无法再登录lftp的
执行如下:
编辑 /etc/vsftpd/vsftpd.conf
这里写图片描述
重启服务后,在客户端进行验证
普通用户linux,student,都不能进行登录,虚拟用户user1可以
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第23张图片

3.4.5 虚拟用户家目录指定
为了方便操作与管理,可以为建立的虚拟用户分别指定家目录
 [root@server ~]# mkdir /virt-users
 [root@server ~]# mkdir /virt-users/user{1..3} #user{1..3}必须与所建虚拟用户名称相对应

 修改配置文件(/etc/vsftpd/vsftpd.conf)
 [root@server ~]# vim /etc/vsftpd/vsftpd.conf 
 编辑内容如下:
 138 local_root=/virt-users/$USER    #指定虚拟用户家目录 
 #$USER 为shell 下的变量
 139 user_sub_token=$USER        #调用参数
 #这个选项是与虚拟用户结合使用的。它是用于自动为每个文件生成一个主目录。
 [root@server ~]# systemctl restart vsftpd.service #重启服务

执行如下:
建立用户家目录
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第24张图片
每个虚拟用户家目录下建立文件,用来验证
这里写图片描述
编辑 /etc/vsftpd/vsftpd.conf
这里写图片描述
重启服务,并在客户端验证
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第25张图片

3.4.6 虚拟账户配置独立
虚拟用户的权限上传下载,读写,等权限,在主配置文件中的规定,与匿名用户相同,故为了规定各个匿名用户不同的权限,可以创建各个虚拟用户对应的配置文件继续权限管理
 先为每个虚拟用户,在其家目录下创建pub目录,并修改其权限让每个用户对该目录可写
 [root@server ~]# mkdir /virt-users/user{1..3}/pub
 [root@server ~]# chgrp ftp /virt-users/user{1..3}/pub #修改目录所属组,与赋予虚拟用户的身份组相同
 [root@server ~]# chmod 775 /virt-users/user{1..3}/pub #修改组权限,保证虚拟用户可写
 [root@server ~]# mkdir /etc/vsftpd/conf_dir #创建虚拟用户配置文件存放目录并编辑主配置文件/etc/vsftpd/vsftpd.conf

 [root@server ~]# vim /etc/vsftpd/vsftpd.conf #编辑配置文件140行左右:user_config_dir=/etc/vsftpd/conf_dir   #将每个虚拟用户的配置文件分开
 在/etc/vsftpd/conf_dir下建立每个虚拟用户对应的子配置文件
 [root@server ~]# vim /etc/vsftpd/conf_dir/user1 #建立并编辑虚拟用户user1的vsftpd配置文件
    #在其中对各个虚拟用户的权限进行配置(虚拟用户对应权限与匿名用户相同)
  如编辑以下内容:
  1 anon_upload_enable=YES      #YES表示允许虚拟用户上传
  2 anon_other_write_enable=YES   #匿名用户可以对文件进行删除
  3 anon_world_readable_only=NO   #设定参数位NO表示匿名用户可以下载
  4 anon_mkdir_write_enable=YES   #匿名用户可以进行创建目录
 [root@server ~]# systemctl restart vsftpd.service #重启服务
注:虚拟用户对应权限与匿名用户相同

运行如下:
修改目录信息
这里写图片描述
创建虚拟用户配置文件存放目录后编辑主配置文件
这里写图片描述
编辑虚拟用户user1的vsftpd配置文件
这里写图片描述
重启服务后在客户端进行验证
未编辑user2的配置文件所以无法进行上传操作
这里写图片描述
user1的配置文件编辑完整,故可进行相应操作
Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )_第26张图片

3.4.7 限制账户登录个数

我们可以通过编辑 /etc/vsftpd/vsftpd.conf 来实现对 lftp 登录用户个数的限制

 编辑配置文件:
 [root@server ~]# vim /etc/vsftpd/vsftpd.conf
 内容如下:
 132 max_clients=2     #最大可连接客户端数量为2
 [root@server ~]# systemctl restart vsftpd.service #重启服务

执行如下:
编辑/etc/vsftpd/vsftpd.conf 限制 lftp 登录用户个数为 2
这里写图片描述
在客户端进行验证
客户端1 以 user1 进行连接,连接数为1,可连接
这里写图片描述
客户端2 以 user2 进行连接,连接数为2,可连接
这里写图片描述
客户端3以 user3 进行连接,连接数为3,超出用户数限制,user3不可连接
这里写图片描述

你可能感兴趣的:(Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 ))