简介linux
一、FTP是什么?数据库
FTP是文件传输协议(File Transfer Protocal)的简写,主要完成与远程计算机的文件传输。vim
FTP存在服务器的概念,能够理解为文件服务器。也就存在权限的控制。然而权限的控制与SVN相似,除了受权帐号外,多了一种“匿名访问”。匿名访问也就是FTP服务器向公众开放。一般匿名的权限较低,只能下载文件,不能上传文件。centos
二、FTP工做原理是什么?安全
FTP是一种CS架构,也就是客户端与服务端的交互。客户端与服务端之间利用TCP创建链接,默认端口为21,客户能够从服务器上下载文件,也能够把本地文件上传至服务器。上传与下载通常基于命令或者图形工具可实现,命令方式就不用举例,图形化工具推荐 Transmit。服务器
三、FTP存在两种工做模式架构
主要是针对数据链接而言的。 主动模式:服务端主动向服务端发送请求;被动模式:服务端等待着客户端请求(也是默认的工做方式0)工具
服务器搭建测试
预习vsftpd工具ui
能够利用很好的开源工具 vsftpd(very secure ftp daemon,很是安全的FTP守护进程),重要是免费!!!好比传输速度快、安全性高、以及支持虚拟用户验证等其它FTP服务程序不具有的功能。该工具其它特色需自行细品。
安全性高:可控制用户权限、可经过chroot变动用户的根目录、基于GPL发布的FTP服务器软件,支持虚拟用户模式登录。
传输速度快:传输模式基于文本模式(ASCII)与二进制模式(Binary),都是以序列传输数据。
虚拟用户模式搭建:(Linux系统)
一、安装工具(通常可经过yum来下载软件)
yum -y install vsftpd
安装成功(可经过修改vsftpd.conf配置,使用匿名模式访问完成简单的ftp服务器)
二、建立对应虚拟用户的根目录,可自定义目录地址。建立完以后须要对目录变动为虚拟用户权限。这时候经过linux命令来实现
#建立目录 mkdir \*\* # 添加用户 useradd -s /sbin/nologin virtual
目录变动全部者权限: (ps: . 变动全部者与组权限, -R 全部目录当前目录下的父子目录)
chown virtual. /opt/ftp/ -R
三、建立虚拟用户及其数据库
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
四、配置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
五、建立虚拟用户目录
须要在其 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
六、启动vsftpd
serivce vsftpd start
完成以上操做基本ftp搭建完成,但还须要另一台客户端机器测试(需拥有lftp命令支持)
#经过yum安装lftp命令 yum install lftp #lftp 帐户名称:密码@服务端IP地址 端口号(默认为21,非21端口需填写) [root@localhost ~]# lftp joeyTest:joey123@127.0.0.1 lftp joeyTest@127.0.0.1:~> mkdir test3 mkdir 成功, 创建 `test3' lftp joeyTest@127.0.0.1:/>