在FTP服务器的管理中无论对本地用户还是匿名用户,对于FTP服务器资源的使用都需要进行控控制, 避免由于负担过大造成FTP服务器运行异常, 可以添加以下配置项对FTP客户机使用FTP服务器资源进行控制:

max_client 设置项用于设置FTP服务器所允许的最大客户端连接数,值为0时表示不限制。例如max_client=100表示FTP服务器的所有客户端最大连接数不超过100个。 
max_per_ip 设置项用于设置对于同一IP地址允许的最大客户端连接数,值为0时表示不限制。例如max_per_ip=5表示同一IP地址的FTP客户机与FTP服务器建立的最大连接数不超过5个。 
local_max_rate 设置项用于设置本地用户的最大传输速率,单位为B/s,值为0时表示不限制。例如local_max_rate=500000表示FTP服务器的本地用户最大传输速率设置为500KB/s. 
ano n_max_rate 设置项用于设置匿名用户的最大传输速率,单位为B/s,值为0表示不限制。例如ano_max_rate=200000,表示FTP服务器的匿名用户最大传输速率设置为200KB/s. 
vsftpd.user_list 文件需要与vsftpd.conf文件中的配置项结合来实现对于vsftpd.user_list文件中指定用户账号的访问控制: 
(1) 设置禁止登录的用户账号 
当vsftpd.conf配置文件中包括以下设置时,vsftpd.user_list文件中的用户账号被禁止进行FTP登录: 
userlist_enable=YES 
userlist_deny=YES 
userlist_enable设置项设置使用vsftpd.user_list文件,userlist_deny设置为YES表示vsftpd.user_list文件用于设置禁止的用户账号。 
(2) 设置只允许登录的用户账号 
当vsftpd.conf配置文件中包括以下设置时,只有vsftpd.user_list文件中的用户账号能够进行FTP登录: 
userlist_enable=YES 
userlist_deny=NO 
userlist_enable设置项设置使用vsftpd.user_list文件,userlist _deny设置为NO表示vsftpd.usre_list文件用于设置只允许登录的用户账号,文件中未包括的用户账号被禁止FTP登录。 
userlist_deny 和 userlist_enable 选项限制用户登录FTP 服务器 (使用userlist_deny 选项和user_list 文件一起能有效阻止root,apache,www 等系统用户登录FTP 服务器,从而保证FTP 服务器的分级安全性): 
 

Userlist_enable=YES

Ftpusers 中用户允许访问

User_list 中用户允许访问

Userlist_enable=NO

Ftpusers 中用户禁止访问

User_list 中用户允许访问

Userlist_deny=YES

Ftpusers 中用户禁止访问(登录时可以看到密码输入提示,但仍无法访问)

user_list 中用户禁止访问

Userlist_deny=NO

ftpusers 中用户禁止访问

user_list 中用户允许访问

Userlist_enable=YES 并且

Userlist_deny=YES

Ftpusers 中用户禁止访问

User_list 中用户禁止访问(登录时不会出现密码提示,直接被服务器拒绝)

Userlist_enable=YES 并且

Userlist_deny=NO

Ftpusers 中用户禁止访问

User_list 中用户允许访问

