主讲:张泽飞://ent.qq.com/a/20071202/000037.htm主讲:张泽飞FTP协议•文件传输协议(FileTransferProtocol,FTP)标准是在RFC959说明的。•FTP协议是一个客户机/服务器系统。•FTP协议定义了一个在远程计算机系统和本地计算机系统之间传输文件的一个标准。•FTP运行在OSI模型的应用层,并利用传输控制协议TCP在不同的主机之间提供可靠的数据传输。•由于TCP是一种面向连接的、可靠的传输协议,正是这种可靠性保证了FTP文件传输的可靠性。•FTP在文件传输中还具有的一个重要的特点,就是支持断点续传功能,这样做可以大幅度地减小CPU和网络带宽的开销。主讲:张泽飞FTP的数据传输模式•主动传输模式–FTP的数据连接和控制连接的方向是相反的,也就是说,是服务器向客户端发起一个用于数据传输的连接。客户端的连接端口是由服务器端和客户端通过协商确定的。•被动传输模式–FTP的数据连接和控制连接的方向是一致的,也就是说,是客户端向服务器发起一个用于数据传输的连接。客户端的连接端口是发起这个数据连接请求时使用的端口号。主讲:张泽飞FTP的典型消息语法错误,不可识别的命令500错误写文件452数据连接被关闭,传输被中断426不能打开数据连接425用户名OK,需要输入密码331数据传输完毕226命令OK200数据连接打开,传输开始125含义消息号主讲:张泽飞FTP服务的使用者•根据FTP服务器服务的对象不同可以将FTP服务的使用者分为三类:–本地用户(real用户)–虚拟用户(guest用户)–匿名用户主讲:张泽飞Linux环境下的FTP服务器•Wu-ftpd–历史最久的非商业ftp服务器程序之一–安全性较Proftpd和vsftpd差–Wu-ftpd的主页为•Proftpd–完全独立而完整、重新改写的FTPServer–为了追求一个安全且易于设定的FTPServer而编制的–Proftpd的主页为•vsftpd–编制者的初衷就是代码的安全性–性能稳定且速度快–vsftpd的主页为主讲:张泽飞安装并启动vsftpd•安装–#rpm–ivhvsftpd-1.1.3-8.i386.rpm•启动和停止–#servicevsftpdstart–#servicevsftpdstop–#servicevsftpdrestart主讲:张泽飞ReHatAS4中vsftpd的配置文件•/etc/vsftpd/vsftpd.conf–主配置文件•/etc/pam.d/vsftpd–vsftpd的PAM配置文件•/etc/vsftpd.ftpusers–指定了哪些用户不能访问FTP服务器。•/etc/vsftpd.user_list–当在/etc/vsftpd/vsftpd.conf中设置了userlist_enable=YES且userlist_deny=NO时,仅仅允许/etc/vsftpd.user_list中指定的用户访问FTP服务器。主讲:张泽飞RedHat9.0中vsftpd的默认配置•查看RedHat9.0中的默认配置–#grep-v#/etc/vsftpd/vsftpd.conf•默认配置说明–允许匿名用户和本地用户登录;–匿名用户的登录名为ftp或anonymous,口令为一个Email地址;–匿名用户不能离开匿名服务器目录/var/ftp,且只能下载不能上传;–本地用户的登录名为本地用户名,口令为此本地用户的口令;–本地用户可以离开自家目录切换至有权访问的其他目录,并在权限允许的情况下进行上传/下载;–写在文件/etc/vsftpd.ftpusers中的本地用户禁止登录。–要使用户在下载文件时能够续传文件,必须保证文件对其他用户有读的权限。主讲:张泽飞配置访问速度和每客户的连接数限制•设置最大传输速率限制•例如下面的配置:•local_max_rate=50000•anon_max_rate=30000•将使本地用户的最大传输速率为50kbytes/sec,匿名用户的最大传输速率为30kbytes/sec。•设置每客户的连接数限制•例如下面的配置:•max_per_ip=3•将指明每个客户机的最大连接数为3。主讲:张泽飞配置允许匿名用户上传•允许匿名用户上传–anon_upload_enable–anon_mkdir_write_enable•注意–只有设置anon_world_readable_only=NO后,才能开放匿名用户的读权限,即:浏览此服务器中全部的内容。–续传必须添加如下的配置语句•anon_other_write_enable=YES–匿名用户对/var/ftp/incoming目录而言是其他用户,所以必须为此目录添加对其他用户的可写权限才可上传,即此目录权限的数字表示是707主讲:张泽飞配置chroot•如果希望用户登录后不能切换到自家目录以外的目录,则需要设置chroot选项,涉及如下选项:–chroot_local_user–chroot_list_enable–chroot_list_file•有两种设置chroot的方法:–1.设置所有的本地用户执行chroot,只要将chroot_local_user的值设为YES即可,即:•chroot_local_user=YES–2.设置指定的用户执行chroot需要如下的设置:•chroot_local_user=NO•chroot_list_enable=YES•chroot_list_file=/etc/vsftpd.chroot_list•这样,只有/etc/vsftpd.chroot_list文件中指定的用户才可以执行chroot。主讲:张泽飞配置基于本地用户的访问控制•限制指定的本地用户不能访问,而其他本地用户可访问–userlist_enable=YES–userlist_deny=YES–userlist_file=/etc/vsftpd.user_list–使文件/etc/vsftpd.user_list中指定的本地用户不能访问FTP服务器,–而其他本地用户可访问FTP服务器。•限制指定的本地用户可以访问,而其他本地用户不可访问–userlist_enable=YES–userlist_deny=NO–userlist_file=/etc/vsftpd.user_list–使文件/etc/vsftpd.user_list中指定的本地用户可以访问FTP服务器,–而其他本地用户不可以访问FTP服务器。