vsftp工具是linux与类linux系统上常用的ftp传输工具,按百度上的说法,它的不同点与好处有九点,不明觉厉,有兴趣的可以深入验证:

  • 一、它是一个安全、高速、稳定的FTP服务器;
  • 二、它可以做基于多个IP的虚拟FTP主机服务器;
  • 三、匿名服务设置十分方便;
  • 四、匿名FTP的根目录不需要任何特殊的目录结构,或系统程序或其它的系统文件;
  • 五、不执行任何外部程序,从而减少了安全隐患;
  • 六、支持虚拟用户,并且每个虚拟用户可以具有独立的属性配置;
  • 七、可以设置从inetd中启动,或者独立的FTP服务器两种运行方式;
  • 八、支持两种认证方式(PAP或xinetd/ tcp_wrappers);
  • 九、支持带宽限制;
前言:在百度上搜集了部分资料,也踩了不少坑,整理部分简单的资料如下,方便日后搭建时查询:
 
1.安装:这部分就没什么好说的了,首先关闭selinux与防火墙,或者开放防火墙的ftp端口,安装则可以采用多种方式,自己下载包也可以,使用yum也可以:yum install vsftpd -y,值得一提的是,软件名称是vsftpd,启动或者停止:systemctl start/stop vsftpd(ubuntu用户系统上的vsftp,还需要删除/etc/pam.d/vsftp,才能正常使用)
2.创建用户:vsftp支持本地用户,但需要注意的是,创建的用户应该禁止其具有登陆系统的可能,具体的操作命令如下:
 
  useradd firstftp1 -d /opt/ftp1 -s /sbin/nologin
  passwd firstftp1
解释:firstftp1为用户名,-d指定用户的家目录(为了系统安全,最好不要将用户的目录创建在根目录下),-s /sbin/nologin禁止用户有登陆系统的权限,passwd firstftp1 为该ftp用户创建登陆密码。最后,值得一提的是,需要为ftp用户的家目录授予写入权限(755),这样才能正确的写入即上传文件。
补充一点:
  centos下ftp用户无法登录可能是因为/etc/pam.d/vsftpd文件的存在导致的,删除后再试,用户无法上传下载,试试给家目录777权限。

修改配置文件/etc/vsftpd/vsftpd.conf

chroot_local_user=YES
allow_writeable_chroot=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

/etc/vsftpd/chroot_list
在这个配置文件中添加用户,每个用户一行,则在这个文件里的用户登录ftp后,可以访问上级目录。
而不在这个配置文件中的用户只能访问自己的home目录。

                                                                (2020.04.08)

3.匿名用户的配置:以上便是创建一个正常的ftp用户的步骤,还有一种应用比较广泛的用法,匿名用户配置,接下来介绍一下匿名ftp用户的配置:
需要在/etc/vsftpd/vsftpd.conf的配置文件中修改/添加部分内容,具体如下:
anonymous_enable=YES //允许匿名访问
anon_root=/var/ftp/ //匿名者访问目录
anon_upload_enable=YES //允许匿名上传
anon_mkdir_write_enable=YES //允许匿名创建目录
anon_other_write_enable=YES //允许匿名删除重命名
anon_umask=073 //允许匿名下载

值得注意的地方是:配置文件修改后,还需要给/var/ftp目录,与/var/ftp/上传文件目录755的权限,才能正常的上传与匿名下载。

4.限制访问的配置:为vsftp配置用户限制访问,网上关于白名单与黑名单的配置较难理解,但是作为软件的使用者,并不需要了解其中的逻辑原理,会用就行了,下面就是傻瓜式操作准则,如果有兴趣研究,文章最后面有每行配置的意义,可以自己做实验验证。
限制用户访问别的目录:
chroot_local_user=YES //限制所有用户访问根目录
chroot_list_enable=YES //启用白名单
chroot_local_user=NO //不限制所有用户访问根目录
chroot_list_enable=YES //启用黑名单
chroot_list_file=/etc/vsftpd/chroot_list //黑白名单文件路径,需要手动创建
限制用户访问ftp:
userlist_enable=YES
userlist_deny=NO
/etc/vsftpd/ user_list文件为白名单
userlist_enable=NO
userlist_deny=YES
/etc/vsftpd/ user_list文件为黑名单

userlist_enable=NO时user_list无效;
userlist_enable=YES,userlist_deny=YES时:user_list是一个黑名单,在名单中的用户都会被拒绝登入。
userlist_enable=YES,userlist_deny=NO时:user_list是一个白名单,在名单中的用户才会被准许登入。

最后,附上vsftpd.conf中所有配置行的说明与额外可添加配置行说明:

 anonymous_enable=YES /允许匿名访问 12行
