第三周 oneday
早
1、环境准备
(1)yum源 (一个云仓库+pepl仓库)
[root@web ~]# vim /etc/yum.repos.d/hh.repo [a] name=a baseurl=file:///mnt gpgcheck=0 [root@web ~]# vim /etc/fstab /dev/cdrom /mnt iso9660 defaults 0 0 [root@web ~]# mount -a [root@web ~]# yum repolist [root@web ~]# ping www.baidu.com [root@web ~]# yum -y install wget [root@web ~]# vim /etc/resolv.conf 将dns该为114.114.114.114 8.8.8.8 [root@web ~]# ping www.baidu.com //可以ping通百度即可进行下一步 [root@web ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo [root@web ~]# yum clean all [root@web ~]# yum makecache [root@web ~]# yum -y install epel-release.noarch [root@web ~]# yum clean all [root@web ~]# yum makecache
(2)防火墙和selinux
[root@web ~]# systemctl stop firewalld [root@web ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@web ~]# setenforce 0 [root@web ~]# vim /etc/selinux/config SELINUX=permissive
2、安装配置web服务器
(1)使用自建的yum仓库下载nginx
1、先只安装不下载nginx
[root@web ~]# yum -y install --downloadonly --downloaddir=./soft/ nginx
2、下载cteaterepo,自建仓库
[root@web ~]# yum -y install createrepo [root@web ~]# createrepo ./soft/ [root@web ~]# ls soft/ [root@web ~]# vim /etc/yum.repos.d/nginx.repo [nginx] name=nginx baseurl=file:///root/soft/ gpgcheck=0 enable=1 [root@web ~]# yum clean all [root@web ~]# yum makecache
3、使用自己建造的仓库下载nginx
[root@web ~]# yum -y install nginx [root@web ~]# nginx //启动nginx 检查服务是否启动: [root@web ~]# netstat -lnput | grep nginx [root@web ~]# ps -aux | grep nginx
(2)在nginx的首页中插入自己的图片与视频
1、查找nginx的配置文件位置
[root@web html]# find / | grep nginx /usr/share/nginx/html [root@web html]# rpm -ql nginx /usr/share/nginx/html/404.html [root@web nginx]# cd /usr/share/nginx/html/ [root@web html]# ls 404.html 50x.html en-US icons img index.html nginx-logo.png poweredby.png
2、将图片与视频放到指定路径下
可以将其直接拖拽到vm中,也可以使用scp进行传输文件。
[root@web html]# yum -y install lrzsz [root@web html]# rz -E //将图片拖到/usr/share/nginx/html中或 者/usr/share/nginx/html/img中 [root@web html]# vim index.html <img src="3.jpg" alt="示例图片" width="500" height="300"> [root@web html]# nginx -s reload 浏览器继续访问,查看图片是否上传成功 [root@web html]# rz -E //将视频拖到/usr/share/nginx/html中 [root@web html]# vim index.html <video width="320" height="240" controls> <source src="1.mp4" type="video/mp4"> </video> <img src="3.jpg" alt="示例图片" width="500" height="300"> [root@web html]# nginx -s reload
3、安装配置nfs服务器
NFS(Network File System,网络文件系统)是一种分布式文件系统协议,允许一个系统在网络上
与他人共享目录和文件。
rpcbind 是一个用于支持 RPC(Remote Procedure Call,远程过程调用)的服务。在一些操作系统
中,如 CentOS 8,NFS(Network File System,网络文件系统)的实现依赖于 RPC 机制,而 rpcbind
充当了 NFS 服务器和客户端之间的中介,用于完成从远程到本地的映射过程。
搭建 NFS 服务器时,需要安装 rpcbind 以及 nfs-utils 软件包来提供 NFS 共享服务。
(另起一台机子)
(1)下载nfs软件与其依赖软件
[root@nfsserver ~]# yum -y install nfs-utils.x86_64 rpcbind.x86_64
(2)创建一个目录/share并创建文件/share/passwd
[root@nfsserver ~]# mkdir /share [root@nfsserver ~]# touch /share/passwd
(3)将web机子的图片和视频拷贝过来到/share目录下
[root@nfsserver ~]# scp root@10.0.0.30:/usr/share/nginx/html/3.jpg /share/ [root@nfsserver ~]# scp root@10.0.0.30:/usr/share/nginx/html/1.mp4 /share/
(4)编辑配置文件/etc/exports指定要暴露的文件(/share)
[root@nfsserver ~]# vim /etc/exports /share *(rw,sync) 这段配置的含义是,将 /share 目录共享给所有的客户端(* 代表所有),并且赋予客户端可读写 (rw)和数据同步(sync)的权限。
(5)测试
下午:
备份静态文件1.克隆一个备份主机bakuphost
[root@lx2 ~]# hostnamectl set-hostname bakserver [root@lx2 ~]# reboot
2.停用selinx和firewalld
[root@bakserver ~]# systemctl stop firewalld [root@bakserver ~]# setenforce 0 [root@bakserver ~]# systemctl disable firewalld [root@bakserver ~]# vim /etc/selinux/config SELINUX=permissive
3.支持sync备份同步安装rsync,bakuphost nfserver两台主机上都应该安装
[root@bakserver ~]# yum -y install rsync nohup ..... Running transaction 正在安装 : rsync-3.1.2-12.el7_9.x86_64 1/1 验证中 : rsync-3.1.2-12.el7_9.x86_64 1/1 已安装: rsync.x86_64 0:3.1.2-12.el7_9 完毕! [root@bakserver ~]#
4.在nfs主机上安装inotify-tools监听/share目录
[root@bakserver ~]# yum -y install inotify-tools 已加载插件:fastestmirror Loading mirror speeds from cached hostfile .... Running transaction 正在安装 : inotify-tools-3.14-9.el7.x86_64 1/1 验证中 : inotify-tools-3.14-9.el7.x86_64 1/1 已安装: inotify-tools.x86_64 0:3.14-9.el7 完毕! [root@bakserver ~]#
5.先同步一份一份到bakuphost主机的tmp目录下
[root@bakserver ~]# rsync -av /share/ root@192.168.1.24:/tmp/ root@192.168.1.24's password: sending incremental file list rsync: change_dir "/share" failed: No such file or directory (2) sent 20 bytes received 12 bytes 12.80 bytes/sec total size is 0 speedup is 0.00 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1179) [sender=3.1.2]
6.需要输入密码才会同步过去,为了自动化,设置免密
[root@bakserver ~]# ssh-keygen //生成密钥文件 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:ToxAj8cCJxwZCXhVDGhOSHbYIuTlfkpMbggV+dkWE2E root@bakserver The key's randomart image is: +---[RSA 2048]----+ |=BX%=+Eo | |*+&* =+ | |o*.++o+o | |. B o+oo | | . * o. S | | o o o | | . . | | | | | +----[SHA256]-----+ [root@bakserver ~]# ssh-copy-id root@192.168.1.24 传递密钥文件 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@192.168.1.24's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@192.168.1.24'" and check to make sure that only the key(s) you wanted were added. [root@bakserver ~]# rsync -av /share/ root@192.168.1.24:/tmp/ //此时已经不需要输入密码了 sending incremental file list rsync: change_dir "/share" failed: No such file or directory (2) sent 20 bytes received 12 bytes 64.00 bytes/sec total size is 0 speedup is 0.00 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1179) [sender=3.1.2] [root@bakserver ~]#
7.bakhost主机上创建/bakup
[root@bakserver ~]# mkdir /bakup
8.nfsserver上创建一个脚本rn.sh
[root@lx1 ~]# vi rn.sh
9.脚本代码
#!/bin/bash inotifywait /share -mrq -e modify,create,delete,attrs,move Iwhile read events do rsync -av --delete /share/root@192.168.1.25:/bakup/ #也可以输出日志 done
SAMBA文件共享
Samba 是在 Linux 和 Unix 系统上实现 SMB(Server Message Block)协议的一个免费软件。
SMB 协议主要用于 Windows 操作系统的文件和打印共享。通过 Samba,Linux 和 Unix 系统可以
与 Windows 系统进行良好的交互和资源共享。
Samba 的主要特点和优势包括:
\1. 跨平台文件共享:允许 Windows、Linux 和 macOS 等不同操作系统之间共享文件和打印机。
\2. 易于配置:可以通过简单的配置文件和命令来设置共享目录、用户权限等。
\3. 支持多种身份验证方式:例如本地用户、域用户等。
在实际应用中,Samba 常用于以下场景:
企业办公环境:让 Windows 客户端能够访问 Linux 服务器上的共享文件。
家庭网络:在不同操作系统的设备之间共享多媒体文件。
例如,在一个小型办公室中,可以使用 Samba 在一台 Linux 服务器上设置共享目录,使得办公室内
的 Windows 电脑能够方便地访问和存储文件。
配置 Samba 时,需要编辑 /etc/samba/smb.conf 文件来定义共享目录、访问权限、用户等信
息。
在bakup host上安装samba
(1)下载samba软件
[root@lx1 ~]# yum -y install samba
(2)修改samba的配置文件
[root@bakserver ~]# vim /etc/samba/smb.conf [smb_share] //这是共享的名称,客户端在访问时会看到这个名称。 comment = samba service //这是对该共享的注释说明,用于提供一些描述信息,这里说明 是“Samba 服务” path = /bakpu //指定了实际共享的目录路径为`/bakpu` guest ok = no //表示不允许访客访问,只有经过授权的用户才能访问 writable = yes //表示允许对该共享目录进行写入操作
(3)设置用户user01,samba认证123密码
[root@bakserver ~]# useradd user01 [root@bakserver ~]# smbpasswd -a user01 New SMB password: Retype new SMB password: Added user user01.
window要访问bakpu中的文件,使用user01 123
(4)启动名称管理
[root@bakserver ~]# systemctl start nmb.service [root@bakserver ~]# systemctl start smb.service
(5)测试
在本机(window)上直接搜索启用或关闭windows功能
找到SMB直接全部开启
[root@bakserver ~]# setfacl -m u:user01:rwx /bakpu/*
3、在linux系统中安装samba客户端
(1)安装客户端软件包
[root@web ~]# yum -y install samba-client
(2)使用smb客户端访问服务器
[root@web ~]# smbclient -L 10.0.0.31 -U user01 //这条命令用于以用户 user01 的 身份列出指定 IP 地址 10.0.0.31 上 Samba 服务器所提供的共享资源列表 Enter SAMBA\user01's password: Sharename Type Comment --------- ---- ------- print$ Disk Printer Drivers smb_share Disk samba service IPC$ IPC IPC Service (Samba 4.10.16) user01 Disk Home Directories Reconnecting with SMB1 for workgroup listing. Server Comment --------- ------- Workgroup Master --------- ------- SAMBA BAKSERVER [root@web ~]# smbclient //10.0.0.31/smb_share -U user01 //以用户 user01 的身 份连接到 IP 地址为 10.0.0.31 上名为 smb_share 的共享资源 Enter SAMBA\user01's password: Try "help" to get a list of possible commands. smb: \> ls . D 0 Mon Jul 22 16:32:56 2024 .. D 0 Mon Jul 22 16:20:01 2024 1.mp4 N 5882370 Mon Jul 22 13:17:38 2024 1.txt N 0 Mon Jul 22 16:27:44 2024 3.jpg N 114639 Mon Jul 22 11:44:14 2024 a.txt N 10 Mon Jul 22 16:01:59 2024 passwd N 0 Mon Jul 22 11:43:15 2024 2.txt N 0 Mon Jul 22 16:34:17 2024 18855936 blocks of size 1024. 16848524 blocks available
(3)挂载smb共享文件cifs-utils 是一个包含一系列实用工具的软件包,主要用于在 Linux 系统上实现对 CIFS(CommonInternet File System,通用 Internet 文件系统)共享的挂载和管理。CIFS 是 SMB(Server Message Block)的一种变体,它允许 Linux 系统与其他支持 CIFS/SMB 协议的设备(如 Windows 系统)进行文件和打印机的共享访问。通过 cifs-utils 包中的 mount.cifs 命令,可以将远程的 CIFS 共享目录挂载到 Linux 本地的某个目录上,从而像操作本地文件一样对共享目录中的文件进行操作,例如查看、编辑、复制等。要使用 cifs-utils,通常需要进行以下步骤(具体命令可能因 Linux 发行版而略有不同):
-
安装 cifs-utils 包:在 Ubuntu 或 Debian 系统上,使用命令 sudo apt-get install cifs-utils 。在 CentOS 或 Fedora 系统上,使用命令 sudo dnf install cifs-utils 。
-
创建用于挂载共享目录的本地目录(例如 /mnt/share ): sudo mkdir /mnt/share 。
-
使用 mount.cifs 命令挂载共享目录: sudo mount.cifs //server/share /mnt/share -ousername=user,password=pass 。其中, //server/share 是共享目录的UNC路径(包括服务器地址和共享目录名称), /mnt/share 是本地挂载目录, -o 后面指定了连接共享所需的用户名和密码。
此外,还可以设置其他选项,如工作组域名等。例如,如果用户在 Windows 工作组或域中,可以这样设置: sudo mount.cifs -o username=<win_share_user>,domain=<win_domain>
//win_share_ip/<share_name> /mnt/share 。为了提高安全性,也可以使用凭证文件来保存用户名、密码和域名等信息,而不是直接在命令行中指定。首先创建凭证文件(如 /etc/win-credentials ),设置正确的权限和所有者(如 sudo chownroot: /etc/win-credentials && sudo chmod 600 /etc/win-credentials ),然后在挂载命令中使用 Credentials=/etc/win-credentials 选项来指定凭证文件。如果希望在系统启动时自动挂载共享目录,可以编辑 /etc/fstab 文件,在其中添加相应的挂载信息。需要注意的是,在使用 CIFS 共享时,要确保具有足够的权限访问远程共享目录,并且网络连接正常。同时,出于安全考虑,在公共网络环境中使用 CIFS 共享时要谨慎。另外,CIFS 协议已逐渐被 SMB2和 SMB3 协议所取代,它们提供了更好的安全性和性能。但 cifs-utils 通常也支持这些较新的协议版本。实际使用中,还需根据具体的网络环境和需求进行配置和调整。
[root@web ~]# yum -y install cifs-utils [root@web ~]# mount.cifs -o user=user01,pass=123 //10.0.0.31/smb_share ~/aaa/ [root@web ~]# ls aaa/ 1.mp4 1.txt 2.txt 3.jpg a.txt passwd
总结
-
ftp 局域⽹和外⽹都可以
-
nfs 局域⽹ 挂载⽅式访问 mount.nfs 侧重于Linux与Linux之间
-
samba 局域⽹ 直接访问(smbclinet)挂载的⽅式mount.cifs 侧重于Windows与 Linux之间
-