CentOS 6.3下vsftpd的简单使用教程

CentOS 6.3下vsftpd的简单使用教程

 

1、关于vsftpd的基本知识

(1)什么是vsftpd?参考百度百科,http://baike.baidu.com/view/1806035.htm

(2)FTP用户的3种身份:实体用户(real user)、访客(guest)和匿名登录者(anonymous)

a. 实体用户(real user):一般是Linux系统上的用户,也是FTP用户,登录FTP需要密码

b. 访客(guest):不是Linux系统的用户,而是FTP用户,登录FTP需要密码

c. 匿名登录者(anonymous):不是Linux系统的用户,而是FTP用户,登录FTP不需要密码

 

2. 安装vsftpd

[root@localhost ~]# yum install vsftpd

 

3、启动vsftpd服务

 
  1. [root@localhost ~]# service vsftpd start

  2. Starting vsftpd for vsftpd: [ OK ]

  3. [root@localhost ~]# service vsftpd status

  4. vsftpd (pid 30196) is running...

在Chrome中打开ftp://主机IP,该网络地址默认指向的是/var/ftp目录,如下

4、vsftpd的软件组织

 

/etc/vsftpd/vsftpd.conf

主配置文件

/usr/sbin/vsftpd

vsftpd的可执行文件

/etc/rc.d/init.d/vsftpd

启动脚本

/etc/pam.d/vsftpd

PAM认证文件

/etc/vsftpd/ftpusers

禁止使用vsftpd的用户列表文件

/etc/vsftpd/user_list

禁止或允许使用vsftpd的用户列表

/var/ftp

匿名用户主目录

/var/ftp/pub

匿名用户的下载目录

 

5、分析和修改/etc/vsftpd/vsftpd.conf文件

(1)先备份vsftpd.conf文件

