【第一题】系统环境:我们操作的系统为RHEL7.0系统,其中Hostname:station.rhce.cc,IP address:192.168.122.100,Netmask:255.255.255.0,Gateway:192.168.122.1,NameServer:192.168.122.10,Root密码:redhat
操作步骤:
(1)由于发现使用系统给定的密码'redhat'无法登陆系统,所以首先需要重置系统的root密码,按照下图点击强制复位后重新启动系统后,点击按键:e
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)将光标调整到'rhgb quiet'后面并将其删除,然后写上:# init=/bin/sh,然后按:Ctrl+x组合键。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)接着写上如下内容:# mount -o remount,rw /,然后回车;然后重新设置密码:# echo redhat | passwd --stdin root,接着回车;接着写:# touch /.autorelabel,创建一个隐藏文件并回车;最后写:# exec /sbin/init,直接回车运行,此时重置密码任务完成。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)给系统重新设置主机名:# hostnamectl set-hostname station.rhce.cc
(5)进入到如下目录:# cd /etc/sysconfig/network-scripts,并且编辑:# vim ifcfg-eth0,并添加如下的信息:
DEVICE=eth0
NAME=eth0
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.122.100
NETMASK=255.255.255.0
GATEWAY=192.168.122.1
DNS1=192.168.122.10
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(6)接着将网络重启一下:# systemctl restart network
(7)使用ssh方式连接虚拟机:# ssh root@192.168.122.100 -X,此时便连接到station的机器上了。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:# ping station.rhce.cc能够正常的ping通,说明网络信息已经配置成功。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第二题】SELinux必须运行在Enforcing模式下。
操作步骤:
(1)首先查看系统的SELinux的设置情况:# getenforce
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)同时设置SELinux的模式在当前为Enforcing模式:# setenforce 1
(3)需要确保重新启动系统后仍然运行在Enforcing模式,进入配置文件进行设置:# vim /etc/selinux/config
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)修改配置文件,将原来的'SELINUX=permissive'修改为'SELINUX=enforcing',最后':wq'保存退出。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第三题】配置YUM源,使用地址ftp://server.rhce.cc/dvd 作为默认的源。
操作步骤:
(1)进入目录# cd /etc/yum.repos.d/
(2)编辑:# vim aa.repo
(3)在数据仓库repo文件中写下配置信息:
[aa]
name=aa
baseurl=ftp://server.rhce.cc/dvd
enabled=1
gpgcheck=0
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:在系统中安装bc计算器的软件包,如果能够正常的安装成功,说明YUM源配置是正确的,# yum inStall bc -y
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第四题】调整逻辑卷vo的大小,它的文件系统应该为290M。确保这个文件系统的内容仍然完整。注意:分区很少能精确到和要求的大小相同,因此范围在260M到320之间都是可接受的。
操作步骤:
(1)首先查看逻辑卷的大小:# lvscan
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)计算缺少的逻辑卷空间大小:# echo 290-192 | bc
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)在逻辑卷中扩展缺少的空间大小:# lvextend -L +98M /dev/vg0/vo
(4)此时需要确定文件系统的类型:# df -hT
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)需要将文件系统的逻辑卷进行扩展:# xfs_growfs /home/
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
注意:如果文件系统显示的是ext4类型,则操作:# resize2fs /dev/mapper/vg0-vo


【第五题】创建下面的用户、组合组成员关系:(a)名字为adminuser的组;(b)用户natasha,使用adminuser作为附属组;(c)用户harry,也使用adminuser作为附属组;(d)用户sarah,在系统上不能访问可交互的shell,且不是adminuser的成员,natasha,harry,sarah密码都是redhat
操作步骤:
(1)首先创建用户组:# groupadd adminuser
(2)创建用户natasha:# useradd -G adminuser natasha
(3)创建用户harry:# useradd -G adminuser harry
(4))创建用户sarah:# useradd -s /sbin/nologin sarah
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)给natasha用户设置密码:# echo redhat | passwd --stdin natasha
(6)给harry用户设置密码:# echo redhat | passwd --stdin harry
(7)给sarah用户设置密码:#echo redhat | passwd --stdin sarah
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第六题】复制文件/etc/fstab到/var/tmp/fstab,配置/var/tmp/fstab的权限如下:(a)文件/var/tmp/fstab所有者是root;(b)文件/var/tmp/fstab属于root组;(c)文件/var/tmp/fstab不能被任何用户执行;(d)用户natasha可读和可写/var/tmp/fstab;(e)用户harry既不能读也不能写/var/tmp/fstab;(f)所有其他用户(现在和将来)具有读/var/tmp/fstab的能力。
操作步骤:
(1)首先复制文件:# cp /etc/fstab /var/tmp/fstab
(2)查看文件的属主和属组:# ls -l /var/tmp/fstab
(3)系统默认为不能被任何用户执行,没有'x'执行权限。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)由于对用户单独设置权限,所以使用ACL访问控制列表实现:# setfacl -m u:natasha:rw- /var/tmp/fstab
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)对harry用户单独设置权限:# setfacl -m u:harry:--- /var/tmp/fstab
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(6)其他用户具有读的能力:# ls -l /var/tmp/fstab,发现其他用户具有'r'的权限。


