匿名用户上传动手操作还需要再练
一 存储类型
直连式存储DAS
适用于那些数据量不大,对磁盘访问速度要求较高的中小企业
存储区域网络SAN
用来存储非结构化数据,虽然受限于以太网的速度,但是部署灵活,成本低
网络附加存储NAS
适用于大型应用或数据库系统,缺点是成本高、较为复杂
二 FTP工作原理
文件传输协议 是 典应用层协议,c/s架构,协议 服/客 软件两个部分实现文件传输功能
通过FTP协议,用户可以在FTP服务器中进行文件的上传或下载等操作,虽然现在通过HTTP协议下载的站点有很多,①但是由于FTP协议可以很好地控制用户数量和宽带的分配,快速方便地上传、下载文件,因此FTP已成为网络中文件上传和下载的首选服务器,同时,②它也是一个应用程序,用户可以通过它把自己的计算机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。
FTP服务状态码:
服务器数据端口为:
20数据端口 用于建立数据连接,并传输文本数据
21命令端口 建立控制连接,并传输FTP控制命令
数据传输格式:二进制 文本
双通道协议:命令与数据的连接
从服务器角度
主动模式:服务器主动开启20端口连接客户端传输真实数据
被动摸式:服务器随机开启端口等待客户端连接,客户机通过21命令来获取 服务端的随机端口
数据给客户端
被动(PASV style):服务器被动等待客户端连接
用户认证:
-
匿名用户:ftp anonymous 对应Linux用户ftp root,两种协议
-
一般提供公共文件的下载,如免费文件,学习资料,百度网盘
-
系统用户: Linux用户,用户/etc/passwd; 密码/etc/shadow
-
虚拟用户: 特定服务的专用用户,独立的用户/密码文件
FTP服务器系统由 服务端软件、客户端软件和FTP通信协议 组成。
常见 FTP服务端相关软件
vsftpd:服务端核心软件
ftp.redhat.com数据
Wu-ftpd
三 vsftpd 软件介绍
是一个非常流行且安全的开源FTP服务器软件,专为类Unix系统设计,如Linux、FreeBSD等。
①由 vsftpd 包提供,不再由xinetd管理
②用户认证配置文件: /etc/pam.d/vsftpd
③主配置文件: /etc/vsftpd.conf
或子目录 :/usr/sbin/vsftpd
:/var/log/vsftpd.log
实验:vsftpd ftp 软件基础作用
安装两个软件,两端都要关闭防火墙 防护
#服务端:
yum install -y vsftpd #安装ftp服务器
systemctl start vsftpd #开启服务
#客户端:
yum install -y ftp #安装ftp服务程序
服务端IP 192.168.11.9
客户端IP192.168.11.10
登录到ftp服务端可执行的操作
1 浏览文件和目录:使用 FTP 客户端软件,你可以浏览 FTP 服务器上的文件和目录结构。你可以列出目录内容、查看文件属性和大小等信息
2 上传和下载文件:你可以将本地计算机上的文件上传到 FTP 服务器,或从 FTP 服务器下载文件到本地计算机。这使得文件的传输变得方便快捷
3 创建和删除目录:你可以在 FTP 服务器上创建新的目录,用于组织文件和数据。同样地,你也可以删除不再需要的目录
4 重命名和移动文件:你可以对 FTP 服务器上的文件进行重命名,改变它们的名称。此外,你还可以将文件从一个目录移动到另一个目录,以重新组织文件结构
5 修改文件权限:作为 FTP 服务器的管理员或有足够权限的用户,你可以修改文件的权限设置。这包括更改文件的所有者、组、读写执行权限等
6 管理用户和身份验证:作为管理员,你可以管理 FTP 服务器上的用户账户和身份验证方式。这包括创建新用户、删除用户、修改用户密码等操作
7 监控和查看日志:FTP 服务器通常会记录用户的登录、文件传输等活动。你可以查看服务器的日
用户的共享目录
-
匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp
-
系统用户共享文件位置:用户家目录
-
虚拟用户共享文件位置:为其映射的系统用户的家目录
四 vsftpd服务常见配置
修改默认命令端口
目的:服务端端口号只要改变,客户端就无法连接
服务端:修改 默认命令端口号
客户端:连接时需要指明 端口号
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
listen_port=2121 #默认值为21
[root@localhost ~]#systemctl restart vsftpd
#ss -ntl #查看端口
修改主动模式端口
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
connect_from_port_20=YES #主动模式端口为20
ftp_data_port=20 #指定主动模式的端口,默认为20
[root@localhost ~]#systemctl restart vsftpd
修改被动模式端口
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
pasv_min_port=6000
pasv_max_port=6010
[root@localhost ~]#systemctl restart vsftpd
#0为随机分配,规定端口范围会影响客户端的并发数
使用当地时间
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
use_localtime=YES #使用当地时间 , 默认为NO,使用GMT
[root@localhost ~]#systemctl restart vsftpd
五 匿名用户的配置
①匿名用户登录
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES #支持匿名用户,
no_anon_password=YES #匿名用户略过口令检查 , 默认NO
[root@localhost ~]#systemctl restart vsftpd
②匿名用户上传
ftp协议默认匿名用户不允许上传文件, 为安全考虑,如果人人都传到ftp服务器,会出现病毒、空间容量等问题
1 #vsftpd配置文件下可修改匿名用户的权限
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES 匿名上传,注意:文件系统权限
anon_mkdir_write_enable=YES 匿名建目录
#systemctl restart vsftpd
2 #服务端添加ftp用户的文件系统权限
[root@localhost ~]#setfacl -m u:ftp:rwx /var/ftp/pub/
[root@localhost ~]#getfacl /var/ftp/pub/ #查看指定目录的权限
3 #服务端删除添加到/var/ftp目录下的所有规则,恢复默认权限
[root@localhost ~]#setfacl -b /var/ftp
1 默认匿名用户不允许上传文件
2 在vsftpd配置文件下可修改匿名用户的权限
3 服务端添加ftp用户的文件系统权限
4 验证 匿名用户能否上传文件到ftp服务器
还需要开启文件系统访问的权限,不能给FTP根目录写权限否则报如下错误
③匿名用户 下载 删除文件
在 vsftpd 软件中 只可以 下载有 读权限的文件, 没有读权限的文件时不可以直接下载
④指定匿名用户的上传文件的默认的所有者是ftp用户,这是可以修改的
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
chown_uploads=YES #默认NO
chown_username=mcb #匿名用户的上传文件的默认的所有者用户
chown_upload_mode=0644 #指定上传文件的权限
[root@localhost ~]#systemctl restart vsftpd
⑤Linux 系统用户的配置
#在vsftpd配置文件下可修改系统用户的权限
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
local_enable=YES #是否允许linux用户登录
write_enable=YES #允许linux用户上传文件
local_umask=022 #指定系统用户上传文件的默认权限对应umask
[root@localhost ~]#systemctl restart vsftpd #重启vsftpd服务
系统用户登录:使用普通用户登录默认是在 系统用户的 家目录
⑥将所有系统用户映射为指定的guest用户
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
guest_enable=YES #所有系统用户都映射成guest用户
guest_username=ftp #配合上面选项才生效,指定guest用户
#local_root=/ftproot #注释此行,默认所有用户都在ftp用户的家目录
user_config_dir=/etc/vsftpd/conf.d/ #每个用户独立的配置文件目录,可自由指定
[root@localhost ~]#systemctl restart vsftpd
⑦禁锢系统用户
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #默认YES
[root@localhost ~]#systemctl restart vsftpd
禁锢所有系统用户在家目录中
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
guest_enable=YES #所有系统用户都映射成guest用户
guest_username=ftp #配合上面选项才生效,指定guest用户
#local_root=/ftproot #注释此行,默认所有用户都在ftp用户的家目录
user_config_dir=/etc/vsftpd/conf.d/ #每个用户独立的配置文件目录,可自由指定
[root@localhost ~]#systemctl restart vsftpd
禁锢用户开启白名单和黑名单
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
chroot_list_enable=YES #默认是NO
chroot_list_file=/etc/vsftpd/chroot_list #默认值
当chroot_local_user=YES和chroot_list_enable=YES时,则chroot_list中用户不禁锢,即白名单,只允许名单里的用户登录
当chroot_local_user=NO和chroot_list_enable=YES时, 则chroot_list中用户禁锢,即黑名单,只有文件里的用户禁锢
[root@localhost ~]#systemctl restart vsftpd
⑧ftp 默认启动日志
#wu-ftp 日志:默认启用
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
xferlog_enable=YES #启用记录上传下载日志,此为默认值
xferlog_std_format=YES #使用wu-ftp日志格式,此为默认值
xferlog_file=/var/log/xferlog #可自动生成, 此为默认值
[root@localhost ~]#systemctl restart vsftpd
#vsftpd日志:默认不启用
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
dual_log_enable=YES #使用vsftpd日志格式,默认不启用
vsftpd_log_file=/var/log/vsftpd.log #可自动生成, 此为默认值
[root@localhost ~]#systemctl restart vsftpd
⑨提示信息
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
ftpd_banner="welcome to mcb ftp server"
banner_file=/etc/vsftpd/ftpbanner.txt
[root@localhost ~]#systemctl restart vsftpd
⑩传输速率,单位:字节/秒 百度网盘限速就是这样玩
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
anon_max_rate=1024000 #1024000表示1MB/(数字随时改)
local_max_rate=102400
[root@localhost ~]#systemctl restart vsftpd
pam模块实现用户访问
本地yum仓库
mount /dev/sr0 /mnt #挂载提供安装包
cd /etc/yum.repos.d #切换到固定目录
mkdir bak #建立备份文件夹
mv *.repo bak #将所有网络源移走,减少干扰
vim local.repo #自建本地源的配置文件
[local] #自定义仓库描述
name=local #自定义仓库名
baseurl=file:///mnt #指明仓库位置
gpgcheck=0 #不验证安全性(若为1则验证)
yum clean all #清理缓存
yum makecache #重新建立元数据
HTTP主要用于浏览和下载网页等资源
FTP则更偏向于小文件的上传、下载和管理。
五 实验:在内网环境ftp下搭建本地yum仓库
前提:服务端 客户端都要关闭 防火墙 防护
服务端IP 192.168.11.9
客户端IP 192.168.11.12
#服务端操作:
[root@localhost ~]#yum install -y vsftpd #下载vsftpd服务程序
[root@localhost ~]#systemctl start vsftpd #开启vsftpd服务
[root@localhost ~]#mkdir /var/ftp/centos7 #在ftp服务器根目录下新建centos7目录用于挂载光盘
[root@localhost ~]#mount /dev/sr0 /var/ftp/centos7/ #挂载光驱到ftp服务器根目录下的centos7目录
***********************************************************
#客户端操作:
[root@localhost ~]#cd /etc/yum.repos.d/ #切换到规定的目录
[root@localhost yum.repos.d]#mkdir bak #新建bak目录,用于存放网络yum源
[root@localhost yum.repos.d]#mv *.repo bak #将网络yum源移到bak目录下,减少干扰
[root@localhost yum.repos.d]#vim ftp.repo #编辑yum仓库的配置文件
[ftp] #yum仓库的描述
name=ftp #指定yum仓库名
baseurl=ftp://192.168.11.9/centos7 #指定安装包的位置是在ftp服务器根目录的centos7目录下
gpgcheck=0 #不检测安装包的安全性
[root@localhost yum.repos.d]#yum clean all #清除缓存
[root@localhost yum.repos.d]#yum makecache #重新下载元数据
[root@localhost yum.repos.d]#yum list #查看yum源的来源是否是ftp
[root@localhost ~]#yum install -y tree #测试安装软件是否成功
服务端
①
②
客户端
六 实验:通过http服务搭建内网yum仓库
① 如果我们的yum仓库需要多台机器共同使用,此时把yum仓库做成本地的,然后一台台 推送过去比较麻烦,此时可以考虑搭建一个基于HTTP协议,供给内网其它机器使用
②生产环境中,让一台机器(服务机)单独作为软件安装存储机器,其他机器可省下更多的空间
③由于是内网环境,虚拟机全部设为仅主机模式,(如何设置仅主机模式可参考DHCP原理与配置)无法连接外部网络如果想要下载httpd服务则需要搭建一个本地yum仓库
④适用范围:多台不能使用/etc/yum.repos.d/配置文件中的外网源进行下载软件,且有至少一个服务有系统完整rpm包的光驱的情况下
#服务端操作:
[root@localhost ~]#yum install -y httpd #下载httpd服务程序
[root@localhost ~]#systemctl start httpd #开启httpd服务
[root@localhost ~]#mkdir /var/www/html/centos7 #在httpd服务器根目录下新建centos7目录用于挂载光盘
[root@localhost ~]#mount /dev/sr0 /var/www/html/centos7 #挂载光驱到http服务器根目录下的centos7目录
#客户端操作:
[root@localhost ~]#cd /etc/yum.repos.d/ #切换到规定的目录
[root@localhost yum.repos.d]#mkdir bak #新建bak目录,用于存放网络yum源
[root@localhost yum.repos.d]#mv *.repo bak #将网络yum源移到bak目录下,减少干扰
[root@localhost yum.repos.d]#vim http.repo #编辑yum仓库的配置文件
[http] #yum仓库的描述
name=http #指定yum仓库名
baseurl=http://192.168.11.9/centos7 #指定安装包的位置是在http服务器根目录的centos7目录下
gpgcheck=0 #不检测安装包的安全性
[root@localhost yum.repos.d]#yum clean all #清除缓存
[root@localhost yum.repos.d]#yum makecache #重新下载元数据
[root@localhost yum.repos.d]#yum list | head #查看yum源的来源是否是http
[root@localhost ~]#yum install -y tree #测试安装软件是否成功
服务端IP192.168.11.9
客户端192.168.11.10
七 搭建阿里云仓库
如果误将rpm软件删除,解决之法
八 指令小金刚
1 [root@localhost ~]#sort --help
sort -t
sort -n
2 [root@localhost ~]#cut --help
用法:cut [选项]... [文件]...
cut -d 使用指定分界符代替制表符作为区域分界
3 [root@localhost ~]#seq --help
seq -s
4 [root@localhost ~]#tr --help 转换 压缩 删除
5 [root@localhost ~]#uniq --help