在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. [转] Python自动单元测试框架

    一.软件测试 大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必须要有相应的质量保证活动,而软件测试则是保证质量的关键措施.正像软件熵(software ...

  2. c++中获取字符cin,getchar,get,getline的区别

    http://www.imeee.cn/News/GouWu/20090801/221298.html cin.get()与getchar()函数有什么区别? 详细点..C++中几个输入函数的用法和区 ...

  3. air开发中的requestedDisplayResolution 扫盲

    app.xml里面requestedDisplayResolution 取值可以为high/standard, 如果为high表示设备跟ios声明它需要使用高清屏(其实就是需要最大分辨率) 这里我猜测 ...

  4. jszs 快速排序

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  5. 转】MyEclipse使用总结——MyEclipse10安装SVN插件

    原博文出自于: http://www.cnblogs.com/xdp-gacl/p/3497016.html 感谢! 一.下载SVN插件subclipse 下载地址:http://subclipse. ...

  6. MYSQL数据库性能调优之六:备份

    增量备份

  7. OpenGL复习要点

    [OpenGL要点复习] 1.和像素有关的信息(例如像素的颜色)组织成位平面 (bitplane)的形式,位平面又可以组织成帧缓冲区(framebuffer)的形式.位平面是一块内存区域,保存了屏幕上 ...

  8. ActiveX控件

    什么是ActiveX控件:一个进程内服务器,支持多种的COM接口.(可以理解为,一个COM接口是一个纯抽象基类,你实现了它,并且它支持自注册,就是一个ActiveX控件了)可以把ActiveX控件看做 ...

  9. Python基础 列表

    ---***---传送门---***--- 文档解释 def append(self, p_object): """ L.append(object) -> Non ...

  10. 10个经典的Java main 方法面试题

    1. 不用main方法如何定义一个类? 不行,没有main方法不能运行Java类. 在Java 7之前,你可以通过使用静态初始化运行Java类.但是,从Java 7 开始就不行了. 2. main() ...