ftp一般用于公网上做为文件服务器,当然也可以做局域网的文件服务器。ftp服务器有两种模式:主动模式和被动模式。

主动模式:ftp开发21端口用于命令传输,然后用20端口去连接客户端大于1024的随机端口。

被动模式:ftp开发21端口用于命令传输,在进行数据传输时客户机告诉服务器打开一个大于1024的随机端口,然后客户端主动去连接服务器。

主动ftp对ftp服务器的管理是有利的,但对客户端口管理是不利的,因为服务端主动与客户端建立连接,可能会被客户端的防火墙给过滤掉。

被动ftp对ftp客户端口的管理是有利,对服务器管理是不利的,因为客户端主动与服务端去连,可能会被服务端的防火墙给阻塞掉。

折衷的办法就是使用被动的方式,然后指定一个连接端口的范围。这样就可以在规定的范围内做个防火墙设置。

在linux上vsftp的运行方式有两种:stand alone和super daemon,就是vsftpd独自运行或者是xinet.d来运行。

vsftp有两个匿名用户名:ftp和anonymous,默认都是不需要密码的。

要使vsftp只支持主动模式或者是被动模式就要在配置文件上添加指定的参数。

默认就是开启主动模式的,也可以添加参数来使它开启主动模式:

port_enable=yes 开启主动模式

connect_from_port_20=yes 当主动模式开启的时候,是否启用默认的20端口监听。

ftp_date_port=number 当上面的选项用NO参数时,指定主动传输数据的端口号。

被动模式要添加的参数是:

pasv_enable=yes 开启被动模式

pasv_min_port=number 被动模式最低端口

pasv_max_port=number 被动模式最大端口

普通用户在登录的时候是直接登录到家目录,匿名用户是登录到ftp的家目录下的pub文件夹上面,也可以通过local_root或者anon_root来指定本地用户和匿名用户所登录的目录。

在配置ftp的时候要同时考虑到配置文件和系统对文件夹的权限,它们共同影响着用户对上传下载删除等操作。

是否允许本地用户登录到vsftp可以修改local_enable或者在/etc/passwd用户所在的最后一列进行修改:

/bin/bash    --可以登录系统,也可以登录ftp,也可以收邮件

/sbin/nologin  --不可以登录系统,但可以登录ftp,也可以收邮件

/bin/false    --又不可以登录系统,又不可以登录ftp,也可以收邮件

在vsftp上pam默认会把uid小于500的用户给禁用掉,所以你要在/etc/pam.d/vsftpd把sense=deny改为allow,然后把/etc/vsftpd/ftpusers里不想禁用的用户去掉。同时还要把/etc/vsftpd/user_list里也去掉,或者是在配置文件里把userlist_enable=no和userlist_deny=no注销掉。

在vsftp里可以用笼环境来让用户不能够自由的切换目录。只需要添加:

chroot_list_enable=yes

chroot_list_file=/etc/vsftpd/chroot_list就可以了。然后把要设置的用户添加进去就行了。只是针对普通用户(匿名用户除外)

这是通过vsftpd自己来运行的,也可以同过xinetd.d来运行vsftp。

在/etc/xinetd.d下面添加一个文件vsftpd然后把一下内容添加进去:

service ftp

{

 socket_type     = stream

 protocol        = tcp

 wait            = no

 user            = root

 server          = /usr/sbin/vsftpd

 disable         = no

}

然后重启一下xinetd就可以了。其它的配置跟vsftp自己运行是一样的。