UNIX诞生,1970年1月1日
• 发行版的名称/版本由发行方决定
– Red Hat Enterprise Linux 5/6/7
– Suse Linux Enterprise 12
– Debian Linux 7.8
– Ubuntu Linux 14.10/15.04
• 是一套完整Linux系统
– Linux内核 + 各种外围软件
• CentOS,社区企业操作系统
________________________________________
文件系统:在空间中,数据排列组合存储的规则
• 传统的MBR分区模式
– 1~4个主分区
– 0~3个主分区+1个扩展分区(n个逻辑分区)
• 注意事项
– MBR分区表只能记录4个主分区,编号范围1-4
– 当有必要使用4个以上分区时,需要建立扩展分区(占
主分区编号),扩展分区最多只能有1个
– 扩展分区作为一个中间性质的容器,从其中再划分出
的分区空间即为逻辑分区
________________________________________
• 典型的文件系统类型
– EXT4,第四代扩展文件系统,RHEL6系列默认
– XFS,高级日志文件系统,RHEL7系列默认
– SWAP,交换空间(虚拟内存)
________________________________________
分区表示
hd,表示IDE设备
sd,表示SCSI设备
________________________________________
完成RHEL7系统的安装过程后,第一次启动时会要求进行初始化设置。
当提示查看协议信息还是创建用户时,输入1并回车。
接下来输入2并回车,表示接受许可协议。
先后输入两次c表示继续,按回车后会进入到欢迎界面。
________________________________________
蓝色:目录
黑色:文本文件
红色:压缩包
绿色:可以执行的程序
________________________________________
输出信息提示: 未找到命令
原因:
1.命令有误
2.该命令没有安装
________________________________________
1.cat /etc/redhat-release查看系统版本
cat -n /etc/passwd 查看文本并附带行号
cat /proc/cpuinfo 列出CPU处理器信息
cat /proc/meminfo 检查内存大小、空闲情况
2.hostname 查看当前主机名
3.pwd 显示当前所在位置(pwd — Print Working Directory)
4.cd / 切换路径(cd — Change Directory)
5.ls /root /boot #查看/root 和 boot目录内容(List)
ls -l :以长格式显示(显示目录内容的详细属性)
6.uname -r 列出内核版本
7.ifconfig eth0 192.168.1.168 临时设置的IP地址
8.lscpu 列出CPU处理器信息
9.poweroff 关机
reboot 重启
10.查看文本文件内容
cat :小文件
less:大文件 按q退出
查看文本文件部分内容
head -3 /etc/passwd #显示头多少行
tail -4 /etc/passwd #显示尾多少行
从文本文件内容中查找,包含指定字符串的行:grep '字符串' 文本文件路径
grep 'root' /etc/passwd
Linux命令:
用来实现某一类功能的指令或程序;‘
命令的执行依赖于解释器(默认的解释器:/bin/bash)
在终端输入的命令通过解释器被解释成电脑识别的二进制,经内核处理信息最后发送给硬件;
________________________________________
mount挂载操作:用于访问光盘的内容;实际上挂载操作为访问光盘提供了一个文件夹,通过在电
脑上访问这个文件加就可以来读取光盘内容;
1.ls /dev/cdrom 光驱设备的快捷方式
mkdir ABC 创建ABC文件夹 当作访问点
mount /dev/cdrom /ABC 最后一步 提供设备的访问点
ls /ABC/Packages/ 直接查看光盘中的软件安装包
umount /ABC 删除ABC的访问点
________________________________________
重定向输出:将前面命令的输出结果,作为内容写入文本文件中
> :覆盖重定向 (它会覆盖文件中之前的内容)
>> :追加重定向 (不会覆盖文件之前的内容)
1.head -2 /etc/passwed > /opt/test.txt 把passwed中的前两段内容写入test文档中(这个text文本可以是之前不存在的,这个命令会自己建立一个test.txt
hostname >> /opt/test.txt 将电脑名也写入到text文本中,不会覆盖之前内容
echo 123456>> /opt/test.txt echo是一种命令,可以将它后面根的内容写入到指定文本中
> /opt/test.txt 清空文本文件内容
________________________________________
ls ---list
格式:ls [选项] 【目录或文件名】
常用的命令选项:
-l 以长格式显示文件信息
-A 显示隐藏文件
-d 显示目录本身(而不是内容)的属性
-h 提供易读的容量单位(K M 等)
________________________________________
命令的别名:简化复杂命令的输入
1.alias ABC=‘ls -h' 定义别名,就是通过输入ABC来实现ls -h的命令操作
2.alias 查看所有的有效别名
3.unalias 删除别名
________________________________________
使用通配符
* 任意多个任意字符
? 后面跟一个? 表示后面只能出现一个字符;如果跟两个??表示后面出现两个字符
ls /etc/*tab 列出在etc文件中以tab机诶为的所有文件
ls /boot/vm* 列出以vm开头的所有文件
ls /dev/tty? 列出以tty开头但后面只能有一个字节的文件
ls /dev/tty?? 列出以tty开头但后面只能有2个字节的文件
-【a-z】列出a到z范围内的所有文件(a到z的范围是连续的)
-{ a,c,e,w} 列出括号内所存在的文件
ls /dev/tty[3-8] 列出以tty结尾的后面一个字节是在3到8的所有文件
ls /dev/tty{1,3,5,7,9,ahah} 列出以tty结尾,后面跟的字节只能在括号范围内的字节
________________________________________
使用vim创建/修改文件
• vim文本编辑器
命令模式 输入模式(插入模式) 末行模式
i 键
命----------------------->输入模式 ( 按Esc 键进行返回命令模式)
令
模
式----------------------->末行模式 (按Esc 键进行返回命令模式)
: 键
在末行模式下 :wq 保存退出 :q! 不保存退出
vim /opt/5.txt 进出5.txt文档里面 首先安i键进入输入模式,然后就可以写入内容了;(可以直接用vim创建文件5.txt
________________________________________
删除:
rm 后面常跟-rf 递归删除(含目录)、强制删除
rm -rf /opt/1.txt 删除1.txt文件
rm -rf /opt/* 删除opt文件下的所有文件
________________________________________
mv 移动/改名
格式: mv [选项]... 原文件... 目标路径
mv /opt/1.txt /opt/nsd01 把1.txt文档移动到nsd01 文件夹里面
mv /opt/nsd01 /opt/test 把文件nsd01的名字重命名为test
________________________________________
cp — Copy 复制
格式:cp [选项]... 原文件... 目标路径
-r:递归,复制目录时必须有此选项
cp /etc/passed /opt / 把passed移动到opt文件夹下;
cp /boot/vm* /opt/ 把boot文件中的所有以vm开头的文件复制到
cp -r /boot/ /opt/ 把boot目录文件复制到opt下,复制目录文件必须加-r
\cp -r /boot/ /opt/ 把boot目录再次复制的到opt下,这个时候必须要加\ 临时取消别名
________________________________________
________________________________________
1.date 查看日期
date -s “2008-9-6 11:11:11“ 修改日期
2.bc 计算器
7%2 =1 查看7除以2的余数
3./root:管理员的家目录
home :存放所有普通用户的家目录
4.mkdir -p /vod/movie/cartoon 创建多级目录-p表示连父目录一起创建
设置的永久的别名:
vim /root/.bashrc 进如vim 编辑下进行修改添加参数
alias s='ssh -X root@172.25.0.11' 用s来代替输入ssh -X root@172.25.0.11 使用起来比较方便,但注意,作完修改后要重新打开一个终端,才能看到新别名的
________________________________________
软件包管理:
1.先挂载光盘:输入以下动作
mkdir /dvd
mount /dev/cdrom /dev 将光盘挂载在dvd文件上
ls /dvd/Packages 通过dvd挂载点来查看光盘中的软件安装包
2.RPM软件包管理:
~ 软件包的命名格式及解释说明如下:
vsftpd-3.0.2-10.el7.x86_64.rpm
软件名--版本----适用的系统--操作系统的框架
~RPM :Package Manager ---RPM安装包管理器:
rpm -q firefox 查询firefox软件是否安装
rpm -hiv /dvd/Packages/vsftpd/firefox 安装软件firefox(用这种方法安装软件包有局限性,如果所安装的软件包有依赖关系则安装起来比较麻烦,需要一个一个安装)
rpm -e firefox 卸载软件firefox
________________________________________
Yum软件包仓库管理,自动解决依赖关系:
实行这个功能时需要手动写入已经配置好的服务器网址,下面为列子
服务端:cla***oom.example.com
http://cla***oom.example.com/content/rhel7.0/x86_64/dvd/ 软件包在服务器的存放路径
客户端:server0.example.com指定服务端的位置 /etc/yun.repos.d/*.repo (要确保这个本地路径里面没有repo结尾的文件,不然会影响服务端软件包的导入)因此需要先删除里面的文件
rm -rf /etc/yum.repos.d/* 删除本地服务端的所有文件
vim /etc/yum.repos.d/nsd.repo 编辑服务端于服务器之间的关系(nsd.repo是自己手动命名的文件)配置内容如下:
【nsd】 仓库标示
name=nsd 仓库描述信息
baseurl=http://cla***oom.example.com/content/rhel7.0/x86_64/dvd/ (服务器软件包存放地址)
enable=1 是否启用文件(0表示不启用,1表示启用)
gpgcheck=0 是否检测软件包的签名信息(这个一般不要检测)
---------------------------------------------------------------------------------------------------------------------
yum repolist 列出仓库信息 (没有报错即可)
________________________________________
Yum仓库的使用,(我们已经建立好了仓库,现在就可以直接使用下面命令来直接安装软件包)
yum -y install http 安装http软件包(-y 表示的是同意安装)
yum clean all 清除yum仓库的缓存 (有时候使用三个月左右需要
清楚服务器里面的缓存日志)
________________________________________
升级内核:(也是需要从远方服务器端下载内核软件包,然后在本地电脑来进行安装升级的)
wget http://cla***oom.example.com/content/rhel7.0/x86_64/errata/Packages/kernel-3.10.0-123.1.2.el7.x86_64.rpm wget后面跟一个远程软件包表示在本地下载内核安装包(次安装包默认下载存放的路径为当前所在路径
rpm -hiv kernel-3.10.0-123.1.2.el7.x86_64.rpm 安装内核 (安装完成后需要重启电脑)
reboot 重启电脑
________________________________________
根据字符串模式提取文本行
– grep [选项] '匹配字符串' 文本文件...
• 常用命令选项
– -v,取反匹配
– -i,忽略大小写
grep 'root' /etc/passwd 获取passwed中所有包含root的文件
grep -v ‘root’ /etc/passwd 获取passwd中除了root以外的所有文件
grep -i 'ROOT' /etc/passwd -i 表示不用区分大小写
grep 'seismic' /usr/share/dict/words > /root/wordlist 把seismic文件写入到wordlist文件中
________________________________________
– ^word 以字符串word开头
– word$ 以字符串word结尾
grep '^root' /etc/passwd 在passwd文档中找出以root开头的文件
grep 'bash$' /etc/passwd 在passwd文档中找出以bash结尾的文件
grep -v '^$' /etc/default/useradd 这个命令的意思是读取文件是筛选除来空白行,只显示有文字的行段
________________________________________
• 根据预设的条件递归查找对应的文件
– [目录] [条件1]
--常用条件表示:
-type 类型(f 文件 , d目录 , l快捷方式)
- name “文档名称”
- user 用户名
- size +/-文件大小(k,M,G
find /etc/ -name "*.conf" 在etc目录下,查找所有以.conf结尾的文档
find /etc/ -type d 在etc目录下,查找所有的目录文件
find /boot -type l 在etc目录下,查找所有的快捷方式
find /boot -type f 在etc目录下,查找所有的文件
find /root/ -name "nsd" -type f 在root文件中查找包含nsd的所有内容中的文件
find /boot/ -size +20M 在boot目录下,查找大于20M的文件
find /boot/ -size -20M 在boot目录下,查找小于20M的文件
find /home -user zhangsan 在home下查找张三的用户信息
find /boot/ -size +30M -exec cp {} /opt \; 在boot文件下查找大于30M的文件,并且复制到opt目录下面
find / -user lisi -type f -exec cp {} /root/findfiles \;
________________________________________
配置网络(永久配置)
一.配置永久主机名
echo ling > /etc/hostname 写入ling作为主机名
cat /etc/hostname 查看配置文件中的主机名
二.永久修改IP地址、子网掩码、网关地址
电脑网卡配置文件存放路径:/etc/sysconfig/network-scripts/ifcfg-eth0
1.显示当前网络接口(网卡)信息:
nmcli connection show
2.利用命令配置:(以下命令中的ip地址改变就可以了)
nmcli connection modify "System eth0" ipv4.method manual ipv4.addresses "172.25.0.11/24 172.25.0.254" ipv4.dns 172.25.254.254 connection.autoconnect yes
3.查看网卡配置文件内容
cat /etc/sysconfig/network-scripts/ifcfg-eth0
4.激活网卡配置
nmcli connection up 'System eth0'
三、永久修改DNS服务器地址 /etc/resolv.conf
echo nameserver 172.25.254.254 > /etc/resolv.conf 修改DNS服务器
cat /etc/resolv.conf 查看DNS服务器地址
nslookup server0.example.com 测试解析DNS
________________________________________
route -n 查看网关地址
管理用户和组:
用户账户的作用:登陆操作系统;访问控制(不同的用户具备不同的权限)
组帐号的作用:方便对用户的管理
唯一的标示:UID;GID
管理员的UID: 0
普通用户UID: RHEL7从1000开始;RHEL6从500开始
组的分类:附加组(从属组;公共组) ; 基本组(私有组)
________________________________________
添加用户:
用户的基本信息存放在 /etc/passwd 文件
head -1 /etc/passwd 查看用户信息第一行
root:x:0:0:root:/root:/bin/bash 用户信息的基本格式,以下为格式的解读:
用户名:密码占位符:UID:GID:用户的信息描述:家目录:解释器程序 (用户的信息描述一般没有)
-------------------------------------------------------------------------------------------------
--使用useradd 命令:
常用的命令选项:
-u 用户UID
-d 家目录路径
-s 登陆Shell
-g 基本组
-G 附加组
useradd nsd01 添加用户nsd01
id nsd01 查看用户nsd01信息 (例如:uid=1003(lisi) gid=1004(lisi) 组=1004(lisi) )
grep 'nsd01' /etc/passwd 在文件中查看用户的信息(例如:lisi:x:1003:1004::/home/lisi:/bin/bash)
useradd -u 1200 nsd02 修改用户nsd02的UID值
useradd -d /opt/abc nsd02 修改用户nsd02的家目录路径
useradd -s /sbin/nologin nsd02 阻止用户登陆系统(sbin/nologin 是一条命令)
groupadd study 创建study组
useradd -g study nsd02 把用户指定到study组里面
useradd -G study nsd02 指定附加组
________________________________________
管道操作:将前面命令的输出结果,传输给后面命令,作为后面命令的参数
head -12 /etc/passwd | tail -5 读取passwd中的前12行,因为有管道的存在,又读取已经读的12行中的最后五行;
cat -n /etc/passwd | head -12 | tail -5 显示/etc/passwd/文件8-12行内容
________________________________________
• 使用 passwd 命令
1.交互式设置密码(设置的时候会有一问一答的存在)
passwd nsd01 为用户nsd01设置密码
2.非交互式设置密码(设置时不存在对话)
echo 123 | passwd --stdin nsd01 设置用户nsd01的密码为123
用户的密码信息存放在 /etc/shadow 文件中
________________________________________
• 使用 usermod 命令(它就是把所有选项放一起一起来修改用户的属性)
– usermod [选项]... 用户名
常用命令选项
-u 用户id
-d 家目录路径
-s 登陆Shell
-g 基本组
-G 附加组
usermod -u 1600 -d /opt/test -G study -s /sbin/nologin nsd12
________________________________________
删除用户;
• 使用 userdel 命令
– userdel [-r] 用户名
userdel nsd01 删除nsd01用户
userdel -r nsd02 也是用来删除用户的命令
________________________________________
组管理
一.添加组
组基本信息存放在 /etc/group 文件中
grep 'study' /etc/group 查看study组的信息(study组是已经创建好的),下面为组的格式:
组的基本格式:study:x:1600:nsd01 (nsd01是一个已经添到组里面的用户)
格式的介绍: 组名:组的密码占位符:GID:组成员列表
------------------------------------------------------------------------------------------
• 使用 groupadd 命令(这个命令是用来添加组的,后面直接添组名)
– groupadd [-g 组ID] 组名
groupadd study 创建study组
• 使用 gpasswd 命令
– gpasswd -a 用户名 组名 (就是将用户添加到一个组里面去)
– gpasswd -d 用户名 组名 (就是将用户从组中删除)
gpasswd -a zhangsan study 把张三添加到study的组里去
gpasswd -d zhangsan study 把张三从study组中删除掉
二.删除组
• 使用 groupdel 命令
– groupdel 组名(删除已经创建的组很简单,groupdel 后面直接跟组名,就可以删掉)
groupdel study 删除study组
________________________________________
tar 归档及压缩
~归档的含义:将许多零散的文件整理为一个文件,文件的总大小基本不变;
~压缩的含义:按照某种算法减小文件所占用的空间大小;恢复时按照对应的逆向算法解压;
压缩的工具方法有三种,每种方法所压缩出来的文件类型也不一样,以下为三种方法,和对应的文件格式:
gzip ------------> .gz
bzip2------------> .bz2
xz--------------> .xz
----------------------------------------------------------------------------------------------------------
tar 集成备份工具:
-c 创建归档
-x 释放归档
-f 指定归档文件名称
-z , j , J 调用.gz , .bz2 , .xz 格式的工具进行处理
-t 显示归档的文件清单
-P(大写) 保存归档内文件的绝对路径 (绝对路径就是,在以后释放里面的文件时,文件会按照之前归档时的文件路径释放,可能会导致释放后与当前文件覆盖,造成数据的丢失)
-C 指定tar包的释放位置
-------------------------------------------------------------------------------------
• 使用 tar -c ... 命令
tar -zcf 加备份文件.tar.gz 加被备份的文档
tar -jcf 备份文件.tar.bz2 被备份的文档
tar -Jcf 备份文件.tar.xz 备份的文档
tar -zcf /opt/file.tar.gz /boot/ /home/ 把boot和home的文件一起创建压缩包,压缩包的名字是自己命名的,并且自己手动选择压缩包的存放路径
tar -jcf /opt/file.tar.bz2 /boot/ /home/ 作用同上只是用的压缩工具不一样
tar -Jcf /opt/file.tar.xz /boot/ /home/ 同上
tar -xf /opt/file.tar.gz -C /mnt/ 把opt下的压缩包file.tar.gz 解压释放到mnt下
----------------------------------------------------------------------------------------------------------
下面举个实验,主要是研究P 绝对路径的使用情况
echo 123456 > /opt/1.txt 在1.txt中写入123456
cat /opt/1.txt 查看1.txt的内容
tar -zcPf /mnt/nsd.tar.gz /opt/1.txt 以绝对路径创建1.txt的压缩包nsd.tar.gz
tar -tf /mnt/nsd.tar.gz 显示压缩文件内的文件清单
echo hahaxixi > /opt/1.txt 更改之前创建的1.txt文件内容
cat /opt/1.txt 查看txt文件,内容已经变为hahaxixi
tar -xPf /mnt/nsd.tar.gz 以绝对路径释放之前的压缩包
cat /opt/1.txt 查看txt文件内容,结果发现内容被刚释放的压缩包中的txt覆盖了
结论:我们以后在作文件压缩时,最好以绝对路径压缩文件,因为,到释放压缩包的时候
可以选择两种释放方法,一种以绝对路径释放(-P),一种以相对路径释放;尽管当时压缩文件
用的是绝对路径来压缩的,但只要你释放压缩文件时不用-P的绝对路径来释放文件的话,释放后
的文件依然是相对路径;
________________________________________
NTP时间同步:就是有一台时间服务器,为其他客户电脑提供标准时间的协议
• Network Time Protocol
NTP服务器为客户机提供标准时间,NTP客户机需要与NPT服务器保持沟通
实现这个功能需要有以下条件才可以进行:
1.服务端:提供相应功能的程序,会有一个NPT服务器:例如cla***om.example.com
2.客户端:访问服务器的程序
客户机:
-------------------------------------------------------------------------------------------------------------
以下为实行的具体方法操作:
1.安装客户端程序:chrony
rpm -q chrony
2.配置chrony指定的服务端位置,修改配置文件
vim /etc/chrony.conf 进入文件编辑下,添加服务器信息如下:
server cla***oom.example.com iburst
3.重起客户端服务chronyd,命令如下:
systemctl restart chronyd 重启服务;
systemctl enable chronyd 设置开机自动启用功能
4.验证时间同步:
date 显示时间
date -s “1996-1-2“ 修改时间为1996-1-2
systemctl restart chronyd 重启服务
date 查看时间是否有重新校准
________________________________________
cron 任务概述:
用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务;
需要安装的软件包:cronie 和 crontabs
系统服务:crond
生成的日志文件:/var/log/crond
时间 任务
分 时 日 月 周 命令或脚本程序
* * * * *
0 22 * * *
0 8 * * 1-5
下面为一个案例:
要求:每分钟记录当前的系统时间,写入到/opt/time.txt
• 使用 crontab 命令
– 编辑:crontab -e [-u 用户名]
– 查看:crontab -l [-u 用户名]
– 清除:crontab -r [-u 用户名]
date >> /opt/time.txt 查看系统时间,重定向写入到time.txt文本中;
crontab -e -u root 进入计划任务配置文件下,编辑内容,需要输入以下动作:
*/1 * * * * date >> /opt/time.txt (每分钟写入时间)
watch -n 1 cat /opt/time.txt 每1s中查看time。txt文件内容,来确定上述任务是否执行了;
---------------------------------------------------------------------------------------
备注工具:which : 这个命令是用来查找命令所对应的程序文件
周期性计划任务,命令写对应的程序文件。提高可靠性
vim: 命令模式 按 yy 复制光标所在的一行
p 粘贴
dd 删除光标所在的一行
基本权限:
一. 访问方式:
1.读取:允许查看内容--read r (能够 ls 浏览此目录内容)
2.写入:允许修改内容--write w (能够执行 rm/mv/cp/mkdir/touch/等更改目录内容的操作
3.可执行:语序运行和切换--execut x (能够 cd 切换到此目录)
二. 权限适用对象(归属)
1.所有者:拥有此文件/目录的用户-user u
2.所属组:拥有此文件/目录的组 group g
3.其他用户:除所有者,所属组以外的用户 other o
------------------------------------------------------------------------------
~使用ls -l 命令
ls -ld 显示文件或目录的详细属性
显示的内容以-开头的为:文本文件
d开头的为:目录
l 开头的为:快捷方式
下面举例说明:
drwxr-xr-x. 3 root root 15 7月 11 2014 /opt 这个是用命令查看的opt属性
d表示:此文加为目录文件
rwx为root所有者所具备的权限
r-x为所属组所具有的权限
最后的r-x为其他用户所具有的权限
---------------------------------------------------------------------------------
~设置基本权限:
使用chmod 命令(此命令是用来给权限对象添加或删除某些权限)
chmod g+w nsd01 给nsd01文件的所属组新添加一个w写入的权限
chmod u-w /nsd01 给nsd01的所有者去掉一个写入的权限
chmod o=rwx /nsd01 给nsd01的其他用户重新写入一些权限,rwx
chmod u=wrx,g=rx,o=--- /nsd01 给nsd01的所有者写入wrx权限,所属组rx权限,其他用户无权限,他们之间用逗号隔开
----------------------------------------------------------------------------------------------------------
以下为权限应用的案例:
以root用户新建/nsddir/目录,在此目录下新建readme.txt文件,并进一步完成下列操作
1)使用户zhangsan能够在此目录下创建子目录 切换用户 su - zhangsan
chmod o+w /nsddir/
2)使用户zhangsan不能够在此目录下创建子目录
chmod o-w /nsddir/
3)使用户zhangsan能够修改readme.txt文件
chmod o+w /nsddir/readme.txt
4)调整此目录的权限,使所有用户都不能进入此目录
chmod u-x,g-x,o-x /nsddir/
5)为此目录及其下所有文档设置权限 rwxr-x---
chmod -R u=rwx,g=rx,o=--- /nsddir/
________________________________________
~使用chown 命令
先创建一个文件夹 mkdir /nsd33
查看文件属性:ls -ld /nsd33 为:
drwxr-xr-x. 2 root root 6 11月 24 20:30 /nsd33 他的所有者和所属组都是root
通过chown命令来实现修改他的所有者和所属组,命令如下:
chown zhangsan:tarena /nsd33 这个就是把nsd33的所有者改为zhangsan,所属组改为tarena
通过chown也可以实现只修改所有者或者所属组,命令如下:
chown lisi /nsd33 只修改了所有者
chown :root /nsd33 只修改了所属组
________________________________________
附加权限(特殊权限)
~ Set GID
• 附加在属组的 x 位上
– 属组的权限标识会变为 s
– 适用于目录,Set GID可以使目录下新增的文档自动设
置与父目录相同的属组(继承)
mkdir /nsd06 创建一个06的文件机
ls -ld /nsd06 查看06 文件属性,如下:
drwxr-xr-x. 2 root root 6 11月 25 08:38 /nsd06 这个为查看到的文件属性
chown :tarena /nsd06 修改文件的所属组,由root改为tarena
mkdir /nsd06/abc 在06的文件下再创建一个文件adc
ls -ld /nsd06/abc 查看adc01的属性,如下:
drwxr-xr-x. 2 root root 6 11月 25 08:40 /nsd06/abc 发现所建的文件属性没有继承父母的属性
chmod g+s /nsd06/ 这个时候我们继续在原来的06文加上添加一个+s的附加权限
ls -ld /nsd06/查看文件属性,如下;
drwxr-sr-x. 3 root tarena 16 11月 25 08:40 /nsd06 这里有一个变化,所属组的x为变成了s
mkdir /nsd06/abc02 再在06文件下创建一个adc2的文件
ls -ld /nsd06/abc02查看属性如下:
drwxr-sr-x. 2 root tarena 6 11月 25 08:43 /nsd06/abc2,这个时候发现abc2的文件的所属组就继承了06的属性;
________________________________________
ACL策略权限
什么情况下需要使用ACL策略权限?比如在企业里有一个人员信息存放文件,这个文件只能给文员部的人wrx权限的,其他人员一律无任何权限,但这个时候老板说他 想只访问查看这个文件夹;这个时候我们第一不能把老板添加到文员组里面,因为老板不能去修改数据,第二,不能去修改其他用户的权限,因为一旦修改了其他人 都能访问了,所以这个时候就要使用ACL策略权限,给老板自己单独一个权限;
~acl访问策略:能够对个别用户个别组设置独立的权限
大多数挂载的EXT3/4、XFS文件系统默认已支持
-------------------------------------------------------------------------------------------------------------
• 使用 getfacl、setfacl 命令
– getfacl 文档... #查看acl策略
– setfacl -m u:用户名:权限类别 文档... 为用户添加策略
– setfacl -m g:组名:权限类别 文档... 为组添加策率
– setfacl -b 文档... #清除所有的ACL策略
– setfacl -x 文档... #清除指定的ACL策略
getfacl /nsd 查看nsd文件的acl策略权限;
setfacl -m u:zhangsan:rx /nsd10 设置acl策略,给张三添加一个访问读取权限
setfacl -x u:kenji /nsd10 删除keji的acl策略
setfacl -b /nsd10 删除nsd10 的全部acl策略
________________________________________
使用LDAP认证
什么是LDAP?
• 轻量级目录访问协议
– Lightweight Directory Access Protocol
– 由服务器来集中存储并向客户端提供的信息,存储方
式类似于DNS分层结构
– 提供的信息包括:用户名、密码、通信录、主机名映
射记录、......
本地用户:本地/etc/passwd
网络用户的实现: LDAP服务器
服务器:cla***oom.example.com
以下为具体操作:
客户端:
1.安装一个客户端软件sssd 与LDAP服务器沟通的软件
yum -y install sssd 安装软件命令
2.安装图形软件authconfig-gtk 配置sssd工具
yum -y install authconfig-gtk
3.运行图形软件authconfig-gtk 进行配置
[root@server0 /]# authconfig-gtk 以下为配置信息:
用户账户数据库:LDAP
LDAP搜索基础DN:dc=example,dc=com
LDAP服务器: cla***oom.example.com
钩选:用TLS加密连接
指定证书加密:
http://cla***oom.example.com/pub/example-ca.crt
认证方法:LDAP密码
4.重起客户端sssd服务
systemctl restart sssd 重启sssd服务
systemctl enable sssd 设置开机自启
5.验证:LDAP服务器上用户可以在本地识别
二、家目录漫游,在本地访问服务器上的资源
服务端:
cla***oom.example.com 作了NFS共享文件夹,共享了所有的家目录
客户端:访问共享
[root@server0 ~]# showmount -e cla***oom.example.com
Export list for cla***oom.example.com:
/home/guests 172.25.0.0/255.255.0.0
挂载共享目录,提供访问点
mount cla***oom:/home/guests/ /home/guests
磁盘管理:
磁道:track
扇区:sector 每个扇区512个字节
磁头:head
柱面:cylinde
------------------------------------------------------------------------------
________________________________________
MBR/msdos 分区模式:
#1~4个主分区,或者0~3个主分区+1个扩展分区(n个逻辑分区)
#最大支持容量为2.2TB的磁盘
#扩展分区不能格式化
时别硬盘---->分区规划------>格式化---->挂载使用
毛胚楼层----》打隔断------》装修-----》入住
------------------------------------------------------------------------------------
#查看磁盘~lsblk
[root@server0 ~]# lsblk 查看硬盘
#修改硬盘的分区表
使用fdisk + 硬件设备 命令
常用的交互指令:
m 列出指令帮助
p 查看现有的分区表
n 新建分区
d 删除分区
q 放弃更改并退出
w 保存更改并退出
fdisk /dev/vdb (进入分区编辑界面)
在分区时,当出现last时对话,直接输入要分区的容量+20G
分区完成后需要w保存并退出
ls /dev/vdb[1-2] 查看目录中的分区
------------------------------------------------------------------------
格式化文件系统(当分区完成后,需要对分区进行格式化)
使用mkfs + 工具 命令来实现 (以下四种为格式化的四种格式)
mkfs.ext3 分区设备路径
mkfs.ext4 分区设备路径
mkfs.xfs 分区设备路径
mkfs.vfat 分区设备路径
mkfs.ext4 /dev/vdb2 格式化vdb2的分区
mkfs.xfs /dev/vdb1
blkid /dev/vdb1 查看分区文件系统
---------------------------------------------------------------
挂载使用
mount /dev/vdb1 /part1
df -h 查看正在挂载使用的设备信息
-----------------------------------------------------------------
缓解根分区的压力
[root@server0 ~]# find -size 查找较大的目录有哪些
[root@server0 ~]# 还分新的分区 /dev/vdc1
[root@server0 ~]# mount /dev/vdc1 /mnt
[root@server0 ~]# cp -r /home/* /mnt
[root@server0 ~]# rm -rf /home/*
[root@server0 ~]# umount /mnt
[root@server0 ~]# mount /dev/vdc1 /home
-------------------------------------------------------------------
将虚拟机server重起
--------------------------------------------------------------------
开机自动挂载,修改配置文件 /etc/fstab
• 配置文件 /etc/fstab 的记录格式
设备路径 挂载点 类型 参数 备份标记 检测顺序
/dev/vdb1 /part1 xfs defaults 0 0
验证:
[root@server0 ~]# mount -a
检测/etc/fstab开机自动挂载配置文件,格式是否正确
检测/etc/fstab中,书写完成,但当前没有挂载的设备,进行挂载
[root@server0 ~]# df -h
------------------------------------------------------------------------------------
综合分区练习
[root@server0 ~]# fdisk /dev/vdb
p 查看分区表
n 创建新的分区----->回车----->回车---->回车----->在last结束时 +2G
p 查看分区表
n 创建新的分区
----->回车---->起始回车----->结束回车 将所有空间给扩展分区
p 查看分区表
n 创建新的分区----->起始回车------>结束+2G
d 删除分区
w 保存并退出
[root@server0 ~]# partprobe #刷新分区表
[root@server0 ~]# ls /dev/vdb[1-5]
[root@server0 ~]# lsblk
-----------------------------------------------------------------------------------
总结:
1.查看硬盘 lsblk
2.划分分区 fdisk
3.刷新分区表 partprobe
4.格式化文件系统 mkfs.xfs mkfs.ext4
5.挂载 mount
6.开机自动挂载 /etc/fstab
-------------------------------------------------------------------------------------
LVM逻辑卷的使用
1.整合分散的空间
2.实现分区的动态扩大与缩减
在“分区 --> 格式化”中间增加的一个逻辑层
– 零散空闲存储 ---- 整合的虚拟磁盘 ---- 虚拟的分区----- 格式化------ 挂载
砖--------->房子-------->打隔断-------->装修---------->入住
物理卷
Physical Volume
卷组
Volume Group
逻辑卷
Logical Volume
将众多的物理卷,组成卷组,再从卷组中划分逻辑卷
######################################################
图形添加全新的硬盘80G
[root@server0 ~]# lsblk
#####################################################
综合分区
将/dev/vdc划分6个分区,3个主分区,一个扩展分区,2个逻辑分区
[root@server0 ~]# fdisk /dev/vdc
n 创建新的分区----->回车----->回车---->回车----->在last结束时 +10G
n 创建新的分区----->回车----->回车---->回车----->在last结束时 +10G
n 创建新的分区----->回车----->回车---->回车----->在last结束时 +10G
p 查看分区表
n 创建新的分区
----->回车---->起始回车----->结束回车 将所有空间给扩展分区
p 查看分区表
n 创建新的分区----->起始回车------>结束+10G
n 创建新的分区----->起始回车------>结束+10G
w 保存并退出
[root@server0 ~]# partprobe #刷新分区表
[root@server0 ~]# ls /dev/vdc[1-6]
[root@server0 ~]# lsblk
[root@server0 ~]# ls /dev/vdc*
######################################################
新建逻辑卷
1.新建卷组
命令格式:vgcreate 卷组名称 分区路径
[root@server0 ~]# vgcreate myvg /dev/vdc1 /dev/vdc2
[root@server0 ~]# vgs
[root@server0 ~]# pvs
2.创建逻辑卷
命令格式:lvcreate -n 逻辑卷名称 -L 大小 基于卷组
[root@server0 ~]# lvcreate -n mylv -L 16G myvg
[root@server0 ~]# lvs
3.使用LVM逻辑卷
[root@server0 ~]# mkfs.ext4 /dev/myvg/mylv
[root@server0 ~]# mkdir /lvm
[root@server0 ~]# tail -1 /etc/fstab
/dev/myvg/mylv /lvm ext4 defaults 0 0
[root@server0 ~]# mount -a
[root@server0 ~]# df -h
#####################################################
LVM逻辑卷的扩展
一、卷组有足够的剩余空间
1.直接扩展逻辑卷的空间
[root@server0 ~]# vgs
[root@server0 ~]# lvextend -L 19G /dev/myvg/mylv
[root@server0 ~]# lvs
[root@server0 ~]# vgs
2.扩展文件系统的大小
扩展ext4文件系统: resize2fs
扩展xfs文件系统: xfs_growfs
[root@server0 ~]# df -h | tail -1
[root@server0 ~]# blkid /dev/myvg/mylv
[root@server0 ~]# resize2fs /dev/myvg/mylv
[root@server0 ~]# df -h | tail -1
二、卷组没有足够的剩余空间
1.扩展卷组空间
[root@server0 ~]# vgextend myvg /dev/vdc3
[root@server0 ~]# vgs
2.直接扩展逻辑卷的空间
[root@server0 ~]# vgs
[root@server0 ~]# lvextend -L 25G /dev/myvg/mylv
[root@server0 ~]# lvs
[root@server0 ~]# vgs
3.扩展文件系统的大小
[root@server0 ~]# df -h | tail -1
[root@server0 ~]# resize2fs /dev/myvg/mylv
[root@server0 ~]# df -h | tail -1
######################################################
了解:
缩减:不要做, 先缩减文件系统的大小,在缩减空间大小
[root@server0 ~]# resize2fs /dev/myvg/mylv 10G
[root@server0 ~]# umount /lvm
[root@server0 ~]# resize2fs /dev/myvg/mylv 10G
resize2fs 1.42.9 (28-Dec-2013)
请先运行 'e2fsck -f /dev/myvg/mylv'.
[root@server0 ~]# e2fsck -f /dev/myvg/mylv
[root@server0 ~]# resize2fs /dev/myvg/mylv 10G
[root@server0 ~]# lvreduce -L 10G /dev/myvg/mylv
[root@server0 ~]# lvreduce -L 10G /dev/myvg/mylv
WARNING: Reducing active logical volume to 10.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv? [y/n]: y
#####################################################
• 创建卷组的时候设置PE大小
– vgcreate -s PE大小 卷组名 空闲分区...
– vgchange -s PE大小 卷组名
PE:卷组划分空间的单位 4M
[root@server0 ~]# vgdisplay myvg
[root@server0 ~]# vgchange -s 2M myvg
[root@server0 ~]# vgdisplay myvg
• 创建逻辑卷的时候指定PE个数
– lvcreate -l PE个数 -n 逻辑卷名 卷组名
[root@server0 ~]# lvcreate -l 102 -n lvtest02 myvg
Logical volume "lvtest02" created
[root@server0 ~]# lvs
#####################################################
交换分区(虚拟内存)
• 相当于虚拟内存,
– 当物理内存不够用时,使用磁盘空间来模拟内存
– 在一定程度上缓解内存不足的问题
[root@server0 ~]# swapon -s #查看交换空间,组成 成员信息
[root@server0 ~]# mkswap /dev/vdc5 #格式化,交换文件系统
[root@server0 ~]# swapon /dev/vdc5 #启用交换分区
[root@server0 ~]# swapon -s
[root@server0 ~]# mkswap /dev/vdc6 #格式化,交换文件系统
[root@server0 ~]# swapon /dev/vdc6 #启用交换分区
[root@server0 ~]# swapon -s
#####################################################
开机自动启用交换分区 /etc/fstab
[root@server0 ~]# vim /etc/fstab
[root@server0 ~]# tail -2 /etc/fstab
/dev/vdc5 swap swap defaults 0 0
/dev/vdc6 swap swap defaults 0 0
[root@server0 ~]# swapoff /dev/vdc[5-6] #停用交换分区
[root@server0 ~]# swapon -s
[root@server0 ~]# swapon -a #检测/etc/fstab交换分区
[root@server0 ~]# swapon -s
########################################
###############################################
Shell脚本
• 脚本: 可以执行文件,实现某种功能
• 提前设计可执行语句,用来完成特定任务的文件(命令的堆积)
规范Shell脚本的一般组成
• #! 环境声明(Sha-Bang) 以下所有代码,用那个程序解释
• # 注释文本
• 可执行代码
[root@server0 ~]# cat /root/hello.sh
#!/bin/bash
echo hello world
hostname
uname -r
ifconfig | head -2 | tail -1
cat /etc/redhat-release
[root@server0 ~]# /root/hello.sh
####################################################
重定向输出
> : 只收集正确信息的重定向
2>: 只收集错误信息的重定向
&>: 收集正确与错误信息的重定向
[root@server0 ~]# echo 123 > /opt/1.txt
[root@server0 ~]# cat /opt/1.txt
[root@server0 ~]# cat /etc
[root@server0 ~]# cat /opt/1.txt /etc/
[root@server0 ~]# cat /opt/1.txt /etc/ > /mnt/a.txt
[root@server0 ~]# cat /mnt/a.txt
[root@server0 ~]# cat /opt/1.txt /etc/ 2> /mnt/a.txt
[root@server0 ~]# cat /mnt/a.txt
[root@server0 ~]# cat /opt/1.txt /etc/ &> /mnt/a.txt
[root@server0 ~]# cat /mnt/a.txt
运算:
[root@server0 ~]# echo 1+2 | bc
[root@server0 ~]# echo 2*3 | bc
[root@server0 ~]# echo 4/2 | bc
[root@server0 ~]# echo 10%3 | bc #取余数运算
$( ):将命令的输出结果,作为参数
[root@server0 ~]# rm -rf /opt/*
[root@server0 ~]# cd /opt/
[root@server0 opt]# date
[root@server0 opt]# date +%F #输出年月日
[root@server0 opt]# mkdir $(date +%F)
[root@server0 opt]# ls
[root@server0 opt]# mkdir mydir-$(date +%F)
[root@server0 opt]# ls
[root@server0 opt]# mkdir $(hostname)-$(date +%F)
[root@server0 opt]# ls
''(单引号):取消特殊字符的意义
[root@server0 /]# echo '* >'
[root@server0 /]# echo '* > ? {} [] ~'
#####################################################
/dev/null:黑洞设备
变量:为了增加脚本适用环境的能力,以及方便适用
变量作用:以不变的名称,存储变化的值(容器)
read 产生交互:为了降低脚本的使用难度
[root@server0 /]# cat /root/user.sh
#!/bin/bash
read -p '请输入您要创建的用户名:' user
useradd $user &> /dev/null
echo $user用户创建成功
echo 123 | passwd --stdin $user &> /dev/null
echo $user用户密码设置成功
[root@server0 /]# /root/user.sh
#!/bin/bash
read -p '请输入您要创建的用户名:' user
read -p '请输入您要设置的密码:' pass
useradd $user &> /dev/null
echo $user用户创建成功
echo $pass | passwd --stdin $user &> /dev/null
echo $user用户密码设置成功
#################################################
变量的定义
• 以不变的名称存放的可能会变化的值
– 变量名=变量值
– 方便以固定名称重复使用某个值
– 提高对任务需求、运行环境变化的适应能力
• 设置变量时的注意事项
– 若指定的变量名已存在,相当于为此变量重新赋值
– 等号两边不要有空格
– 变量名由字母/数字/下划线组成,区分大小写
– 变量名不能以数字开头,不要使用关键字和特殊字符
• 基本格式
– 引用变量值:$变量名
– 查看变量值:echo $变量名、echo ${变量名}
[root@server0 /]# a=rhel
[root@server0 /]# echo $a
[root@server0 /]# echo ${a}
[root@server0 /]# echo $a7
[root@server0 /]# echo ${a}7
环境变量
• 常见的环境变量
– USER(当前登陆的用户)
– RANDOM(储存一个随机数)
位置变量
• 在执行脚本时提供的命令行参数
– 表示为 $n,n为序号
– $1、$2、.. .. ${10}、${11}、.. ..
[root@server0 /]# vim /root/2.sh
#!/bin/bash
echo $1
echo $2
echo $3
[root@server0 /]# /root/2.sh hello tom harry
[root@server0 /]# vim /root/3.sh
#!/bin/bash
cat -n $1 | head -$2
[root@server0 /]# /root/3.sh /etc/passwd 3
预定义变量
$# 已
加载的位置变量的个数
$* 所有位置变量的值
$? 程序退出后的状态值,0表示正常,其他值异常
[root@server0 ~]# cat /root/3.sh
#!/bin/bash
echo $1
echo $2
echo $#
echo $*
[root@server0 ~]# /root/3.sh haha xixi hehe lele
######################################################
常用的测试选项
• 检查文件状态
-e:存在为真
-d:存在且为目录才为真
-f:存在且为文件才为真
-r:存在且具备读取权限才为真
-w:存在且具备写入权限才为真
-x:存在且具备执行权限才为真
• 比较整数大小(带e字母的都有“等于”二字)
-gt:大于
-ge:大于等于
-eq:等于
-ne:不等于
-lt:小于
-le:小于等于
• 字符串比对
==:相等为真
!=:不相等为真
####################################################
if双分支处理
if [条件];then
命令序列xx
else
命令序列yy
fi
请书写脚本:
用户输入一个用户名,判断用户是否存在
如果存在 输出用户/etc/passwd相应一行
如果不存在 则创建该用户
[root@server0 ~]# vim /root/6.sh
read -p '请输入一个用户名:' user
id $user &> /dev/null
if [ $? -eq 0 ];then
grep $user /etc/passwd
else
useradd $user
echo $user 创建成功
fi
[root@server0 ~]# /root/6.sh
请书写脚本:
计算机随机产生一个10以内的随机数
用户随机输入一个10以内的随机数
如果相等,则中奖了
如果不相等,则谢谢回顾
[root@server0 ~]# vim /root/7.sh
#!/bin/bash
read -p '请输入一个10以内的随机数字:' num1
num2=$(echo $RANDOM % 10 | bc)
if [ $num1 -eq $num2 ];then
echo 恭喜您,中奖了
else
echo 恭喜您,谢谢回顾
echo 正确数字为$num2
fi
[root@server0 ~]# /root/7.sh
if多分支处理
if [条件1] ; then
命令序列xx
elif [条件2] ; then
命令序列yy
elif [条件3] ; then
命令序列aa
else
命令序列zz
fi
请书写脚本:
请用户输入积分.
如果用户的积分大于等于90,输出 vip plus
如果用户的积分大于等于80,输出 vip
如果用户的积分大于等于70,输出 老司机
如果用户的积分大于等于60,输出 新手
以上均不满足,输出 仍需努力
[root@server0 ~]# vim /root/8.sh
#!/bin/bash
read -p '请用户输入积分:' num
if [ $num -ge 90 ];then
echo VIP PLUS
elif [ $num -ge 80 ];then
echo VIP
elif [ $num -ge 70 ];then
echo 老司机
elif [ $num -ge 60 ];then
echo 新手
else
echo 仍需努力
fi
##################################################
案例4:编写一个判断脚本
在 server0 上创建 /root/foo.sh 脚本
1)当运行/root/foo.sh redhat,输出为fedora
2)当运行/root/foo.sh fedora,输出为redhat
3)当没有任何参数或者参数不是 redhat 或者
fedora时,其错误输出产生以下信息:
/root/foo.sh redhat|fedora
[root@server0 ~]# vim /root/foo.sh
#!/bin/bash
if [ $# -eq 0 ];then
echo '/root/foo.sh redhat|fedora' >&2
exit 2
elif [ $1 == redhat ];then
echo fedora
elif [ $1 == fedora ];then
echo redhat
else
echo '/root/foo.sh redhat|fedora' >&2
exit 3
fi
[root@server0 ~]# /root/foo.sh
[root@server0 ~]# echo $?
[root@server0 ~]# /root/foo.sh 2> /opt/2.txt
[root@server0 ~]# cat /opt/2.txt
##################################################
for循环结构
循环作用:让计算机,反复执行重复性的操作
for 变量 in 值列表
do
执行的动作
done
[root@server0 ~]# vim /root/10.sh
#!/bin/bash
for user in kenji natasha tom harry jack
do
useradd $user
echo $user 成功
done
[root@server0 ~]# /root/10.sh
#######################################################
真机上:还原三台虚拟机cla***oom、server、desktop
[root@room9pc14 桌面]# rht-vmctl reset cla***oom
[root@room9pc14 桌面]# rht-vmctl reset server
[root@room9pc14 桌面]# rht-vmctl reset desktop
真机远程管理:ssh方式,方便使用server与desktop
[root@room9pc14 桌面]# ssh 用户名@IP地址
补充快捷键: Ctrl+Shift+t 开启一个新的终端
[root@room9pc14 桌面]# ssh -X root@172.25.0.11
##################################################
for循环结构
循环作用:让计算机,反复执行重复性的操作
for 变量 in 值列表
do
执行的动作
done
[root@server0 ~]# vim /root/10.sh
#!/bin/bash
for user in kenji natasha tom harry jack
do
useradd $user
echo $user 成功
done
[root@server0 ~]# /root/10.sh
#######################################################
案例5:编写一个批量添加用户脚本
在 server0 上创建 /root/batchusers 脚本
1)此脚本要求提供用户名列表文件作为参数
2)如果没有提供参数,此脚本应该给出
提示 Usage: /root/batchusers,退出并返回相应值
3)如果提供一个不存在的文件,此脚本应该给出
提示 Input file not found,退出并返回相应值
4)新用户的登录Shell为 /bin/false,无需设置密码
5)用户列表测试文件:
http://cla***oom/pub/materials/userlist
[root@server0 ~]# vim /root/batchusers
#!/bin/bash
if [ $# -eq 0 ];then #如果没有输入位置参数
echo 'Usage: /root/batchusers' >&2
exit 1
fi
if [ ! -f $1 ];then #如果文件不存在为真
echo 'Input file not found' >&2
exit 2
fi
for i in $(cat $1)
do
useradd -s /bin/false $i &> /dev/null
echo $i成功
done
######################################################
系统安全保护
SELinux概述
• Security-Enhanced Linux
– 美国NSA国家安全局主导开发,一套增强Linux系统安
全的强制访问控制体系
– 集成到Linux内核(2.6及以上)中运行
– RHEL7基于SELinux体系针对用户、进程、目录和文件
提供了预设的保护策略,以及管理工具
##################################################
• SELinux的运行模式
– enforcing(强制)、permissive(宽松)
– disabled(彻底禁用)
• 切换运行模式
– 临时切换:setenforce 1|0
– 固定配置:/etc/selinux/config 文件
– 如果修改SELinux状态为disabled(彻底禁用),需要修改/etc/selinux/config 文件并且重起
虚拟机server
[root@server0 ~]# getenforce #查看当前SELinux状态
Enforcing
[root@server0 ~]# setenforce 0 #设置SELinux状态
[root@server0 ~]# getenforce
Permissive
[root@server0 ~]# vim /etc/selinux/config
SELINUX=permissive
虚拟机desktop
[root@desktop0 ~]# getenforce
Enforcing
[root@desktop0 ~]# setenforce 0
[root@desktop0 ~]# getenforce
Permissive
[root@desktop0 ~]# vim /etc/selinux/config
SELINUX=permissive
#################################################
配置聚合连接(网卡绑定、链路聚合)
HSRP热备份路由协议: 备份网关设备
活跃路由器 备份路由器
虚拟路由器
网卡绑定: 备份网卡
网卡1 :eth1 网卡2 :eth2
虚拟网卡team
#####################################################
建立网卡绑定
虚拟机Server0上
1.建立team虚拟的网卡
参考 man teamd.conf —— '{"runner":{"name":"activebackup"}}'
# nmcli connection add type team
con-name team0 ifname team0 autoconnect yes
config '{"runner": {"name": "activebackup"}}'
建立一个类型为team的网卡,配置文件名字为team0,
ifconfig命令显示的设备名为team0,每次开机自动启动
team运行的模式为热备份方式
# vim /etc/sysconfig/network-scripts/ifcfg-team0
# ifconfig team0
2.添加奴隶
# nmcli connection add type team-slave con-name team0-1 ifname eth1 master team0
# nmcli connection add type team-slave con-name team0-2 ifname eth2 master team0
添加一个类型为team-slave的成员,配置文件名team0-1,设备为eth1,添加到team0组队中
3.配置IP地址
# nmcli connection modify team0
ipv4.method manual ipv4.addresses 192.168.1.1/24
connection.autoconnect yes
4.激活
[root@server0 ~]# nmcli connection up team0
[root@server0 ~]# nmcli connection up team0-1
[root@server0 ~]# nmcli connection up team0-2
[root@server0 ~]# ifconfig team0
5.查看team信息
[root@server0 ~]# teamdctl team0 state
6.配置错误,删除重做
[root@server0 ~]# nmcli connection delete team0
[root@server0 ~]# nmcli connection delete team0-1
[root@server0 ~]# nmcli connection delete team0-2
###################################################
配置IPV6地址
ip地址:唯一标识,网络一个节点的地址
ipv4: 32个二进制 点分4个10进制
ipv6: 128个二进制 以":"分隔8段,每段用16进制表示
案例3:配置IPv6地址
# nmcli connection modify 'System eth0'
ipv6.method manual ipv6.addresses 2003:ac18::305/64 connection.autoconnect yes
# nmcli connection up 'System eth0'
# ping6 2003:ac18::305
#####################################################
配置用户环境(永久别名的定义)
alias别名设置
• 查看已设置的别名
– alias [别名名称]
• 定义新的别名
– alias 别名名称= '实际执行的命令行'
• 取消已设置的别名
– unalias [别名名称]
用户个性化配置文件
• 影响指定用户的 bash 解释环境
– ~/.bashrc,每次开启 bash 终端时生效
全局环境配置
• 影响所有用户的 bash 解释环境
– /etc/bashrc,每次开启 bash 终端时生效
[root@server0 ~]# vim /root/.bashrc #root用户自定义别名
alias hello='echo hi'
[root@server0 ~]# vim /etc/bashrc #所有用户自定义别名
alias myls='ls -ld'
[root@server0 ~]# vim /home/student/.bashrc #student用户
alias hi='echo hello'
开启一个新的终端
[root@server0 ~]# hello #执行成功
[root@server0 ~]# myls /root/ #执行成功
[root@server0 ~]# hi #执行失败
[root@server0 ~]# su - student
[student@server0 ~]$ hello #执行失败
[student@server0 ~]$ hi #执行成功
[student@server0 ~]$ myls /root/ #执行成功
[student@server0 ~]$ exit #回到root
####################################################
[root@server0 ~]# vim /etc/bashrc #所有用户自定义别名
alias qstat='/bin/ps -Ao pid,tt,user,fname,rsz'
####################################################
防火墙策略管理
一、Web服务器
Server服务端 :服务端软件
客户端:客户端软件,访问服务端资源
1.安装服务端软件httpd
[root@server0 ~]# yum -y install httpd
2.启动httpd服务,设置为开机自起
[root@server0 ~]# systemctl restart httpd
[root@server0 ~]# systemctl enable httpd
3.验证
[root@server0 ~]# firefox http://172.25.0.11
4.书写一个页面
默认网页文件路径:/var/www/html
默认网页文件名称:index.html
[root@server0 ~]# vim /var/www/html/index.html
<marquee><font color=red><h1>hahaxixihehelele
[root@server0 ~]# firefox http://172.25.0.11
#######################################################
二、FTP服务器
1.安装服务端软件vsftpd
[root@server0 ~]# yum -y install vsftpd
2.启动vsftpd服务,设置为开机自起
[root@server0 ~]# systemctl restart vsftpd
[root@server0 ~]# systemctl enable vsftpd
3.验证
[root@server0 ~]# firefox ftp://172.25.0.11
默认的共享路径:/var/ftp
#####################################################
• 系统服务:firewalld
• 管理工具:firewall-cmd、firewall-config
[root@server0 ~]# systemctl restart firewalld
作用:隔离, 严格控制入站请求,放行所有出站
• 根据所在的网络场所区分,预设保护规则集
– public:仅允许访问本机的sshd等少数几个服务
– trusted:允许任何访问
– block:拒绝任何来访请求
– drop:丢弃任何来访的数据包
防火墙判定的规则:
1.客户端数据中的源IP地址,查看所有区域中那个区域有该地址的规则,如果有则进入该区域
2. 进入默认区域(管理员可以设置默认区域)
####################################################
虚拟机server0:
# firewall-cmd --get-default-zone #查看默认区域
# firewall-cmd --zone=public --list-all #查看区域规则
虚拟机desktop0:
# ping -c 2 172.25.0.11 #可以通信
虚拟机server0:
# firewall-cmd --get-default-zone #查看默认区域
# firewall-cmd --set-default-zone=block #修改默认区域
# firewall-cmd --get-default-zone
虚拟机desktop0:
# ping -c 2 172.25.0.11 #不能通信,当可以收到回应
虚拟机server0:
# firewall-cmd --set-default-zone=drop #修改默认区域
# firewall-cmd --get-default-zone #查看默认区域
虚拟机desktop0:
# ping -c 2 172.25.0.11 #不能通信,没有回应
######################################################
虚拟机server0:
# firewall-cmd --set-default-zone=public
# firewall-cmd --get-default-zone
# firewall-cmd --zone=public --list-all #查看区域策略
# firewall-cmd --zone=public --add-service=http #添加服务
虚拟机desktop0:
# firefox http://172.25.0.11 #可以访问
# firefox ftp://172.25.0.11 #不可以访问
虚拟机server0:
# firewall-cmd --zone=public --list-all #查看区域策略
# firewall-cmd --zone=public --add-service=ftp #添加服务
虚拟机desktop0:
# firefox http://172.25.0.11 #可以访问
# firefox ftp://172.25.0.11 #可以访问
#####################################################
– 永久配置(permanent)
虚拟机server0:
# firewall-cmd --reload #重新加载防火墙配置
# firewall-cmd --zone=public --list-all #查看防火器规则
# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --permanent --zone=public --add-service=ftp
# firewall-cmd --zone=public --list-all #查看防火器规则
# firewall-cmd --reload #重新加载防火墙配置
# firewall-cmd --zone=public --list-all
#######################################################
实现本机的端口映射
• 本地应用的端口重定向(端口1 --> 端口2)
– 从客户机访问 端口1 的请求,自动映射到本机 端口2
– 比如,访问以下两个地址可以看到相同的页面:
http://172.25.0.11:5423/
http://172.25.0.11/
从客户机访问 ------》172.25.0.11:5423-----------》172.25.0.11:80
虚拟机Server0:
# firewall-cmd --permanent --zone=public
--add-forward-port=port=5423:proto=tcp:toport=80
# firewall-cmd --reload
# firewall-cmd --zone=public --list-all
虚拟机Desktop0:
# firefox http://172.25.0.11:5423
######################################################
真机上:还原三台虚拟机cla***oom、server、desktop
[root@room9pc14 桌面]# rht-vmctl reset cla***oom
[root@room9pc14 桌面]# rht-vmctl reset server
[root@room9pc14 桌面]# rht-vmctl reset desktop
真机远程管理:ssh方式,方便使用server与desktop
[root@room9pc14 桌面]# ssh 用户名@IP地址
补充快捷键: Ctrl+Shift+t 开启一个新的终端
[root@room9pc14 桌面]# ssh -X root@172.25.0.11
##################################################
修改两台虚拟机防火墙默认区域为trusted:
[root@server0 ~]# firewall-cmd --set-default-zone=trusted
[root@desktop0 ~]# firewall-cmd --set-default-zone=trusted
#######################################################
Samba共享服务,跨平台的共享(Windows与Linux)
– 用途:为客户机提供共享使用的文件夹
– 协议:SMB(TCP 139)、CIFS(TCP 445)
• 所需软件包:samba
• 系统服务:smb
• Samba用户 —— 专用来访问共享文件夹的用户
– 采用独立设置的密码
– 但需要提前建立同名的系统用户(可以不设密码)
• 使用 pdbedit 管理工具
– 添加用户:pdbedit -a 用户名
– 查询用户:pdbedit -L [用户名]
– 删除用户:pdbedit -x 用户名
• 修改 /etc/samba/smb.conf
[自定共享名]
path = 文件夹绝对路径
; public = no|yes //默认no
; browseable = yes|no //默认yes
; read only = yes|no //默认yes
; write list = 用户1 .. .. //默认无
; valid users = 用户1 .. .. //默认任何用户
; hosts allow = 客户机地址 .. ..
; hosts deny = 客户机地址 .. ..
装包、配置(修改主配置文件)、起服务
服务端Server0
1.安装samba软件,服务端软件
2.建立Samba账户
[root@server0 ~]# useradd -s /sbin/nologin harry
[root@server0 ~]# useradd -s /sbin/nologin chihiro
[root@server0 ~]# useradd -s /sbin/nologin kenji
[root@server0 ~]# pdbedit -a harry #添加设置Samba帐号
[root@server0 ~]# pdbedit -a chihiro
[root@server0 ~]# pdbedit -a kenji
[root@server0 ~]# pdbedit -L #查看所有Samba账户
3修改 /etc/samba/smb.conf(vim命令模式,/workgroup 全文查找)
[root@server0 ~]# mkdir /common #创建共享目录
[root@server0 ~]# echo 123 > /common/a.txt #创建测试文件
[root@server0 ~]# ls /common
[root@server0 ~]# vim /etc/samba/smb.conf
.......
workgroup = STAFF #设置工作组
.......
[common] #设置共享名
path = /common #设置共享的实际路径
4启动smb服务,设置为开机自起
[root@server0 ~]# systemctl restart smb
[root@server0 ~]# systemctl enable smb
#####################################################
客户端Desktop0
1.安装软件包:samba-client
2.列出共享资源
– smbclient -L 服务器地址
[root@desktop0 ~]# smbclient -L 172.25.0.11
Enter root's password: 直接回车
3.连接到共享文件夹
– smbclient -U 用户名 //服务器地址/共享名
[root@desktop0 ~]# smbclient -U harry //172.25.0.11/common
Enter harry's password: 输入密码123
Domain=[STAFF] OS=[Unix] Server=[Samba 4.1.1]
smb: \>
###################################################
客户端访问服务端资源
1.服务端,服务的访问控制
2.服务端,防火墙
3.服务端,SELinux策略
4.服务端,本地权限
###################################################
SELinux策略,布尔值(开启或关闭)
虚拟机Server0:开启ELinux功能的开关
• getsebool 查看 SELinux 开关
[root@server0 ~]# getsebool -a | grep samba
samba_export_all_ro --> off
samba_export_all_rw --> off
• setsebool 控制 SELinux 开关
– 需要加 -P 选项才能实现永久设置
[root@server0 ~]# setsebool samba_export_all_ro on
[root@server0 ~]# getsebool -a | grep samba
####################################################
客户端Desktop方便的访问
[root@desktop0 ~]# mkdir /mnt/nsd01
[root@desktop0 ~]# ls /mnt/nsd01
安装一个可以支持挂载Samba的软件cifs-utils
[root@desktop0 ~]# yum -y install cifs-utils
# mount -o username=harry,password=123 //172.25.0.11/common /mnt/nsd01/
# df -h
完成开机自动挂载
_netdev:在开机启动时,先启动完网络服务,在挂载该设备
[root@desktop0 ~]# vim /etc/fstab
//172.25.0.11/common /mnt/nsd01 cifs username=harry,password=123,_netdev 0 0
[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df -h
####################################################
完成读写的Samba共享
服务端Server0
1.安装samba软件,服务端软件
2.建立Samba账户
3.修改配置文件/etc/samba/smb.conf
[root@server0 ~]# mkdir /devops
[root@server0 ~]# touch /devops/b.txt
[root@server0 ~]# vim /etc/samba/smb.conf
[devops]
path = /devops
write list = chihiro #允许chihiro可以写
4.重起smb服务
5.修改SELinux开关
[root@server0 ~]# getsebool -a | grep samba
[root@server0 ~]# setsebool samba_export_all_rw on
[root@server0 ~]# getsebool -a | grep samba
6.赋予chihiro本地权限
[root@server0 ~]# setfacl -m u:chihiro:rwx /devops/
[root@server0 ~]# getfacl /devops/
客户端Desktop完成开机自动挂载
[root@desktop0 ~]# mkdir /mnt/nsd02
[root@desktop0 ~]# vim /etc/fstab
//172.25.0.11/devops /mnt/nsd02 cifs username=chihiro,password=123,_netdev 0 0
[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df -h
####################################################
multiuser机制(多用户的Samba挂载)
– multiuser,提供对客户端多个用户身份的区分支持
– sec=ntlmssp,提供NT局域网管理安全支持
客户端Desktop完成开机自动挂载
[root@desktop0 /]# vim /etc/fstab
//172.25.0.11/devops /mnt/nsd02 cifs username=kenji,password=123,_netdev,multiuser,sec=ntlmssp 0 0
[root@desktop0 /]# umount /mnt/nsd02
[root@desktop0 /]# mount -a
[root@desktop0 /]# df -h
[root@desktop0 /]# su - student
[student@desktop0 ~]$ cifscreds add -u chihiro 172.25.0.11
[student@desktop0 ~]$ touch /mnt/nsd02/10.txt
[student@desktop0 ~]$ ls /mnt/nsd02
[student@desktop0 ~]$ exit
#######################################################
Sticky Bit
• 附加在其他人的 x 位上
– 其他人的权限标识会变为 t
– 适用于开放 w 权限的目录,可以阻止用户滥用 w 写入
权限(禁止操作别人的文档)
[root@server0 ~]# mkdir /public
[root@server0 ~]# chmod u=rwx,g=rwx,o=rwx /public
[root@server0 ~]# ls -ld /public
[root@server0 ~]# chmod o+t /public
[root@server0 ~]# ls -ld /public
####################################################
真机上:还原三台虚拟机cla***oom、server、desktop
[root@room9pc14 桌面]# rht-vmctl reset cla***oom
[root@room9pc14 桌面]# rht-vmctl reset server
[root@room9pc14 桌面]# rht-vmctl reset desktop
真机远程管理:ssh方式,方便使用server与desktop
[root@room9pc14 桌面]# ssh 用户名@IP地址
补充快捷键: Ctrl+Shift+t 开启一个新的终端
[root@room9pc14 桌面]# ssh -X root@172.25.0.11
##################################################
修改两台虚拟机防火墙默认区域为trusted
[root@server0 ~]# firewall-cmd --set-default-zone=trusted
[root@desktop0 ~]# firewall-cmd --set-default-zone=trusted
#####################################################
NFS共享服务(Linux与Linux)
普通NFS服务
• Network File System,网络文件系统
– 用途:为客户机提供共享使用的文件夹
– 协议:NFS(TCP/UDP 2049)、RPC(TCP/UDP 111)
• 所需软件包:nfs-utils
• 系统服务:nfs-server
• 列出有哪些NFS共享资源
– showmount -e 服务器地址
• 手动挂载NFS共享
– mount 服务器地址:文件夹路径 挂载点
• 开机挂载配置 /etc/fstab
– 服务器地址:文件夹路径 挂载点 nfs _netdev 0 0
服务端:Server0
1.安装服务端软件包,nfs-utils
2.修改 /etc/exports
文件夹路径 客户机地址(权限)
[root@server0 ~]# mkdir /public
[root@server0 ~]# echo 123 > /public/123.txt
[root@server0 ~]# vim /etc/exports
/public 172.25.0.0/24(ro)
3.重起服务
[root@server0 ~]# systemctl restart nfs-server
[root@server0 ~]# systemctl enable nfs-server
客户端:Desktop0 (vim命令模式下,按o可以另起一行进入插入模式)
[root@desktop0 ~]# showmount -e 172.25.0.11 #查看共享
[root@desktop0 ~]# mkdir /mnt/nfs01
[root@desktop0 ~]# vim /etc/fstab
172.25.0.11:/public /mnt/nfs01 nfs _netdev 0 0
[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df -h
#########################################################
安全的NFS服务(必须还原所有cla***oom、server、desktop的环境)
1.还原所有cla***oom、server、desktop
2.修改两台虚拟机server、desktop防火墙默认区域为trusted
[root@server0 ~]# firewall-cmd --set-default-zone=trusted
[root@desktop0 ~]# firewall-cmd --set-default-zone=trusted
3.实现用户统一
– 结合 LDAP + kerberos 技术,实现认证和加密支持
– 同一个 kerberos 领域内,认证用密码
[root@server0 ~]# lab nfskrb5 setup #加入 LDAP+kerberos
[root@desktop0 ~]# lab nfskrb5 setup #加入 LDAP+kerberos
4.验证:
[root@server0 ~]# id ldapuser10
[root@desktop0 ~]# id ldapuser10
##########################################################
搭建安全的NFS服务
服务端Server
1.部署与kerberos通信加密的密钥
# wget http://cla***oom/pub/keytabs/server0.keytab -O /etc/krb5.keytab
2.配置NFS读写的共享
[root@server0 ~]# mkdir /nsd
[root@server0 ~]# touch /nsd/123.txt
[root@server0 ~]# vim /etc/exports
/nsd 172.25.0.0/24(rw,sec=krb5p)
3.必须同时重起服务nfs-server、nfs-secure-server
# systemctl restart nfs-server nfs-secure-server
4.为了做题,让ldapuser0具备写权限,赋予他本地的写权限
# setfacl -m u:ldapuser0:rwx /nsd
######################################################
客户端Desktop:
1.部署与kerberos通信加密的密钥
# wget http://cla***oom/pub/keytabs/desktop0.keytab -O /etc/krb5.keytab
2.修改/etc/fstab开机自动挂载配置文件
[root@desktop0 ~]# mkdir /mnt/test
[root@desktop0 ~]# vim /etc/fstab
172.25.0.11:/nsd /mnt/test nfs _netdev,sec=krb5p 0 0
#重起客户端nfs加密服务
[root@desktop0 ~]# systemctl restart nfs-secure
[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df -h
3.验证ldapuser0是否有写权限:
[root@desktop0 ~]# ssh ldapuser0@127.0.0.1
ldapuser0@127.0.0.1's password: 密码为 kerberos
[ldapuser0@desktop0 test]$ cd /mnt/test
[ldapuser0@desktop0 test]$ touch ldapuser0.txt
##################################################
真机上:还原三台虚拟机cla***oom、server、desktop
[root@room9pc14 桌面]# rht-vmctl reset cla***oom
[root@room9pc14 桌面]# rht-vmctl reset server
[root@room9pc14 桌面]# rht-vmctl reset desktop
真机远程管理:ssh方式,方便使用server与desktop
[root@room9pc14 桌面]# ssh 用户名@IP地址
补充快捷键: Ctrl+Shift+t 开启一个新的终端
[root@room9pc14 桌面]# ssh -X root@172.25.0.11
##################################################
修改两台虚拟机防火墙默认区域为trusted
[root@server0 ~]# firewall-cmd --set-default-zone=trusted
[root@desktop0 ~]# firewall-cmd --set-default-zone=trusted
#####################################################
划分分区的指令:parted (专门做大空间划分 2T)
GPT: 突破了4个主分区限制,可以有128主分区
[root@server0 ~]# parted /dev/vdb
(parted) print #输出分区表
(parted) mktable gpt #设置分区模式为GPT
(parted) mkpart #划分新的分区
分区名称? []? haha #分区名称随便起
文件系统类型? [ext2]? ext4 #文件系统不起作用
起始点? 0 #上一个分区的结束,是下一个分区的开始
结束点? 2G
忽略/Ignore/放弃/Cancel? Ignore #忽略,分区表信息会占用一部分空间
(parted) print #输出分区表
(parted) quit
[root@server0 ~]# ls /dev/vdb1
#####################################################
iSCSI网络磁盘
• Internet SCSI,网际SCSI接口
– 一种基于C/S架构的虚拟磁盘技术
– 服务器提供磁盘空间,客户机连接并当成本地磁盘使用
服务端思路:
1.划分分区
2.运行targetcli命令
------>建立后端存储
------>建立共享磁盘起名
------>关系将共享磁盘名字与后端存储联系起来
------>做ACL 允许客户端通过那个名字来访问
------>启用端口和IP
• ISCSI Qualified Name 名称规范
– iqn.yyyy-mm.倒序域名:自定义标识
– 用来识别 target 磁盘组,也用来识别客户机身份
服务端server0:
1.服务端软件,targetcli
2.运行targetcli命令进行配置
[root@server0 ~]# targetcli
/> ls
/> backstores/block create nsd /dev/vdb1 #创建后端存储并起名
/> ls
/> iscsi/ create iqn.2017-12.com.example:server0 #为共享磁盘起名
/> ls
/> iscsi/iqn.2017-12.com.example:server0/tpg1/luns create /backstores/block/nsd #关联后端存储
/> ls
/> iscsi/iqn.2017-12.com.example:server0/tpg1/acls create iqn.2017-12.com.example:desktop0 #设置客户端名称
/> ls
/> iscsi/iqn.2017-12.com.example:server0/tpg1/portals create 172.25.0.11 #启用端口与IP
Using default IP port 3260
Created network portal 172.25.0.11:3260.
/> exit
3.重起服务,设置为开机自起
[root@server0 ~]# systemctl restart target
[root@server0 ~]# systemctl enable target
客户端desktop0:
1.安装一个客户端软件
[root@desktop0 ~]# yum repolist
[root@desktop0 ~]# yum -y install iscsi-initiator-utils.i686
2.指定客户端自称的名字
[root@desktop0 ~]# vim /etc/iscsi/initiatorname.iscsi
#指明访问服务端,客户端自称的名字,是服务端ACL指定的名称
InitiatorName=iqn.2017-12.com.example:desktop0
3.发现服务端位置
[root@desktop0 ~]# man iscsiadm
[root@desktop0 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 172.25.0.11 --discover
4.加载共享存储
[root@desktop0 ~]# lsblk
[root@desktop0 ~]# systemctl restart iscsi
[root@desktop0 ~]# systemctl daemon-reload
[root@desktop0 ~]# systemctl restart iscsi
[root@desktop0 ~]# systemctl enable iscsi
[root@desktop0 ~]# lsblk
######################################################
客户端:刷新/etc/iscsi/initiatorname.iscsi文件的服务
[root@desktop0 ~]# systemctl restart iscsid
[root@desktop0 ~]# systemctl restart iscsi
######################################################
MariaDB数据库
database:数据库
什么是数据库
• DB,数据库:一批数据的集合,主流的数据库多用来存放关系型表格数据
虚拟机Server:安装MariaDB数据库
[root@server0 ~]# yum -y install mariadb-server
MariaDB数据库 ,端口:3306
启动数据库服务
[root@server0 ~]# systemctl restart mariadb
[root@server0 ~]# systemctl enable mariadb
######################################################
MariaDB数据库基本操作
[root@server0 ~]# mysql #默认没有密码
MariaDB [(none)]> show databases; #查看所有库
MariaDB [(none)]> create database nsd1710; #创建库
MariaDB [(none)]> show databases;
MariaDB [(none)]> drop database nsd1710; #删除库
MariaDB [(none)]> show databases;
MariaDB [(none)]> quit
[root@server0 ~]#
设置MariaDB数据库管理员的密码
数据库管理员名:root MariaDB数据库 mysql-----》user
系统管理员名:root /etc/passwd
– mysqladmin [-u用户名] [-p[旧密码]] password '新密码'
[root@server0 ~]# mysqladmin -u root password '123'
[root@server0 ~]# mysql -u root -p
Enter password: 输入密码
[root@server0 ~]# mysql -u root -p123 #非交互输入密码进入
##########################################################
• 禁止监听,只服务于本机
[root@server0 ~]# vim /etc/my.cnf
[mysqld]
skip-networking //跳过网络监听
.. ..
[root@server0 ~]# systemctl restart mariadb
##########################################################
– 使用/选择数据库:USE 数据库名;
– 列出库里有哪些表:SHOW TABLES;
[root@server0 ~]# mysql -u root -p123
MariaDB [mysql]> show databases;
MariaDB [mysql]> use mysql;
MariaDB [mysql]> show tables;
MariaDB [mysql]> create database nsd1710;
MariaDB [mysql]> show databases;
在虚拟机Server0上操作:下载事先备份好的数据库文件
# wget http://cla***oom/pub/materials/users.sql
导入数据到数据库中
[root@server0 ~]# mysql -u root -p123 nsd1710 < users.sql
[root@server0 ~]# mysql -u root -p123
MariaDB [(none)]> use nsd1710;
MariaDB [nsd1710]> show tables;
查询数据库中表记录
select 表字段 from 库.表名
select * from nsd1710.base;
MariaDB [nsd1710]> select * from location;
MariaDB [nsd1710]> select * from base;
#########################################################
增 insert
删 delete
改 update
查 select
有条件的查询
1.在base表中查询密码为123的用户的名字?
[root@server0 ~]# mysql -u root -p123
MariaDB [(none)]> use nsd1710;
MariaDB [nsd1710]> show tables;
> select * from base where password='123';
> select name,password from base where password='123';
> select name from base where password='123';
> select id,name from base;
并使用相 应的 SQL 查询以回答下列问题:
1)密码是 solicitous 的人的名字?
> select name from base where password='solicitous';
2)有多少人的姓名是 Barbara 同时居住在 Sunnyvale?
> select * from base,location where base.name='Barbara' and location.city='Sunnyvale' and base.id=location.id;
> select count(*) from base,location where base.name='Barbara' and location.city='Sunnyvale' and base.id=location.id;
> insert base values (6,'Barbara','321'); #插入表记录
> insert location values (6,'Sunnyvale'); #插入表记录
> select * from base;
> select * from location ;
> select * from base,location where base.name='Barbara' and location.city='Sunnyvale' and base.id=location.id;
##########################################################
数据库授权
– 除了 root 用户,此nsd1710数据库只能被用户 lisi 查询,此用户的密码为123
MariaDB数据库 mysql-----》user
– GRANT 权限列表 ON 数据库名.表名 TO 用户名@ 客户机地址 IDENTIFIED BY '密码';
[root@server0 ~]# mysql -u root -p123
grant select on nsd1710.* to lisi@localhost identified by '123';
当lisi从本地localhost登陆,输入密码123.将会获得nsd1710库中所有表的查询的权限
验证:测试lisi登陆
[root@server0 ~]# mysql -u lisi -p123
######################################################
DELETE 删除表记录
• MariaDB [(none)]> 交互指令
– DELETE FROM [数据库.]表名 WHERE 条件语句;
1. 禁止空密码root用户访问 mariadb 数据库
[root@server0 ~]# mysql -u root -p123
> use mysql;
> select user,host,password from user;
> select user,host,password from user where password='';
> delete from user where password='';
> select user,host,password from user;
###########################################################
刷新user表的记录:
MariaDB [(none)]> flush privileges;
###########################################################
真机上:还原三台虚拟机cla***oom、server、desktop
[root@room9pc14 桌面]# rht-vmctl reset cla***oom
[root@room9pc14 桌面]# rht-vmctl reset server
[root@room9pc14 桌面]# rht-vmctl reset desktop
真机远程管理:ssh方式,方便使用server与desktop
[root@room9pc14 桌面]# ssh 用户名@IP地址
补充快捷键: Ctrl+Shift+t 开启一个新的终端
[root@room9pc14 桌面]# ssh -X root@172.25.0.11
##################################################
修改两台虚拟机防火墙默认区域为trusted
[root@server0 ~]# firewall-cmd --set-default-zone=trusted
[root@desktop0 ~]# firewall-cmd --set-default-zone=trusted
#######################################################
搭建基本的Web服务
• 基于 B/S (Browser/Server)架构的网页服务
– 服务端提供网页
– 浏览器下载并显示网页
• Hyper Text Markup Language,超文本标记语言
• Hyper Text Transfer Protocol,超文本传输协议
装包、起服务
服务端:Server
1. 安装软件httpd
2. 启动httpd服务,设置开机自起
默认网页文件的位置:/var/www/html/index.html
3. 书写一个页面文件
# echo '<h1>My First Web' > /var/www/html/index.html
客户端:Desktop
#前提:真机所有浏览器关闭
1.测试访问:firefox 172.25.0.11
2.测试访问:命令行测试工具
[root@desktop0 ~]# elinks -dump 172.25.0.11
#########################################################
设置Web的域名
DNS服务器:cla***oom.example.com
server0.example.com
www0.example.com
webapp0.example.com
虚拟机Server0:
1.修改配置文件/etc/httpd/conf/httpd.conf
#补充vim 命令模式 /ServerName 全文查找ServerName 按n、N跳转
#将开头的‘#’去掉
ServerName server0.example.com:80
2.重起httpd服务
虚拟机desktop0:
测试:elinks -dump server0.example.com
#################################################
DocumentRoot:网页根目录(/var/www/html)
虚拟机Server0:
1.修改配置文件/etc/httpd/conf/httpd.conf
#补充vim 命令模式 /Doc 全文查找Doc 按n、N跳转
DocumentRoot "/var/www/myweb"
2.创建目录/var/www/myweb,重起httpd服务
3.书写新的测试页面
[root@server0 ~]# echo woshi myweb > /var/www/myweb/index.html
虚拟机desktop0:
测试:elinks -dump server0.example.com
#######################################################
服务端与客户端路径的对照:
客户端: elinks -dump server0.example.com
服务端: /var/www/myweb
客户端: elinks -dump server0.example.com/abc
服务端: /var/www/myweb/abc
客户端: server0.example.com/abc/private
服务端: /var/www/myweb/abc/private
######################################################
虚拟Web主机
一台服务器,提供多个不同的Web站点
• 区分方式
– 基于域名的虚拟主机
– 基于端口的虚拟主机
– 基于IP地址的虚拟主机
#######################################################
基于域名的虚拟主机
一旦启用 虚拟Web主机功能,所有的站点都必须用虚拟Web主机来实现
/etc/httpd/conf.d/*.conf
容器
• 为每个虚拟站点添加配置
<VirtualHost IP地址:端口>
ServerName 此站点的DNS名称
DocumentRoot 此站点的网页根目录
</VirtualHost>
#帮助文档 /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf
虚拟机Server0:
[root@server0 ~]# vim /etc/httpd/conf.d/nsd01.conf #调用配置
<VirtualHost *:80> #虚拟Web主机开始
DocumentRoot /var/www/qq #指定网页文件根目录
ServerName www0.example.com #指定域名
</VirtualHost> #虚拟Web主机结束
<VirtualHost *:80>
DocumentRoot /var/www/baidu
ServerName webapp0.example.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/myweb
ServerName server0.example.com
</VirtualHost>
[root@server0 ~]# mkdir /var/www/qq #建立相应的网页目录
[root@server0 ~]# mkdir /var/www/baidu #建立相应的网页目录
[root@server0 ~]# echo QQ > /var/www/qq/index.html
[root@server0 ~]# echo baidu > /var/www/baidu/index.html
[root@server0 ~]# systemctl restart httpd
#########################################################
实现httpd访问控制,实现仅本机访问页面
• 使用 <Directory> 配置区段
– 每个文件夹自动继承其父目录的ACL访问权限
– 除非针对子目录有明确设置
<Directory 目录的绝对路径>
.. ..
Require all denied|granted
Require ip IP或网段地址 .. ..
</Directory>
虚拟机Server:
1.建立目录
# mkdir /var/www/myweb/private
2.写入网页文件
# echo woshi private > /var/www/myweb/private/index.html
测试:
虚拟机Server: elinks -dump server0.example.com/private
虚拟机Desktop: elinks -dump server0.example.com/private
3.实现httpd服务访问控制
[root@server0 ~]# vim /etc/httpd/conf.d/nsd02.conf
<Directory "/var/www/myweb/private">
Require ip 127.0.0.1 172.25.0.11
</Directory>
4.重起httpd服务
测试:
虚拟机Server: elinks -dump server0.example.com/private #可以
虚拟机Desktop: elinks -dump server0.example.com/private #失败
########################################################
SELinux 安全上下文(标签)
• 方式1:参照标准目录,重设新目录的属性
– chcon [-R] --reference=模板目录 新目录
案例4:使用自定Web根目录
调整 Web 站点 http://server0.example.com 的网页
目录,要求如下:
1)新建目录 /webroot,作为此站点新的网页目录
[root@server0 ~]# mkdir /webroot
[root@server0 ~]# echo woshi webroot > /webroot/index.html
[root@server0 ~]# vim /etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80>
DocumentRoot /webroot
ServerName server0.example.com
</VirtualHost>
[root@server0 ~]# vim /etc/httpd/conf.d/nsd02.conf
<Directory "/webroot">
Require all granted
</Directory>
[root@server0 ~]# ls -Zd /var/www
[root@server0 ~]# ls -Zd /webroot
[root@server0 ~]# chcon -R --reference=/var/www /webroot/
[root@server0 ~]# ls -Zd /webroot
[root@server0 ~]# systemctl restart httpd
###################################################
cp会继承标签值,mv不会继承: 尽量用cp
###################################################
部署动态Web站点
1.在虚拟机Server上,下载动态页面(Python页面)
# wget http://cla***oom/pub/materials/webinfo.wsgi
# cat webinfo.wsgi
2.在虚拟机Server上,放入webapp0.example.com默认网页根目录
[root@server0 ~]# vim /etc/httpd/conf.d/nsd01.conf
[root@server0 ~]# cp webinfo.wsgi /var/www/baidu/
[root@server0 ~]# ls /var/www/baidu/
3.安装Python程序,解析识别 Python页面
[root@server0 ~]# yum -y install mod_wsgi
4.Desktop测试:
# elinks -dump webapp0.example.com/webinfo.wsgi
# 可以看到Python代码
5.方便访问,让客户端访问webapp0.example.com可以直接看到 Python页面
虚拟机Server0上:网页跳转(网页别名)
[root@server0 ~]# vim /etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80>
DocumentRoot /var/www/baidu
ServerName webapp0.example.com
alias / /var/www/baidu/webinfo.wsgi
</VirtualHost>
[root@server0 ~]# systemctl restart httpd
6. 客户端测试访问
[root@desktop0 ~]# elinks -dump webapp0.example.com
7. 程序 Python 的翻译
虚拟机Server0上:
[root@server0 ~]# vim /etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80>
DocumentRoot /var/www/baidu
ServerName webapp0.example.com
wsgiscriptalias / /var/www/baidu/webinfo.wsgi
</VirtualHost>
[root@server0 ~]# systemctl restart httpd
8. 客户端测试访问
[root@desktop0 ~]# elinks -dump webapp0.example.com
9.此webapp0.example.com侦听在端口8909
虚拟机Server0上:
[root@server0 ~]# vim /etc/httpd/conf.d/nsd01.conf
Listen 8909
<VirtualHost *:8909>
DocumentRoot /var/www/baidu
ServerName webapp0.example.com
WsgiScriptAlias / /var/www/baidu/webinfo.wsgi
</VirtualHost>
[root@server0 ~]#
显示SELinux开放的所有接口
[root@server0 ~]# semanage port -l
[root@server0 ~]# semanage port -l | grep http
[root@server0 ~]# semanage port -a -t http_port_t -p tcp 8909
-a :添加
-t:类型
-p:协议
[root@server0 ~]# systemctl restart httpd
[root@desktop0 ~]# elinks -dump webapp0.example.com:8909
########################################################
真机上:还原三台虚拟机cla***oom、server、desktop
[root@room9pc14 桌面]# rht-vmctl reset cla***oom
[root@room9pc14 桌面]# rht-vmctl reset server
[root@room9pc14 桌面]# rht-vmctl reset desktop
真机远程管理:ssh方式,方便使用server与desktop
[root@room9pc14 桌面]# ssh 用户名@IP地址
补充快捷键: Ctrl+Shift+t 开启一个新的终端
[root@room9pc14 桌面]# ssh -X root@172.25.0.11
[root@room9pc14 桌面]# ssh -X root@172.25.0.10
##################################################
修改两台虚拟机防火墙默认区域为trusted
[root@server0 ~]# firewall-cmd --set-default-zone=trusted
[root@desktop0 ~]# firewall-cmd --set-default-zone=trusted
#######################################################
搭建安全的Web服务
http------》https
1.安装,实现Web加密传输的软件
[root@server0 ~]# yum -y install mod_ssl
[root@server0 ~]# ls /etc/httpd/conf.d/
autoindex.conf README userdir.conf
nsd01.conf ssl.conf welcome.conf
2.部署网站数字证书(营业执照)
# cd /etc/pki/tls/certs/
# ls
# wget http://cla***oom/pub/tls/certs/server0.crt
# ls
3.部署网站根证书(公安局信息)
# cd /etc/pki/tls/certs/
# ls
# wget http://cla***oom/pub/example-ca.crt
# ls
4.部署私钥(用于解密)
# cd /etc/pki/tls/private/
# ls
# wget http://cla***oom/pub/tls/private/server0.key
# ls
5.修改配置文件/etc/httpd/conf.d/ssl.conf
# vim /etc/httpd/conf.d/ssl.conf
补充:vim 末行模式 :set nu 添加行号
59 DocumentRoot "/var/www/html" #去掉注释
60 ServerName server0.example.com:443 #去掉注释,修改域名
#指定网站证书位置及名称
100 SSLCertificateFile /etc/pki/tls/certs/server0.crt
#指定私钥位置及名称
107 SSLCertificateKeyFile /etc/pki/tls/private/server0.key
#指定根证书位置及名称
122 SSLCACertificateFile /etc/pki/tls/certs/example-ca.crt
6.重起httpd服务
7.Desktop验证:
[root@desktop0 ~]# firefox https://server0.example.com
点击: 我以了解安全的风险
添加例外
确认安全例外
########################################################
配置邮件服务器
• 电子邮件服务器的基本功能
– 为用户提供电子邮箱存储空间(用户名@邮件域名)
– 处理用户发出的邮件 —— 传递给收件服务器
– 处理用户收到的邮件 —— 投递到邮箱
SMTP(发邮件的协议 端口:25)
pop3(收邮件的协议 端口:110)
DNS:cla***om.example.com
server0.example.com
虚拟机Server0
1.安装postfix,提供邮件功能的软件
2.建立邮件账户,邮件服务器上本地用户
[root@server0 /]# useradd -s /sbin/nologin yg
[root@server0 /]# useradd -s /sbin/nologin xln
[root@server0 /]# echo 123 | passwd --stdin yg
[root@server0 /]# echo 123 | passwd --stdin xln
3.配置邮件服务器 /etc/postfix/main.cf
[root@server0 /]# vim /etc/postfix/main.cf
99 myorigin = server0.example.com #默认补全的邮件域名后缀
116 inet_interfaces = all #允许所有的网络接口
164 mydestination = server0.example.com #判断为本域邮件
4.重起postfix服务
[root@server0 /]# systemctl restart postfix
######################################################
测试:
使用mail命令发信/收信
• mail 发信操作
– mail -s '邮件标题' -r 发件人 收件人
• mail 收信操作
– mail [-u 用户名]
[root@server0 /]# mail -s 'test01' -r yg xln
AAAAAAAAAAAAAA
BBBBBBBBBBBBBB
.
EOT
[root@server0 /]# mail -u xln
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/mail/xln": 1 message 1 new
>N 1 yg@server0.example.c Tue Dec 5 14:18 19/598
& 1
########################################################
nullclient邮件服务(邮件空客户端)
• nullclient,空客户端
– 不提供任何邮箱账号,因此不需要投递邮件
– 但是可以为用户代发邮件
1.把Desktop配置成,邮件服务器
[root@desktop0 ~]# lab smtp-nullclient setup
2.配置Server为邮件空客户端
[root@server0 /]# vim /etc/postfix/main.cf
– 所发出的邮件显示来自于 desktop0.example.com
99 myorigin = desktop0.example.com
116 inet_interfaces = localhost
164 mydestination =
317 relayhost = [172.25.0.10] #将邮件移交给那台服务器
3.重起postfix服务
[root@server0 /]# systemctl restart postfix
########################################################
验证:
在Server上发一封邮件,给本地的Student
[root@server0 /]# mail -s 'test02' -r yg student
abc
.
EOT
到Desktop:最终由Desktop上的student收到
[root@desktop0 /]# mail -u student
#######################################################
手动新键一台虚拟机:
虚拟机的名字:nsd
CPU、内存、硬盘均默认
网络类型:private1
软件包选择:带GUI的服务器
分区:自动分区
######################################################
虚拟化概述
• virtualization 资源管理
– x个物理资源 --> y个逻辑资源
– 实现程度:完全、部分、硬件辅助(CPU)
######################################################
虚拟机nsd:搭建本地Yum仓库
1.服务端:挂载光盘
[root@localhost 桌面]# mount /dev/cdrom /mnt
[root@localhost 桌面]# ls /mnt
2.客户端:书写一个配置文件/etc/yum.repos.d/*.repo
[root@localhost 桌面]# vim /etc/yum.repos.d/abc.repo
[abc]
name=abc
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@localhost 桌面]# yum repolist
########################################################
yum软件组管理
• 使用RHEL7软件仓库的预设分组
– yum groups list [hidden] [组名]...
– yum groups info [组名]...
– yum groups install [组名]...
– yum groups remove [组名]
安装虚拟化服务器平台
• 主要软件组
Virtualization\ Client #虚拟化客户端
Virtualization\ Platform #虚拟化平台
Virtualization\ Hypervisor #虚拟化管理器
Virtualization\ Tools #虚拟化工具
[root@localhost 桌面]# yum -y groups install
Virtualization\ Client
Virtualization\ Platform
Virtualization\ Hypervisor
Virtualization\ Tools
######################################################
虚拟化服务:libvirtd
#######################################################
真机操作:
• 查看KVM节点(服务器)信息
– virsh nodeinfo
• 列出虚拟机
– virsh list [--all]
• 查看指定虚拟机的信息
– virsh dominfo 虚拟机名称
• 运行|重启|关闭指定的虚拟机
– virsh start|reboot|shutdown 虚拟机名称
• 强制关闭指定的虚拟机
– virsh destroy 虚拟机名称
[root@room9pc14 桌面]# virsh autostart nsd #设置开机自起动
[root@room9pc14 桌面]# virsh dominfo nsd
[root@room9pc14 桌面]# virsh autostart --disable nsd #关闭自起动
[root@room9pc14 桌面]# virsh dominfo nsd
#########################################################
删除唯一性的硬件设备
[root@room9pc14 桌面]# virsh destroy nsd
手动图形删除:两个 channel 设备(接口设备,具备唯一性)
##########################################################
一台KVM虚拟机的组成
– xml配置文件(虚拟机描述文件):定义虚拟机的名称、UUID、CPU、内
存、虚拟磁盘、网卡等各种参数设置
虚拟机描述文件默认路径: /etc/libvirt/qemu
– 磁盘镜像文件:保存虚拟机的操作系统及文档数据,
镜像路径取决于xml配置文件中的定义
磁盘镜像文件 默认路径: /var/lib/libvirt/images/
查看磁盘镜像文件信息
# qemu-img info /var/lib/libvirt/images/nsd.qcow2
########################################################
手动快速创建一台虚拟机
1.创建新的磁盘文件
[root@room9pc14 桌面]# cd /var/lib/libvirt/images/
[root@room9pc14 images]# cp nsd.qcow2 test01.qcow2
2.写新的虚拟机描述文件
[root@room9pc14 images]# cd /etc/libvirt/qemu/
[root@room9pc14 qemu]# cp nsd.xml test01.xml
[root@room9pc14 qemu]# vim test01.xml
修改name、删除UUID整行、修改磁盘文件路径、删除MAC整行
3.导入虚拟机信息
[root@room9pc14 /]# virsh define /etc/libvirt/qemu/test01.xml
[root@room9pc14 /]# virsh list --all
[root@room9pc14 /]# virsh start test01
#########################################################
导出xml配置文件
– 查看:virsh dumpxml 虚拟机名
– 备份:virsh dumpxml 虚拟机名 > 虚拟机名.xml
编辑虚拟机设置
• 对虚拟机的配置进行调整
– 编辑: virsh edit 虚拟机名
导出、修改、导入
####################################################
删除虚拟机
– virsh undefine 虚拟机名
# virsh undefine test01
# rm -rf /var/lib/libvirt/images/test01.qcow2
####################################################
COW技术原理
• Copy On Write,写时复制
– 直接映射原始盘的数据内容
– 对前端盘的修改不回写到原始盘
1.快速创建qcow前端盘
• qemu-img 通过 -b 选项复用指定后端盘
– qemu-img create -f qcow2 -b 后端盘 前端盘
# cd /var/lib/libvirt/images/
# qemu-img create -f qcow2 -b nsd.qcow2 new01.qcow2
# qemu-img info new01.qcow2
2.常见新的虚拟机描述文件
# cd /etc/libvirt/qemu/
# cp nsd.xml new01.xml
# vim new01.xml
修改name、删除UUID整行、修改磁盘文件路径指定前端盘、删除MAC整行
3.导入新的虚拟机
# virsh define /etc/libvirt/qemu/new01.xml
#######################################################
搭建新的教学环境
1.在真机上操作新建两台虚拟机
[root@room9pc14 桌面]# clone-vm7
Enter VM number: 1
[root@room9pc14 桌面]# clone-vm7
Enter VM number: 2
2.在真机上操作,随真机的启动而启用
[root@room9pc14 桌面]# virsh autostart A
[root@room9pc14 桌面]# virsh autostart B
3.以root身份进入虚拟机,配置两台虚拟机的网络地址参数,密码123456
虚拟机A:
IP地址:192.168.4.7/24
主机名:svr7.tedu.cn
虚拟机B:
IP地址:192.168.4.207/24
主机名:pc207.tedu.cn
4.真机利用Web服务提供Yum源(共享光盘所有内容)
[root@room9pc14 桌面]# ifconfig private1
[root@room9pc14 桌面]# rpm -q httpd
httpd-2.4.6-40.el7.x86_64
# mkdir /var/www/html/rhel7
# mount /ISO/rhel-server-7.2-x86_64-dvd.iso /mnt/
# cp -r /mnt/* /var/www/html/rhel7/
# firefox http://127.0.0.1/rhel7
# firefox http://192.168.4.254/rhel7
6.虚拟机A与虚拟机B指定Yum位置
[root@svr7 ~]# vim /etc/yum.repos.d/rhel7.repo
[rhel7]
name=rhel7
baseurl=http://192.168.4.254/rhel7
enabled=1
gpgcheck=0
[root@pc207 ~]# vim /etc/yum.repos.d/rhel7.repo
[rhel7]
name=rhel7
baseurl=http://192.168.4.254/rhel7
enabled=1
gpgcheck=0
###########################################################
手动新键一台虚拟机:
虚拟机的名字:nsd
CPU、内存、硬盘均默认
网络类型:private1
软件包选择:带GUI的服务器
分区:自动分区
######################################################
虚拟化概述
• virtualization 资源管理
– x个物理资源 --> y个逻辑资源
– 实现程度:完全、部分、硬件辅助(CPU)
######################################################
虚拟机nsd:搭建本地Yum仓库
1.服务端:挂载光盘
[root@localhost 桌面]# mount /dev/cdrom /mnt
[root@localhost 桌面]# ls /mnt
2.客户端:书写一个配置文件/etc/yum.repos.d/*.repo
[root@localhost 桌面]# vim /etc/yum.repos.d/abc.repo
[abc]
name=abc
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@localhost 桌面]# yum repolist
########################################################
yum软件组管理
• 使用RHEL7软件仓库的预设分组
– yum groups list [hidden] [组名]...
– yum groups info [组名]...
– yum groups install [组名]...
– yum groups remove [组名]
安装虚拟化服务器平台
• 主要软件组
Virtualization\ Client #虚拟化客户端
Virtualization\ Platform #虚拟化平台
Virtualization\ Hypervisor #虚拟化管理器
Virtualization\ Tools #虚拟化工具
[root@localhost 桌面]# yum -y groups install
Virtualization\ Client
Virtualization\ Platform
Virtualization\ Hypervisor
Virtualization\ Tools
######################################################
虚拟化服务:libvirtd
#######################################################
真机操作:
• 查看KVM节点(服务器)信息
– virsh nodeinfo
• 列出虚拟机
– virsh list [--all]
• 查看指定虚拟机的信息
– virsh dominfo 虚拟机名称
• 运行|重启|关闭指定的虚拟机
– virsh start|reboot|shutdown 虚拟机名称
• 强制关闭指定的虚拟机
– virsh destroy 虚拟机名称
[root@room9pc14 桌面]# virsh autostart nsd #设置开机自起动
[root@room9pc14 桌面]# virsh dominfo nsd
[root@room9pc14 桌面]# virsh autostart --disable nsd #关闭自起动
[root@room9pc14 桌面]# virsh dominfo nsd
#########################################################
删除唯一性的硬件设备
[root@room9pc14 桌面]# virsh destroy nsd
手动图形删除:两个 channel 设备(接口设备,具备唯一性)
##########################################################
一台KVM虚拟机的组成
– xml配置文件(虚拟机描述文件):定义虚拟机的名称、UUID、CPU、内
存、虚拟磁盘、网卡等各种参数设置
虚拟机描述文件默认路径: /etc/libvirt/qemu
– 磁盘镜像文件:保存虚拟机的操作系统及文档数据,
镜像路径取决于xml配置文件中的定义
磁盘镜像文件 默认路径: /var/lib/libvirt/images/
查看磁盘镜像文件信息
# qemu-img info /var/lib/libvirt/images/nsd.qcow2
########################################################
手动快速创建一台虚拟机
1.创建新的磁盘文件
[root@room9pc14 桌面]# cd /var/lib/libvirt/images/
[root@room9pc14 images]# cp nsd.qcow2 test01.qcow2
2.写新的虚拟机描述文件
[root@room9pc14 images]# cd /etc/libvirt/qemu/
[root@room9pc14 qemu]# cp nsd.xml test01.xml
[root@room9pc14 qemu]# vim test01.xml
修改name、删除UUID整行、修改磁盘文件路径、删除MAC整行
3.导入虚拟机信息
[root@room9pc14 /]# virsh define /etc/libvirt/qemu/test01.xml
[root@room9pc14 /]# virsh list --all
[root@room9pc14 /]# virsh start test01
#########################################################
导出xml配置文件
– 查看:virsh dumpxml 虚拟机名
– 备份:virsh dumpxml 虚拟机名 > 虚拟机名.xml
编辑虚拟机设置
• 对虚拟机的配置进行调整
– 编辑: virsh edit 虚拟机名
导出、修改、导入
####################################################
删除虚拟机
– virsh undefine 虚拟机名
# virsh undefine test01
# rm -rf /var/lib/libvirt/images/test01.qcow2
####################################################
COW技术原理
• Copy On Write,写时复制
– 直接映射原始盘的数据内容
– 对前端盘的修改不回写到原始盘
1.快速创建qcow前端盘
• qemu-img 通过 -b 选项复用指定后端盘
– qemu-img create -f qcow2 -b 后端盘 前端盘
# cd /var/lib/libvirt/images/
# qemu-img create -f qcow2 -b nsd.qcow2 new01.qcow2
# qemu-img info new01.qcow2
2.常见新的虚拟机描述文件
# cd /etc/libvirt/qemu/
# cp nsd.xml new01.xml
# vim new01.xml
修改name、删除UUID整行、修改磁盘文件路径指定前端盘、删除MAC整行
3.导入新的虚拟机
# virsh define /etc/libvirt/qemu/new01.xml
#######################################################
搭建新的教学环境
1.在真机上操作新建两台虚拟机
[root@room9pc14 桌面]# clone-vm7
Enter VM number: 1
[root@room9pc14 桌面]# clone-vm7
Enter VM number: 2
2.在真机上操作,随真机的启动而启用
[root@room9pc14 桌面]# virsh autostart A
[root@room9pc14 桌面]# virsh autostart B
3.以root身份进入虚拟机,配置两台虚拟机的网络地址参数,密码123456
虚拟机A:
IP地址:192.168.4.7/24
主机名:svr7.tedu.cn
虚拟机B:
IP地址:192.168.4.207/24
主机名:pc207.tedu.cn
4.真机利用Web服务提供Yum源(共享光盘所有内容)
[root@room9pc14 桌面]# ifconfig private1
[root@room9pc14 桌面]# rpm -q httpd
httpd-2.4.6-40.el7.x86_64
# mkdir /var/www/html/rhel7
# mount /ISO/rhel-server-7.2-x86_64-dvd.iso /mnt/
# cp -r /mnt/* /var/www/html/rhel7/
# firefox http://127.0.0.1/rhel7
# firefox http://192.168.4.254/rhel7
6.虚拟机A与虚拟机B指定Yum位置
[root@svr7 ~]# vim /etc/yum.repos.d/rhel7.repo
[rhel7]
name=rhel7
baseurl=http://192.168.4.254/rhel7
enabled=1
gpgcheck=0
[root@pc207 ~]# vim /etc/yum.repos.d/rhel7.repo
[rhel7]
name=rhel7
baseurl=http://192.168.4.254/rhel7
enabled=1
gpgcheck=0
7. 设置防火墙trusted与关闭SELinux
[root@svr7 ~]# firewall-cmd --set-default-zone=trusted
[root@svr7 ~]# setenforce 0 #当前修改为宽松模式
[root@svr7 ~]# getenforce
Permissive
[root@svr7 ~]# vim /etc/selinux/config
SELINUX=permissive
###########################################################
• 使用 guestmount 工具
– 支持离线挂载 raw、qcow2 格式虚拟机磁盘
• 基本用法
– guestmount -a 虚拟机磁盘路径 -i /挂载点
##########################################################
扩展的几个应用
/boot 存放系统引导必需的文件,包括内核、启动配置
/bin、/sbin 存放各种命令程序
/dev 存放硬盘、键盘、鼠标、光驱等各种设备文件
/etc 存放Linux系统及各种程序的配置文件
/root、/home/ 用户名 分别是管理员root、普通用户的默认家目录
/var 存放日志文件、邮箱目录等经常变化的文件
/proc 存放内存中的映射数据,不占用磁盘
/tmp 存放系统运行过程中使用的一些临时文件
###################################################
权限的数值表示
• 权限的数值化
– 基本权限:r = 4,w = 2,x = 1
虚拟机Svr7:
[root@svr7 ~]# mkdir /nsd01
[root@svr7 ~]# ls -ld /nsd01
drwxr-xr-x. 2 root root 6 12月 6 20:44 /nsd01
[root@svr7 ~]# chmod 007 /nsd01
[root@svr7 ~]# ls -ld /nsd01
d------rwx. 2 root root 6 12月 6 20:44 /nsd01
[root@svr7 ~]# chmod 700 /nsd01
[root@svr7 ~]# ls -ld /nsd01
drwx------. 2 root root 6 12月 6 20:44 /nsd01
[root@svr7 ~]# chmod 750 /nsd01
[root@svr7 ~]# ls -ld /nsd01
drwxr-x---. 2 root root 6 12月 6 20:44 /nsd01
################################################
自定义Yum仓库
1.自己下载的rpm包,真机的tools目录上传到虚拟机svr7
[root@room9pc14 桌面]# scp -r tools root@192.168.4.7:/root/
root@192.168.4.7's password:
2.虚拟机svr7查看
[root@svr7 ~]# ls /root/tools/other/
3.仓库数据文件
[root@svr7 ~]# createrepo /root/tools/other/
[root@svr7 ~]# ls /root/tools/other/
4.书写客户端配置文件
[root@svr7 ~]# vim /etc/yum.repos.d/rhel7.repo
[myrpm]
name=myrpm
baseurl=file:///root/tools/other
enabled=1
gpgcheck=0
[root@svr7 ~]# yum -y install sl
[root@svr7 ~]# rpm -ql sl #显示rpm安装清单
[root@svr7 ~]# yum -y install cmatrix
[root@svr7 ~]# rpm -ql cmatrix #显示rpm安装清单
[root@svr7 ~]# cmatrix
[root@svr7 ~]# yum -y install oneko
[root@svr7 ~]# oneko
[root@svr7 ~]# killall oneko
######################################################
• du,统计文件的占用空间
– du [选项]... [目录或文件]...
– -s:只统计每个参数所占用的总空间大小
– -h:提供易读容量单位(K、M等)
[root@svr7 ~]# du -sh /root
[root@svr7 ~]# du -sh /root /etc /var
######################################################
快捷方式(链接、连接): ln -s /路径/源文件 /路径/快捷方式的名字
# ln -s /etc/sysconfig/network-scripts/ifcfg-eth0 /opt/network
# ls -l /opt/
# cat /opt/network
i节点:编号,唯一标识硬盘上一块存储区域
• ln,创建软连接
– 软连接 --> 原始文档 --> i节点 --> 文档数据
– ln -s 原始文件或目录 软连接文件
若原始文件或目录被删除,连接文件将失效
软连接可存放在不同分区/文件系统
• ln,创建硬连接
– 硬连接 --> i节点 --> 文档数据
– ln 原始文件 硬连接文件
若原始文件被删除,连接文件仍可用
硬连接与原始文件必须在同一分区/文件系统
只有硬连接不会产生新的文件,也不会单独占用新的磁盘空间
[root@svr7 ~]# rm -rf /opt/*
[root@svr7 ~]# echo 123 > /opt/A
[root@svr7 ~]# ln -s /opt/A /opt/A1 #制作软连接快捷方式
[root@svr7 ~]# ls /opt/
[root@svr7 ~]# ln /opt/A /opt/A2 #制作硬连接快捷方式
[root@svr7 ~]# ls /opt/
[root@svr7 ~]# cp /opt/A /opt/A3 #复制新文件
[root@svr7 ~]# ls /opt/
[root@svr7 ~]# ls -i /opt/ #查看目录内容的i节点编号
[root@svr7 ~]# rm -rf /opt/A #删除源文件
[root@svr7 ~]# ls -i /opt/
[root@svr7 ~]# cat /opt/A1 #软连接不可用
[root@svr7 ~]# cat /opt/A2 #硬连接可用
[root@svr7 ~]# cat /opt/A3 #复制新文件可用
########################################################
压缩和归档
zip :跨平台(Windows与Linux)
命令格式:zip [-r] /路径/备份文件.zip /路径/被归档的文档..
[root@svr7 ~]# zip -r /opt/test01.zip /home/ /boot/
[root@svr7 ~]# ls /opt
[root@svr7 ~]# unzip /opt/test01.zip -d /mnt/
[root@svr7 ~]# zip -r /opt/test02.zip /etc/selinux
[root@svr7 ~]# ls /opt
[root@svr7 ~]# unzip /opt/test02.zip /mnt
##########################################################
• date,查看/调整系统日期时间
– date +%F
– date +"%Y-%m-%d %H:%M:%S"
– date -s yyyy-mm-dd HH:MM:SS"
历史命令
管理/调用曾经执行过的命令
– histroy:查看历史命令列表
– history -c:清空历史命令
– !str:执行最近一次以str开头的历史命令
• 调整历史命令的数量
[root@svr7 ~]# vim /etc/profile
HISTSIZE=1000 //默认记录1000条
###################################################
• man,格式化手册阅读工具
– 按 上 、 下 、 PgUp 、PgDn 键滚动及翻页
– 按 q 键退出
– 按 / 键向后查找关键词(n、N切换)
[root@svr7 ~]# man mkdir
.. ..
[root@svr7 ~]# man 5 passwd
5:配置文件帮助信息
#################################################
vim编辑技巧
光标跳转
Home 键、数字 0 跳转至行首
End 键 跳转到行尾
PgUp 键、PgDn 键 向上翻页、向下翻页
1G 或 gg 跳转到文件的首行
G 跳转到文件的末尾行
复制/粘贴/删除
yy、4yy 复制光标处的一行、4行
p 粘贴到光标处之后、之前
x 或 Delete键 删除光标处的单个字符
dd、6dd 删除光标处的一行、6行
d^ 从光标处之前删除至行首
d$ 从光标处删除到行尾
C(大写) 从光标处删除到行尾,并且进入 输入模式
查找/撤销/保存
/root 向后查找字符串“root”
n、N 跳至后/前一个结果
u 撤销最近的一次操作
Ctrl + r 取消前一次撤销操作
ZZ (大写) 保存修改并退出
######################################################
末行模式操作
:r /etc/filesystems 读入其他文件内容
[root@svr7 ~]# echo 123 > /opt/1.txt
[root@svr7 ~]# echo abc > /opt/2.txt
[root@svr7 ~]# vim /opt/1.txt
:r /opt/2.txt #读入/opt/2.txt内容到当前文本文件内容
字符串替换
:s/root/admin 替换当前行第一个“root”
:s/root/admin/g 替换当前行所有的“root”
:1,8 s/root/admin/g 替换第1-8行所有的“root”
:% s/root/admin/g 替换文件内所有的“root”
开关参数的控制
:set nu|nonu 显示/不显示行号
:set ai|noai 启用/关闭自动缩进
#########################################################
源码编译安装
• 主要优点
– 获得软件的最新版,及时修复bug
– 软件功能可按需选择/定制
RPM软件包:rpm命令 yum仓库
gcc、make 进行配置
源代码软件包-------------------> 可以执行的程序------------>运行安装
步骤1:安装gcc与make编译工具
[root@svr7 ~]# yum -y install gcc make
[root@svr7 ~]# rpm -q gcc
[root@svr7 ~]# rpm -q make
步骤2:tar解包,释放源代码至指定目录
# rm -rf /opt/*
# tar -xf /root/tools/inotify-tools-3.13.tar.gz -C /opt/
# ls /opt
# ls /opt/inotify-tools-3.13
步骤3: ./configure 配置,指定安装目录/功能模块等选项
# cd /opt/inotify-tools-3.13
# ./configure --prefix=/mnt/myrpm #配置功能,指定安装位置
checking for gcc... no #gcc没有安装
步骤4: make 编译,生成可执行的二进制程序文件
解压目录下
# make
步骤5: make install 安装,将编译好的文件复制到安装目录
# make install
# ls /mnt/
# ls /mnt/myrpm/
# ls /mnt/myrpm/bin/
########################################################
Set UID
• 附加在属主的 x 位上
– 属主的权限标识会变为 s
– 适用于可执行文件,Set UID可以让使用者具有文件属主的身份及部分权限
[root@svr7 /]# which mkdir
/usr/bin/mkdir
[root@svr7 /]# cp /usr/bin/mkdir /usr/bin/abcdir
[root@svr7 /]# chmod u+s /usr/bin/abcdir
[root@svr7 /]# ls -l /usr/bin/abcdir
[root@svr7 /]# useradd student
[root@svr7 /]# su - student
[student@svr7 ~]$ mkdir nsd01
[student@svr7 ~]$ ls -l
[student@svr7 ~]$ abcdir nsd02
[student@svr7 ~]$ ls -l
[student@svr7 ~]$ exit
########################################################
查看网络接口信息
netstat -anptu
-a:显示所有接口信息
-n:以数字方式显示
-p:显示程序信息
-t:tcp连接
-u:udp连接
########################################################
RAID阵列概述
• 廉价冗余磁盘阵列
– 通过硬件/软件技术,将多个较小/低速的磁盘整合成一个大磁盘
– 阵列的价值:提升I/O效率、硬件级别的数据冗余
– 不同RAID级别的功能、特性各不相同
###################################################
进程管理
程序:静态没有执行的代码,占用磁盘空间
进程:执行的代码放入内存中运行,占用内存、cpu
PID:编号,标识进程
父进程、子进程
####################################################
查看进程树
• pstree — Processes Tree
– 格式:pstree [选项] [PID或用户名]
• 常用命令选项
– -a:显示完整的命令行
– -p:列出对应PID编号
systemd:内核直接运行的第一个进程,PID永远为1
[root@svr7 ~]# pstree
[root@svr7 ~]# pstree lisi
bash───vim
[root@svr7 ~]# pstree -p lisi
bash(30712)───vim(30751)
[root@svr7 ~]# pstree -ap lisi
#################################################
• ps aux 操作
– 列出正在运行的所有进程
• ps -elf 操作
– 列出正在运行的所有进程
#################################################
• top 交互式工具
– 格式: top [-d 刷新秒数]
按大写的P cpu排序
按大写的M 内存排序
#######################################################
• pgrep — Process Grep
– 用途:pgrep [选项]... 查询条件
• 常用命令选项
– -l:输出进程名,而不仅仅是 PID
– -U:检索指定用户的进程
– -t:检索指定终端的进程
[root@svr7 ~]# pgrep log
[root@svr7 ~]# pgrep -l log
[root@svr7 ~]# pgrep -U lisi
[root@svr7 ~]# pgrep -lU lisi
[root@svr7 ~]# pstree -ap lisi
[root@svr7 ~]# who #查看正在登陆的用户信息
[root@svr7 ~]# pgrep -lU lisi
[root@svr7 ~]# pgrep -lU lisi -t pts/2
########################################################
进程的调度(前后台)
放入后台启动
– 在命令行末尾添加“&”符号,正在运行的状态放入后台
– Ctrl + z 组合键,暂停的状态放入后台
[root@svr7 ~]# sleep 800 & #将前台的进程,正在运行放入后台
[root@svr7 ~]# jobs #查看后台进程
[root@svr7 ~]# jobs -l #查看后台进程,并且加上PID
[root@svr7 ~]# sleep 700
^Z #按Ctrl+z可以暂停放入后台
[2]+ 已停止 sleep 700
[root@svr7 ~]# jobs -l
[root@svr7 ~]# bg 2 #将后台进程编号为2的,继续在后台运行
[2]+ sleep 700 &
[root@svr7 ~]# jobs -l
[root@svr7 ~]# fg 1 #将后台的进程恢复到前台
sleep 800
^C #按Ctrl+c结束进程
[root@svr7 ~]# fg 2
sleep 700
^C #按Ctrl+c结束进程
#########################################################
杀死进程
– kill [-9] PID...
– killall [-9] 进程名...
[root@svr7 ~]# sleep 900 &
[root@svr7 ~]# sleep 900 &
[root@svr7 ~]# sleep 900 &
[root@svr7 ~]# sleep 900 &
[root@svr7 ~]# jobs -l
[root@svr7 ~]# kill 1928
[root@svr7 ~]# jobs -l
[root@svr7 ~]# killall sleep
[root@svr7 ~]# jobs -l
[root@svr7 ~]# killall -9 -u lisi #强制踢出一个用户
#########################################################
日志管理
• 系统和程序的“日记本”
– 记录系统、程序运行中发生的各种事件
– 通过查看日志,了解及排除故障
– 信息安全控制的“依据
主要用途
/var/log/messages 记录内核消息、各种服务的公共消息
/var/log/dmesg 记录系统启动过程的各种消息
/var/log/cron 记录与cron计划任务相关的消息
/var/log/maillog 记录邮件收发相关的消息
/var/log/secure 记录与访问限制相关的安全消息
######################################################
tailf 实时跟踪 新增日值消息
#######################################################
• users、who、w 命令
– 查看已登录的用户信息,详细度不同
• last、lastb 命令
– 查看最近登录成功/失败的用户信息
[root@svr7 ~]# users
[root@svr7 ~]# who
[root@svr7 ~]# w
[root@svr7 ~]# last -2 #最近两次登录成功
[root@svr7 ~]# lastb -2 #最近两次登录失败
####################################################
Linux内核定义的事件紧急程度
– 分为 0~7 共8种优先级别
– 其数值越小,表示对应事件越紧急/重要
0 EMERG(紧急) 会导致主机系统不可用的情况
1 ALERT(警告) 必须马上采取措施解决的问题
2 CRIT(严重) 比较严重的情况
3 ERR(错误) 运行出现错误
4 WARNING(提醒) 可能会影响系统功能的事件
5 NOTICE(注意) 不会影响系统但值得注意
6 INFO(信息) 一般信息
7 DEBUG(调试) 程序或系统调试信息等
• 提取由 systemd-journal 服务搜集的日志
• 常见用法
– journalctl | grep 关键词
– journalctl -u 服务名 [-p 优先级]
– journalctl -n 消息条数
– journalctl --since="yyyy-mm-dd HH:MM:SS" --
until="yyyy-mm-dd HH:MM:SS"
[root@svr7 ~]# yum -y install httpd
[root@svr7 ~]# systemctl restart httpd
[root@svr7 ~]# journalctl -u httpd -p 6
#######################################################
systemctl控制
systemd
• 一个更高效的系统&服务管理器
– 开机服务并行启动,各系统服务间的精确依赖
– 服务目录:/lib/systemd/system/
• 控制服务状态
– systemctl start|stop|restart 服务名...
• 查看服务的运行状态
– systemctl status|is-active 服务名...
[root@svr7 ~]# systemctl enable httpd #设置随机自起
[root@svr7 ~]# systemctl is-enabled httpd #查看是否随机自起
[root@svr7 ~]# systemctl disable httpd #设置随机不自起
[root@svr7 ~]# systemctl is-enabled httpd
#########################################################
graphical.target 图形模式
multi-user.target 文本模式
当前切换图形模式
[root@svr7 ~]# systemctl isolate graphical.target
每次开机都进入的模式,默认模式的修改
[root@svr7 ~]# systemctl get-default
[root@svr7 ~]# systemctl set-default graphical.target
[root@svr7 ~]# systemctl get-default
[root@svr7 ~]# reboot
######################################################
wc: 统计
[root@svr7 ~]# wc -l /etc/passwd #统计行数
请统计/etc/以“.conf” 结尾的文件有多少个?(不包括子目录)
[root@svr7 ~]# ls -l /etc/*.conf | wc -l
请统计/etc/以“.conf” 结尾的文件有多少个?(包括子目录)
[root@svr7 ~]# find /etc -name "*.conf" | wc -l
请统计/etc/以“.conf” 结尾的文件有多少个?
[root@svr7 ~]# ls -l /etc/*.conf | wc -l
[root@svr7 ~]# find /etc -name "*.conf" | wc -l
####################################################
find 查找:
-group :查找所属组
-mtime:按照时间去查找,过去时间
+10 :十天之前
-10 :十天之内
#####################################################
DNS解析的作用
• 为什么需要DNS系统
– www.baidu.com 与 119.75.217.56,哪个更好记?
– 互联网中的114查号台/导航员
• DNS服务器的功能
– 正向解析:根据注册的域名查找其对应的IP地址
– 反向解析:根据IP地址查找对应的注册域名,不常用
所有域名都必须以 “.” 结尾 根域
“.” 根域
.com .cn .us .kr .hk .tw
.com.cn .edu.cn .org.cn
.sina.com.cn
主机名:www.sina.com.cn tts.sina.com.cn
• Full Qualified Domain Name,完全合格主机名
– = 站点名.域名后缀
– = 站点名. .. .. .二级域.一级域
###################################################
BIND域名服务
• BIND(Berkeley Internet Name Daemon)
– 伯克利 Internet 域名服务
– 官方站点:https://www.isc.org/
[root@svr7 ~]# yum -y install bind-chroot bind
[root@svr7 ~]# rpm -qa bind*
bind-9.9.4-29.el7.x86_64 //域名服务包
bind-chroot-9.9.4-29.el7.x86_64 //提供虚拟根支持
• BIND服务器端程序
– 系统服务:named
– 默认端口:TCP/UDP 53
TCP 53 : 主从同步
UDP 53 : 为客户端解析域名
– 运行时的虚拟根环境:/var/named/chroot/
• 主配置文件:/etc/named.conf #设置负责解析的域名
• 地址库文件:/var/named/ #主机名与IP地址对应记录
######################################################
服务端svr7:
1.安装bind、bind-chroot
2.修改主配置文件/etc/named.conf
options {
directory "/var/named"; #指定地址库文件位置
};
zone "tedu.cn" IN { #指定负责解析的域名
type master; #指定为权威主服务器
file "tedu.cn.zone"; #指定地址库文件的名称
};
3.创建相应的地址库文件 /var/named/tedu.cn.zone
# cd /var/named/
# cp -p named.localhost tedu.cn.zone #保持属性不变
# ls -l tedu.cn.zone
# vim tedu.cn.zone
# tail -4 tedu.cn.zone
tedu.cn. NS svr7.tedu.cn.
svr7 A 192.168.4.7
www A 1.1.1.1
ftp A 2.2.2.2
4.重起named服务
客户端测试:虚拟机pc207
指定DNS服务器IP地址
[root@pc207 ~]# echo nameserver 192.168.4.7 > /etc/resolv.conf
[root@pc207 ~]# nslookup www.tedu.cn
##########################################################
特殊的解析记录
[root@svr7 /]# vim /var/named/tedu.cn.zone
tedu.cn. NS svr7.tedu.cn.
svr7 A 192.168.4.7
www A 1.1.1.1
ftp A 2.2.2.2
* A 100.200.220.230
$GENERATE 1-60 stu$ A 192.168.10.$
stu1.tedu.cn--------》192.168.10.1
stu2.tedu.cn--------》192.168.10.2
stu3.tedu.cn--------》192.168.10.3
.......
stu60.tedu.cn-------》192.168.10.60
$GENERATE 造数工具
• 基于DNS的站点负载均衡
– 一个域名 ---> 多个不同IP地址
[root@svr7 /]# vim /var/named/tedu.cn.zone
tedu.cn. NS svr7.tedu.cn.
svr7 A 192.168.4.7
www A 192.168.4.10
www A 192.168.4.20
www A 192.168.4.30
ftp A 2.2.2.2
* A 100.200.220.230
$GENERATE 1-60 stu$ A 192.168.10.$
######################################################
DNS子域授权
父域:www.tedu.cn 父域DNS(svr7)可以解析tedu.cn
子域:www.bj.tedu.cn 子域DNS(pc207)可以解析bj.tedu.cn
父域DNS(svr7)可以解析tedu.cn
子域DNS(pc207)可以解析bj.tedu.cn
父域DNS(svr7)也可以解析bj.tedu.cn
子域DNS(pc207)也可以解析tedu.cn
虚拟机pc207:
1.安装bind、bind-chroot
2.修改主配置文件/etc/named.conf
options {
directory "/var/named"; #指定地址库文件位置
};
zone "bj.tedu.cn" IN { #指定负责解析的域名
type master; #指定为权威主服务器
file "bj.tedu.cn.zone"; #指定地址库文件的名称
};
3.创建相应的地址库文件 /var/named/bj.tedu.cn.zone
# cd /var/named/
# cp -p named.localhost bj.tedu.cn.zone #保持属性不变
# vim bj.tedu.cn.zone
bj.tedu.cn. NS pc207
pc207 A 192.168.4.207
www A 1.2.3.4
4.重起named服务,测试 nslookup www.bj.tedu.cn 192.168.4.207
#######################################################
子域授权
父域DNS(svr7)也可以解析bj.tedu.cn
虚拟机svr7:
[root@svr7 /]# vim /var/named/tedu.cn.zone
tedu.cn. NS svr7.tedu.cn.
bj.tedu.cn. NS pc207.bj.tedu.cn.
pc207.bj.tedu.cn. A 192.168.4.207
svr7 A 192.168.4.7
[root@svr7 /]# systemctl restart named
[root@svr7 /]# nslookup www.bj.tedu.cn 192.168.4.7
递归解析: DNS服务器帮客户端与其他DNS服务器询问解析结果,并且将解析结果得到,给与客户端的过程
######################################################
子域DNS将请求转发给父域的DNS
子域DNS(pc207)也可以解析tedu.cn
虚拟机pc207:
[root@pc207 /]# vim /etc/named.conf
zone "tedu.cn" IN {
type forward;
forwarders { 192.168.4.7; };
};
[root@pc207 /]# systemctl restart named
[root@pc207 /]# nslookup www.tedu.cn 192.168.4.207
#######################################################
缓存DNS服务器
缓存DNS
– 不需要管理任何DNS区域,但是能够替客户机查询,
而且通过缓存、复用查询结果来加快速度
– 典型应用:ISP服务商、企业局域网
DHCP概述及原理
• Dynamic Host Configuration Protocol
– 动态主机配置协议,由 IETF(Internet 网络工程师任
务小组)组织制定,用来简化主机地址分配管理
• 主要分配以下入网参数
– IP地址/子网掩码/广播地址
– 默认网关地址、DNS服务器地址
• DHCP地址分配的四次会话(广播)[先到先得原理]
– DISCOVERY --> OFFER --> REQUEST -->ACK
端口:67
一个局域网内不能有二台DHCP服务器
虚拟机svr7:
1.安装dhcp软件包
2.修改配置文件 /etc/dhcp/dhcpd.conf
[root@svr7 /]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.4.0 netmask 255.255.255.0 { #设置分配的网段
range 192.168.4.10 192.168.4.50; #设置IP地址范围
option domain-name-servers 8.8.8.8; #设置DNS服务器
option routers 192.168.4.254; #设置网关
default-lease-time 600; #设置默认租期时间
max-lease-time 7200; #设置最大的租期时间
}
3.启动dhcpd服务,设置开机自起
[root@svr7 /]# systemctl restart dhcpd
[root@svr7 /]# systemctl enable dhcpd
##########################################################
• PXE,Pre-boot eXecution Environment
– 预启动执行环境,在操作系统之前运行
– 可用于远程安装
• 工作模式
– PXE client 集成在网卡的启动芯片中
– 当计算机引导时,从网卡芯片中把PXE client调入内存
执行,获取PXE server配置、显示菜单,根据用户选
择将远程引导程序下载到本机运行
• 需要哪些服务组件?
– DHCP服务,分配IP地址、定位引导程序
– TFTP服务,提供引导程序下载
– HTTP服务,提供yum安装源
• 客户机应具备的条件
– 网卡芯片必须支持PXE协议
– 主板支持从网卡启动
#####################################################
虚拟机svr7:
一、配置dhcpd服务
1.修改配置文件 /etc/dhcp/dhcpd.conf
[root@svr7 /]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.10 192.168.4.50;
option domain-name-servers 8.8.8.8;
option routers 192.168.4.254;
default-lease-time 600;
max-lease-time 7200;
next-server 192.168.4.7;
filename "pxelinux.0";
}
pxelinux.0:网卡引导文件(安装说明书)(二进制文件)
安装一个软件可以得到该pxelinux.0文件
2.重起dhcpd服务
######################################################
二、TFTP服务的搭建
tftp: 简单的文件传输协议 端口:69
默认共享路径:/var/lib/tftpboot
1.安装一个服务端软件tftp-server
2.启动tftp服务,设置开机自起
[root@svr7 /]# systemctl restart tftp
[root@svr7 /]# systemctl enable tftp
3.部署pxelinux.0文件
查询仓库中哪一个软件包,可以产生一个文件
# yum provides */pxelinux.0
# rpm -ql syslinux | grep pxelinux.0
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# ls /var/lib/tftpboot/
4.部署菜单文件
pxelinux.0-------->/var/lib/tftpboot/pxelinux.cfg/default
# mkdir /var/lib/tftpboot/pxelinux.cfg
# ls /var/lib/tftpboot/
# mount /dev/cdrom /mnt/
# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
# ls -l /var/lib/tftpboot/pxelinux.cfg/default
# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default
# ls -l /var/lib/tftpboot/pxelinux.cfg/default
5.部署 启动内核、启动驱动程序、图形的模块
default ----》 启动内核、启动驱动程序、图形的模块
vmlinuz------>启动内核
initrd.img------>启动驱动程序
vesamenu.c32------>图形的模块
# cp /mnt/isolinux/vmlinuz /mnt/isolinux/initrd.img /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot/
# ls /var/lib/tftpboot/
initrd.img pxelinux.cfg vmlinuz
pxelinux.0 vesamenu.c32
6.修改菜单文件/var/lib/tftpboot/pxelinux.cfg/default
[root@svr7 /]# vim /var/lib/tftpboot/pxelinux.cfg/default
......
menu title NSD1710 PXE Server !
......
label linux
menu label Install RHEL7 #显示菜单文字
menu default #读秒结束后,默认选择
kernel vmlinuz #调用内核
append initrd=initrd.img #调用驱动程序
######################################################
pxelinux.0--->default---->图形的模块---->vmlinuz、initrd.img
######################################################
三、搭建httpd服务,共享光盘所有内容
1.安装httpd
2.启动httpd服务,设置开机自起
3.创建挂载点/var/www/html/rhel7
[root@svr7 ~]# mkdir /var/www/html/rhel7
4.进行挂载
[root@svr7 ~]# mount /dev/cdrom /var/www/html/rhel7
[root@svr7 ~]# firefox http://192.168.4.7/rhel7
5.完成开机自动挂载,修改/etc/fstab
[root@svr7 ~]# vim /etc/fstab
[root@svr7 ~]# tail -1 /etc/fstab
/dev/cdrom /var/www/html/rhel7 iso9660 defaults 0 0
[root@svr7 ~]# umount /var/www/html/rhel7/
[root@svr7 ~]# ls /var/www/html/rhel7/
[root@svr7 ~]# mount -a
mount: /dev/sr0 写保护,将以只读方式挂载
[root@svr7 ~]# ls /var/www/html/rhel7/
########################################################
四、实现无人值守安装,生成自动应答文件(ks文件)
system-config-kickstart 图形的工具来生成
[root@svr7 ~]# yum -y install system-config-kickstart
[root@svr7 ~]# system-config-kickstart
[root@svr7 ~]# vim /etc/yum.repos.d/rhel7.repo
Yum仓库
[development] #修改仓库的名称
[root@svr7 ~]# system-config-kickstart
检查 软件包选择 是否可用
[root@svr7 ~]# ls /root/ks.cfg
/root/ks.cfg
[root@svr7 ~]# vim /root/ks.cfg
1.利用httpd共享应答ks文件
[root@svr7 ~]# cp /root/ks.cfg /var/www/html/
[root@svr7 ~]# ls /var/www/html/
2.修改菜单文件,指定应答ks文件位置
[root@svr7 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
label linux
menu label Install RHEL7
menu default
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.4.7/ks.cfg
##########################################################
总结:
dhcp-----》IP地址、next-server、pxelinux.0
tftp-----》pxelinux.0
pxelinux.0-----》default
default-----》vesamenu.c32-----》vmlinuz、initrd.img
ks-----》url --url="http://192.168.4.7/rhel7"
#########################################################
rsync同步操作
同步 : 只传输变化的数据
复制:完整的传输
• 命令用法
– rsync [选项...] 源目录 目标目录
• 同步与复制的差异
– 复制:完全拷贝源到目标
– 同步:增量拷贝,只传输变化过的数据
• 本地同步
– rsync [选项...] 本地目录1 本地目录2 //同步整个文件夹
– rsync [选项...] 本地目录1/ 本地目录2 //只同步目录下的数据
• rsync操作选项
– -n:测试同步过程,不做实际修改
– --delete:删除目标文件夹内多余的文档
– -a:归档模式,相当于-rlptgoD (保持属性不变)
– -v:显示详细操作信息
– -z:传输过程中启用压缩/解压
[root@svr7 ~]# mkdir /dir1
[root@svr7 ~]# mkdir /nsd
[root@svr7 ~]# cp -r /home/ /dir1
[root@svr7 ~]# cp /etc/passwd /dir1
[root@svr7 ~]# ls /dir1
[root@svr7 ~]# rsync -avz /dir1/ /nsd
[root@svr7 ~]# ls /nsd
[root@svr7 ~]# touch /dir1/1.txt
[root@svr7 ~]# ls /dir1/
[root@svr7 ~]# ls /nsd
[root@svr7 ~]# rsync -avz /dir1/ /nsd
[root@svr7 ~]# ls /dir1/
[root@svr7 ~]# ls /nsd
[root@svr7 ~]# touch /dir1/2.txt
[root@svr7 ~]# rsync -avz /dir1/ /nsd
[root@svr7 ~]# ls /nsd
[root@svr7 ~]# ls /dir1/
[root@svr7 ~]# ls /nsd
[root@svr7 ~]# touch /nsd/10.txt
[root@svr7 ~]# rsync -avz --delete /dir1/ /nsd
[root@svr7 ~]# ls /dir1/
[root@svr7 ~]# ls /nsd
#####################################################
远程同步 rsync+SSH同步
– 下行:rsync [...] user@host:远程目录 本地目录
– 上行:rsync [...] 本地目录 user@host:远程目录
虚拟机A:
[root@svr7 ~]# rm -rf /opt/*
[root@svr7 ~]# cp /etc/passwd /opt/
[root@svr7 ~]# cp /etc/fstab /opt/
[root@svr7 ~]# ls /opt/
# rsync -avz --delete /opt/ root@192.168.4.207:/opt/
虚拟机B:
[root@pc207 ~]# ls /opt/
###################################################
无密码的验证
公钥、私钥
1. 在虚拟机Svr7生成公钥、私钥
[root@svr7 ~]# ssh-keygen #一路回车
[root@svr7 ~]# ls /root/.ssh #公钥、私钥生成位置
2. 在虚拟机Svr7上,传递公钥到虚拟机pc207
[root@svr7 ~]# ssh-copy-id root@192.168.4.207
[root@pc207 ~]# ls /root/.ssh/ #公钥存放在对方的,位置及名称
authorized_keys
3. 在虚拟机Svr7上,测试
[root@svr7 ~]# ssh root@192.168.4.207 #无需密码验证
########################################################
实时同步 inotify-tools-3.13.tar.gz
真机上 :
# scp /root/桌面/tools/inotify-tools-3.13.tar.gz root@192.168.4.7:/root
虚拟机Svr7:
步骤1:安装gcc与make编译工具
步骤2:tar解包,释放源代码至指定目录
# mkdir /myrpm/
# tar -xf /root/inotify-tools-3.13.tar.gz -C /myrpm/
# ls /myrpm/
步骤3: ./configure 配置,指定安装目录/功能模块等选项
# cd /myrpm/inotify-tools-3.13/
# ./configure
步骤4: make 编译,生成可执行的二进制程序文件
步骤5: make install 安装,将编译好的文件复制到安装目录
[root@svr7 /]# which inotifywait
/usr/local/bin/inotifywait
########################################################
最容易写成死循环
while [条件]
do
执行的语句
done
A /opt --------》 B /opt
# inotifywait -mrq /opt/
# rsync -avz --delete /opt/ root@192.168.4.207:/opt/
实时同步的脚本
虚拟机Svr7:
[root@svr7 /]# vim /root/rsync.sh
#!/bin/bash
while inotifywait -rqq /opt/ (1个q减少输出;2个q不输出)
do
rsync -az --delete /opt/ root@192.168.4.207:/opt/
done
[root@svr7 /]# /root/rsync.sh #运行脚本
####################################################
虚拟机Svr7
搭建基本的DNS
1.安装bind、bind-chroot
2.修改配置文件/etc/named.conf
options {
directory "/var/named";
};
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";
};
3.建立相应的地址库文件/var/named/tedu.cn.zone
tedu.cn. NS svr7.tedu.cn.
svr7 A 192.168.4.7
www A 1.1.1.1
4.重起named服务,验证
nslookup www.tedu.cn 192.168.4.7
########################################################
Split分离解析(视图解析)
什么是分离解析
• 当收到客户机的DNS查询请求的时候
– 能够区分客户机的来源地址
– 为不同类别的客户机提供不同的解析结果(IP地址)
– 为客户端提供网络最近资源
view "haha" {
match-clients { 192.168.1.0/24; }
zone "12306.cn" IN {
12306.cn.zone;
}; };
view "xixi" {
match-clients { 192.168.2.0/24; }
zone "12306.cn" IN {
12306.cn.other;
}; };
view "hehe" {
match-clients { any; }
zone "12306.cn" IN {
12306.cn.any;
}; };
##########################################################
分离解析
客户端:192.168.4.207------------>www.tedu.cn----》1.1.1.1
客户端:其他人------------->www.tedu.cn----》2.2.2.2
一旦使用view分离解析,所有的zone都必须在view中
1.修改配置文件/etc/named.conf
options {
directory "/var/named";
};
view haha {
match-clients { 192.168.4.207; };
zone "tedu.cn" {
type master;
file "tedu.cn.haha";
};
};
view xixi {
match-clients { any; };
zone "tedu.cn" {
type master;
file "tedu.cn.xixi";
};
};
2.分别建立tedu.cn.haha与tedu.cn.xixi,写入不同的解析结果
3.重起named服务,验证 在svr7上测试解析 在pc207上测试解析
#########################################################
PATH变量的作用:提供命令的搜寻路径
[root@svr7 /]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
提示 命令没有找到?
1.输入命令有误
2.该命令没有安装
3.该命令执行程序没有在PATH的路径中
########################################################
-------------------------------------------------------------------------------------------
RAID0:至少两块磁盘,分别存放不同的数据;只提高了数据的读写性能,不提供备份冗余
RAID1:至少两块磁盘,分别存放相同的数据;只提供了数据的备份冗余,未提高读写性能
RAID5:至少三块磁盘,核心技术多出一个校验值;校验值均匀随即分布在三块磁盘中,三块磁盘存放不同的数据;即提高了读写性能,也提供了备份功能(最多只能坏一块磁盘);还可以再添加一块磁盘,这块磁盘作一个热备磁盘,监控前面的三块磁盘的健康状态,当一个磁盘坏掉后,这个第四的硬盘会被自动使用添加到阵列中,并把坏的磁盘数据cp到自己的磁盘中;
RAID6:至少使用四块磁盘,原理和5一样,银行用的比较多一点;他允许坏2快磁盘;
RAID10 | 01 至少使用4块磁盘;如下图所:AB和CD先做RAID0,然后AB和CD作完的RAID0形成的大的磁盘再作RAID1;也可以实现同时坏2快磁盘,但有限制,只能同时坏ab 或cd
pstree 用户名 查看用户开启的进程
pstree -ap 用户名 查看详细内容和pid
ps -aux 进程快照
ps -aux | grep 服务名 查看服务开启了多少个进程
---------------------------------------
--------
kill -9 PID号 杀进程
killall -9 进程名 死所有进城
killall -9 -u lisi 杀死lisi开启的所有进程(强制踢出除一个用户)
---------------------------------------------
来源:oschina
链接:https://my.oschina.net/u/4387051/blog/3221324