【第七题】用户natasha必须配置一个corn.job,当地时间每天14:23运行,执行:/bin/echo hiya
操作步骤:
(1)首先给natasha创建一个计划任务:# crontab -e -u natasha
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)配置计划任务的“分、时、日、月、星期、命令”等信息:23 14 * * * /bin/echo hiya
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)输入':wq'保存退出。
验证:检查刚刚的配置信息:# crontab -l -u natasha
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第八题】创建一个目录/home/adminS,使之具有下面的特性:(a)/home/adminS所属组为adminuser;(b)这个目录对组adminuser的成员具有可读、可写和可执行,但是不是对其他任何用户。(root可以访问系统上所有的文件和目录);(c)在/home/adminS下创建的任何文件所属组自动设置为adminuser
操作步骤:
(1)首先创建目录:# mkdir /home/adminS
(2)/home/adminS所属组为adminuser:# chgrp adminuser /home/adminS
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)接着查询目录/home/adminS的权限情况:#ls -ld /home/adminS
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)发现对组adminuser的成员缺少写的权限,因此需要添加:# chmod g+w /home/adminS
(5)不对其他任何用户:# chmod o-rx /home/adminS
(6)在/home/adminS下创建的任何文件所属组自动设置为adminuser,可以如下操作:# chmod g+s /home/adminS
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第九题】从http://rhgls.rhce.cc/pub/updates 安装合适的内核更新。下面的要求必须满足:更新的内核作为系统启动的默认内核;原来的内核在系统启动的时候仍然有效和可引导。
操作步骤:
(1)首先用浏览器下载内核:# firefox http://rhgls.rhce.cc/pub/updates &,并且保存在系统桌面。(如图9-1和9-2)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)升级下载好的内核:# rpm -ivh kernel-3.10.0-299.el7.x86_64.rpm,后续启动系统后会默认使用升级的了内核的系统。(如图9-3和9-4)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第十题】系统host.rhce.cc提供了一个LDAP验证服务,你的系统应该按下面的要求绑定到这个服务:(a)验证服务的基准DN是dc=rhce,dc=cc;(b)LDAP用于提供账户信息和验证信息连接应该使用位于http://host.rhce.cc/pub/domain11.crt 的证书加密;(c)当正确的配置后,ldapuser11可以登录你的系统,但没有家目录,直到你完成autofs题目ldapuser11的密码是:redhat
操作步骤:
(1)由于需要绑定LDAP服务,首先查询需要安装的软件包:# yum list auth*
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)将查询的到的软件包安装起来:# yum inStall authconfig-gtk.x86_64 -y
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)运行这个安装完毕的软件:# authconfig-gtk &,使其在后台运行。
(4)然后在“身份&验证”下的“用户帐户数据库”中,选择LDAP
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)按照系统要求安装缺少的软件包:# yum inStall nss-pam-ldapd -y
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(6)认证方法选择LDAP密码,在LDAP搜索基础DN中,填写dc=rhce,dc=cc;在LDAP服务器中,填写host.rhce.cc
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(7)勾选“用TLS加密连接”,在“下载CA证书”中填写:http://host.rhce.cc/pub/domain11.crt
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:此时输入:# id ldapuser11,可以验证已经存在ldapuser11这个用户。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第十一题】配置你的系统使它是rhgls.rhce.cc的一个NTP客户。
操作步骤:
(1)因为需要创建一个时间服务器,所以首先安装软件包:# yum inStall system-config-date -y
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)执行命令:# system-config-date &,将窗口中示例的信息删除,并添加时间服务器:rhgls.rhce.cc,最后点击“确定”启动时间服务器即可。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第十二题】配置autofs自动挂载LDAP用户的家目录,如下要求:host.rhce.cc(192.168.122.10)使用NFS共享了/home/guests给你的系统。(a)这个文件系统包含了预先设置好的用户ldapuser11的家目录;(b)ldapuser11的家目录是host.rhce.cc:/home/guests/ldapuser11;(c)ldapuser11的家目录应该自动挂载到本地/home/guests下面的/home/guests/ldapuser11;(d)家目录必须对用户具有可写权限,ldapuser11的密码是:redhat
操作步骤:
(1)首先安装自动挂载的软件包:# yum inStall autofs -y
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)然后编辑:# vim /etc/auto.master,并在auto.master文件中添加一行:/home/guests /etc/auto.aa
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)同时提供系统所需的auto.aa文件:# cp /etc/auto.misc /etc/auto.aa
(4)在新生成的auto.aa文件中添加一行:ldapuser11 -fstype=nfs,rw,vers=3 host.rhce.cc:/home/guests/ldapuser11,使得ldapuser11的家目录自动挂载到本地/home/guests下面的/home/guests/ldapuser11
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)将自动挂载autofs服务启动:# systemctl start autofs
(6)并加入开机自动启动项中:# systemctl enable autofs
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:# su - ldapuser11,可以发现用户ldapuser11自动生成了家目录,说明自动挂载成功。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第十三题】创建一个用户alex,uid为3400。这个用户的密码为:redhat
操作步骤:
(1)首先创建alex用户:# useradd -u 3400 alex
(2)设置用户的密码:# echo redhat | passwd --stdin alex
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第十四题】为你的系统上额外添加一个大小为512M的交换分区,这个交换分区在系统启动的时候应该能自动挂载。不要移除和更改你系统上现存的交换分区。
操作步骤:
(1)首先查询系统的分区情况:# lsblk,由于系统已经有了3个分区,所以第四个建议创建扩展分区,并在扩展分区上创建逻辑分区。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)首先进入分区创建:# fdisk /dev/sda,然后输入:
p -----------(打印)
n -----------(创建一个新的扩展分区)
e -----------(选择为扩展分区,并两次回车选择默认设置)
n -----------(创建一个新的逻辑分区)
+512M ----(分区大小为512M)
t ------------(改变分区的类型)
5 -----------(选择需要修改的分区号)
82 ----------(改变为Swap类型)
w------------(保存退出)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)接着需要将系统分区表的变化通知内核:# partprobe /dev/vda
(4)然后需要将分区设置为交换分区类型:# mkswap /dev/vda5
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)接着需要开机能够自动启动,进入配置文件:# vim /etc/fstab,并且写上如下一行:
/dev/vda5 swap swap defaults 0 0
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(6)最后需要将swap分区手动启动一下:# swapon -a
验证:在命令行输入:# swapon -s,如果有出现/dev/vda5则说明512M的交换分区挂载成功。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第十五题】找出所有所有者是ira的文件,并把它们拷贝到/root/findresults目录。
操作步骤:
(1)首先将题目要求的文件夹创建出来:# mkdir /root/findresults
(2)将需要查找出的文件放入文件夹中,注意使用分号结束:# find / -user ira -exec cp -a {} /root/findresults/ \;
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:输入命令:# ls -l /root/findresults,看到属主为ira,即说明已经将所有者为ira的文件拷贝到了对应的目录下了。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第十六题】在/usr/share/dict/words中找出所有包含seismic的行。复制所有这些行并按照原来的顺序放在文件/root/lines中。/root/lines应该没有空白行,所有的行必须是/usr/share/dict/words中原有的行的精确复制。
操作步骤:
(1)首先将符合条件的行找出来并且重定向到对应的文件中:# grep seismic /usr/share/dict/words > /root/lines
验证:# cat /root/lines即可发现都是包含seismic的行。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第十七题】创建名为/root/backup.tar.bz2的备份文件,其中包含/usr/local的内容,tar必须使用bzip2压缩。
操作步骤:
(1)首先进入需要将其压缩备份的文件夹内:# cd /usr/local
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)如果没有bzip2类型的压缩格式,那么安装起来即可:# yum inStall bzip2 -y
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)因为需要创建的文件是bzip2类型,所以将文件夹内的文件全部压缩:# tar jcvf /root/backup.tar.bz2 *
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:此时在家目录中便可以看到一个:backup.tar.bz2的文件,说明创建备份文件成功。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第十八题】按照下面的要求创建一个新的逻辑卷:(a)逻辑卷命名为database,属于卷组datastore,且大小为50个扩展;(b)在卷组datastore的逻辑卷每个扩展的大小为16MiB;(c)使用vfat格式化这个新的逻辑卷,此逻辑卷在系统启动的时候应该能自动挂载到/mnt/database。
操作步骤:
(1)首先需要查看一下当前的分区状况:# lsblk,发现创建逻辑分区比较合适,逻辑卷的大小至少为50*16=800M,所以卷组的大小设置为1G比较合适。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)输入如下的命令进入分区创建状态:# fdisk /dev/vda,然后键入:
p --------(打印当前分区的情况)
n --------(创建一个新的分区)
+1G ----(分区大小设为1G)
t ---------(转换分区类型)
6 --------(选择第六个分区)
8e ------(设置为LVM逻辑卷类型)
w --------(保存退出)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)最后将系统分区表的变化通知内核:# partprobe /dev/vda
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)首先创建物理卷:# pvcreate /dev/vda6
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)然后创建卷组:# vgcreate -s 16 datastore /dev/vda6,创建的卷组大小为16M,卷组名为datastore
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(6)最后创建逻辑卷:# lvcreate -l 50 -n database datastore,卷组是50个扩展,并且逻辑卷名为database,由卷组datastore创建而来。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(7)此时还需要格式化这个新的逻辑卷,并且需要确保vfat格式可用:# yum whatprovides */mkfs.vfat
(8)将对应格式的软件包安装起来:# yum inStall dosfstools-3.0.20-9.el7.x86_64 -y
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(9)最后格式化这个新的逻辑卷:# mkfs.vfat /dev/datastore/database
(10)因为需要在开机的时候能够自动挂载,所以先创建对应的文件目录:# mkdir /mnt/database
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(11)编辑开机自动挂载文件:# vim /etc/fstab,然后在配置文件中写上:/dev/datastore/database /mnt/database vfat defaults 0 0一行即可。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:首先输入:# mount -a重新挂载一下文件系统,然后查询挂载情况:# df -hT,发现已经挂载成功了。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第十九题】系统环境:我们操作的系统为RHEL7.0系统,其中第一台机器主机名:system1,IP address:192.168.122.100,Netmask:255.255.255.0,第二台机器主机名:system2,IP address:192.168.122.200,Netmask:255.255.255.0,Gateway:192.168.122.1,NameServer:192.168.122.10,Root密码:redhat
(a)配置SELinux,SELinux必须在两个系统system1和system2中运行于Enforcing模式。
操作步骤:
(1)由于系统的yum源没有配置,所以先进入system1机器上的yum文件夹下:# cd /etc/yum.repos.d
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)然后创建yum配置文件:# vim aa.repo
[aa]
name=aa
baseurl=ftp://server.rhce.cc/dvd
enabled=1
gpgcheck=0
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)把system1上配置好的yum源文件拷贝到system2系统上:# scp /etc/yum.repos.d/aa.repo system2:/etc/yum.repos.d/
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)打开SELinux配置文件:vim /etc/selinux/config
(5)然后更改配置文件:SELINUX=enforcing
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(6)修改当前系统的SELinux配置为enforcing模式:# setenforce 1,如上所有的配置同样都在system1和system2上都操作一遍即可。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第二十题】配置SSH访问,按以下要求配置SSh访问:(a)用户能够从域rhce.cc的客户端通过SSH远程访问您的两个虚拟机系统;(b)在域my133.org内的客户端不能访问您的两个虚拟机系统。
操作步骤:
(1)首先在system1机器上编辑允许远程访问的配置文件:# vim /etc/hosts.allow
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)由于需要用户能够从rhce,cc的客户端通过SSH远程访问系统,故添加如下一行:
sshd : 192.168.122.0/255.255.255.0
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)接着在system1机器上编辑禁止远程访问的配置文件:# vim /etc/hosts.deny
(4)由于在域my133.org内的客户端不能访问系统,故添加如下一行:
sshd : .my133.org
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)将system1上配置的文件拷贝到system2机器上:# scp /etc/hosts.allow /etc/hosts.deny system2:/etc/
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
注意:添加的一行信息为域名解析的IP地址,同时子网掩码需要写全:255.255.255.0,不能用数字24替代。


