简介
1、FTP是什么?
FTP是文件传输协议(File Transfer Protocal)的简写,主要完成与远程计算机的文件传输。
FTP存在服务器的概念,可以理解为文件服务器。也就存在权限的控制。然而权限的控制与SVN类似,除了授权账号外,多了一种“匿名访问”。匿名访问也就是FTP服务器向公众开放。通常匿名的权限较低,只能下载文件,不能上传文件。
2、FTP工作原理是什么?
FTP是一种CS架构,也就是客户端与服务端的交互。客户端与服务端之间利用TCP建立连接,默认端口为21,客户可以从服务器上下载文件,也可以把本地文件上传至服务器。上传与下载一般基于命令或者图形工具可实现,命令方式就不用举例,图形化工具推荐 Transmit。
3、FTP存在两种工作模式
主要是针对数据连接而言的。 主动模式:服务端主动向服务端发送请求;被动模式:服务端等待着客户端请求(也是默认的工作方式0)
服务器搭建
预习vsftpd工具
可以利用很好的开源工具 vsftpd(very secure ftp daemon,非常安全的FTP守护进程),重要是免费!!!比如传输速度快、安全性高、以及支持虚拟用户验证等其它FTP服务程序不具备的功能。该工具其它特点需自行细品。
安全性高:可控制用户权限、可通过chroot变更用户的根目录、基于GPL发布的FTP服务器软件,支持虚拟用户模式登陆。
传输速度快:传输模式基于文本模式(ASCII)与二进制模式(Binary),都是以序列传输数据。
虚拟用户模式搭建:(Linux系统)
1、安装工具(一般可通过yum来下载软件)
yum -y install vsftpd
安装成功(可通过修改vsftpd.conf配置,使用匿名模式访问完成简单的ftp服务器)
2、创建对应虚拟用户的根目录,可自定义目录地址。创建完之后需要对目录变更为虚拟用户权限。这时候通过linux命令来实现
#创建目录
mkdir \*\*
# 添加用户
useradd -s /sbin/nologin virtual
目录变更所有者权限: (ps: . 变更所有者与组权限, -R 所有目录当前目录下的父子目录)
chown virtual. /opt/ftp/ -R
3、创建虚拟用户及其数据库
a、虚拟用户文本存在格式问题,奇数行为用户名,偶数行为密码。
#创建文本命令
touch fileName.txt
vim filename.txt
b、虚拟用户名数据库关联来生成对应的db文件
db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
c、定义pam认证文件(注意:db=/etc/vsftpd/login 文件就是上面生成的login.db文件;省略后缀.db)
[root@VM-8-6-centos ~]# vim /etc/pam.d/ftp
[root@VM-8-6-centos ~]# cat /etc/pam.d/ftp
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
4、配置vsftpd.conf 文件
#禁止匿名登录FTP服务器
anonymous_enable=NO
#允许本地用户登录FTP服务器
local_enable=YES
#可以上传(全局控制)
write_enable=NO
#匿名用户可以上传
anon_upload_enable=NO
#匿名用户可以建目录
anon_mkdir_write_enable=NO
#匿名用户修改删除
anon_other_write_enable=NO
#全部用户被限制在主目录
chroot_local_user=YES
#2.3.5版本之后,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了
,需新增加下面这条配置
allow_writeable_chroot=YES
#将所有用户看成虚拟用户guest
guest_enable=YES
#指定虚拟用户,也就是将guest用户映射到virtual用户
guest_username=virtual
#指定为独立服务
listen=YES
#指定监听的端口
listen_port=21
#开启被动模式
pasv_enable=NO
#FTP服务器公网IP
pasv_address=106.55.172.70
#设置被动模式下,建立数据传输可使用port范围的最小值
pasv_min_port=10000
#设置被动模式下,建立数据传输可使用port范围的最大值
pasv_max_port=10088
#是否允许匿名用户下载全局可读的文件
anon_world_readable_only=NO
#指定虚拟用户配置文件的路径
user_config_dir=/etc/vsftpd/vusers_dir
5、创建虚拟用户目录
需要在其 vusers_dir 穿件对应虚拟用户的权限文件
以虚拟用户名为文件名。
drwxr-xr-x 3 root root 4096 1月 27 13:41 .
drwxr-xr-x. 104 root root 12288 1月 26 14:23 ..
-rw------- 1 root root 125 10月 14 00:10 ftpusers
-rw------- 1 root root 361 10月 14 00:10 user_list
-rw------- 1 root root 1200 1月 19 15:43 vsftpd.conf
-rw------- 1 root root 5114 1月 19 11:14 vsftpd.conf.bak
-rwxr--r-- 1 root root 338 10月 14 00:10 vsftpd_conf_migrate.sh
-rw------- 1 root root 12288 1月 19 15:34 vuser.db
#需要与配置文件 vsftpd.conf 对应
drwxr-xr-x 2 root root 4096 1月 19 15:41 vusers_dir
-rw-r--r-- 1 root root 35 1月 19 15:33 vuser.txt
[root@VM-8-6-centos vsftpd]# cd vusers_dir/
[root@VM-8-6-centos vusers_dir]# ls -al
总用量 20
drwxr-xr-x 2 root root 4096 1月 19 15:41 .
drwxr-xr-x 3 root root 4096 1月 27 13:41 ..
-rw-r--r-- 1 root root 163 1月 19 15:20 joey
-rw-r--r-- 1 root root 164 1月 19 15:40 joeyTest
-rw-r--r-- 1 root root 163 1月 19 15:41 joeyTest2
[root@VM-8-6-centos vusers_dir]# vim joey
[root@VM-8-6-centos vusers_dir]# cat joey
write_enable=YES
anon_world_readable_only=no
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022
local_root=/var/ftp/pub
6、启动vsftpd
serivce vsftpd start
完成以上操作基本ftp搭建完成,但还需要另外一台客户端机器测试(需拥有lftp命令支持)
#通过yum安装lftp命令
yum install lftp
#lftp 账户名称:密码@服务端IP地址 端口号(默认为21,非21端口需填写)
[root@localhost ~]# lftp joeyTest:[email protected]
lftp [email protected]:~> mkdir test3
mkdir 成功, 建立 `test3'
lftp [email protected]:/>