目录
3、设置本地用户验证访问ftp,并禁止切换到ftp以外的目录(默认登录的根目录为本地用户的家目录)
引言
在Linux系统中中构建并使用YUM仓库,实现基于网络的软件包安装、更新、卸载的规范化管理,以及FTP文件传输协议,还有在局域网内部署NFS共享服务器的。
一、YUM仓库服务
1、YUM概述
(1)YUM(Yellow dog Updater Modified)
YUM的前身是YUP(Yellow dog Updater,Yellow dog Linux的软件更新器),最初由TSS公司(Terra Soft Solutions,INC.),使用Python语言开发而成,后来由杜克大学(Duck University)的Linux开发队伍进行改进,命名为 YUM(Yellow dog Updater Modified)。
(2)安装或更新软件
使用YUM机制来更新系统和软件,需要有一个包含各种rpm安装包文件及其依 赖软件的软件仓库(repository),提供软件仓库的服务器也称为“源”服务器。在客户机中只要正确指定软件仓库的地址等信息,就可以通过对应的“源”服务器来安装或更新软件。
2、YUM常用的操作命令
选项 | 操作命令 | 含义 |
-y | yum -y install 软件名 | 安装、升级软件包,“-y”选项表示自动确认 |
yum -y remove 软件名 | 卸载软件包,可自动解决其依赖关系 | |
yum -y update 软件名 | 升级软件包 | |
list | yum list | 查询软件包列表 |
yum list installed | 查询系统中已安装的软件包 | |
yum list available | 查询仓库中尚未安装的软件包 | |
yum list updates | 查询可以升级版本的软件包 | |
info | yum info 软件名 | 查询软件包的描述信息 |
search | yum search [all] 关键词 | 根据某个关键词来查找相关的软件包 |
whatprovides | yum whatprovides 命令 | 查询命令属于哪个软件包 |
3、YUM的其他命令
(1)yum clean all && yum makecache(清除yum缓存并更新)
(2)yum install 包名 -y --downloadonly
(3)yum reinstall -y bash --downloadonly(下载已安装过的rpm包)
(4)yum install 包名 -y --downloadonly --downloaddir=/home/samba/(自动确认,下载samba安装包,包括依赖包保存在home/samba目录中)
4、查看历史记录来找到它所依赖的包
(1)yum history list(列出最近的历史)
(2)yum history info id(列出某次的详细信息)
(3)yum history undo id(撤销某次更改)
(4)yum history --help(查看帮助)
5、配置本地源仓库
[root@localhost ~]# mount /dev/sr0 /mnt/(把光盘挂载到/mnt目录下)
[root@localhost ~]# df -h(查看是否挂载成功)
[root@localhost ~]# cd /etc/yum.repos.d/(切换到etc/yum.repos.d下)
[root@localhost yum.repos.d]# vim local.repo(将local.repo进行vim编辑)
[local](仓库类别)
name=local(仓库名称)
baseurl=file:///mnt(指定URL访问路径为光盘挂载目录)
enabled=1(开启此yum源,此为默认项,可省略)
gpgcheck=0(不验证软件包的签名)
[root@localhost yum.repos.d]# yum clean all && yum makecache(清除yum缓存并更新)
6、配置ftp源
(1)服务端配置
[root@localhost ~]# yum install vsftpd -y(安装vsftpd软件包)
[root@localhost ~]# mount /dev/sr0 /mnt/(把光盘挂载到/mnt目录下)
[root@localhost ~]# df -h(查看是否挂载成功)
[root@localhost ~]# mkdir /var/ftp/centos7(创建挂盘挂载目录)
[root@localhost ~]# cp -rf /mnt/* /var/ftp/centos7/ &(进行cp)
[root@localhost ~]# mkdir /var/ftp/other(创建目录repodata 数据文件)
[root@localhost ~]# cd /var/ftp/other/(到other下)
[root@localhost other]# createrepo -g /mnt/repodata/repomd.xml ./(工具建立仓库数据文件)
[root@localhost other]# systemctl start vsftpd(开启服务)
[root@localhost other]# systemctl status vsftpd(查看开启状态)
[root@localhost other]# systemctl enable vsftpd(开机自启动)
[root@localhost other]# systemctl is-enabled vsftpd(开机自启动的状态)
(2)客户端配置
[root@localhost ~]# yum install ftp -y(安装ftp软件包)
[root@localhost ~]# ftp 192.168.32.128(ftp到服务器)
Connected to 192.168.32.128 (192.168.32.128).
220 (vsFTPd 3.0.2)
Name (192.168.32.128:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> exit
[root@localhost ~]# cd /etc/yum.repos.d(到yum.repos.d目录下)
[root@localhost yum.repos.d]# mkdir repo.bak(创建repo.bak目录)
[root@localhost yum.repos.d]# mv CentOS* repo.bak/(将CentOS开头的所有文件放到repo.bak目录)
[root@localhost yum.repos.d]# vim ftp.repo(创建远程yum源的配置文件)
[ftp](仓库类别)
name=ftp(仓库名称)
baseurl=ftp://192.168.32.128/centos7(URL 访问路径)
enabled=1(启用此软件仓库)
gpgcheck=0(验证软件包的签名)
[other](仓库类别)
name=ftp(仓库名称)
baseurl=ftp://192.168.32.128/other(URL 访问路径)
enabled=1(启用此软件仓库)
gpgcheck=0(验证软件包的签名)
[root@localhost yum.repos.d]# yum clean all && yum makecache (清除yum缓存并更新)
[root@localhost yum.repos.d]# yum list(查询软件包列表)
7、网络源
(1)清华源
[root@localhost ~]# vim CentOS7-Base-tsinghua.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
(2)163源
下载链接:wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
[root@localhost ~]# vim CentOS7-Base-163.repo
[base]
name=CentOS-$releasever - Base - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
(3)阿里云源
下载地址:wget http://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# vim CentOS7-Base-aliyun.repo
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
8、其他网络源
(1)http://ftp.sjtu.edu.cn/centos #上海交大,但服务器位于北京,中国教育网网络中心。 北方用户与教育网用户推荐,速度飞快。
(2)http://centos.ustc.edu.cn,#中国科技大学,服务器位于合肥。 南方用户推荐。
(3)http://mirrors.sohu.com/,sohu的开源镜像服务器,服务器位于山东省联通。 速度飞快,全国用户推荐,经常用FireFox下载CD镜像。
二、FTP服务
1、FTP概述
(1)FTP (File Transfer Protocol):文件传输协议
(2)作用:在Internet上用来传送文件的协议
(3)FTP服务器默认使用TCP协议的20、21端口与客户端进行通信。
[root@localhost ~]# less /etc/services(查看端口号)
其中:20端口用于建立数据连接,并传输文件数据;21端瑞口用于建立控制接,并传输FTP控制命令。
(4)FTP数据连接分为主动模式和被动模式。
主动模式:服务器主动发起数据连接
被动模式:服务器被动等待数据连接
(5)VSFTP全称:very secure FTP
(6)VSFTP模式:C/S模式
2、设置匿名用户访问的FTP服务(最大权限)
(1)服务端配置
[root@localhost ~]# yum install vsftpd -y(安装vsftpd软件包)
[root@localhost ~]# systemctl start vsftpd(开启服务)
[root@localhost ~]# systemctl status vsftpd.service(查看开启状态)
[root@localhost ~]# systemctl enable vsftpd(开机自启动)
[root@localhost ~]# systemctl is-enabled vsftpd.service(开机自启动的状态)
[root@localhost ~]# cd /etc/vsftpd/(进入到vsftpd目录下)
[root@localhost vsftpd]# cp -p vsftpd.conf vsftpd.conf.bak_20210831(备份)
[root@localhost vsftpd]# vim vsftpd.conf(修改配置文件)
anonymous enable=YES(开启匿名用户访问,默认已开启)
write_enable=YES(开放服务器的写权限,若要上传,必须开启,默认已开启)
anon_umask=022(设置匿名用户所上传数据的权限掩码—反掩码)
anon_upload_enable=YES(允许匿名用户.上传文件。默认已注释,需取消注释)
anon_mkdir_write_enable=YES (允许匿名用户创建“上传”目录,默认已注释,需取消注释)
anon_other_write_enable =YES (允许删除、重命名、覆盖等操作,需添加)[root@localhost vsftpd]# chmod 777 /var/ftp/pub/(为匿名访问ftp的根目录下的pub子目录设置最大权限,以便匿名用户,上传数据)
[root@localhost vsftpd]# systemctl restart vsftpd(重启服务)
[root@localhost ftp]# cd /var/ftp/pub/(进入到pub目录下)
[root@localhost pub]# echo "xxx" > a.txt(创建一个文件)
[root@localhost pub]# ls(查看文件)
a.txt
(2)Windows界面cmd测试
D:\>ftp 192.168.32.128(建立ftp连接)
连接到 192.168.32.128。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.32.128:(none)): ftp(匿名访问,用户名为ftp)
331 Please specify the password.
密码:(密码为空,直接回车即可完成登录)
230 Login successful.
ftp> cd pub(切换到pub目录)
250 Directory successfully changed.
ftp> put b.txt(上传文件到ftp目录)
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp: 发送 3 字节,用时 0.01秒 0.60千字节/秒。
ftp> get a.txt(下载文件到当前windows本地目录)
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for a.txt (4 bytes).
226 Transfer complete.
ftp: 收到 4 字节,用时 0.00秒 4.00千字节/秒。
ftp> quit(退出)
(3)服务端上测试结果
[root@localhost pub]# ls(查看以上传好的文件)
a.txt b.txt
3、设置本地用户验证访问ftp,并禁止切换到ftp以外的目录(默认登录的根目录为本地用户的家目录)
(1)服务端配置
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf(修改配置文件)
anonymous_enable=NO(关闭匿名用户访问)
local_enable=YES(启用本地用户)
write_enable=YES(开放服务器的写权限—若要上传,必须开启)
local_umask=077(可设置仅宿主用户拥有被上传的文件的权限—反掩码)
chroot_local_user=YES(将访问禁锢在用户的宿主目录中)
allow_writeable_chroot=YES(允许被限制的用户主目录具有写权限)
[root@localhost ~]# systemctl restart vsftpd(重启服务)
(2)Windows界面cmd测试
D:\>ftp 192.168.32.128(建立ftp连接)
连接到 192.168.32.128。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.32.128:(none)): lisi(匿名访问,用户名为lisi)
331 Please specify the password.
密码:(输入密码登录)
230 Login successful.
ftp> put x.txt(上传文件到ftp目录)
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp: 收到 66 字节,用时 0.00秒 66.00千字节/秒。
(3)服务端上测试结果
[root@localhost ~]# cd /home/lisi/
[root@localhost lisi]# ls(查看以上传好的文件)
x.txt
4、修改匿名用户、本地用户登录的默认根目录
anon_root=/var/www/html(anon root针对匿名用户)
local_root=/var/www/html(local root针对系统用户)
5、使用user_list用户列表文件
vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES(启用user_list用户列表文件)
userlist_deny=NO(设置白名单,仅允许user_list用户列表文件的用户访问。默认为YES,为黑名单,禁用)
vim /etc/vsftpd/user_list(末尾添加zhangsan用户)
zhangsan
三、NFS共享存储服务
1、NFS (网络文件服务)
NFS是一种基于TCP/IP传输的网络文件系统协议,最初由Sun公司开发。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。NFS也是NAS存储设备必然支持的一种协议。
2、NAS存储
NFS服务的实现依赖于RPC(Remcte Process Call,远端过程调用)机制,以完成远程到本地的映射过程。在CentOS 7系统中,需要安装nfs-utils、rpcbind软件包来提供NFS共享服务,前者用于NFS共享发布和访问,后者用于RPC支持。手动加载NFS共享服务时,应该先启动rpcbind,再启动nfs。
3、端口号
(1)nfs端口号为2049;
(2)RPC端口号为111。
4、NFS特点
(1)采用TCP/IP传输网络文件;
(2)安全性低;
(3)简单易操作;
(4)适合局域网环境。
5、常用选项
选项 | 含义 |
rw | 表示允许读写 |
ro | 表示为只读 |
sync | 表示同步写入到内存与硬盘中 |
no_ root_squash | 表示当客户机以root身份访问时赋予本地root权限(默认是root_squash),如果不加那么客户端无法在里面编辑或写入文件,因为默认以nfsnobody的权限 |
6、其它常用选项
选项 | 含义 |
all_squash | 表示所有访问用户都映射为匿名用户或用户组 |
async | 表示将数据先保存在内存缓冲区中,必要时才写入磁盘,速度快但会丢失数据 |
subtree_check | 表示若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认) |
no_subtree_check | 表示即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率 |
7、NFS共享存储服务配置
(1)服务端配置
[root@localhost ~]# yum install nfs-utils rpcbind -y(安装nfs-utils rpcbind 软件包)
[root@localhost ~]# systemctl start nfs(开启nfs服务)
[root@localhost ~]# systemctl start rpcbind(开启rpcbind服务)
[root@localhost ~]# netstat -anup | grep rpc(查看rpc的端口)
[root@localhost ~]# rpcinfo -p localhost(查看nfs向rpc注册的端口信息)
[root@localhost ~]# vim /etc/exports(NFS的配置文,文件内容默认为空,无任何共享)
/opt/web 192.168.32.0/24(rw,sync,no_root_squash)
[root@localhost ~]# systemctl restart nfs(重启nfs服务)
[root@localhost ~]# systemctl restart rpcbind(重启rpcbind服务)
[root@localhost ~]# exportfs -v(验证结果)
/opt/web 192.168.32.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
[root@localhost ~]# mkdir /opt/web(创建web目录)
[root@localhost ~]# showmount -e localhost(验证共享)
Export list for localhost:
/opt/web 192.168.32.0/24
(2)客户端配置
[root@localhost ~]# yum install nfs-utils rpcbind -y(安装nfs-utils rpcbind 软件包)
[root@localhost ~]# showmount -e 192.168.32.128(客户端验证共享)
Export list for 192.168.32.128:
/opt/web 192.168.32.0/24
[root@localhost ~]# yum install httpd -y(安装httpd软件包)
[root@localhost ~]# mount -t nfs 192.168.32.128:/opt/web /var/www/html(将共享目录挂载到网页目录)
[root@localhost ~]# df -h(查看挂载成功)
文件系统 容量 已用 可用 已用% 挂载点
192.168.32.128:/opt/web 56G 5.0G 51G 9% /var/www/html
[root@localhost ~]# cd /var/www/html/(到html目录下)
[root@localhost html]# echo "this is abc" >> /var/www/html/index.html(创建一个index.html文件)
[root@localhost html]# systemctl start httpd.service (开启httpd服务)
[root@localhost html]# curl 127.0.0.1(客户端成功访问主页内容)
this is abc
(3)服务端查看文件
[root@localhost ~]# cd /opt/web/(到web目录下)
[root@localhost web]# cat index.html(验证服务端会同步)
this is abc
注意:NFS客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,
服务器端NFS服务突然间停掉了,那么在客户端就会出现执行df -h 命令卡死的现象。这个时候使用umount命令是无法直接卸载的,需要加上“-lf”才能卸载。-l:表示解除正在繁忙的文件系统;-f:表示强制。
[ root@localhost web]# systemctl stop nfs(服务器端模拟nfs挂掉)
[ root@localhost~] # umount /var/www/html(客户端卸载时会卡住)
[root@localhost ~]# umount -lf /var/www/html(加-lf参数成功卸载)
修改/etc/fstab实现自动挂载
192.168.32.128:/opt/web /var/www/html nfs defaults,_netdev o o
defaults,_netdev说明这是一个网络设备
8、其他nfs文件
/var/lib/nfs/etab(记录NFS分享出来的目录的完整权限设定值)
/var/lib/nfs/xtab(记录曾经登录过的客户端信息)
总结
1、YUM软件仓库主要通过HTTP或FTP方式进行发布,且需要提供repodata数据,其中包含所有rpm包文件的头信息。
2、使用YUM命令查询软件包时,可用的子命令包括list、info、search,分别用于查询软件包列表、查询软件句的描术信息、查询指定的软件包。
3、使用YUM命令安装、升级、卸载软件包时,对应的子命令分别为install、update、remove。
4、FTP的主动模式是由服务端先发起数据连接,被动模式是由客户端先发起数据连接。
5、NFS服务的实现依赖于RPC机制,RPC充当NFS客户端和NFS服务器的中介。需要安装nfs-utils、rpcbind软件包来提供 NFS 共享服务,前者用于NFS共享发布和访问,后者用于RPC支持。
6、对NFS共享的访问使用mount命令来进行挂载,对应的文件系统类型为nfs。既可以手动挂载,也可以加入fstab配置文件来实现开机自动挂载。