anon_upload_enable=YES /默认注释掉了,允许匿名用户上传 27行
anon_mkdir_write_enable=YES /默认注释掉了,允许匿名用户上传/建立目录 31行
anon_other_write_enable=YES /默认没有这一项,允许匿名用户具有建立目录,上传之外的权限,如重命名,删除
anon_root=/var/ftp /默认没有这一项
local_enable=YES /允许本地用户访问(/etc/passwd中的用户) 15行
write_enable=YES /允许写入权限,包括修改,删除 18行
local_umask= /本地用户文件上传后的权限是-rw-r--r-- 22行
本地用户上传最高权限为666,默认权限为666-=,即local_umask=
#anon_umask= /默认没有这一项,匿名用户上传后的权限是-rw-------。匿名用户上传的默认权限为600,即anon_umask=,匿名用户上传最大权限是666,这里权限是用666-=644方法得来的-rw-r--r--
anon_world_readable_only=YES /允许匿名用户浏览,下载文件,默认没有这一项,只有在虚拟用户的配置文件里才有用
dirmessage_enable=YES /是否显示目录说明文件, 默认是YES 但需要手工创建.message文件,这个.message,只有用命令登陆或者用工具,才可以看见,他不是一个弹出对话框,而是一段字符,如在pub下建立一个.message,那么在客户端进入pub目录时就会显示.message文档中的内容 35行
xferlog_enable=YES /记录使用者所有上传下载信息 38行
chown_uploads=YES /默认注释了,开启匿名用户上传用户映射,和下面一行一起使用 48行
chown_username=whoever /默认注释了,将匿名用户上传的文件的用户映射为whoever用户 49行
xferlog_file=/var/log/vsftpd.log /默认注释掉了这一项 51行
#将上传下载信息记录到/var/log/vsftpd.log中
connect_from_port_20=YES
#确保ftp-datad 数据传送使用port (20号端口)
idle_session_timeout= /默认注释掉了这一项 58行
#如果使用者600秒没有动作,则强制离线,也就是指令超时时间,
data_connection_timeout= /如果 client与 Server 间的数据传送在 秒内都无法传送成功,那 Client的联机就会被我们的 vsftpd 强制剔除! 62行
ftpd_banner=Welcome to blahFTP service. /ftp的欢迎信息 84行
banner_file=/etc/vsftpd/banner_file.txt /默认没有这一项,ftp的欢迎信息
#欢迎信息存放在banner_file.txt文件中,如果添加中文欢迎信息,就需要在xp中将此文件编辑好后上传到/etc/vsftpd 目录中。如果ftpd_banner和banner_file同时设置,那么banner_file将覆盖ftpd_banner的设置。
Listen_address=10.1.6.0 /默认没有这一项,禁止10.1.6.0段访问此FTP
chroot_list_enable=YES /禁固宿主目录,默认这一项注释掉了 95行
#限制使用者不能离开家目录,例如blue登陆后位于/home/blue下,设置该选项后,他不可以转到/home/blue的上层目录,如/bin, /usr,/opt...etc。
chroot_list_file=/etc/vsftpd/chroot_list /默认这一项注释掉了
#与上条同时使用,设置要禁固宿主目录的用户的配置文件为/etc/vsftpd/chroot_list 建立文本文件/etc/vsftpd/chroot_list,写入要禁固宿主目录的用户,一行一个。当chroot_list_enable=YES时,则禁固chroot_list文件里面的用户的宿主目录,而为NO时chroot_list文件里面的用户不禁固宿主目录。
tcp_wrappers=YES /默认没有这一项
#支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny)
xferlog_std_format=YES
listen=YES /109行
#使用standalone启动vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式) 108行
listen_port= /默认没有这一行
#ftp监听端口
pam_service_name=vsftpd /116行
#PAM所使用的名称.同userlist_*一样限制用户登陆,不同的是userlist_*在进行密码验证之前拒绝用户登陆,pam是在密码验证之后拒绝登陆.(提示密码错误) 用户列表默认存放在/etc/ftpusers中,一行一个. (可通过/etc/pam.d/vsftpd重定向用户列表存放文件)
#获得 /etc/pam.d/vsftpd:
#[root@LFSvsftpd-2.0.]#cp RedHat/vsftpd.pam/etc/pam.d/vsftpd
userlist_enable=YES / 为yes时, /etc/vsftpd/user__list文件中的用户将不能访问vsftpd服务器 117行
userlist_deny=YES /默认没有这一项,与下面这条参数:userlist_file=/etc/vsftpd/localuser_list 结合使用。
userlist_file=/etc/vsftpd/localuser_list /默认没有这一项, 与上面参数:userlist_deny=YES结合使用此参数用,来改变存放可以登录或禁止登录的账号,suerlist_deny为YES时,这里面的用户则不能登录,当为NO时,这里面的用户可以登录,和/etc/vsftpd/user_list是一个意思,
max_clients= /默认没有这一项
#最大用户在线数量
max_per_ip= /默认没有这一项
#每ip最大线程
anon_max_rate= /默认没有这一项
#匿名用户最大传输速度 单位: bytes/秒
local_max_rate= /默认没有这一项
#本地用户最大传输速度 单位:bytes/秒
user_config_dir=/etc/userconf /默认没有这一项
#个别用户配置目录(用来设定特殊帐号),例如我想让blue这个用户的传输速度是100KB
就可以在/etc/userconf/下创建文本文件blue(与用户名相同),加入local_max_rate=100000即可 /默认没有这一项
anon_root=/var/ftp /默认没有这一项
#设定匿名用户登陆后所在的目录
local_root=/var/local_user /默认没有这一项
#设定所有本地用户登陆后的目录,如不设置此项,则本地用户登陆后位于各自家目录下。
use_localtime=YES /默认没有这一项
#使用本地时间而不是GMT
nopriv_user=vsftpd /默认没有这一项

