FTP文件传输服务


FTP连接方式

控制连接:21

数据连接:20 (只有在主动模式下才使用)

FTP连接模式

主动模式

被动模式

FTP传输模式

文本模式

二进制模式

(一般使用二进制模式传输时,文件不容易出错,特别在交换机和路由器上使用时,可使用binary切换成二进制模式)


FTP用户类型

系统用户

匿名用户(anonymous; ftp)

虚拟用户


linux主机上是通过vsftpd 软件包实现的.

主程序:/usr/sbin/vsftpd

服务名: vsftpd

主配置文件:/etc/vsftpd/vsftpd.conf

黑名单:/etc/vsftpd/ftpusers

控制列表: /etc/vsftpd/user_list


samba服务一样,vsftp配置格式:配置项= 参数

常用配置项:

全局

listen=YES:是否以独立运行的方式监听服务

listen_address=192.168.4.1:设置监听的IP地址

listen_port=21:设置监听FTP服务的端口号

write_enable=YES:是否启用写入权限

download_enable=YES:是否允许下载文件

userlist_enable=YES:是否启用user_list列表文件

userlist_deny=YES:是否禁用user_list中的用户

max_clients=0:限制并发客户端连接max_per_ip=0:限制同一IP地址的并发连接

connect_from_port_20=YES:允许服务器主动模式

pasv_enable=YES:允许被动模式

pasv_max(min)_port=2460:设置被动模式最大(最小)端口号

tcp_wrappers=YES:是否启用TCP_Wrappers主机访问控制

本地

local_enable=YES:是否启用本地系统用户

local_umask=022:本地用户所上传文件的权限掩码

local_root=/var/ftp:设置本地用户的FTP根目录

chroot_local_user=YES:是否将用户禁锢在主目录

local_max_rate=0:限制最大传输速率(字节/秒)

匿名

anonymous_enable=YES:启用匿名访问

anon_umask=022:匿名用户所上传文件的权限掩码

anon_root=/var/ftp:匿名用户的FTP根目录

anon_upload_enable=YES:允许上传文件

anon_mkdir_write_enable=YES:允许创建目录

anon_other_write_enable=YES:开放其他写入权

anon_max_rate=0:限制最大传输速率(字节/秒)


安装启动vsftpd服务后,就可以通过匿名和系统用户进行访问了,匿名用户访问的目录是/var/ftp,匿名用户是以系统用户ftp登陆的,/var/ftpftp的宿主目录。而使用普通系统系统用户进行访问时,默认访问的是该用户的宿主目录。

可以根据需要编辑配置文件vsftpd.conf,从而设置访问的权限。和samba服务陪置一样,每次配置vsftpd.conf,都需要重启或重新加载服务才能生效

servicevsftpd{ restart | reload }

基于安全考虑,FTP根目录的权限不允许有写入权限,否则在访问时会报错。


建立虚拟用户

建立虚拟用户数据库需使用db_load工具,由db4-utils软件包提供,需要先安装。

1.创建用户名和密码列表

vi /etc/vsftpd/vusers.list

tom

123

jack

456

......

(用户名和密码分行显示,每一行代表一个用户或密码,135...奇数行为用户名,246...偶数行为密码)

2.创建Berkeley DB格式的数据库文件 (加密的)

cd /etc/vsftpd(切换到vsftpd目录,方便操作)

db_load -T -t hash -f vusers.list vusers.db

-T :允许非Berkeley DB应用程序使用

-t :指定加密算法

-f :指定数据源文件

( vusers.db为生成的文件)

为了提高安全性,应将users.db文件权限设置文600,且删除原有的vuser.list文件,用户的宿主目录权限默认为700,所以需要调整权限以允许访问。

3.添加虚拟用户映射帐号

useradd -d /var/vsftp -s/sbin/nologin tom

-d :指定用户家目录,即FTP的根目录

-s :此帐号无需登录shell

(vsftpd配置中load_rootanon_root配置项需注释或删除)

4.为虚拟用户建立PAM认证文件

vi /etc/pam.d/vsftpd.vu

rhel6下搭建FTP文件传输服务_linux

5.修改vsftpd配置,添加虚拟用户支持

guest_enable=YES--启用用户映射

guest_username=tom--指定映射系统用户名

pam_service_name=vsftpd.vu --指定PAM认证文件

6.为不同的用户创建独立的配置目录和文件

以上步骤已经可以重启服务进行虚拟用户进行访问了,但若要实现不同的虚拟用户有不同的访问权限,可以为每个虚拟用户创建各自的配置文件来实现。

mkdir /etc/vsftpd/vusers_dir--创建目录

vsftpd.conf配置文件中指定

vi /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers_dir


/etc/vsftpd/vusers_dir/目录中添加与虚拟用户同名的配置文件,在vsftpd服务中,虚拟用户被作为匿名用户进行处理,因此配置项一般以anon_ 开头。

例:

vi /etc/vsftpd/vusers_dir/tom

anon_upload_enable=YES

anon_mkdir_write_enable=YES


注:在vsftpd.conf配置文件中添加user_config_dir配置项后,应该给每个用户都建立一个独立的配置文件(可以是空文件),否则该用户可能会无法登录。