[root@localhost ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup

 

(2)查看vsftpd的版本和vsftpd.conf文件的配置说明

 
  1. [root@localhost ~]# vsftpd -v

  2. vsftpd: version 2.2.2

  3. [root@localhost ~]# man vsftpd.conf

 

(3)默认vsftpd.conf文件的配置(删除了多余的注释)

 
  1. [root@localhost ~]# cat -n /etc/vsftpd/vsftpd.conf

  2. 1 anonymous_enable=YES

  3. 2 local_enable=YES

  4. 3 write_enable=YES

  5. 4 local_umask=022

  6. 5 dirmessage_enable=YES

  7. 6 xferlog_enable=YES

  8. 7 connect_from_port_20=YES

  9. 8 xferlog_std_format=YES

  10. 9 listen=YES

  11. 10 pam_service_name=vsftpd

  12. 11 userlist_enable=YES

  13. 12 tcp_wrappers=YES

  14. [root@localhost ~]#

以上默认配置实现如下的功能:

a. 可以使用anonymous这个匿名账号或其他实体账号(/etc/passwd)登录

b. anonymous的默认目录在/var/ftp,且无上传权限,也已经被chroot了

c. 实体用户的默认目录参考/etc/passwd,并没有被chroot,可前往任何有权限即可进入的目录中

d. 任何于/etc/vsftpd/ftpusers内存在的账号均无法使用vsftpd

e. 可利用/etc/host.{allow|deny}来作为基础防火墙

f. 当客户端有任何上传/下载信息时,该信息会被记录到/var/log/vsftpd.log中

g. 主动式连接的端口为20

h. 使用格林威治时间(GMT)

(参考鸟哥的私房菜^_^)

 

(4)我的个人修改(在默认的基础上),如下

 
  1. [root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

  2.  
  3. # The default settings created by vsftpd

  4. anonymous_enable=YES

  5. local_enable=YES

  6. write_enable=YES

  7. local_umask=002

  8. dirmessage_enable=YES

  9. xferlog_enable=YES

  10. connect_from_port_20=YES

  11. xferlog_std_format=YES

  12. listen=YES

  13. pam_service_name=vsftpd

  14. userlist_enable=YES

  15. tcp_wrappers=YES

  16.  
  17. # ---Added by wesley---

  18.  
  19. # Use local time

  20. use_localtime=YES

  21.  
  22. # Welcome information

  23. banner_file=/etc/vsftpd/welcome.txt

  24.  
  25. # Enable chroot and locate chroot_list file

  26. chroot_list_enable=YES

  27. chroot_list_file=/etc/vsftpd/chroot_list

  28.  
  29. # Make all real users chroot and let users in chroot_list not be chroot

  30. # If comment the line, the users in chroot_list will be chroot (It's tricky!)

  31. chroot_local_user=YES

  32.  
  33. # Defeine maximum clients to use ftp

  34. max_clients=10

  35.  
  36. # Define maximum connections per ip address

  37. max_per_ip=5

  38.  
  39. # Relocate real users' ftp homes to specific folders

  40. # By default, real users' ftp homes is /home/<username>

  41. user_config_dir=/etc/vsftpd/userhomes

  42.  
  43. # ---End---

(a)use_localtime=YES:使用本地时间。

(b)chroot_list_enable=YES:启用chroot,用户登录将锁定其ftp主目录,不能切换到其他目录。

(c)chroot_list_file=/etc/vsftpd/chroot_list:当只有chroot_local_user=NO(或者没有这一行时),在chroot_list文件(需要手动创建)中的用户,是被chroot的,用户登录将锁定其ftp主目录;而chroot_local_user=YES,在chroot_list文件中的用户,是不被chroot的,用户登录后可以任意切换目录。

(d)chroot_local_user=YES:YES或NO时,触发chroot_list中的用户允许或不允许chroot。

(e)max_clients=10:限制FTP连接数最大为10

(f)max_per_ip=5:限制每个IP最多使用5个FTP连接

(g)user_config_dir=/etc/vsftpd/userhomes,自定义一个用户配置目录,该目录存放每个实体用户(real user)的用户名命名的文件,例如/etc/vsftpd/userhomes目录下创建一个test文件,当然test用户是存在的,在test文件中写入一行local_root=/var/ftp/pub,那么test用户登录FTP时,ftp主目录自动定位到/var/ftp/pub,而不是原来的/home/test。

(h)local_umask=002:当FTP用户创建文件或文件夹时,要用到该umask值。这里比默认的配置,增加了组用户写权限。

问题处理:

 vsftpd:是linux自动的ftp服务器。

         查看状态 service vsftpd status, 启动:service vsftpd start 停止:service vsftpd stop

         配置文件:/etc/vsftpd/vsftpd.conf   关键项:ascii_upload_enable=YES   ascii_download_enable=YES//使用assci传输还是bin传输

                     ascii传输会将换行符进行转换,bin传输所有字节不变动。

                                           日志配置:xferlog_file=/var/log/xferlog   xferlog_enable=YES  xferlog_std_format=YES,打开将在/var/log中有xferlog 日志否则只在message中记录简单

                                         登陆情况。

         =================服务端介绍完毕=======================

        编写客户端连接时分为主动模式(PORT)和被动模式(passive),就是ftp服务器主动连接客户端建立数据链路,还是等待客户端连接。

      服务端默认开启21端口,客户端连接后作为命令链路,可以通过发送PASV命令告诉服务端被动模式,则服务端会创建一个随机端口返回给客户端

      等待客户端连接,主动模式则需要客户端发送PORT命令,告诉服务端本地的建立的端口号,由ftp服务端连接。

   ===================客户端原理介绍完毕==============

     发生的问题是:在发送PORT 命令时的格式,对于小段机器要发送 PORT IP,端口低8位,端口高8位,而大端机器要发送PORT IP,端口高8位,端口低8位

                          注意ip中的每一个位要使用,分割。组成XX,XX,XX,XX,lport,hport\r\n

                             在linux机器上我们传输了后面的,这样导致我们客户端能够bind成功,发送PORT端口也是成功的,但是服务总是返回连接无法建立的情况(425)。

                              当然这种情况还要考虑防火墙iptables,看是否服务端能够连接到这个端口。

                       所以在以后的问题中一定要注意大端小段的问题。

                      发送的每个命令都要加上\r\n ,如"list \r\n",返回文件列表

     主动模式: ftp服务端主动连接客户端端口,会引起无法控制的风险。

     被动模式:客户端连接服务端端口,服务只需要开放有限端口,数据责任有客户端负责。 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值