配置FTP服务器的虚拟用户 
在vsftpd服务器中支持匿名用户,本地用户,和虚拟用户3类用户账号,用途及区别如下: 
匿名用户 是名为anonymous或ftp的FTP用户,匿名FTP用户登录后将FTP服务器中的/var/ftp作为FTP根目录。匿名用户通常用于提供公共文件的下载,如架设公共软件下载的FTP服务器,所有人都可以使用匿名用户进行软件下载。 
本地用户 账号是FTP服务器中的系统用户账号,使用FTP本地用户账号登录FTP服务器后,登录目录为本地用户的宿主目录。本地FTP用户账号通常和Web服务器一起提供虚拟主机服务,作为网页虚拟主机更新网页的途径。 
虚拟用户 账号是为了保证FTP服务器的安全性,由vsftpd服务器提供的非系统用户账号。虚拟用户FTP登录后将把指定的目录作为FTP根目录。虚拟用户与本地用户具有类似的功能,由于虚拟用户相对安全,因此正逐步替代本地用户账号。 
由于虚拟用户账号具有较高的安全性,可以替代本地用户账号使用,下面是vsftpd虚拟用户账号设置的几个步骤: 
以设置miket 和 john 两个虚拟用户帐号为例来配置vsftpd服务器 
(1) 建立虚拟用户口令库文件 
建立虚拟用户的口令文件,文件中奇数行设置虚拟用户的用户名,偶数行设置用户的口令。例如,使用vi编辑器建立名为logins.txt的用户口令库文件,在文件中设置用户mike的口令为pwabcd,用户john 的口令是pw1234: 
#vi logins.txt 
mike      ( 奇数行设置虚拟用户名) 
pwabcd   (偶数行设置用户口令) 
john 
pw1234 
:wq(保存退出) 
(2) 生成vsftpd 的认证文件 
使用db_load 命令生成认证文件。“-f”命令选项设置的值是虚拟用户的口令库文件,即上面创建的logins.txt。命令的参数设置为需要生成的认证文件名如 vsftpd_login.db,该文件放置在目录/etc/vsftpd/下: 
#db_load  -T  -t hash  –f  logins.txt  /etc/vsftpd_login.db   (生成认证文件) 
#file  /etc/vsftpd/vsftpd_login.db                            (查看文件类型) 
/etc/vsftpd/vsftpd_login.db:Berkeley DB (Hash,version  8 , native byte-order) 
生成的认证文件的权限应设置为只对root用户可读可写,即600: 
#chmod  600  /etc/vsftpd/vsftpd_login.db 
(3) 建立虚拟用户所需的PAM配置文件 
在/etc/pam.d目录下建立vsftpd虚拟用户身份认证所需的PAM配置文件,名称是vsftpd.vu,内容为: 
#cat /etc/pam.d/vsftpd.vu 
auth  required  /lib/security/pam_userdb.so  db=/etc/vsftpd/vsftpd_login 
account  required  /lib/security/pam_userdb.so  db=/etc/vsftpd/vsftpd_login 
(4) 建立虚拟用户及要访问的目录并设置相应的权限 
建立vsftpd虚拟用户所需的系统用户账号,账号名为virtual ,指定用户的宿主目录是/home/ftpsite, 设置宿主目录的权限为700: 
#useradd  -d  /home/ftpsite  virtual 
#chmod  700  /home/ftpsite/ 
这样vsftpd服务器中的所有虚拟用户账号登录后都将在/home/ftpsite目录中 
(5) 设置vsftpd.conf主配置文件 
在对vsftpd.conf配置文件进行修改之前,应先将原有的文件进行备份,以便出现配置错误时可进行恢复: 
#cd /etc/vsftpd 
#cp vsftpd.conf vsftpd.conf.bak 
在vsftpd.conf配置文件中添加虚拟用户的配置项,内容为: 
guest_enable=YES 
guest_username=virtual 
pam_service_name=vsftpd.vu 
(6) 重新启动vsftpd服务程序 
在对vsftpd.conf配置文件进行了任何修改后都需要重新启动vsftpd服务,以便配置生效: 
#service vsftpd restart 
(7) 测试vsftpd中的虚拟用户账号:mike 或 john 
在测试前可以先在/home/ftpsite目录中建立测试文件,用于测试时进行下载,并设置该文件的属主和属组为virtual 
#touch /home/ftpsite/afile 
#chown  virtual.virtual  /home/ftpsite/afile 
使用ftp命令登录vsftpd服务器,并使用已配置的虚拟用户帐号mike进行登录 
#ftp localhost 
name (localhost:root):mike 
password: 
ftp>get afile 
在完成虚拟用户的FTP登录后,可使用get命令下载测试文件,测试文件会保存到用户的当前目录中。 
(8) 对不同的虚拟用户设置不同的权限 
vsftpd服务器中的虚拟用户可以灵活的针对不同的用户账号设置不同的用户权限,配置的步骤如下: 
1.设置主配置文件 
在vsftpd.conf配置文件中添加user_config_dir配置项,并设置用户配置文件的保存目录 
user_config_dir=/etc/vsftpd_user_conf 
在上面的配置实例中,设置在/etc/vsftpd_user_conf目录中保存虚拟用户的配置文件 
2.建立用户配置文件目录 
使用mkdir命令建立虚拟用户配置文件的保存目录 
#mkdir  /etc/vsftpd_user_conf 
3.为虚拟用户建立单独的配置文件 
在/etc/vsftpd_user_conf/目录中可以为每个虚拟用户建立独立的配置文件,配置文件名称和用户名相同。例如,为用户mike建立配置文件mike ,并将anon_world_readable_only设置为NO,表示用户具有浏览和下载的权限 
#cat  /etc/vsftpd_user_conf/mike 
anon_world_readable_only=NO 
为用户john建立配置文件john,并设置该用户具有浏览,下载,上传,改名,删除文件,建立和删除的权限。 
#cat  john 
anon_world_readable_only=NO   --表示用户可以浏览FTP目录和下载文件 
anon_upload_enable=YES        --表示用户可以上传文件 
anon_mkdir_write_enable=YES   --表示用户具有建立和删除目录的权利 
anon_other_write_enable=YES   --表示用户具有文件改名和删除文件的权限 
通过对以上配置项的组合设置,vsftpd可以为每个虚拟用户配置不同的FTP权限,用户配置文件中没有的配置项将按照vsftpd.conf配置文件中的内容设置。

