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自己运行是一样的。