FTP文件传输服务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FTP文件传输服务相关的知识,希望对你有一定的参考价值。
FTP文件传输服务FTP连接及传输模式
- 控制连接:TCP 21,用于发送FTP命令信息
- 数据连接:TCP 20,用于上传、下载数据
-
数据连接的建立类型:
- 主动模式:服务端从20端口主动向客户端发起连接
- 被动模式:服务端在指定范围内某个端口被动等待客户端连接
-
FTP传输模式
文本模式:ASCII模式,以文本序列传输数据
二进制模式:Binary模式,以二进制序列传输数据 -
FTP用户的类型
- 匿名用户:anonymous或ftp
- 本地用户:
帐号名称、密码等信息保存在passwd、shadow文件中 -
虚拟用户:
使用独立的帐号/密码数据文件常见的FTP服务器程序
- IIS、Serv-U
- wu-ftpd、Proftpd
-
vsftpd(Very Secure FTP Daemon)
-
常见的FTP客户端程序
- ftp命令
- CuteFTP、FlashFXP、LeapFTP、Filezilla
-
gftp、kuftp
-
vsftpd软件包
官方站点:http://vsftpd.beasts.org/
主程序:/usr/sbin/vsftpd
服务名:vsftpd
用户控制列表文件
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
主配置文件
/etc/vsftpd/vsftpd.conf -
常用的全局配置项
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地址的并发连接数
-
常用的匿名FTP配置项
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:限制最大传输速率(字节/秒)
-
常用的本地用户FTP配置项
local_enable=YES:是否启用本地系统用户 local_umask=022:本地用户所上传文件的权限掩码 local_root=/var/ftp:设置本地用户的FTP根目录 chroot_local_user=YES:是否将用户禁锢在主目录 local_max_rate=0:限制最大传输速率(字节/秒)
-
构建可匿名上传的FTP服务器
-
1.准备匿名FTP访问的目录
使匿名用户FTP对该目录有写入权限
[[email protected] ~]# chown ftp /var/ftp/pub/
[[email protected] ~]# ls -ld /var/ftp/pub/
drwxr-xr-x 4 ftp root 4096 02-24 10:36 /var/ftp/pub/
-
2.开放匿名用户配置,并启动vsftpd服务
[[email protected]]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=NO
write_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
-
[[email protected] vsftpd]# service vsftpd start
为 vsftpd 启动 vsftpd: [确定]
[[email protected] vsftpd]# netstat -anpt | grep "vsftpd"
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 8989/vsftpd
-
测试匿名FTP服务器
使用ftp客户端程序访问测试
[[email protected] ~]# ftp 192.168.4.11
Connected to 192.168.4.11.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.4.11:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
-
-
构建本地用户验证的FTP服务器
1.修改vsftpd.conf配置文件
启用本地用户访问
结合user_list文件灵活控制用户访问
2.重新加载vsftpd配置
[[email protected] ~]# vi /etc/vsftpd/user_list
laya
vanko
hunter
[[email protected]]# vi /etc/vsftpd/vsftpd.conf
……
userlist_enable=YES
userlist_deny=NO
[[email protected]]# service vsftpd reload
-
vsftpd服务的其他常用配置
1.修改vsftpd服务的监听地址、端口
[[email protected] ~]# vi /etc/vsftpd/vsftpd.conf
……
listen=YES
listen_address=192.168.4.11
listen_port=2121
-
2.允许使用FTP服务器的被动模式
[[email protected]]# vi /etc/vsftpd/vsftpd.conf
……
pasv_enable=YES
pasv_min_port=24500
pasv_max_port=24600
-
限制FTP连接的并发数、传输速率
[[email protected]]# vi /etc/vsftpd/vsftpd.conf
max_clients=20
max_per_ip=2
anan_max_rate=50000
local_max_rate=200000
-
构建基于虚拟用户的FTP服务
创建账号数据
1.建立虚拟FTP用户的帐号数据库文件
2.创建FTP根目录及虚拟用户映射的系统用户
3.建立支持虚拟用户的PAM认证文件
添加虚拟用户支持
4.在vsftpd.conf文件中添加支持配置
5.为个别虚拟用户建立独立的配置文件
启动服务并测试
6.重新加载vsftpd配置
7.使用虚拟FTP账户访问测试
-
创建账号数据
1.建立虚拟FTP用户的帐号数据库文件
建立虚拟用户的账户名、密码列表
[[email protected]]# vi /etc/vsftpd/vusers.list
mike
123
john
456
[[email protected]]# cd /etc/vsftpd/
[[email protected] vsftpd]# db_load -T -t hash -f vusers.list vusers.db
[[email protected] vsftpd]# file vusers.db
vusers.db: Berkeley DB (Hash, version 8, native byte-order)
[[email protected] vsftpd]# chmod 600 /etc/vsftpd/vusers.*
[[email protected] vsftpd]# ls -lh /etc/vsftpd/vusers.*
-rw------- 1 root root 12K 02-26 08:51 /etc/vsftpd/vusers.db
-rw------- 1 root root 18 02-26 08:48 /etc/vsftpd/vusers.list
-
2.创建FTP根目录及虚拟用户映射的系统用户
[[email protected]]# useradd -d /var/ftproot -s /sbin/nologin virtual
[[email protected]]# chmod 755 /var/ftproot/
-
3.建立支持虚拟用户的PAM认证文件
[[email protected]]# vi /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
-
添加虚拟用户支持
-
4.在vsftpd.conf文件中添加支持配置
[[email protected] ~]# vi /etc/vsftpd/vsftpd.conf
……
local_enable=YES
write_enable=YES
anon_umask=022
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu
-
5.为不同的虚拟用户建立独立的配置文件
在vsftpd.conf文件中添加用户配置目录支持
user_config_dir=/etc/vsftpd/vusers_dir
为用户mike、john建立独立的配置目录及文件
配置文件名与用户名相同
[[email protected] ~]# mkdir /etc/vsftpd/vusers_dir/
[[email protected] ~]# cd /etc/vsftpd/vusers_dir/
[[email protected] vusers_dir]# vi john
anon_upload_enable=YES
anon_mkdir_write_enable=YES
[[email protected] vusers_dir]# touch mike
-
启动服务并测试
6.重新加载vsftpd配置
service vsftpd reload
7.使用虚拟FTP账户访问测试
mike用户可以登录,并可以浏览、下载,但无法上传
john用户可以登录,并可以浏览、下载,也可以上传
匿名用户或其他系统用户将不能登录
以上是关于FTP文件传输服务的主要内容,如果未能解决你的问题,请参考以下文章