Linux FTP文件传输服务

FTP连接及传输模式
控制连接:TCP 21,用于发送FTP命令信息
数据连接:TCP 20,用于上传、下载数据

数据连接的建立类型:
主动模式:服务端从 20 端口主动向客户端发起连接
被动模式:服务端在指定范围内某个端口被动等待客户端连接

FTP传输模式
文本模式:ASCII 模式,以文本序列传输数据
二进制模式:Binary 模式,以二进制序列传输数据

FTP 用户的类型
匿名用户:anonymous 或 ftp
本地用户:帐号名称、密码等信息保存在 passwd、shadow 文件中
虚拟用户:

Vsftpd 软件包
官方站点:http://vsftpd.beasts.org/
主程序:/usr/sbin/vsftpd
服务名:vsftpd
用户控制列表文件
/etc/vsftpd/ftpusers //黑名单
/etc/vsftpd/user_list //黑/白名单
主配置文件
/etc/vsftpd/vsftpd.conf

FTP 常用配置项

常用的全局配置项
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:限制最大传输速率(字节/秒)

1、匿名访问的FTP服务

①安装服务
②修改配置文件
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES //允许匿名访问
local_enable=NO //关闭本地用户访问
write_enable=YES //开放服务器的写入权限
anon_umask=022 //匿名用户上传数据的权限掩码(目录为777-022,文件为666-022)
anon_upload_enable=YES
anon_mkdir_write_enable=YES
③重启服务
service vsftpd restart

2、用户验证的FTP服务

①vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES //允许匿名访问
local_enable=YES //开启本地用户访问
write_enable=YES //开放服务器的写入权限
local_umask=077 //本地用户所上传文件的权限掩码
②使用user_list用户列表文件(黑/白名单)
vim /etc/vsftpd/user_list //添加benet和root用户
benet
root
③vim /etc/vsftpd/vsftpd.conf //在末尾添加以下两行内容
userlist_enable=YES //启用user_list用户列表文件
userlist_deny=NO //不禁用user_list列表中的用户(白名单)
=YES //禁用(黑名单)

3、基于虚拟用户的FTP服务

①vim /etc/vsftpd/vusers.list //①创建文本格式的用户名,密码列表
benet //奇数行为用户名
123 //偶数行为密码
abc
123
②cd /etc/vsftpd/
db_load -T -t hash -f vusers.list vusers.db //②创建Berkeley OB 格式的数据库文件(为了安全)
file vusers.db //查看转换后的文件类型
chmod 600 /etc/vsftpd/vusers.* //将文件权限设置为600以避免数据外泄
③useradd -d /var/ftproot -s /sbin/nologin benet //③添加虚拟用户的映射账号,创建FTP根目录
chmod 755 /var/ftproot/ //调整权限以允许浏览目录
④vim /etc/pam.d/vsftpd.vu //④为虚拟用户建立 PAM 认证文件
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
⑤vim /etc/vsftpd/vsftpd.conf //⑤修改vsftpd配置,添加虚拟用户支持
local_enable=YES //需映射本地用户,所以启用此项
write_enable=YES //启用上传写入支持
anon_umask=022 //指定上传权限掩码
guest_enable=YES //启用用户映射功能
guest_username=benet //指定映射的系统用户名称(第③新建的那个)
pam_service_name=vsftpd.vu //指定新的PAM认证文件(第④写的文件
⑥vim /etc/vsftpd/vsftpd.conf //为不同的虚拟用户建立独立的配置文件
usre_config_dir=/etc/vsftpd/vusers_dir
⑦mkdir /etc/vsftpd/vusers_dir/ //创建用户配置文件目录
cd /etc/vsftpd/vusers_dir/
vi benet //为用户benet建立独立的配置文件
anon_upload_enable=YES //可写入文件
anon_mkdir_write_enable=YES //可写入目录
anon_max_rate=1000 //访问速率为1KB/S

4、vsftpd 服务的其他常用配置

①修改vsftpd服务的监听地址,端口
vi /etc/vsftpd/vsftpd.conf
listen=YES //允许独立监听服务
listen_address=192.168.4.11 //只在一个接口监听服务
listen_port=2121 //监听端口改为2121
service vsftpd restart
netstat -anpt | grep “vsftpd” //确认vsftpd服务的监听情况
②允许使用FTP 服务器的被动模式
vim /etc/vsftpd/vsftpd.conf
pasv_enable=YES //允许被动模式连接
pasv_min_port=24500 //指定被动模式的下限端口
pasv_max_port=24600 //指定被动模式的上限端口
③限制FTP 连接的迸发数,传输速度
vim /etc/vsftpd/vsftpd.conf
max_clients=20 //限制并发客户连接最多20个
max_per_ip=2 //限制每个IP地址的连接数量最多两个
anan_max_rate=5000 //限制匿名用户传输速度为50KB/S
local_max_rate=20000 //限制本地用户传输速度为200KB/S

-------------本文结束感谢您的阅读-------------