关于作者
周李杰 ,最后一批90后,现居湖北武汉
孤独患者,懒癌中期,无脑幻想者。但却人畜无害,无需远离。
兴趣众多,然无一精通。正努力成为一个有趣的人。
1 2 > print("👆以上是不完整的我") //请我吃大餐将会了解更多 >
[TOC]
FTP简介 网络文件共享服务主流的主要有三种,分别是ftp 、nfs 、samba
FTP :文件传输协议 (英文:F ile T ransfer P rotocol,缩写:FTP ) 是用于在网络 上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议 的应用层 。文件传送(file transfer)和文件访问(file access)之间的区别在于:前者由FTP提供,后者由如NFS等应用系统提供。
FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登录进程。
在使用FTP时候,用户经常会遇到两种概念:
将自己电脑上的文件拷贝到远端主机上
从远端主机拷贝文件到自己的电脑上面
FTP架构 FTP工作于应用层,它监听tcp的21号端口,是一种c/s架构的应用程序。其有多种客户端和服务端的应用程序
客户端工具
ftp
liftp,lftpget
wget,curl
filezilla
gftp(linux GUI)
商业软件(flashftp,cuteftp)
服务端软件
wu-ftpd
proftpd(提供web接口的一种ftp服务端程序)
pureftp
vsftpd(Very Secure)
ServU(windows平台的一种强大ftp服务端程序)
FTP数据连接模式 ftp有2种数据连接模式:
命令连接:是指文件管理类命令,始终在线的持久性连接,直到用户退出登录为止
数据连接:是指数据传输,按需创建及关闭的连接
数据传输格式:
数据传输模式:
主动模式:由服务器端创建数据连接
被动模式:由客户端创建数据连接
主动模式下
客户端以大于1023的随机端口去连接ftp服务端的21号端口
1024 –> 21 建立命令连接
服务端以自己的20号端口去连接客户端建立命令连接时的端口+1的端口号
20 –> 1025 建立数据连接
被动模式下
客户端以一个随机端口(1110)来连接服务器端的21号端口,之后服务器会返回一个告知客户端连接服务端的哪个端口号
1110 –> 21 (告知客户端连接哪一个端口)
客户端以创建命令连接的端口+1 (1110 + 1)的端口号去连接服务器端通过命令连接告知自己的一个随机端口号来创建数据连接
1111 –> (服务端告知自己的端口)
注意:
主动模式有个弊端,因为客户端的端口是随机的,如果客户端开了防火墙,那么服务器端去连接客户端创建数据连接时就可能会被拒绝。
用户认证 FTP的用户主要有三种:
虚拟用户:仅用于访问某特定服务中的资源
系统用户:可以登录系统的真实用户
匿名用户
vsftpd vsftpd安装 1 2 3 4 5 6 [root@client111 ~] ........ 已安装: vsftpd.x86_64 0:3.0.2-22.el7 完毕!
vsftpd配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@client111 ~] drwxr-xr-x. 2 root root 88 6月 27 15:45 /etc/vsftpd [root@client111 ~] -rw-------. 1 root root 5030 8月 3 2017 /etc/vsftpd/vsftpd.conf [root@client111 ~] -rw-r--r--. 1 root root 335 8月 3 2017 /etc/pam.d/vsftpd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 anonymous_enable=YES 启用匿名用户登陆 anon_upload_enable=YES 允许匿名用户上传 anon_mkdir_write_enable=YES 允许匿名用户创建目录,但是不能删除 anon_other_write_enable=YES 允许匿名用户创建和删除目录 local_enable=YES 启用本地用户登陆 write_enable=YES 允许本地用户有写权限 local_umask=022 通过FTP上传文件的默认遮罩码 chroot_local_user=YES 禁锢所有FTP本地用户只能在其家目录中 chroot_list_enable=YES 开启禁锢文件列表;需要与chroot_list_file参数一起使用 chroot_list_file=/etc/vsftp/chroot_list 指定禁锢列表文件路径;在此文件里面的用户将被禁锢在其家目录中 allow_writeable_chroot=YES 允许被禁锢的用户家目录有写权限 xferlog_enable=YES 是否启用传输日志,记录FTP传输过程 xferlog_std_format=YES 传输日志是否使用标准格式 xferlog_file=/var/log /xferlog 指定传输日志存储的位置 chown_uploads=YES 是否启用改变上传文件属性的功能 chown_username=whoever 指定要将上传的文件的属主改为哪个用户,此用户必须在系统中存在 pam_service_name=vsftpd 指定vsftp使用/etc/pam.d下的哪个pam配置文件进行用户认证 userlist_enable=YES 是否启用控制用户登陆的列表文件:默认为/etc/vsftpd/user_list文件 userlist_deny=YES 是否拒绝userlist指定的列表文件中存在的用户登陆FTP max_cients=` max_per_ip=` anon_max_rate 匿名用户的最大传输速率,单位是‘字节/秒’ local_max_rate 本地用户的最大传输速率,单位是‘字节/秒’ dirmessage_enable=YES 启用某目录下的.message描述信息 message_file 设置访问一个目录时获得的目录信息文件的文件名,默认是.message idle_session_timeout=600 设置默认的断开不活跃session的时间 data_connection_timeout=120 设置数据传输超时时间 ftpd_banner="Welcome to chenlf FTP service." 定制欢迎信息,登陆FTP时自动显示
vsftpd虚拟用户配置
虚拟用户的配置:
所有的虚拟用户会被统一映射为一个指定的系统账号,访问的共享位置即为此系统账号的家目录
各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定
虚拟用户账号的存储方式:
文件:编辑文件,此文件需要为编码hash格式 。
关系型数据库的表中:
通过即时查询数据库完成用户认证
mysql库:pam要依赖于pam_mysql软件,可以通过epel源yum安装
vsftpd虚拟用户的配置步骤:
1 2 3 4 5 6 7 8 9 10 11 12 [root@client111 ~] [root@client111 yum.repos.d] [root@client111 yum.repos.d] [root@client111 yum.repos.d] name=CentOS-$releasever - Plus - 163.com baseurl=http://mirrors.163.com/centos/$releasever /centosplus/$basearch / gpgcheck=1 enabled=1 gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7 [root@client111 yum.repos.d] [root@client111 yum.repos.d] [root@client111 yum.repos.d]
1 2 3 4 5 6 7 8 9 10 11 12 13 [root@client111 yum.repos.d] [root@client111 vsftpd] [root@client111 vsftpd] 123 123321 abc 123321 [root@client111 vsftpd] id: 123: no such user [root@client111 vsftpd] id: abc: no such user
使用db4工具将刚才编辑的vu.list转换成数据库文件(vu.db)
1 2 3 4 5 6 7 -T 表示转换 -t 表示加密方式使用hash 算法加密 [root@client111 vsftpd] [root@client111 vsftpd] ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh vu.db vu.list [root@client111 vsftpd] vu.db: Berkeley DB (Hash, version 9, native byte-order) vu.list: ASCII text
1 2 3 4 [root@client111 vsftpd] [root@client111 vsftpd] -rw-------. 1 root root 12288 6月 27 17:16 vu.db -rw-------. 1 root root 22 6月 27 17:08 vu.list
1 2 3 4 5 6 7 [root@client111 vsftpd] [root@client111 vsftpd] [root@client111 /] drwx------. 3 vftp vftp 78 6月 27 17:32 file [root@client111 /] [root@client111 /] drwxr-xr-x. 3 vftp vftp 78 6月 27 17:32 file
1 2 3 [root@client111 pam.d] [root@client111 pam.d] vsftpd vsftpd.bak
1 2 3 4 5 [root@client111 pam.d] [root@client111 pam.d] auth required pam_userdb.so db=/etc/vsftpd/vu account required pam_userdb.so db=/etc/vsftpd/vu
1 2 3 4 [root@client111 pam.d] [root@client111 pam.d] guest_enable=YES guest_username=vftp
1 2 3 4 [root@client111 pam.d] [root@client111 pam.d] user_config_dir=/etc/vsftpd/vusers_dir allow_writeable_chroot=YES
上述配置配置完成之后,转到/etc/vsftpd/vusers_dir目录中为每个虚拟用户分别建立配置文件
1 2 3 4 5 [root@client111 pam.d] [root@client111 pam.d] [root@client111 vusers_dir] [root@client111 vusers_dir] [root@client111 vusers_dir]
设置虚拟用户123能上传和下载,而abc可以上传文件和创建目录、以及下载。
1 2 3 4 5 6 7 [root@client111 vusers_dir] [root@client111 vusers_dir] [root@client111 vusers_dir] anon_upload_enable=YES [root@client111 vusers_dir] anon_upload_enable=YES anon_mkdir_write_enable=YES
1 [root@client111 vusers_dir]
此时用另外一台主机去访问
1 2 3 4 5 6 7 8 9 10 11 12 [root@server222 ~] 用法: lftp [OPTS] <site> `lftp' 是在 rc 文件执行后 lftp 执行的第一个命令 -f <file> 执行文件中的命令后退出 -c <cmd> 执行命令后退出 --help 显示帮助信息后退出 --version 显示 lftp 版本后退出 其他的选项同 `open' 命令 -e <cmd> 在选择后执行命令 -u <user>[,<pass>] 使用指定的用户名/口令进行验证 -p <port> 连接指定的端口 <site> 主机名, URL 或书签的名字
1 2 3 4 5 6 [root@server222 ~] lftp abc@192.168.176.111:~> ls lftp abc@192.168.176.111:/> mkdir abc mkdir 成功, 建立 `abc' lftp abc@192.168.176.111:/> ls drwx------ 2 1001 1001 6 Jun 27 14:28 abc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 lftp abc@192.168.176.111:/> help !<shell-command> (commands) alias [<name> [<value>]] attach [PID] bookmark [SUBCMD] cache [SUBCMD] cat [-b] <files> cd <rdir> chmod [OPTS] mode file... close [-a] [re]cls [opts] [path/][pattern] debug [<level>|off] [-o <file>] du [options] <dirs > exit [<code>|bg ] get [OPTS] <rfile> [-o <lfile>] glob [OPTS] <cmd> <args> help [<cmd>] history -w file|-r file|-c|-l [cnt] jobs [-v] [<job_no...>] kill all|<job_no> lcd <ldir> lftp [OPTS] <site> ln [-s] <file1> <file2> ls [<args>] mget [OPTS] <files> mirror [OPTS] [remote [local ]] mkdir [-p] <dirs > module name [args] more <files> mput [OPTS] <files> mrm <files> mv <file1> <file2> [re]nlist [<args>] open [OPTS] <site> pget [OPTS] <rfile> [-o <lfile>] put [OPTS] <lfile> [-o <rfile>] pwd [-p] queue [OPTS] [<cmd>] quote <cmd> repeat [OPTS] [delay] [command ] rm [-r] [-f] <files> rmdir [-f] <dirs > scache [<session_no>] set [OPT] [<var> [<val>]] site <site-cmd> source <file> torrent [-O <dir>] <file|URL>... user <user|URL> [<pass>] wait [<jobno>] zcat <files> zmore <files>
1 2 3 4 5 6 [root@client111 /] [root@client111 file] abc [root@client111 file] [root@client111 file] abc abc.txt
1 2 3 4 [root@server222 ~] lftp abc@192.168.176.111:~> ls drwx------ 3 1001 1001 21 Jun 27 14:34 abc -rw-r--r-- 1 0 0 11 Jun 27 14:39 abc.txt
1 2 3 4 5 6 7 8 9 10 11 [root@server222 ~] lftp abc@192.168.176.111:~> ls drwx------ 3 1001 1001 21 Jun 27 14:34 abc -rw-r--r-- 1 0 0 11 Jun 27 14:39 abc.txt lftp abc@192.168.176.111:/> get abc.txt -o /opt 11 bytes transferred lftp abc@192.168.176.111:/> exit [root@server222 ~] 总用量 4 -rw-r--r--. 1 root root 11 6月 27 22:39 abc.txt drwxr-xr-x. 2 root root 6 3月 26 2015 rh
练习 1.安装vsftpd 2.配置匿名用户ftp 3.配置虚拟用户ftp 4.配置系统用户ftp 5.写博客,要写明ftp的使用场景以及如何安装与配置
要求: 1.安装并配置完成后要使用ftp客户端工具登录验证
打赏