linux与ubuntu下vsftp的安装使用的更多相关文章

  1. Linux(Ubuntu)下MySQL的安装与配置

    转自:http://www.2cto.com/database/201401/273423.html 在Linux下MySQL的安装,我一直觉得挺麻烦的,因为之前安装时就是由于复杂的配置导致有点晕.今 ...

  2. Linux:Ubuntu下部署Web运行环境

    Linux:Ubuntu下部署Web运行环境 本次博客将会从三部分内容详述Ubuntu系统下Web运行环境的配置: 依次是:FTP服务器的搭建.MYSQL数据库的搭建.JDK的安装等. 参考文章如下: ...

  3. Linux (Ubuntu12.04) 下开发工具安装和使用

    Linux (Ubuntu12.04) 下开发工具安装和使用 这里讲述的是关于在ubuntu12.04下面安装和使用各种IDE 开发环境和初步使用的知识.说一下背景:很多的开发基本都是在linux操作 ...

  4. ubuntu下的openfire安装、配置、运行

    openfire服务器              Openfire 采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议.您可以使用它轻易的构建高效率的即时通信服务器.Op ...

  5. 2010-01-20 12:09 ubuntu下minicom的安装及使用

    转http://hi.baidu.com/npugtawqdnbgqrq/item/106f805409b42813db163527 ubuntu下minicom的安装及使用 安装: sudo apt ...

  6. ubuntu 下redis的安装简介

    Linux公社:https://www.linuxidc.com/topicnews.aspx?page=2&tid=2 简单介绍下ubuntu下redis的安装方式: 第一种: 1:进入re ...

  7. ubuntu下root和安装mysql

    sudo password创建新的root密码: 1.用当前登录用户打开终端,在终端输入命令 sudo passwd,输入当前用户的密码然后回车 2.会提示输入新密码,输入完成后回车(http://w ...

  8. Ubuntu下可以直接安装mingw(sudo apt-get install mingw32 mingw32-binutils mingw32-runtime,附例子,简单好用,亲测成功)good

    Mingw:在Linux系统下编译Windows的程序 Ubuntu下可以直接安装:sudo apt-get install mingw32 mingw32-binutils mingw32-runt ...

  9. Ubuntu下git的安装与使用

    Ubuntu下git的安装与使用 Ubuntu下git的安装与使用与Windows下的大致相同,只不过个人感觉在Ubuntu下使用git更方便. 首先,确认你的系统是否已安装git,可以通过git指令 ...

随机推荐

  1. Linux之恢复误删除文件

    前言每当我们在生产环境服务器上执行rm命令时,总是提心吊胆的,因为一不小心执行了误删,然后就要准备跑路了,毕竟人不是机器,更何况机器也有 bug.那么如果真的删除了不该删除的文件,比如数据库.日志或执 ...

  2. Mybatis XML映射文件

    mybatis为聚焦于SQL而构建,SQL映射文件常用的顶级元素如 resultMap,是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象. insert,映射插入语句 update, ...

  3. Linux下安装Redis以及遇到的问题

    参考链接:https://www.cnblogs.com/zdd-java/p/10288734.html https://www.cnblogs.com/uncleyong/p/9882843.ht ...

  4. 2019-2020-1 20199305《Linux内核原理与分析》第十二周作业

    缓冲区溢出漏洞实验 (一)何为缓冲区溢出漏洞 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于 ...

  5. 初识VEH链(用户异常派发的进一步探究)

    Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 初识VEH链(用户异常派发的进一步探究)  VEH链是进程处理异常 ...

  6. 代码这样写更优雅,15篇 Python 技术热文

    http://mp.weixin.qq.com/s?__biz=MzA4MjEyNTA5Mw==&mid=2652565527&idx=1&sn=840c1ce854afc29 ...

  7. 松软科技前端课堂:JavaScript 日期

    JavaScript 日期输出 默认情况下,JavaScript 将使用浏览器的时区并将日期显示为全文本字符串: Tue Apr 02 2019 09:01:19 GMT+0800 (中国标准时间) ...

  8. 关于mybtis 使用过程中发生There is no getter for property named 'id' in class 'java.lang.String' 错误

    今天在修改一个关于mybtis语句时,偶然发现的一个错误  There is no getter for property named 'id' in class 'java.lang.String' ...

  9. js 报错 Uncaught TypeError: Cannot read property 'trim' of undefined

    jquery Uncaught TypeError: Cannot read property 'trim' of undefined 报错原因及解决方案 $.trim() 函数用于去除字符串两端的空 ...

  10. IOS-dequeueReusableCellWithIdentifier的应用

    这是个uitableviewcell重用的函数.当一个列表中的布局相同只是数据不同时,我们可以重用我们的cell,不需要再重复创建.上面代码的意思是,先根据identifier去重用列表中找有没有可以 ...