Linux(CentOS)下VSFTP服务的配置

123 篇文章 0 订阅
117 篇文章 0 订阅

作者:天心蓝

转自:http://blog.csdn.net/zhong36060123/article/details/8807849


1、Vsftp简介

vsftp是一个基于GPL发布的类Unix系统上使用的ftp服务器软件,全称是Very Secure FTP,从此名称可以看出来,编制者的初衷是代码的安全。

 

2、vsftp安装及vsftp服务的配置文件

2.1 vsftp的安装

通常,vsftp不会自动安装,需要我们自己安装,可以自己下载来安装,但自带安装包里会有,通过Add/Remove Software添加vsftpd包就可以了。

2.2 vsftp配置文件说明(作为说明,可跳过)

vsftp服务的配置文件默认位于/etc/vsftp/文件夹中,主要包括用户控制列表文件(ftpusers, user_list)和主配置文件(vsftpd.conf)。

ftpusers和user_list文件中包含一份FTP用户的列表,两个文件虽然都用于FTP用户的控制,但是具体作用存在一些差异
ftpusers文件:该文件包含的用户账户将被禁止登录vsftp服务器,不管该用户是否在user_list文件中出现。通常将root,bin,daemon等特殊用户在该文件中,禁止用于登录FTP服务
user_list文件:该文件中包含的用户账户可能被禁止登录,也可能被允许登录,具体在主配置文件vsftpd.conf中决定。当存在“userlist_enable=YES”配置项时,user_list文件生效,如果配置“userlist_deny=YES”则仅禁止列表中的用户账户登录,如果配置“userlist=deny=NO”则仅允许列表中的用户账户登录
ftpusers文件为vsftpd服务器提供了一份用于禁止登录的FTP用户列表,而user_list文件提供了一份可灵活控制的FTP用户列表。二者相互结合,为FTP用户控制提供了良好的基础。

vsftpd.conf常见配置项及含义说明

作用范围 配置项及示例 含义说明
匿名用户

anonymous_enable=YES 是否允许匿名访问
anon_umask=022 设置匿名用户所上传文件的默认权限掩码值
anon_root=/var/ftp 设置匿名用户的FTP根目录(缺省为/var/ftp)
anon_upload_enable=YES 是否允许匿名用户上传文件
anon_mkdir_write_enable=YES 是否允许匿名用户有创建目录的写入权限
anon_other_write_enable=YES 是否允许匿名用户有其他写入权限。如对文件改名,覆盖及删除文件
anon_max_rate=0 限制匿名用户的最大传输速率(0为无限制)单位为字节

本地用户

local_enable=YES 是否允许本地系统用户访问
local_umask=022 设置本地用户所上传文件的默认权限掩码值
local_root=/var/ftp 设置本地用户的FTP根目录(却省为用户的宿主目录)
chroot_local_user=YES 是否将FTP本地用户禁止在宿主目录中
local_max_rate=0 限制本地用户的最大传输速率(0为无限制)单位为字节

全局配置

