标签:vsftp
VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。
安全性是编写VSFTP的初衷,除了这与生俱来的安全特性以外,高速与高稳定性也是VSFTP的两个重要特点。
在速度方面,使用ASCII代码的模式下载数据时,VSFTP的速度是Wu-FTP的两倍,如果Linux主机使用2.4.*的内核,在千兆以太网上的下载速度可达86MB/S。
在稳定方面,VSFTP就更加的出色,VSFTP在单机(非集群)上支持4000个以上的并发用户同时连接,根据Red Hat的Ftp服务器的数据,VSFTP服务器可以支持15000个并发用户
1、它是一个安全、高速、稳定的FTP服务器;
2、它可以做基于多个IP的虚拟FTP主机服务器;
3、匿名服务设置十分方便;
4、匿名FTP的根目录不需要任何特殊的目录结构,或系统程序或其它的系统文件;
5、不执行任何外部程序,从而减少了安全隐患;
6、支持虚拟用户,并且每个虚拟用户可以具有独立的属性配置;
7、可以设置从inetd中启动,或者独立的FTP服务器两种运行方式;
8、支持两种认证方式(PAP或xinetd/ tcp_wrappers);
9、支持带宽限制;
VSFTP市场应用十分广范,很多国际性的大公司和自由开源组织在使用,如:Red Hat, Suse,Debian,OpenBSD。
vsftp ,从w没有处理文件编码转换windows客户端访问时有乱码现象。
解决办法:
1、使用vsftp的补丁,
2、转换服务器目录文件编码,linux下:
convmvfs /ftp/pub_gbk -o srcdir=/ftp/pub, icharset=utf8,ocharset=gbk的代码,那么访问/ftp/pub_gbk的时候文件名就都是GBK的了,windows下也就不会有乱码。
也可以用下面这个命令把文件名编码转换一下:
convmv -f UTF-8 -t GBK -r yourfile --notest
不用--notest选项,只显示转换后的结果,不对文件真正进行操作
3、windows不使用资源管理器、IE来访问服务器,使用FTP客户端工具来访问服务器,找能设置编码的FTP客户端,设置一下编码就可以了。
4、编码解决步骤
修改源代码文件opts.c
if (str_equal_text(&p_sess->ftp_arg_str,"UTF8 ON")) 更改成
if (str_equal_text(&p_sess->ftp_arg_str,"DISABLE UTF8 ON"))
ftp的响应码:
1xx: 信息
2xx:成功类的状态码
3xx:提示需进一步提供补充类信息的状态码
4xx:客户端错误
5xx:服务端错误
注意:ftp为明文传输的,所以在安全上可能会比较欠缺,如果想要安全的传输,可以使用sftp,ftps来实现,不过本文暂时还没有介绍。
ftps:基于ssl
sftp:基于ssh
看了上面那么多介绍,大家应该对VSFTP有些了解了,那么我们现在来开始安装VSFTP服务。
本次实验的环境为:
虚拟机:VMware Workstation 11
操作系统:CentOS 6.6
编辑程序:vim
安装程序:yum
连接程序:xshell 5
开始安装vsftp服务 yum -y install vsftpd 安装完成后可以查看,安装了哪些文件 rpm -ql vsftpd | less /etc/pam.d/vsftpd: 用户认证配置文件 /etc/rc.d/init.d/vsftpd: 服务脚本 /etc/logrotate.d/vsftpd: 日志脚本 /etc/vsftpd: 配置文件所在目录 vsftpd.conf: 主配置文件 其他文件都是跟用户控制相关的 /usr/sbin/vsftpd: 主程序 /var/ftp:匿名用户(映射为ftp用户)共享资源访问位置 ftp用户的默认目录为/var/ftp finger ftp:可以查看ftp用户的目录以及其他信息 系统用户通过ftp访问的资源的位置:用户自己的家目录 虚拟用户通过ftp访问的资源的位置:给虚拟用户指定的映射成为的系统用户家目录 然后查看防火墙是否开启 iptables -L -n 如果出现一下图片代表防火墙开启了,不一定与图片一模一样 如果不会配置防火墙就将防火墙关闭,否则不能连接服务。 防火墙关闭:service iptables stop,临时关闭防火墙 chkconfig iptables on,开机不启动防火墙
防火墙关闭之后,可以启动服务了 service vsftpd start 启动服务后查看是否启动成功了 ftp服务监控在21号端口 ss -tunl Netid State Recv-Q Send-Q Local Address:Port tcp LISTEN 0 32 *:21 本次是有监听21号端口了,代表服务已经启动成功了 启动成功开始测试服务,现在本机测试 可以使用lftp测试,如果没有安装lftp可以先安装 yum -y install lftp 测试: lftp 本机IP地址 如果是允许匿名登录的话,lftp将会不用输入帐号密码就会自动登录。 登录成功输入ls可以查看到本地文件 一般本机都可以测试成功。 在外部机上面测试,本次在实体主机上测试 win键+R出现运行窗口,输入cmd
输入 ftp 服务端IP地址 如下图代表也是测试成功的,能连接ftp了
到此我们的ftp就安装成功了,不过还不能完全使用,我们还要进行一些配置
配置vsftpd 主配置文件说明: 井号开头后面跟了空格的,都是注视 井号开头后面没跟空格的,都是选项 不能在选项前门加空格,否则语法错误 不能多任意空白字符 vim /etc/vsftpd/vsftpd.conf 我们这边就介绍下匿名用户配置与系统用户配置 匿名用户配置: anonymous_enable=YES: 是否启用匿名用户 anon_upload_enable=YES: 是否允许匿名用户上传 anon_mkdir_write_enable=YES:是否允许匿名用户创建 匿名用户不能创建目录与文件,所以不能上传数据。 匿名用户的根目录,又不能修改权限,因为vsftp不给修改,修改了就会被禁止启动。 需要在根目录下创建子目录,可以修改子目录属主属组 上传数据的时候,也要进入子目录上传 anon_other_write_enable=YES: 默认没有这一项,允许匿名用户具有建立目录,上传之外的权限,如重命名,删除 系统用户的配置: local_enable=YES: 是否允许本地用户 系统用户登录之后是系统用户的家目录,这样也可以访问etc之类的目录了 非常的不安全,不建议开启系统用户 write_enable=YES: 是否允许本地用户有写权限 开启:可以创建,修改,删除 local_umask=022: 代表文件上传上去之后修改成什么权限,这里是644,反向掩码 chroot_local_user=YES:禁锢所有的ftp本地用户与其家目录中,代表本地用户只能访问家目录 chroot_list_enable=YES: 启用list规则,list文件中的用户,都被禁锢,没写的都不禁锢 chroot_list_file=/etc/vsftpd/chroot_list 全局配置: dirmessage_enable=YES: 可以让用户登录后看到你想让他看到的信息。 需要在想让她看到信息的目录中建立一个.message文件 ascii_upload_enable=YES: 强制使用文本格式上传,不建议启用 asscii_download_enable=YES: 强制使用文本格式下载,不建议启用 ftpd-banner=Welcome to blah FTP service. : 登录ftp时的欢迎信息 日志: xferlog_enable=YES: 是否开启传输日志 xferlog_std_format=YES: 是否使用日志标准格式 xferlog_file=/var/log/xferlog:日志文件存放在哪 改变上传文件的属主: chown_uploads=YES: 是否改变上传文件的属主 chown_username=whoever: 属主改为whoever 连接时间: idle_session_timeout=600: 用户连接FTP空闲时长为600秒 data_connection_timeout=120: 数据连接超时时长为120秒 pam认证: pam_service_name=vsftpd.mysql: vsftpd使用pam完成用户认证,其用到的pam配置文件 /etc/pam.d/vsftpd: 这个文件中定义了用户访问vsftpd时用哪个pam模块做认证的 auth: 做认证的 account:做用户帐号是否在有效期检测的 session: 这认证通过了 required: 对这个认证的要求是怎么参考这个认证结果的,必须要过这关,这关不过结果就不通过 item=user: 代表这个文件中放的是用户名, sense=deny: 用户名出现在这个文件中,拒绝访问 file=/etc/vsftpd/ftpusers: 用户名存放的文件位置 onerr=succeed: 发生错误,直接终止 存放在文件中的用户名,是无法登录的。 userlist_enable=YES: 是否启用控制用户登录的列表文件 userlist_file=/etc/vsftpd/user_list: 定义userlist的文件,定义了userlist_deny路径就默认了。不需要另外另外添加userlist_file除非需要改地址 userlist_deny=YES|NO:定义userlist用户是能登录还是不能登录 tcp_wrappers=YES: 连接限制: max_clients: 最大并发连接数 max_per_ip: 每个IP可同时发起的并发请求数 传输速率: anno_max_rate: 匿名用户的最大传输速率,单位是“字节/秒” local_max_rate: 本地用户的最大传输速率 以上为匿名登录与系统用户登录的通用设置,可以按照自己的要求来设置。 我们这里就不一一举例了,就改几个简单匿名用户设置。 注意:设置好一次之后最好重启下服务来确认是否已经设置成功了 service vsftpd restart 设置匿名用户可以上传下载: anon_upload_enable=YES anon_mkdir_write_enable=YES anon_mkdir_write_enable=YES 设置完重启下就可以了。 注意:这边需要配置selinux,如果不会配置的就将selinux关闭,否则只能下载不能上传。 selinux关闭:setenforce 0 ,临时关闭 开机不启动: vim /etc/selinux/config:打开配置文件 将SELINUX=enforcing改为SELINUX=disabled
到此:vsftp就配置完成了,可以使用匿名用户登录ftp,进行下载上传操作了。
重要:ftp的配置不能有多余的空格,在配置开头如果出现空格,配置不会报错,但是会不生效,非常要注意。
标签:vsftp
原文地址:http://kmk0226.blog.51cto.com/5975994/1686952