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    [email protected]'     用s来代替输入ssh    -X    [email protected]   使用起来比较方便,但注意,作完修改后要重新打开一个终端,才能看到新别名的
________________________________________
软件包管理:
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 [email protected]

##################################################

 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

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 [email protected] ################################################## 修改两台虚拟机防火墙默认区域为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 [email protected] ################################################## 修改两台虚拟机防火墙默认区域为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 [email protected] [email protected]'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 [email protected] ################################################## 修改两台虚拟机防火墙默认区域为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 [email protected] ################################################## 修改两台虚拟机防火墙默认区域为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 '

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 容器 • 为每个虚拟站点添加配置 ServerName 此站点的DNS名称 DocumentRoot 此站点的网页根目录 #帮助文档 /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf 虚拟机Server0: [root@server0 ~]# vim /etc/httpd/conf.d/nsd01.conf #调用配置 #虚拟Web主机开始 DocumentRoot /var/www/qq #指定网页文件根目录 ServerName www0.example.com #指定域名 #虚拟Web主机结束 DocumentRoot /var/www/baidu ServerName webapp0.example.com DocumentRoot /var/www/myweb ServerName server0.example.com [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访问控制,实现仅本机访问页面 • 使用 配置区段 – 每个文件夹自动继承其父目录的ACL访问权限 – 除非针对子目录有明确设置 .. .. Require all denied|granted Require ip IP或网段地址 .. .. 虚拟机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 Require ip 127.0.0.1 172.25.0.11 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 DocumentRoot /webroot ServerName server0.example.com [root@server0 ~]# vim /etc/httpd/conf.d/nsd02.conf Require all granted [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 DocumentRoot /var/www/baidu ServerName webapp0.example.com alias / /var/www/baidu/webinfo.wsgi [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 DocumentRoot /var/www/baidu ServerName webapp0.example.com wsgiscriptalias / /var/www/baidu/webinfo.wsgi [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 DocumentRoot /var/www/baidu ServerName webapp0.example.com WsgiScriptAlias / /var/www/baidu/webinfo.wsgi [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 [email protected] [root@room9pc14 桌面]# ssh -X [email protected] ################################################## 修改两台虚拟机防火墙默认区域为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 [email protected] 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 [email protected]:/root/ [email protected]'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/ [email protected]:/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 [email protected] [root@pc207 ~]# ls /root/.ssh/ #公钥存放在对方的,位置及名称 authorized_keys 3. 在虚拟机Svr7上,测试 [root@svr7 ~]# ssh [email protected] #无需密码验证 ######################################################## 实时同步 inotify-tools-3.13.tar.gz 真机上 : # scp /root/桌面/tools/inotify-tools-3.13.tar.gz [email protected]:/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/ [email protected]:/opt/ 实时同步的脚本 虚拟机Svr7: [root@svr7 /]# vim /root/rsync.sh #!/bin/bash while inotifywait -rqq /opt/ (1个q减少输出;2个q不输出) do rsync -az --delete /opt/ [email protected]:/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开启的所有进程(强制踢出除一个用户) ---------------------------------------------

你可能感兴趣的:(杂)