listen=YES 是否以独立运行的方式监听服务
listen_port=21 设置监听FTP服务的端口号
write_enable=YES 启用任何形式的写入权限(如上传,删除文件等)都需要开启此项
download_enable=YES 是否允许下载文件(建立仅限于浏览,上传的FTP服务器是可将其设为NO)
dirmessage_enable=YES 用户切换进入目录时显示.message文件(如果存在)的内容
xferlog_enable=YES 启用xferlog日志,默认记录到“/var/log/xferlog”文件
xferlog_std_format=YES 启用标准的xferlog日志格式,若禁用次选项,将使用vsftp自己的日志格式
connect_from_port_20=YES 允许服务器主动模式(从20端口建立数据连接)
pasv_enable=YES 允许被动模式连接
pasv_max_port=24600 设置用于被动模式的服务器最大端口号
pasv_min_port=24500 设置用于被动模式的服务器最小端口号
pam_service_name=vsftpd 设置用户认证的PAM文件位置(/etc/pam.d/目录中对应的文件名)
userlist_enable=YES 是否启用user_list用户列表文件
userlist_deny=YES 是否禁止user_list列表文件中的用户账号
max_per_ip=0 对来自相同IP地址的客户端,最多允许多个并发连接(0为无限制)
tcp_wrappers=YES 是否启用TCP_Wrappers主机访问控制
匿名FTP:访问匿名FTP服务器时不需要密码,只需要用户名“ftp”或“anonymous”即可通过验证。当需要提供公开访问的文件下载资源(如[url=ftp://ftp.redhat.com]ftp.redhat.com[/url]),或者上用户上传一些无需保密的数据资料时,可以选择搭建匿名FTP服务器。
匿名用户对应的系统账号为ftp,其宿主目录为“/var/ftp”该目录也就是匿名用户访问vsftp服务时所在的根目录(可以通过anon_root配置项更改)。将其中pub子目录的属主修改为ftp,保留其可写权限,可提供给匿名用户上传文件使用。命令如下:

[root@linux ~]# ls -dl /var/ftp/pub/                                      //查看vsftp的根目录权限
drwxr-xr-x 2 root root 4096 2009-12-04 /var/ftp/pub/
[root@linux ~]# chown ftp /var/ftp/pub/                           //修改根目录的属主
[root@linux ~]# ls -dl /var/ftp/pub/                                     //修改后的结果
drwxr-xr-x 2 ftp root 4096 2009-12-04 /var/ftp/pub/

3、设置防火墙端口

FTP服务器默认使用TCP协议的20、21端口与客户端进行通信。21端口用于建立控制连接,并传输控制命令,20端口用于建立数据连接,并传输文件数据。而Linux系统默认下没有开启这两个端口,因此需要修改/etc/sysconfig/iptables文件,用root命令修改iptables配置文件,添加如下红色部分,注意,只添加红色部分,其他的不要动。

-A RH-Firewall-1-INPUT-p icmp --icmp-type any -j ACCEPT

-ARH-Firewall-1-INPUT -p 50 -j ACCEPT

-ARH-Firewall-1-INPUT -p 51 -j ACCEPT

-ARH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT

-ARH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT

-ARH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT

-ARH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-ARH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp--dport 21 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp--dport 20 -j ACCEPT

-ARH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT

-ARH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT

-ARH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT

-ARH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

-ARH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

-ARH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT

-ARH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-ARH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

-ARH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

 

此外,还要修改/etc/sysconf/iptables-config文件,修改IPTABLES_MODULES="" 为 IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp",然后重启防火墙即可。命令如下:service iptables restart,如果不修改/etc/sysconf/iptables-config文件,会出现这种状况,可以正常登陆ftp,但是不能上传或下载,甚至使用ls命令都不可以,例如当你使用命令行登陆ftp:

$ ftp202.205.84.163

……

230 Login successful

Remote system type is UNIX

Using binary mode to transfer files

ftp> ls

227 Entering Passive Mode(…)

ftp:connect:No route to host。

换句话说,当你出现ftp:connect:Noroute to host问题时,就要修改/etc/sysconf/iptables-config文件。

4、配置vsftp.conf文件

[root@linux ~]# vim /etc/vsftpd/vsftpd.conf                   //修改主配置文件
anonymous_enable=YES                                                         //允许匿名用户访问
local_enable=NO                                                    //若不需要启用本地用户,可以将此项设置为NO
write_enable=YES                                       //允许开放写入权限
anon_umask=022                                         //设置匿名用户上传建立文件时的权限掩码
anon_upload_enable=YES                         //允许匿名上传文件
anon_mkdir_write_enable=YES                        //允许匿名用户创建目录
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=NO                                               //未启用本地用户时,可以将用户列表功能禁用
tcp_wrappers=YES

…..上下配置文件中以#开头的注释文全为略过

5、修改/etc/selinux/config文件

SELINUX=Disabled   #这样就把selinux服务器关掉了,重启系统或者使用命令source /etc/selinux/config使selinux配置生效。如果不修改该文件,就会发现无论是匿名用户还是本地用户,都无法上传文件。换句话说,当遇到无法上传文件时,如果目录权限没有问题,就应该是selinux服务器启用着了,selinux服务器的作用请看其他资料。

6、vsftp启动和停止

做完前面的配置后,就可以启动vsftpd服务了,其实安装完vsftpd就可以启动的,这么写主要是不想重复写或者提高效率。

使用service vsftpd start、service vsftpdstop、service vsftpd restart来对vsftp启动、停止和重启。也可以通过“/etc/init.d/vsftpd”脚本可以控制vsftp服务的启动和终止,或手动执行“/usr/sbin/vsftpd”程序。

7、一些实例说明

7.1、匿名用户的下载

匿名用户默认是可登陆,可下载。Vsftpd的默认主目录是/var/ftp,且主目录的权限使755,文件权限百度查看http://zhidao.baidu.com/question/168415347.html,如果把目录权限改成750,则匿名用户登录,既看不到文件也下载不了。

 

在我们的服务器中,匿名用户可以下载downloadpub目录下的文件,upload是供匿名用户上传用的。即downloadpub的权限是775upload的权限是777downloadhour所有,pubroot所有。hourycduan设置为同属于hour用户组,这三个用户可以对download进行上传和下载、删除等,其他用户只能下载。设置upload的一个目的是考虑到可能要求提交作业等情况,后面可以根据情况设置,匿名用户可上传下载,但不能删除。

 

7.2、匿名用户的上传

设置/etc/vsftpd/vsftpd.conf的字段如下

anonymous_enable=YES

anon_upload_enable=YES        允许匿名用户上传文件

anon_mkdir_write_enable=YES       允许匿名用户创建目录

 

#ftp 202.205.84.163

Connected to 202.205.84.163

220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (10.1.1.35:root): ftp
331 Please specify the password.
Password: --ftp用户的默认密码也是ftp

ftp>?                           #问号去查看命令帮助

ftp>help ls                   #看命令的帮助,help+空格+某一命令

ftp>ls                          #ls命令显示ftp服务端目录的信息

ftp>!ls                         # !ls命令显示ftp客户端目录的信息

ftp>cd upload              #cd命令用于在ftp服务端目录的切换

ftp>lcd   /etc               #lcd命令用于在ftp客户端目录的切换

ftp>put inittab              #put命令用于上传文件,如本命令,表示上传/etc/inittab至/var/ftp/upload,ftp的put命令不支持绝对路径。

ftp>cd /var/ftp/download

ftp>get hello.c             #get命令用于下载文件,如本命令,表示下载download目录下的hello.c文件到客户端目录下。

7.3、允许匿名用户下载刚上传的文件

默认下,匿名用户是无法下载匿名用户上传的文件的,此时需要一些改变。

方法一:

Vim /etc/vsftpd/vsftpd.conf

添加一行:anon_world_readable_only=NO

重启服务:service vsftpd restart

方法二:

Vim /etc/vsftpd/vsftpd.conf

把local_umask=022改为local_umask=0222

重启服务。

8、配置vsftpd的要点

1)开启ftp的端口号,或者关闭防火墙。通常前者,否则访问不了
2)selinux关闭,否则上传不了文件
3)配置文件正确配置
4)目录权限的正确设置

9、其他

其他配置请见参考资料。

 

 

参考资料:

http://bbs.51cto.com/topic/thread-811192.html

http://hi.baidu.com/dspace/blog/item/a3eef603546c11f909fa935c.html

http://zhidao.baidu.com/question/53971257.html

 

http://apps.hi.baidu.com/share/detail/15533820

http://www.linuxdiyf.com/viewarticle.php?id=169922

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值