Redhat5.4 下vsftp的安装及简单配置
1.FTP(文件传输协议):它的主要功能是在服务器与客户端之间进行文件的传输.它是以TCP数据包的模式进行服务器与客户端的连接.
2.FTP支持的工作模式有两种:主动连接与被动连接
1>主动连接:
FTP客户端随机开启一个大于1024的端口n,并且和服务器的21端口进行三次握手,建立连接,但这个连接只是控制连接,它可以通过这个连接对FTP服务器下达指令,但是不能进行数据的传输,如果要进行数据传输的话,FTP客户端会随机用一个端口通知FTP服务器,FTP服务器会启用自己的20端口与客户端进行连接,连接完成后才能进行数据的传输.
2> 被动连接
被动连接的控制连接是和主要连接一致的,只是在商户端要求传输数据时,商户端会传送一个PASV命令,通知服务器他们之间要建立被动连接,服务器收到命令后会开放一个大于1024的端口进行监听,并且会通知客户端,自己的端口号,客户端收到命令后,通过自身的随机端口与服务器开放的端口相连接,然后两者开始传输数据.
3.vsftp的简介与配置
1> vsftpd(Very Secure FTP ,非常安全的FTP)是一个基于GPL发布的类UNIX系上的FTP软件,它具有高安全性,高速与高稳定性的特性.
2> vsftp的安装
3> vsftp的认证用户
1>>匿名用户:vsftpd默认允许匿名用户以只读方式登录
2>>授权用户,授权用户是进行访问vsftpd时,必须输入密码的用户.它又包含两种:本地用户与虚拟用户
本地用户:即linux主机中/etc/passwd中的用户.
虚拟用户:vsftpd支持将用户及密码保存在本地数据文件,数据库,或LDAP中,虚拟用户只是FTP服务器的专有用户,它只能访问FTP服务器所提供的资源,增强了系统本身的安全性.
4>vsftpd下各文件的介绍
1>> /etc/vsftpd/vsftpd.conf
这个是主配置文件,各用户的权限的设置也是在这个文件中设置.
2>> /etc/pam.d/vsftpd
这个是vsftpd使用PAM模块时的相关配置文件,用来加强服务器用户认证.
3>> /etc/vsftpd.ftpusers
位于这个文件内的用户都不能访问vsftpd服务.
4>> /etc/vsftpd.user_list
这个文件中的用户为是否能够访问vsftpd,它取决于配置文件中的参数userlist_deny,如果为no,则只有此文件的用户才能访问vsftp,如果为yes,则此文件中的用户不能访问vsftp
5>> /var/ftp
vsftpd提供服务的文件的位置,也就是用户登录的后所处的目录.
5>vsftd配置文件的参数分为三个方面:
1>>与服务器环境相关的设定
2>>与实体用户相关的设定
3>>与匿名用户相关的设定
由于他们的参数比较多,所以就不在这一一介绍,可以参数另外一些书籍来查看,在下面的测试中会把经常使用的一些参数做一个简短的介绍.
示例1 要求:
1...允许匿名用户登录和本地用户登录
2...禁止匿名用户上传
3...允许本地用户上传和下载
4...能让本地用户code来登录ftp服务器,可以上传与下载,但是限制code用户只能在自己目录内操作
配置参数如下
参数释意
anonymous_enable=yes // 允许匿名账号登录
local_enable=yes //允许本地用户登录
write_enable=yes //允许非匿名用户上传文件到FTP服务器
local_umask=022 //授权用户上传文件的umask
anon_uoload_enable=no //不允许匿名用户上传文件
anon_mkdir_write_enable=no //不允许匿名用户在FTP上建立目录
dirmessage_enable=yes //用户在FTP服务器切换目录时显示欢迎信息,,可以在每个目录下建立一个.message的文件,里面放入欢迎信息
xferlog_enable=yes //指定用户使用的日志文件
connect_from_port_20=yes //使用20端口传输数据
xferlog_std_format=yes //使用标准日志文件来记录日志
chroot_local_user=yes //不允许所有用户离开自己的家目录
listen=yes //表示vsftp是以stand alone方式启动
pam_service_name=vsftpd //指定vsftpd使用的PAM模式的配置文件
userlist_enable=yes //指定vsftp将读取user_list参数指定的用户列表
userlist_deny=no //指定只有user_list中的用户才能登录vsftp服务器
tcp_wrappers=yes 是否允许tcp_wrappers管理
配置之后,将code写入到user_list中
测试:
以匿名用户登录
测试成功,不能上传文件
以code登录
允许上传,测试成功
错误分析
lftp 192.168.1.104:/> put install.log.syslog
put: Access failed: 553 Could not create file. (install.log.syslog)
这个说明要上传的目录没有可写的权限,为其加上写入权限即可
如chmod 757 /var/ftp/upload
lftp 192.168.1.104:~> put install.log
put: 登录失败: 500 OOPS: vsftpd: refusing to run with writable anonymous root
/var/ftp系统自动限制匿名用户不能有写权限的,如果要上传文件,可以在/var/ftp下创建一个目录,如/var/ftp/upload 再把这个目录的other权限加上可写的权限