FTP协议
FTP概述
ftp (File Transfer Protocol,文件传输协议)是典型的C/S架构的应用层协议,需要由服务端软件、客户端软件两个部分共同实现文件传输功能。FTP客户端和服务器之间的连接是可靠的,面向连接的,为数据的传输提供了可靠的保证。
ftp使用tcp的20、21端口,20端口是连接端口,用于传输数据。21端口是控制端口,用于和客户端建立连接。
FTP是一种文件传输协议,它支持两种模式,一种方式叫做Standard (也就是Active,主动方式),一种是Passive (也就是PASV,被动方式)。
主动方式:
客户端首先和服务端的21端口建立连接,客户端在这个端口发送请求,服务端收到请求后,从自己的20端口建立一个新连接发送数据。
被动方式:
客户端和服务端的21端口建立连接,当客户端发送请求时,服务端打开一个1024-5000之间的端口并通知客户端在这个端口上传送数据,被动方式不需要和客户端新建立一个连接。
FTP服务
ftp服务的进程名和软件名都为vsftpd,vsftpd需要网上下载,系统不自带。ftp服务有一个ftp用户,ftp用户的家目录位于/var/ftp,登录ftp用户会切到这个目录,这个目录通常与ftp服务器有关。
客户机通过ftp命令可以登录服务端,客户机一般情况下无法登录root,可以通过对ftp的配置文件进行设置以登录root,也可以对登录的用户进行限制,让其只能在根目录和家目录活动
C:\Users\Ryougi Shiki uio>ftp 192.168.214.214
连接到 192.168.214.214。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.214.214:(none)): shiki
331 Please specify the password.
密码:
230 Login successful.
ftp> pwd
257 "/home/shiki" 登录后,会切到该用户的家目录
ftp> quit ftp可以通过bye,quit等退出登录
221 Goodbye.
C:\Users\Ryougi Shiki uio>ftp 192.168.214.214
连接到 192.168.214.214。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.214.214:(none)): root
530 Permission denied.
登录失败。
ftp>
允许登录root:
修改/etc/vsftpd/ftpusers,将root注释掉
修改/etc/vsftpd/vsftpd.conf,添加一行userlist_deny=NO
重启服务
锁定用户家目录不可随意切换(对用户的活动范围进行限制):
修改/etc/vsftpd/vsftpd.conf
chroot local _user=YES//取消注释,锁定家目录了但是如果家目录有写权限ftp会拒绝连接allow_writeable_chroot=YES//添加这一行
重启服务
搭建本地yum仓库
使用光盘搭建本地yum仓库
[root@localhost ~]# mount /dev/sr0 /mnt 首先对光盘进行挂载,这里不进行永久挂载了
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# lsblk 查看光盘是否挂载成功
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 17G 0 part /
sr0 11:0 1 4.3G 0 rom /mnt 光盘确实成功挂载了
[root@localhost ~]#
[root@localhost ~]# cd /etc/yum.repos.d/ 进入这个目录,目录下存放了yum源的配置文件
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@localhost yum.repos.d]# mkdir /yum.bak 创建一个目录
[root@localhost yum.repos.d]# mv /etc/yum.repos.d/* /yum.bak/ 对yum配置文件进行备份
[root@localhost yum.repos.d]# vim local.repo 创建并编辑该文件,这个文件是本地yum仓库的配置文件,下面是需要写入文件的内容
[local]
name=CentOS7 name这里名字可以任意起
baseurl=file:///mnt 这里的格式是baseurl=file:// file://从本地目录进行寻找,baseurl指定的是repodate中的repo.xml索引文件,通过寻找这个索引文件获取光盘中软件包的信息,这里索引文件位于/mnt目录下
enable=1
gpgcheck=0
:wq 保存编辑并退出
[root@localhost yum.repos.d]# yum repolist 查看yum源的详细信息
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
local | 3.6 kB 00:00
(1/2): local/group_gz | 166 kB 00:00
(2/2): local/primary_db | 3.1 MB 00:00
源标识 源名称 状态
local CentOS7 4,021
repolist: 4,021
搭建FTP服务器
在服务器中挂载光盘后
[root@localhost mnt]# mkdir /var/ftp/1
[root@localhost mnt]# cp -pr /mnt/* /var/ftp/1/ 将光盘的文件带属性复制到ftp用户的家目录下的1目录中
[root@localhost mnt]# systemctl start vsftpd 启动vsftpd服务
在客户端中创建ftp.repo文件
[root@localhost yum.repos.d]# vim /etc/yum.repos.d/ftp.repo 编辑该文件
[ftp] 这里进编辑的内容
name=ftp
baseurl=ftp://192.168.214.214/1
enable=1
gpgcheck=0
[root@localhost yum.repos.d]# yum repolist 查看yum源信息,发现yum源是ftp,说明可以通过ftp服务器下载安装软件
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
源标识 源名称 状态
ftp ftp 4,021
repolist: 4,021
访问ftp服务器
在ftp服务器中添加软件包
在ftp服务器中
[root@localhost ftp]# yum -y install nginx --downloadonly --downloaddir=/var/ftp/1/packages 下载nginx的安装包,并存放至/var/ftp/1/packages目录下
--downloadonly只下载安装包 --downloaddir= 后跟目录,将前面的安装包存放至后面的目录中
[root@localhost repodata]# createrepo --update /var/ftp/1/ 更新该目录下的软件包的索引文件中的索引信息
服务端做好后,在客户端中
[root@localhost yum.repos.d]# yum clean all 清理yum缓存
已加载插件:fastestmirror, langpacks
正在清理软件源: ftp
Cleaning up list of fastest mirrors
Other repos take up 89 M of disk space (use --verbose for details)
[root@localhost yum.repos.d]# yum makecache 重新建立yum的元数据
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
ftp | 2.9 kB 00:00
(1/3): ftp/primary_db | 3.2 MB 00:00
(2/3): ftp/filelists_db | 3.2 MB 00:00
(3/3): ftp/other_db | 1.3 MB 00:00
元数据缓存已建立
[root@localhost yum.repos.d]# yum repolist 查看yum源的信息,发现软件包数量从4021变成4030
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
源标识 源名称 状态
ftp ftp 4,030
repolist: 4,030
此时,ftp服务器软件包更新完成