【第二十一题】自定义用户环境,在系统system1和system2上创建自定义命令名为qstat此自定义命令将执行以下命令:/bin/ps-Ao pid,tt,user,fname,rsz此命令对系统中所有 用户有效。
操作步骤:
(1)首先在system1机器上编辑配置文件:# vim /etc/bashrc
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)可以在配置文件的末行加上一句:
alias qstat='/bin/ps-Ao pid,tt,user,fname,rsz'
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)然后将文件立即生效:# source /etc/bashrc
(4)最后在system2机器上做相同的配置即可。
验证:在命令行执行如下命令:# qstat,可以查看到命令正常执行,说明自定义用户环境的任务完成了。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第二十二题】配置端口转发,在系统system1配置端口转发,要求如下:在192.168.122.0/24网络中的系统,访问system1的本地端口5423将被转发到80,此设置必须永久有效。
操作步骤:
(1)因为需要配置端口转发,即配置防火墙的富规则,可以通过找模板的方式处理:# man -k firewall
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)然后找到firewalld.richlanguage这一项:# man firewalld.richlanguage,然后进行搜索查找:/EXAMPLES,找到模板Example 3和Example 5
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)然后写防火墙的富规则,当访问system1的本地端口5423将被转发到80:# firewall-cmd --add-rich-rule ' rule family="ipv4" source address="192.168.122.0/24" forward-port to-port="80" protocol="tcp" port="5423" '
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)此设置必须永久有效:# firewall-cmd --add-rich-rule ' rule family="ipv4" source address="192.168.122.0/24" forward-port to-port="80" protocol="tcp" port="5423" ' --permanent
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第二十三题】配置聚合链路,在system1.rhce.cc和system2.rhce.cc之间按以下要求配置一个链路:(a)此链路使用eth1和eth2;(b)此链路在一个接口失效时仍然能工作;(c)此链路在system1使用下面的地址172.16.11.25/255.255.255.0;(d)此链路在system2使用下面的地址172.16.11.35/255.255.255.0;(e)此链路在系统重启之后依然保持正常状态。
操作步骤:
(1)因为需要配置聚合链路,所以首先可以去system1机器上找模板:# cd /usr/share/doc/teamd-1.9/example_ifcfgs/1/
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)将如下文件夹中的3个文件拷贝到网络配置的文件夹中:# cp * /etc/sysconfig/network-scripts/
(3)进入到网络配置文件夹中:# cd /etc/sysconfig/network-scripts/
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)在system1机器上编辑第一个配置文件:# vim ifcfg-team_test0
DEVICE="team_tset0"
NAME=team_test0
DEVICETYPE="Team"
ONBOOT="yes"
BOOTPROTO=none
NETMASK=255.255.255.0
IPADDR=172.16.11.25
TEAM_CONFIG='{"runner":{"name":"activebackup"}}'
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)在system1机器上编辑第二个配置文件:# vim ifcfg-eth1
DEVICE="eth1"
NAME=eth1
DEVICETYPE="TeamPort"
ONBOOT="yes"
TEAM_MASTER="team_test0"
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)在system1机器上编辑第三个配置文件:# vim ifcfg-eth2
DEVICE="eth2"
NAME=eth2
DEVICETYPE="TeamPort"
ONBOOT="yes"
TEAM_MASTER="team_test0"
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(6)接着重启服务即可:# systemctl restart network
(6)在system1的network-scripts文件夹下,将配置的文件拷贝到system2的机器上:# scp ifcfg-eth1 ifcfg-eth2 ifcfg-team_test0 system2:/etc/sysconfig/network-scripts/
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(7)在system2机器上编辑第一个配置文件:# vim ifcfg-team_test0
DEVICE="team_tset0"
NAME=team_test0
DEVICETYPE="Team"
ONBOOT="yes"
BOOTPROTO=none
NETMASK=255.255.255.0
IPADDR=172.16.11.35
TEAM_CONFIG='{"runner":{"name":"activebackup"}}'
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(8)最后重启两台机器的服务即可:# systemctl restart network
验证:在system1机器上操作:# ping 172.16.11.35,并在system2机器上操作:# ping 172.16.11.25都可以正常的通信,表明配置的聚合链路生效了。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第二十四题】配置IPv6地址,在你的系统上配置接口eth0使用下列IPv6地址:(a)system1上的地址应该是200e:ac18::e0a/64;(b)system2上的地址应该是200e:ac18::e14/64;(c)两个系统必须能与网络200e:ac18/64内的系统通信。(d)地址必须在重启后依旧生效。(e)两个系统必须保持当前的IPv4地址并能通信。
操作步骤:
(1)首先在system1上查看一下名称和设备各均为eth0:# nmcli connection
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)将system1设置为auto:# nmcli connection modify eth0 ipv6.method auto
(3)接着设置IP地址:# nmcli connection modify eth0 ipv6.addresses 200e:ac18::e0a/64
(4)接着将system1设置为manual:# nmcli connection modify eth0 ipv6.method manual
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)在system2上就行同样的操作:# nmcli connection modify eth0 ipv6.method auto
(6)# nmcli connection modify eth0 ipv6.addresses 200e:ac18::e14/64
(7)# nmcli connection modify eth0 ipv6.method manual
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(8)最后重启网络:# systemctl restart network
验证:在system1机器上ping第二台机器system2:# ping6 200e:ac18::e14,并且反过来在system2上验证:# ping6 200e:ac18::e0a
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第二十五题】配置本地邮件服务,在系统system1和system2上配置邮件服务,满足以下要求:(a)这些系统不接收外部发送来的邮件;(b)在这些系统上本地发送的任何邮件都会自动路由到rhgls.rhce.cc;(c)从这些系统上发送的邮件显示来自于rhce.cc;(d)您可以通过发送邮件到本地用户'dave'来测试您的配置,系统rhgls.rhce.cc已经配置把此用户的邮件转到下列URL:http://rhgls.rhce.cc/received_mail/11
操作步骤:
(1)首先可以在system1机器的防火墙中work zone添加允许所有的邮件通过:# firewall-cmd --add-service=smtp
(2)并且将配置写入持久态:# firewall-cmd --add-service=smtp --permanent
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)进入邮件配置文件夹:# cd /etc/postfix
(4)编辑配置文件:# vim main.cf
(5)题中要求系统不接收来自外部的邮件,所以修改:'mydestination = '
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(6)如果接受了来自外部的邮件,则先在系统中查找关键字:# postconf | grep transp
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(7)找到'local_transport'关键字后,接着让系统给出一个报错:# postconf -e local_transport=err:xxxxx
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(7)由于需要本地发送的任何邮件都会自动路由到rhgls.rhce.cc,所以在配置文件中修改:relayhost = [rhgls.rhce.cc]
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(8)在系统上发送的邮件显示来自于rhce.cc,所以修改:myorigin = rhce.cc
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(9)在system1上做完以上的配置后,再在system2机器上进行同样的配置:# scp /etc/postfix/main.cf system2:/etc/postfix/
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(10)最后重启邮件服务器即可:# systemctl restart postfix
验证:
(1)首先在system1机器上安装mail客户端:# yum inStall mailx -y
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)然后发送一封邮件给已经配置好的本地用户:# echo aaaaaa | mail -s 'aaaa' dave
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)然后再浏览器中打开下列URL:http://rhgls.rhce.cc/received_mail/11 ,即可发现邮件已经可以正常的接收了,同样的测试在system2机器上操作一次。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第二十六题】通过SMB共享目录,在system1上配置SMB服务:(a)您的SMB服务器必须是STAFF工作组的一个成员;(b)共享/common目录,共享名必须为common;(c)只有rhce.cc域内的客户端可以访问common共享;(d)common必须是可以浏览的;(e)用户andy必须能够读取共享中的内容,如果需要的话,验证的密码是:redhat
操作步骤:
(1)首先把服务安装起来:# yum inStall samba -y
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)编辑配置文件:# vim /etc/samba/smb.conf
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)由于SMB服务器必须是STAFF工作组的一个成员,所以修改配置文件:workgroup = STAFF
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)由于共享/common目录,所以先创建目录:# mkdir /common
(5)在samba服务中每创建一个文件都需要修改上下文:# chcon -R -t samba_share_t /common
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(6)由于具体的访问控制是在配置文件中设置的,所以在防火墙work zone中允许所有的数据包通过:# firewall-cmd --add-service=samba
(7)并且将配置写入持久态:# firewall-cmd --add-service=samba --permanent
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(8)继续编辑配置文件:# vim /etc/samba/smb.conf
(9)在最后一行添加如下内容:
[common]
path = /common
hosts allow = 192.168.122.0/24
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(10)由于发现:# id andy,用户不存在,所以创建用户:# useradd andy
(11)给创建的用户设置密码:# echo redhat | passwd --stdin andy
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(12)因为后续验证时需要在system2机器上测试samba服务,但是软件包并没有安装,查询需要在system2机器上安装的软件包:# yum whatprovides */smbclient
(13)在system2机器上将软件包安装起来:# yum inStall samba-client -y
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(14)然后添加samba用户:# smbpasswd -a andy
(15)然后输入:#pdbedit -L,发现andy用户已经添加到samba域里了。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(16)最后在system1机器上启动服务:# systemctl start smb
(17)并将服务加入开机启动项:# systemctl enable smb
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:
(1)在system2机器上验证samba服务是否配置成功:# smbclient -L //system1 -U andy%redhat
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)接着查看用户是否可以登录common目录:# smbclient //system1//common -U andy%redhat
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第二十七题】配置多用户SMB挂载,在system1共享通过SMB目录/miscellaneous满足以下要求:(a)共享名为miscellaneous;(b)共享目录miscellaneous只能被rhce.cc域中的客户端使用;(c)共享目录miscellaneous必须可以被浏览;(d)用户silene必须能以读的方式访问此共享,访问密码是redhat;(e)用户akira必须能以读写的方式访问此共享,访问密码是redhat;(f)此共享永久挂载在system2.rhce.cc上的/mnt/multi目录,并使用用户silene作为认证,任何用户可以通过akira来临时获取写的权限。
操作步骤:
(1)首先在system1机器上创建题目要求的目录:# mkdir /miscellaneous
(2)同时需要修改目录文件的上下文:# chcon -R -t samba_share_t /miscellaneous
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)接着编辑samba的配置文件:vim /etc/samba/smb.conf
[miscellaneous]
path = /miscellaneous
hosts allow = 192.168.122.0/24
writable = no
write list = akira
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)同时需要将目录的其他用户设置可写的权限:# chmod o+w /miscellaneous/
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)创建silene和akira用户:
# useradd silene
# useradd akira
(6)并且给用户设置密码:
# echo redhat | passwd --stdin silene
# echo redhat | passwd --stdin akira
(7)然后将用户加入到samba服务中:
# smbpasswd -a silene
# smbpasswd -a akira
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(8)然后在system1机器上重启服务:# systemctl restart smb.service
(9)然后在system2机器上测试silene用户是否可以登录samba共享:# smbclient //system1/miscellaneous -U silene%redhat,发现可以登录samba共享,使用silene用户创建目录:# mkdir aa,发现没有权限创建目录。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(10)接着在system2机器上测试akira用户是否可以登录samba共享:# smbclient //system1/miscellaneous -U akira%redhat,发现可以登录samba共享,使用akira用户创建目录:# mkdir bb,发现有权限创建文件目录。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(11)由于需要将samba共享永久挂载在system2机器上,所以先创建好所需的目录:# mkdir /mnt/multi,并编辑挂载配置文件:# vim /etc/fstab
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(12)然后添加如下的一行:
//system1/miscellaneous /mnt/multi cifs defaults,username=silene,password=redhat,multiuser,sec=ntlmssp 0 0
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(13)由于是多用户挂载,所以需要安装cifs软件包:# yum inStall cifs-u* -y
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(14)然后重置挂载的配置文件:# mount -a
(15)接着输入:# df -hT,发现已经挂载成功了。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:
(1)首先在system2机器上创建多个测试用户:
# useradd tom1
# useradd tom2
# useradd tom3
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)首先在system2机器上切换到tom1用户:# su - tom1,然后进入到创建好的目录中:# cd /mnt/multi
(3)先使用silene用户测试:# cifscreds add system1 -u silene,接着测试:# touch ssss,发现没有创建文件的权限。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)然后在system2机器上切换到tom2用户:# su - tom2,并且进入到创建好的目录中:# cd /mnt/multi
(5)再使用akira用户测试:# cifscreds add system1 -u akira,接着测试:# mkdir bbbb,发现可以正常的创建目录。所以实现了此共享挂载在system2对应的目录上,并且对应的用户拥有各自的权限了。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第二十八题】配置NFS服务,在system1配置NFS服务,要求如下:(a)以只读的方式共享目录/public同时只能被rhce.cc域中的系统访问;(b)以读写的方式共享目录/protected能被rhce.cc域中的系统访问;(c)访问/protected需要通过Kerberos安全加密,您可以使用下面URL提供的密钥http://host.rhce.cc/materials/nfs_server.keytab ;(d)目录/protected应该包含名为confidential拥有人为ldapuser11的子目录;(e)用户ldapuser11能以读写方式访问:/protected/confidential
操作步骤:
(1)因为system1需要配置NFS服务,所以首先启动服务:# systemctl start nfs-server
(2)然后还要设置开机自动启动:# systemctl enable nfs-server
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)由于system1只能被rhce.cc域中的系统访问,所以设置防火墙富规则:# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.122.0/24" service name="nfs" accept'
(4)并且写入持久态,使重启后仍然生效:# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.122.0/24" service name="nfs" accept' --permanent
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.122.0/24" service name="rpc-bind" accept'
(6)# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.122.0/24" service name="rpc-bind" accept' --permanent
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(7)# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.122.0/24" service name="mountd" accept'
(8)# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.122.0/24" service name="mountd" accept' --permanent
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(9)接着在system1上创建public目录:# mkdir /public
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(10)在system1上编辑配置文件:# vim /etc/exports,然后添加如下的一行:/public *(ro,sync),并将修改内容生效:# exportfs -arv(如图28-6和28-7)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(11)接着在system2机器上测试NFS是否生效:# showmount -e system1,然后挂载system1的目录:# mount system1:/public /mnt
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(12)然后在system1上创建protected目录:# mkdir /protected
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(13)在system1上编辑配置文件:# vim /etc/exports,然后添加如下的一行:/protected *(rw,sync),并将修改内容生效:# exportfs -arv(如图28-10和28-11)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(14)因为访问protected需要通过Kerberos安全加密:# wget -O /etc/krb5.keytab http://host.rhce.cc/materials/nfs_server.keytab
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(15)因为配置了安全加密,所以需要修改配置文件:# vim /etc/exports,修改为:/protected *(rw,sync,sec=krb5p),并且重新生效配置:# exportfs -arv(如图28-13和28-14)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(16)由于system1上配置了安全加密,所以也要修改system1配置文件:# vim /etc/sysconfig/nfs,修改如下配置'PRCNFSDARGS="-V 4.2"'强制使用4.2版本。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(17)由于system1配置了4.2版本,所以需要修改protected目录的上下文:# chcon -R -t public_content_t /protected/
(18)在system1上创建confidential目录:# mkdir /protected/confidential,并再次修改上下文:# chcon -R -t public_content_t /protected/
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(19)然后修改目录的属主信息:# chown ldapuser11 /protected/confidential
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(20)最后system1需要重启nfs-server服务:# systemctl restart nfs-server.service,接着还要重启:# systemctl restart nfs-secure-server,并加入开机启动项:# systemctl enable nfs-secure-server
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第二十九题】挂载一个NFS共享,在system2上挂载一个来自system1.rhce.cc的NFS共享,并符合下列要求:(a)/public挂载在下面的目录上/mnt/nfsmount;(b)/protected挂载在下面的目录上/mnt/nfssecure并使用安全的方式,密钥下载URL如下:http://host.rhce.cc/materials/nfs_client.keytab ;(c)用户ldapuser11能够在/mnt/nfssecure/confidential上创建文件;(d)这些文件系统在系统启动时自动挂载。
操作步骤:
(1)在system2机器上操作,首先需要验证NFS是否有挂载成功:# showmount -e system1
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)创建nfsmount目录:# mkdir /mnt/nfsmount
(3)编辑fstab配置文件:# vim /etc/fstab
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)在配置文件中添加如下一行信息:system1.rhce.cc:/public /mnt/nfsmount nfs defaults 0 0,并且重启挂载:# mount -a,测试已经挂载成功了:# df -hT(如图29-3和29-4)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)创建nfssecure目录:# mkdir /etc/nfssecure
(6)并且需要使用安全的方式:# wget -O /etc/krb5.keytab http://host.rhce.cc/materials/nfs_client.keytab
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(7)因为system2使用了安全的方式,所以需要启动如下服务:# systemctl start nfs-secure
(8)并将服务加入开机启动项中:# systemctl enable nfs-secure
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(9)此时进行挂载,编辑fstab配置文件:# vim /etc/fstab
(10)在配置文件中添加如下一行信息:system1.rhce.cc:/protected /mnt/nfssecure nfs defaults,v4.2,sec=krb5p 0 0,并重新启动挂载:# mount -a,然后测试挂载已经成功了:# df -hT
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:
(1)由于用户ldapuser11能够在挂载的目录上创建文件,在system1机器上操作:# ssh ldapuser11@system2.rhce.cc -X,因为配置的时候是基于Kerberos进行安全加密的,所以使用SSH的方式登录的时候就可以基于Kerberos进行认证。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)登录到confidential目录:# cd /mnt/nfssecure/confidential,此时用户ldapuser11就能够在confidential目录上创建文件了:# touch aaa
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第三十题】配置web站点,system1上配置一个站点http://system1.rhce.cc 然后执行下述步骤:(a)从http://rhgls.rhce.cc/materials/station.html 下载文件,并且将文件重命名为index.html不要修改此文件的内容;(b)将文件index.html拷贝到您的web服务器的DocumentRoot目录下;(c)来自于rhce.cc域的客户端可以访问此Web服务;(d)来自于my133t.org域的客户端拒绝访问此Web服务。
操作步骤:
(1)首先安装Web服务:# yum groupinStall web* -y
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)接着将服务启动起来:# systemctl start httpd
(3)并将服务加入开机启动项:# systemctl enable httpd
(4)编辑配置文件:# vim /etc/httpd/conf/httpd.conf
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)修改ServerName的一行:ServerName system1.rhce.cc:80
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(6)下载文件,并且将文件重命名为index.html:# wget -O /var/www/html/index.html http://rhgls.rhce.cc/materials/station.html
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(7)由于来自rhce.cc域的客户端可以访问此Web服务,所以设置防火墙:# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.122.0/24" service name="http" accept'
(8)并且将防火墙的Web规则写入持久态:# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.122.0/24" service name="http" accept' --permanent
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(9)最后将服务重启:# systemctl restart httpd.service
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
注意:
(1)有时候重启服务器之后,使用域名就无法正常访问了,所以可以在hosts配置文件中解决:# vim /etc/hosts
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)为使重启Web服务后,仍然可以正常的使用域名访问,在配置文件中添加一行:
192.168.122.100 system1.rhce.cc system1
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:打开浏览器,输入:system1.rhce.cc,可以正常访问,说明Web站点配置成功。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第三十一题】配置安全web服务,为站点http://system1.rhce.cc 配置TLS加密,一个已签名证书从http://host.rhce.cc/materials/system1.crt 获取,此证书的密钥从http://host.rhce.cc/materials/system1.key 获取,此证书的签名授权信息从http://host.rhce.cc/materials/domain11.crt 获取。
操作步骤:
(1)因为需要配置安全web服务,所以先进入目录:# cd /etc/httpd/conf
(2)先将第一个文件下载到本地:# wget http://host.rhce.cc/materials/system1.crt
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)将第二个文件也下载到本地:# wget http://host.rhce.cc/materials/system1.key
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)将第三个文件也下载到本地:# wget http://host.rhce.cc/materials/domain11.crt
(5)编辑Web服务中的安全配置文件:# vim /etc/httpd/conf.d/ssl.conf
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(6)修改配置文件中的如下各行信息:
SSLCertificateFile /etc/httpd/conf/system1.crt
SSLCertificateKeyFile /etc/httpd/conf/system1.key
SSLCertificateChainFile /etc/httpd/conf/domain11.crt
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(7)接下来重启Web服务:# systemctl restart httpd
(8)此时还要将https写入防火墙富规则中:# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.122.0/24" service name="https" accept'
(9)并且还要将https写入防火墙规则的持久态中:# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.122.0/24" service name="https" accept' --permanent
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:打开浏览器,输入:https://system1.rhce.cc ,发现可以正常的访问,说明安全Web服务配置完成。(如图31-6至图31-8)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第三十二题】配置虚拟主机,在system1上扩展您的web服务器,为站点http://www.rhce.cc 创建一个虚拟主机,然后执行下述步骤:(a)设置DocumentRoot为/var/www/virtual;(b)从http://rhgls.rhce.cc/materials/www.html 下载文件并重命名为index.html不要对文件index.html的内容做任何修改;(c)将文件index.html放到虚拟主机的DocumentRoot目录下,确保andy用户能够在/var/www/virtual目录下创建文件。注意:原始站点http://system1.rhce.cc 必须仍然能够访问,名称服务器rhce.cc提供对主机名www.rhce.cc 的域名解析。
操作步骤:
(1)首先编辑配置文件:# vim /etc/hosts
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)在配置文件中添加如下的一行信息:
192.168.122.100 www.rhce.cc www
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)创建DocumentRoot目录:# mkdir /var/www/virtual
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)下载文件:# wget -O /var/www/virtual/index.html http://rhgls.rhce.cc/materials/www.html
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)确保andy用户能够在此目录下创建文件:# setfacl -m u:andy:rwx /var/www/virtual/
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(6)由于需要配置虚拟主机,所以可以使用模板:# cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/vhost.conf
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(7)编辑新生成的vhost文件:# vim /etc/httpd/conf.d/vhost.conf
<VirtualHost www.rhce.cc:80>
DocumentRoot /var/www/virtual
ServerName www.rhce.cc
</VirtualHost>
<VirtualHost system1.rhce.cc:80>
DocumentRoot /var/www/html
ServerName system1.rhce.cc
</VirtualHost>
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(8)最后将服务重启一下:# systemctl restart httpd
验证:
(1)在浏览器中输入:www.rhce.cc ,发现可以正常访问。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)在浏览器中输入:http://system1.rhce.cc ,发现可以正常访问。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)在浏览器中输入:https://system1.rhce.cc ,发现可以正常访问,说明虚拟主机配置成功。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第三十三题】配置web内容的访问,在您的system1上的web服务器的DocumentRoot目录下创建一个名为secret的目录,要求如下:(a)从http://rhgls.rhce.cc/materials/private.html 下载一个副本到这个目录,并且重命名为index.html。(b)不要对这个文件的内容做任何修改。(c)从system1上,任何人都可以浏览secret的内容,但是从其它系统不能访问这个目录的内容。
操作步骤:
(1)由于需要在system1上的web服务器创建secret目录,所以创建:# mkdir /var/www/html/secret /var/www/virtual/secret
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)将副本下载到这个html目录:# wget -O /var/www/html/secret/index.html http://rhgls.rhce.cc/materials/private.html
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)将副本下载到这个virtual目录:# wget -O /var/www/virtual/secret/index.html http://rhgls.rhce.cc/materials/private.html
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)由于secret目录只允许本机的用户可以访问,所以在配置文件中:# vim /etc/httpd/conf/httpd.conf中找到如下模板信息:
<Directory "/var/www">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)接着根据模板信息编辑vhost配置文件:# vim /etc/httpd/conf.d/vhost.conf
<Directory "/var/www/html/secret">
AllowOverride None
Require local
</Directory>
<Directory "/var/www/virtual/secret">
AllowOverride None
Require local
</Directory>
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(6)最后重启服务:# systemctl restart httpd
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:
(1)在system1机器上操作:# curl -s www.rhce.cc/secret/index.html ,发现可以正常访问。
(2)在system1机器上操作:# curl -s system1.rhce.cc/secret/index.html ,发现可以正常访问。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)在system2机器上操作:# curl -s www.rhce.cc/secret/index.html ,发现无法正常访问。
(4)在system2机器上操作:# curl -s system1.rhce.cc/secret/index.html ,发现无法正常访问。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第三十四题】实现动态Web内容,在system1上配置提供动态Web内容,要求如下:(a)动态内容有名为dynamic.rhce.cc的虚拟主机提供,虚拟主机侦听在端口8998;(b)从http://rhgls.rhce.cc/materials/webapp.wsgi 下载一个脚本,然后放在适当的位置,无论如何不要求修改此文件的内容;(c)客户端访问http://dynamic.rhce.cc:8998/ 时,应该接收到动态生成的web页面;(d)此http://dynamic.rhce.cc:8998/ 必须能被rhce.cc域内的所有系统访问。
操作步骤:
(1)首先确认动态主机的IP:# ping dynamic.rhce.cc,发现IP地址为:192.168.122.100
(2)编辑system1机器上的配置文件:# vim /etc/hosts,并添加如下的一行信息:
192.168.122.100 dynamic.rhce.cc dynamic
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)由于虚拟主机侦听在端口8998,所以需要设置防火墙的富规则:# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.122.0/24" port protocol="tcp" port="8998" accept'
(4)并将防火墙规则写入持久态:# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.122.0/24" port protocol="tcp" port="8998" accept' --permanent
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)接下来还要在配置文件中开放端口8998:# vim /etc/httpd/conf/httpd.conf,添加如下一行信息:
Listen 8998
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(6)接着进入vhost配置文件:# vim /etc/httpd/conf.d/vhost.conf
<VirtualHost dynamic.rhce.cc:8998>
DocumentRoot /var/www/html/yy
ServerName dynamic.rhce.cc
WSGIScriptAlias / /var/www/html/yy/webapp.wsgi
</VirtualHost>
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(7)创建第六步在配置文件中定义的目录:# mkdir /var/www/html/yy
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(8)由于需要实现动态web,所以安装对应的软件包:# yum inStall mod_wsgi -y
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(9)将下载的脚本放到第七步创建的目录下:# wget -P /var/www/html/yy http://rhgls.rhce.cc/materials/webapp.wsgi
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(10)由于在第六步中配置了端口,所以需要修改端口的上下文,首先需要找到模板:# vim /etc/ssh/sshd_config,找到如下一行:
semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(11)确认需要安装semanage软件包的名称:# yum whatprovides */semanage
(12)并将软件包安装起来:# yum inStall policycoreutils-python-2.2.5-11.el7.x86_64 -y
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(13)然后执行修改上下文的命令:# semanage port -a -t http_port_t -p tcp 8998
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(14)重启Apache服务器:# systemctl restart httpd
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:
(1)在浏览器输入:http://system1.rhce.cc ,发现正常访问。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)在浏览器输入:https://system1.rhce.cc ,发现正常访问。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)在浏览器输入:www.rhce.cc ,发现正常访问。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)在浏览器输入:dynamic.rhce.cc:8998,发现正常访问。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第三十五题】创建一个脚本,在system1上创建一个名为/root/script的脚本,让其提供下列特性:(a)当运行/root/script foo,输出为bar;(b)当运行/root/script bar,输出为foo;(c)当没有任何参数或者参数不是foo或者bar时,其错误输出产生以下的信息:/root/script foo|bar
操作步骤:
(1)首先在system1机器上创建一个脚本:# vim script
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)然后添加如下脚本信息:
#! /bin/bash
case $1 in
foo)
echo bar
;;
bar)
echo foo
;;
*)
echo '/root/script foo|bar'
;;
esac
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)然后给脚本加上可执行权限:# chmod +x /root/script
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:
(1)执行:# ./script afa,得到了结果:/root/script foo|bar
(2)执行:# ./script foo,得到了结果:bar
(3)执行:# ./script bar,得到了结果:foo
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第三十六题】创建一个添加用户的脚本,在system1上创建一个脚本,名为/root/mkusers,此脚本能实现为系统system1创建本地用户,并且这些用户的用户名来自一个包含用户名列表的文件。同时满足下列要求:(a)此脚本要求提供一个参数,此参数就是包含用户名列表的文件;(b)如果没有提供参数,此脚本应该给出下面的提示信息Usage:/root/mkusers然后退出并返回相应的值;(c)如果提供一个不存在的文件名,此脚本应该给出下面的提示信息Input file not found然后退出并返回相应的值;(d)创建的用户登录shell为/bin/false;(e)此脚本不需要为用户设置密码;(f)您可以从下面的URL获取用户名列表作为测试用:http://rhgls.rhce.cc/materials/userlist
操作步骤:
(1)首先在system1机器上创建一个脚本:# vim /root/mkusers
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)然后添加如下脚本信息:
#! /bin/bash
if [ $# -eq 0 ];then
echo "Usage:/root/mkusers"
exit 1
fi
if[ ! -f $1 ];then
echo "Input file not found"
exit 1
fi
while read aa
do
useradd -s /bin/false $aa
done < $1
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)下载用户列表文件:# wget http://rhgls.rhce.cc/materials/userlist
(4)chmod +x /root/mkusers
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:
(1)执行:# ./mkusers,得到了结果:Usage:/root/mkusers
(2)执行:# ./mkusers afafaf,得到了结果:Input file not found
(3)执行:# ./mkusers userlist,正常执行了脚本,并且验证发现新用户已经创建:# id lisi
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第三十七题】配置iSCSI服务端,配置system1提供一个iSCSI服务,磁盘名为iqn.2014-09.com.example.domain11:system1,并符合下列要求:(a)服务端口为3260;(b)使用iscsi_vol作其后端卷,大小为3G;(c)此服务只能被system2.rhce.cc访问。
操作步骤:
(1)首先应该在system1机器上将服务的软件包安装起来:# yum inStall target* -y
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)接着启动服务:# systemctl start target
(3)并将服务加入开机启动项:# systemctl enable target
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)由于使用的后端卷大小为3G,所以创建:# fdisk /dev/vda,然后输入:
p --------(打印当前的分区情况)
n --------(创建一个新的分区)
p --------(创建一个主分区)
+3G ----(创建一个3G大小的主分区)
w --------(保存退出)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)最后还需要将system1修改的配置同步更新一下:# partprobe /dev/vda
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(6)进入配置iSCSI服务的界面:# targetcli,然后输入:
/> ls / -----------------------------------------------------------------------------(列出所有的卷信息)
/> /backstores/block create iscsi_vol /dev/vda4 -----------------------(将磁盘中创建的第四个分区设置为iscsi_vol)
/> /iscsi create iqn.2014-09.com.example.domain11:system1 ----(在iscsi目录下设置卷的磁盘名信息)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
/> cd /iscsi/iqn.2014-09.com.example.domain11:system1/tpg1 ---(进入到配置的目录中)
/> acls/ create iqn.2014-09.com.example.domain11:xx -------------(设置acls访问控制列表的名称)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
/> luns/ create /backstores/block/iscsi_vol ----------------------------- (创建逻辑单元号)
/> portals/ create 0.0.0.0 3260 ---------------------------------------------(设置iSCSI的服务端口为3260)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
/> exit ---------------------------------------------------------------------------- (退出设置)
(7)由于要求只能被system2访问,所以设置防火墙端口的富规则:# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.122.200/24" port protocol="tcp" port="3260" accept'
(8)并将防火墙的设置写入持久态:# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.122.200/24" port protocol="tcp" port="3260" accept' --permanent,此时iSCSI服务端便配置好了。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第三十八题】配置iSCSI的客户端,配置system2使其能连接在system1的上提供的iqn.2014-09.com.example.domain11:system1并符合以下要求:(a)iSCSI设备在系统启动的期间自动加载;(b)块设备iSCSI上包含一个大小为1700MiB的分区,并格式化为xfs;(c)此分区挂载在/mnt/data上,同时在系统启动的期间自动挂载。
操作步骤:
(1)由于需要配置iSCSI客户端,所以在system2机器上安装客户端的软件包:# yum inStall iscsi* -y
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)然后编辑:# vim /etc/iscsi/initiatorname.iscsi,并添加如下的一行信息:
InitiatorName=iqn.2014-09.com.example.domain11:xx
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(3)接着启动客户端的服务:# systemctl start iscsid
(4)并且加入开机启动项:# systemctl enable iscsid
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)在系统启动的期间自动发现iSCSI存储:# iscsiadm -m discovery -t st -p system1.rhce.cc -l
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(6)由于需要在iSCSI上包含一个1700M的分区:# fdisk /dev/sda,输入如下的信息:
n -------------(新建一个分区)
p -------------(选择创建一个主分区)
+1700M ----(分区创建大小为1700M)
w -------------(保存退出)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(7)最后需要在system2机器上将配置同步更新一下:# partprobe /dev/sda
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(8)将创建的分区格式化为xfs文件系统:# mkfs.xfs /dev/sda1
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(9)在system2机器上创建挂载的目录:# mkdir /mnt/data
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(10)编辑分区挂载的配置文件:# vim /etc/fstab,并添加如下一行信息:
/dev/sda1 /mnt/data xfs defaults,_netdev 0 0
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:
(1)在system2机器上重新挂载所有的分区:# mount -a
(2)查看分区挂载的情况:# df -hT
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第三十九题】配置一个数据库,在system1上创建一个MariaDB数据库,名为Contacts,并符合以下条件:(a)数据库应该包含来自数据库复制的内容,复制文件的URL为http://rhgls.rhce.cc/materials/users.mdb 。(b)数据库只能被localhost访问。(c)除了root用户,此数据库只能被用户Luigi查询。此用户密码为redhat。(d)root用户的密码为redhat,同时不允许空密码登录。
操作步骤:
(1)首先在system1机器上安装MariaDB数据库:# yum inStall mariadb-server mariadb -y
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)接着启动服务:# systemctl start mariadb
(3)将服务加入开机启动项中:# systemctl enable mariadb
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(4)然后进入数据库:# mysql,然后输入如下SQL语句:
\> show databases; -----------------(显示当前所有的数据库)
\> create database Contacts; ----(创建一个数据库,命名为Contacts)
\> quit ----------------------------------(由于接下来需要下载文件,所以退出当前的数据库)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(5)因为数据库包含来自数据库复制的内容,所以把文件下载下来:# wget http://rhgls.rhce.cc/materials/users.mdb
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(6)接着再次进入数据库:# mysql,然后输入如下的SQL语句:
\> use Contacts; ---------------------------------------------------------------------------(进入到第四步创建的Contacts数据库中)
\> source /root/users.mdb; --------------------------------------------------------------(将下载的文件生效到数据库中)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
\> show tables; -----------------------------------------------------------------------------(显示当前数据库中所有的数据表文件)
\> grant select on Contacts.* to Luigi@'localhost' identified by 'redhat'; ----(设置数据库只能被localhost访问,数据库只能被Luigi查询,且设置好密码)
\> set password=password('redhat'); -------------------------------------------------(设置root用户的登录密码为redhat)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
验证:此时在system1机器上操作:# mysql -uroot -predhat,才可以正常登录系统,说明配置生效。
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战


【第四十题】数据库查询,在系统system1上使用数据库Contacts,并使用相应的SQL查询以回答下列问题:(a)密码是tangerine的人的名字?(b)有多少人的姓名是John同时居住在Santa Clara?
操作步骤:
(1)首先在system1机器上登录数据库:# mysql -uroot -predhat
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
(2)进入mariadb数据库后输入如下:
\> use Contacts; ----(进入到Contacts数据库)
\> show tables; -----(显示数据库中所有的数据表)
\> desc loc; ----------(查看loc数据表的表结构)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
\> desc name; -------(查看name数据表的表结构)
\> desc pass; --------(查看pass数据表的表结构)
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
\> select * from name join pass where name.aid=pass.bid and pass.password='tangerine';
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战
\> select count(*) from name join loc where name.aid=loc.cid and name.firstname='John' and loc.loction='Santa Clara';
【我的Linux,我做主!】碉堡了!大神带你飞--Linux运维实战