Ubantu下FTP服务器资源进行控制的更多相关文章

  1. 《Linux下FTP服务器搭建及FTP使用》

    .LOGAndy:mxtd114 <Linux下FTP服务器搭建> 0.root登录 1.安装ftp # yum -y install ftp 2.安装vsftpd # yum -y in ...

  2. SUSE下FTP服务器搭建

    FTP(File Transfer Protocol),是TCP/IP网络上两台计算机传送文件的协议,是在TCP/IP网络和Internet上最早使用的协议之一,属于网络协议组的应 用层.FTP客户机 ...

  3. 写给大忙人的centos下ftp服务器搭建(以及启动失败/XFTP客户端一直提示“用户身份验证失败”解决方法)

    注:个人对偏向于底层基本上拿来就用的应用,倾向于使用安装包,直接yum或者rpm安装:而对于应用层面控制较多或者需要大范围维护的,倾向于直接使用tar.gz版本. 对于linux下的ftp服务器,实际 ...

  4. linux系统下FTP服务器的安装和配置

    FTP是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.简单地说,支持FTP协议的服务器就是FTP服务器. PORT模式: 首先客户端开启一个非特权端口N(大 ...

  5. Windows server 2008系统下FTP服务器的安装

    一.在 Windows 服务器上安装 FTP 服务 1. 在"开始"菜单上,单击"管理工具",然后单击"服务器管理器". 2. 在" ...

  6. linux下FTP服务器搭建教程1

    你买了个主机就像是买了块地皮,搭建FTP就像是盖房子,我在地皮上建房子,然后创建的用户就像是钥匙,我给谁钥匙(权限),谁就可以到我家去玩,去放东西,拿东西. 虽然我们买不起现实的房子,但是我们可以买互 ...

  7. LNMP下FTP服务器的安装和使用(Pureftpd和Proftpd)

    FTP是网站文件维护中使用比较多的,目前LNMP一键安装包中有Pureftpd和Proftpd服务器安装脚本,LNMP默认不安装任何FTP服务器,需要用户自行安装(1.2开始不再提供proftpd的安 ...

  8. Windows下ftp服务器搭建及配置

    Win系统使用ser-u软件进行FTP服务器的搭建下载地址:https://www.serv-u.com/操作步骤如下:1. 点击执行程序进行按照SU-FTP-Server-Windows-v15.1 ...

  9. ubuntu16.04下ftp服务器的安装与配置

    由于要将本地程序上传至云服务器中,所以需要给云服务器端安装ftp服务器.记录一下ftp的安装过程,以便以后使用.服务器端所用系统为Ubuntu16.04. 1. 安装ftp服务器, apt-get i ...

随机推荐

  1. android 源码 中修改系统字体大小

    在源码\android\frameworks\base\core\java\android\content\res \Configuration.java下有读取DEFAULT_FONTSCALE的值 ...

  2. SQL Server常用元数据函数

    元数据函数 1.获取数据库标识符DB_ID DB_ID函数用于获取当前数据库的唯一ID(int数据类型),数据库ID用于服务器上唯一区分书库. 语法结构: DB_ID (['database_name ...

  3. 一、 使用存储过程实现数据分页(Sql Server 2008 R2)

    1.废话不多说了,直接上代码.调用这个存储过程只需要传递 表名,排序字段,搜索字段,以及页码,页码数量,搜索值(可空) create PROCEDURE NewPage --通用的分页存储过程,百万数 ...

  4. C++11静态assert

    [C++11静态assert] C++11新的关键字static_assert可以解决模板中的状态检察. 声明采取以下的形式: 这里有一些如何使用static_assert的例子: 当常数表达式值为f ...

  5. C#中位、字节等知识

    本文介绍C#中位.字节等知识. 1. 位(bit) 位(bit)有叫做比特,指二进制中的一位,是二进制的最小信息单位. bit也被称作小b,用b表示. 2. 字节(bytes) 8位表示一个字节. 由 ...

  6. Ubuntu下Android编译环境的配置

    从安装操作系统到编译程序结束,过程大致如下. 1. Ubuntu Linux操作系统安装软件包.使用 Ubuntu 14.04 Desktop系统.安装Linux系统到VMWare虚拟机上. 2. 完 ...

  7. Cisco ASA5500系列防火墙恢复IOS全过程

    擦除防火墙配置的命令是write erase而不是erase flash!当ASA5510的flash被erase后,如何将新的IOS拷贝到5510内呢? 如下:1. 当flash被erase后设备会 ...

  8. [iOS微博项目 - 3.2] - 发送微博

    github: https://github.com/hellovoidworld/HVWWeibo   A.使用微博API发送微博 1.需求 学习发送微博API 发送文字微博 发送带有图片的微博   ...

  9. [原创]mac终端前面的计算机名怎么改??

    1.修改-之前的名称 mac环境,系统 OS X Yisemite,打开终端, 执行下面命令“Tmp”是你想要改的电脑名称 sudo scutil --set HostName Tmp 执行前,执行后 ...

  10. GC:垃圾回收器简介

    Java堆内存被划分为新生代和年老代两部分,新生代主要使用复制和标记-清除垃圾回收算法,年老代主要使用标记-整理垃圾回收算法,因此java虚拟中针对新生代和年老代分别提供了多种不同的垃圾收集器,JDK ...