一、简介Vsftp的两种工作模式:
(1) PORT(主动模式)
PORT中文称为主动模式,工作的原理: FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据,原理如下图:
主动模式
(2) PASV(被动模式)
PASV是Passive的缩写,中文成为被动模式,工作原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输,原理如下图:
被动模式
总结:两种模式的比较- 从上面的运行原来看到,主动模式和被动模式的不同简单概述为: 主动模式传送数据时是“服务器”连接到“客户端”的端口;被动模式传送数据是“客户端”连接到“服务器”的端口。
- 主动模式需要客户端必须开放端口给服务器,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。
- 被动模式只需要服务器端开放端口给客户端连接就行了。
二、安装过程:
1.)简易安装
1.[root@hwg1227 /]# rpm -qa | grep vsftp 2.[root@hwg1227 /]# yum install vsftpd* -y 3.[root@hwg1227 /]# rpm -ql vsftpd 4.[root@hwg1227 /]# cd /etc/vsftpd 5.[root@hwg1227 vsftpd]# ll total 20 -rw-------. 1 root root 125 Mar 1 2013 ftpusers -rw-------. 1 root root 361 Mar 1 2013 user_list -rw-------. 1 root root 4599 Mar 1 2013 vsftpd.conf -rwxr--r--. 1 root root 338 Mar 1 2013 vsftpd_conf_migrate.sh 6.[root@hwg1227 vsftpd]# cp vsftpd.conf vsftpd.conf.bak 7.[root@hwg1227 vsftpd]# vi vsftpd.conf 8. [root@hwg1227 vsftpd]# cat vsftpd.conf.bak |grep -v ^# anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
9.[root@hwg1227 vsftpd]# cat vsftpd.conf.bak |grep -v ^# >vsftpd.conf /将ftp配置文件过滤导入到vsftpd.conf下
10.[root@hwg1227 vsftpd]# vi vsftpd.conf 11.[root@hwg1227 vsftpd]# /etc/init.d/vsftpd start Starting vsftpd for vsftpd: [ OK ] 12.[root@hwg1227 vsftpd]# netstat -tnlp 13.[root@hwg1227 vsftpd]# netstat -tnlp | grep vsftpd 14.[root@hwg1227 vsftpd]# ps -ef |grep vsftpd /查看ftp进程 15.[root@hwg1227 vsftpd]# cd /var/ftp/pub /ftp的共享目录路径
16.在我的电脑输入ftp://192.168.0.26
share
17.到此初步的FTP共享设置完成。
2.)VSFTP虚拟用户配置:
在home 目录下创建3个用户 hr admin it 并设置密码
1.[root@hwg1227 /]# cd /home 2.[root@hwg1227 home]# mkdir vsftpd 3.[root@hwg1227 home]#cd vsftpd 4.[root@hwg1227 vsftpd]# mkdir hr admin it 5.[root@hwg1227 vsftpd]# ll total 12 drwxr-xr-x. 2 root root 4096 Apr 16 21:23 admin drwxr-xr-x. 2 root root 4096 Apr 16 21:23 hr drwxr-xr-x. 2 root root 4096 Apr 16 21:23 it
6.在home目录下创建一个loguser.txt文件,然后再安装一个认证加密的软件pam db4
7.[root@hwg1227 home]# cat loguser.txt hr hr01 admin ad01 it it01 8.[root@hwg1227 home]# yum -y install pam* db4* 9.[root@hwg1227 home]# db_load -T -t hash -f /home/loguser.txt /etc/vsftpd/vsftpd_login.db /生成加密文件 10.[root@hwg1227 home]# ll /etc/vsftpd/ 总计 36 -rw------- 1 root root 125 2013-01-09 ftpusers -rw------- 1 root root 361 2013-01-09 user_list -rw------- 1 root root 233 04-17 09:17 vsftpd.conf -rw------- 1 root root 4579 04-17 09:16 vsftpd.conf.bak -rwxr--r-- 1 root root 338 2013-01-09 vsftpd_conf_migrate.sh -rw-r--r-- 1 root root 12288 04-17 09:29 vsftpd_login.db
11.[root@hwg1227 home]# chmod 600 /etc/vsftpd_login.db /给文件600权限(设置一下数据库文件的访问权限)
12.配置PAM文件,编辑文件/etc/pam.d/vsftpd.vu文件。
[root@hwg1227 home]# ll /etc/pam.d/ -rw-r--r-- 1 root root 97 2007-03-15 system-config-nfs -rw-r--r-- 1 root root 118 2009-09-03 system-config-samba -rw-r--r-- 1 root root 97 2010-01-27 system-config-securitylevel -rwxr-xr-x 1 root root 118 2010-03-31 system-config-services -rw-r--r-- 1 root root 329 2013-01-09 vsftpd [root@hwg1227 vsftpd]# ll /etc/pam.d/vsftpd -rw-r--r-- 1 root root 329 2013-01-09 /etc/pam.d/vsftpd 13. [root@hwg1227 vsftpd]#vi /etc/pam.d/vsftpd 14.[root@hwg1227 vsftpd]# cat /etc/pam.d/vsftpd /这里主机是32位的 如果是64位是/lib64/security/pam_userdb.so #%PAM-1.0 auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login session optional pam_keyinit.so force revoke auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so auth include system-auth account include system-auth session include system-auth session required pam_loginuid.so
15.为虚拟用户创建本地系统用户,新建一个系统用户vsftpd,用户家目录为/home/vsftpd, 用户登录终端设为/bin/false(即使之不能登录系统)
[root@hwg1227vsftpd]# useradd vsftpd -d /home/vsftpd -s /bin/false [root@hwg1227 vsftpd]# chown -R vsftpd:vsftpd /home/vsftpd [root@hwg1227 home]# ll 总计 16 -rw-r--r-- 1 root root 36 04-17 09:21 loguser.txt drwxr-xr-x 5 vsftpd vsftpd 4096 04-17 09:20 vsftpd drwxr-xr-x 2 root root 4096 04-10 20:47 zl 16.[root@hwg1227 home]# vi /etc/vsftpd/vsftpd.conf listen=YES
#使vsftpd处于独立启动监听端口模式
anonymous_enable=NO
#禁止匿名用户访问
dirmessage_enable=YES
#激活目录信息,当远程用户更改目录时,将出现提示信息
xferlog_enable=YES
#启用上传和下载日志功能
xferlog_file=/var/log/vsftpd.log
#日志文件存放目录
xferlog_std_format=YES
#是否使用标准的ftpd xferlog日志文件格式
chroot_local_user=YES
#设置所有的本地用户可以chroot
guest_enable=YES
#访客模式开启
guest_username=vsftpd
#访客使用的系统账号
user_config_dir=/etc/vsftpd/vsftpd_user_conf
#用户的配置文件
pam_service_name=vsftpd
#认证用户的数据库文件
local_enable=YES
#开启本地用户
17.[root@hwg1227 home]# mkdir /etc/vsftpd/vsftpd_user_conf 18.[root@hwg1227 home]# cd /etc/vsftpd/vsftpd_user_conf 19.[root@hwg1227 vsftpd_user_conf]# touch hr admin it 20.[root@hwg1227 vsftpd_user_conf]# cat hr local_root=/home/vsftpd/hr [root@hwg1227 vsftpd_user_conf]# cat amin local_root=/home/vsftpd/admin [root@hwg1227 vsftpd_user_conf]# cat it write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/home/vsftpd/it 21.[root@hwg1227 vsftpd_user_conf]# cd /home/vsftpd/hr [root@hwg1227 hr]#touch abc.txt [root@hwg1227 hr]#echo "this is hr files" >abc.txt [root@hwg1227 admin]# touch def.txt [root@hwg1227 admin]# echo "this is admin files" >def.txt [root@hwg1227 it]#touch ggc.txt [root@hwg1227 it]#echo "this is admin files" >ggc.txt
22.在浏览器输入ftp://192.168.0.26来测试安装的正确性,到此处安装结束。
总结有时候在工作时需要临时传递一些文件需要使用FTP的方式共享文件也是挺方便的,2种模式的共享方式各有优缺点,最重要的事你选择最快最正确的方式来完成工作才是关键。
,