下午RHCE7 备考

下午RHCE7 备考
•   下午RHCE考试环境说明
•   题量比较大,需要将题库练熟练!
•   每人一台物理机,内建两个虚拟机
•   下午考试不需要配置主机名和IP地址,可以直接看考题
•   RHCE-Server1IP地址是:172.24.8.11/24RHCE-Server2IP地址是:172.24.8.12/24RHCE第一题:设定SELinux
在 system1 和 system2 上要求 SELinux 的工作模式为 enforcing :
 要求系统重启后依然生效。

•   第一步:读题
•   两个虚拟机上都要配置SELinux
•   步骤与上午的考试一模一样
•   第二步:【在 system1 和 system2 上】修改SELinux主配置文件,使重启有效
•   $ sed -ri 's/^(SELINUX=).*/\1enforcing/' /etc/selinux/config
•   第三步:【在 system1 和 system2 上】修改当前环境的SELinux工作模式,使当前有效
•   $ setenforce 1
•   第四步:【在 system1 和 system2 上】查看SELinux状态,验证修改操作是否成功
Current mode
Mode from config file
•   $ sestatus
•   RHCE第二题:配置防火墙
请按下列要求在 system1 和 system2 上设定防火墙系统:
 允许 group8.example.com 域的客户对 system1 和 system2 进行 ssh 访问。
 禁止 my133t.org 域的客户对 system1 和 system2 进行 ssh 访问。
 备注: my133t.org 是在 172.13.8.0/24 网络

•   第一步:读题
•   两个虚拟机上都要配置firewalld规则
•   “允许”不等于“仅允许”
•   如果选择firewalld来实现配置,则必须屏蔽iptables的服务条目(禁止iptables开机启动)
•   防火墙规则设置:允许所有的域,然后拒绝指定的域
•   第二步:【在 system1 和 system2 上】禁止iptables开机启动,并且立即屏蔽当前的iptables服务条目
•   $ systemctl mask iptables
•   $ systemctl mask ip6tables
•   $ iptables -F$ iptables -X$ iptables -Z
•   第三步:【在 system1 和 system2 上】设置firewalld为开机启动,并立即启动firewalld,查看firewalld是否已经存在服务条目(如果已经存在firewalld服务条目,清除它!)
•   $ systemctl enable firewalld
•   $ systemctl start firewalld
•   $ firewall-cmd --list-all
•   第四步:【在 system1 和 system2 上】添加“允许所有域对本机进行ssh访问”的防火墙规则(service规则;相当于白名单)
•   $ firewall-cmd --permanent --add-service ssh
•   第五步:【在 system1 和 system2 上】添加“拒绝 172.13.8.0/24 网段所有主机对本机进行ssh访问”的防火墙规则(rich规则;相当于黑名单)
•   $ firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.13.8.0/24 service name=ssh reject'
•   第六步:【在 system1 和 system2 上】重新载入本机firewalld服务条目,使得新配置的防火墙规则立即生效
•   $ firewall-cmd --reload
•   第七步:【在 system1 和 system2 上】查看新配置的防火墙规则是否已经生效
•   $ firewall-cmd --list-all
•   RHCE第三题:自定义用户环境
在系统system1和system2上创建自定义命令为qstat ,要求:
 此自定义命令将执行以下命令:/bin/ps -Ao pid,tt,user,fname,rsz
 此命令对系统中的所有用户有效

•   第一步:读题
•   可以使用命令别名实现
•   要使此命令别名对所有用户有效,则必须把命令别名的定义写入全局bashrc配置文件中
•   命令别名的定义建议放在bashrc文本内容的最后一行,千万不可以放在if条件判断语句中!
•   两个虚拟机上都要配置命令别名
•   第二步:【在 system1 和 system2 上】在 /etc/bashrc 全局配置文件的末尾追加一行命令别名定义
•   $ cat >> /etc/bashrc << EOF
•   alias qstat='/bin/ps -Ao pid,tt,user,fname,rsz'EOF
•   第三步:【在 system1 和 system2 上】使全局配置文件对当前Bash进程立即生效
•   $ source /etc/bashrc
•   第四题:【在 system1 和 system2 上】查看新添加的命令别名配置是否生效
•   $ qstat
•   $ alias | grep qstat
•   RHCE第四题:配置端口转发
在系统 system1 设定端口转发,要求:
 在172.24.8.0/24网络中的系统,访问system1的本地端口 5423 将被转发到 80
 此设置必须永久有效

•   第一步:读题
•   本题的所有操作必须在 system1 上配置
•   “此设置必须永久有效”,必须写入配置文件
•   注意:“访问system1的本地端口 5423 将被转发到 80”,有可能是TCP通道、也有可能是UDP通道,必须考虑周全!
•   第二步:【在 system1 上】添加防火墙的rich规则,将TCP5423UDP5423访问全部转发到80$ firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.24.8.0/24 forward-port port=5423 protocol=tcp to-port=80'$ firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.24.8.0/24 forward-port port=5423 protocol=udp to-port=80'
•   第三步:【在 system1 上】重新加载防火墙服务条目
•   $ firewall-cmd --reload
•   第四步:【在 system1 上】查看配置操作是否生效
•   $ firewall-cmd --list-all
•   效果图

•   RHCE第五题:配置链路聚合
在system1和system2之间按以下要求设定一个链路: 此链路使用接口eth1和eth2 此链路在一个接口失效时仍然能工作 此链路在system1使用下面的地址172.16.3.40/255.255.255.0 此链路在system2使用下面的地址172.16.3.45/255.255.255.0 此链路在系统重启之后依然保持正常状态
•   第一步:读题
•   两块网卡在物理层必须处于同一网络【实验中两个网卡在物理层均为“仅主机模式”】
•   第二步:【在 system1 和 system2 上】创建网卡绑定
•   $ nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'
•   第三步:【在 system1 上】指定IPv4地址
•   $ nmcli connection modify team0 ipv4.addresses 172.16.3.40/24 ipv4.method manual connection.autoconnect yes
•   第四步:【在 system2 上】指定IPv4地址
•   $ nmcli connection modify team0 ipv4.addresses 172.16.3.45/24 ipv4.method manual connection.autoconnect yes
•   第五步:【在 system1 和 system2 上】将两块网卡加入到网卡绑定
•   $ nmcli connection add type team-slave con-name team0-port1 ifname eth1 master team0
•   $ nmcli connection add type team-slave con-name team0-port2 ifname eth2 master team0
•   第六步:【在 system1 和 system2 上】先启动两个网络接口,然后再启动网卡绑定
•   $ { nmcli connection up team0-port1; nmcli connection up team0-port2; nmcli connection up team0; }
•   第七步:【在 system1 和 system2 上】验证网卡绑定的状态是否启用
•   $ { teamdctl team0 state; ifconfig team0; }
•   第八步:【在 system1 上】测试本机的网卡绑定能否连通另外一台虚拟机的网卡绑定
•   $ ping 172.16.3.45
•   第九步:【在 system2 上】测试本机的网卡绑定能否连通另外一台虚拟机的网卡绑定
•   $ ping 172.16.3.40RHCE第六题:配置IPv6地址
在考试系统上设定接口eth0使用下列IPV6地址:
 system1上的地址应该是2003:ac18::305/64
 system2上的地址应该是2003:ac18::30a/64
 两个系统必须能与网络2003:ac18/64内的系统通信
 地址必须在重启后依然生效
 两个系统必须保持当前的IPV4地址并能通信

•   第一步:读题
•   考试的时候要看清楚是对哪一个网卡做IPv6设置!
•   注意两台虚拟机的IPv6地址要对应,不要弄错!
•   第二步:【在 system1 上】使用命令行方式配置eth0的IPv6地址
•   $ nmcli connection modify eth0 ipv6.addresses 2003:ac18::305/64 ipv6.method manual connection.autoconnect yes
•   第三步:【在 system2 上】使用命令行方式配置eth0的IPv6地址
•   $ nmcli connection modify eth0 ipv6.addresses 2003:ac18::30a/64 ipv6.method manual connection.autoconnect yes
•   第四步:【在 system1 和 system2 上】重启eth0网卡
•   $ { nmcli connection down eth0; nmcli connection up eth0; }
•   第五步:【在 system1 上】查看IPv6地址设置是否生效,然后ping 另外一台主机的IPv6地址,测试是否可以连通
•   $ ifconfig eth0
•   $ ping6 2003:ac18::30a
•   第六步:【在 system2 上】查看IPv6地址设置是否生效,然后ping 另外一台主机的IPv6地址,测试是否可以连通
•   $ ifconfig eth0
•   $ ping6 2003:ac18::305RHCE第七题:配置本地邮件服务
在系统 system1 和system2 上配置邮件服务,要求:
 这些系统不接受外部发送来的邮件
 在这些系统上本地发送的任何邮件都会自动路由到 mail.group8.example.com
 从这些系统上发送的邮件显示来自于 server.group8.example.com
您可以通过发送邮件到本地用户 dave 来测试您的配置,系统 server.group8.example.com 已经配置把此用户的邮件转到URL http://server.group8.example.com/pub/received_mail/8
•   第一步:读题
•   系统默认已经安装了Postfix邮件服务器(如果没有装,手动装上即可)
•   立即启动邮件服务并使邮件服务在下一次系统重启后仍然生效
•   设置邮件服务监听在本地的25端口上,(只接收来自本地发来的邮件,不接收外部发来的邮件)
•   重写本地邮件显示的来源域,使得从本地两个虚拟机系统上发送的邮件都显示为“来自于 server.group8.example.com”
•   设置邮件中继服务器,使得从本地两个虚拟机系统上发送的任何邮件都会自动路由到 mail.group8.example.com
•   在两个虚拟机上都要做配置
•   第二步:【在 system1 和 system2 上】安装Postfix邮件服务器,立即启动邮件服务并使邮件服务在下一次系统重启后仍然生效
•   $ rpm -qa postfix
•   $ systemctl enable postfix
•   $ systemctl start postfix
•   第三步:【在 system1 和 system2 上】设置邮件服务监听在本地的25端口上,(只接收来自本地发来的邮件,不接收外部发来的邮件)
•   $ postconf -e "inet_interfaces=loopback-only"
# 注意:此处是 - 横杠连接符,不是 _ 下划线!
•   $ postconf -e "mydestination="
•   第四步:【在 system1 和 system2 上】重写本地邮件显示的来源域,使得从本地两个虚拟机系统上发送的邮件都显示为“来自于 server.group8.example.com”
•   $ postconf -e "myorigin=server.group8.example.com"$ postconf -e "mydomain=server.group8.example.com"
•   第五步:【在 system1 和 system2 上】设置邮件中继服务器,使得从本地两个虚拟机系统上发送的任何邮件都会自动路由到 mail.group8.example.com
•   $ postconf -e "relayhost=mail.group8.example.com"
•   第六步:【在 system1 和 system2 上】立即重启邮件服务,使得上面的配置立即生效
•   $ systemctl restart postfix
•   第七步:【在 system1 和 system2 上】发送测试邮件到本地 dave 用户
•   $ mail -s "Test Mail" dave << EOFThis is a test mail from `hostname`
•   EOF
•   第八步:【在 system1 和 system2 上】通过查看测试邮件来判断本地的邮件服务配置是否成功
•   curl http://server.group8.example.com/pub/received_mail/8
•   备注:多试几次该命令,知道可以看到邮件为止
•   RHCE第八题:通过SMB共享目录
在 system1 上配置SMB服务 ,要求:
 您的 SMB 服务器必须是 STAFF 工作组的一个成员
 共享 /common 目录,共享名必须为 common
 只有 group8.example.com 域内的客户端可以访问common共享
 common 必须是可以浏览的
 用户 andy 必须能够读取共享中的内容,如果需要的话,验证密码是redhat

•   第一步:读题
•   隐藏条件:需要自行设置yum仓库配置文件!
•   立即启动SMB服务并使SMB服务在下一次系统重启后仍然生效
•   “group8.example.com域”的网段地址是 172.24.8.0/24
在防火墙和服务自身的访问控制的条目配置时,一定要写IP地址!
•   只允许 172.24.8.0/24 网段内的主机访问 common 共享
•   本题的所有设置操作必须在 system1 上配置!
(除了配置yum仓库的操作)
•   第二步:【在 system1 和 system2 上】创建yum仓库配置文件
•   $ cat > /etc/yum.repos.d/base.repo << EOF
•   [base]
•   name=redhat
•   baseurl=http://server.group8.example.com/yum/
•   gpgcheck=0EOF
•   第三步:【在 system1 和 system2 上】清理yum缓存并重新获取新的metadata
•   $ { yum clean all; yum repolist; }
•   第四步:【在 system1 上】安装Samba服务端和Samba客户端,立即启动SMB服务并使SMB服务在下一次系统重启后仍然生效
•   $ yum install -y samba samba-client
•   $ systemctl enable smb nmb
•   $ systemctl start smb nmb
•   第五步:【在 system1 上】创建一个空目录 /common ,并把目录的传统权限设为 777 ,方便作为 Samba 服务的共享目录使用
具体的用户读写权限控制由Samba服务配置文件来设定
•   $ mkdir /common
•   $ chmod 777 /common/
•   第六步:【在 system1 上】编辑SMB服务的主配置文件,将Samba服务器的所属组更改为 STAFF 工作组
•   $ grep workgroup /etc/samba/smb.conf
•   $ sed -ri 's/(workgroup = )MYGROUP/\1STAFF/' /etc/samba/smb.conf
•   $ grep workgroup /etc/samba/smb.conf
•   第七步:【在 system1 上】编辑SMB服务的主配置文件,添加一段共享名为 common 的配置项
注意:只允许 172.24.8.0/24 网段内的主机访问 common 共享
172.24.8.0/24 网段 在此处写作 172.24.8.
•   $ cat >> /etc/samba/smb.conf << EOF
•   [common]
# 共享名
•   comment = hello rhce exam
# 描述
•   path = /common/
# 共享目录路径
•   writable = no
# 共享目录设置为不可写(只读)
•   hosts allow = 172.24.8.
# 允许 group8.example.com 域内的机器访问,强烈建议写成IP地址
# 网段:172.24.8.0/24
# 注意:IP网段比较奇特!
•   browseable = yes
# 共享目录设置为可浏览
•   EOF
•   第八步:【在 system1 上】重启SMB服务
•   $ systemctl restart smb nmb
•   第九步:【在 system1 上】在firewalld防火墙服务添加“允许Samba服务通过防火墙”的规则,并重读firewalld服务条目
•   $ firewall-cmd --permanent --add-service samba
•   $ firewall-cmd --reload
•   $ firewall-cmd --list-all
•   第十步:【在 system1 上】设置共享目录的context值
•   $ semanage fcontext -a -t "samba_share_t" '/common(/.*)?'
# 更改共享目录的SELinux默认值,方便使用restore还原context值
# 建议使用这种比较保险的方法!
•   $ restorecon -Rv /common/
# 还原context值
•   $ ls -Zd /common/
# 验证context值是否已经设置
•   第十一步:【在 system1 上】创建用于访问共享的用户,并且设置共享访问密码
•   $ smbpasswd -a andy
# 注意:此处的密码必须手动键入,无法通过重定向导入!
•   redhat
•   redhat
•   第十二步:【在 system2 上】安装共享服务客户端工具,以方便测试用
•   $ yum install -y samba-client
•   第十三步:【在 system2 上】以匿名方式列出共享目录的描述信息
•   $ smbclient -L //172.24.8.11
# 遇到要输入root访问密码时直接回车,即可以匿名用户访问共享
•   [Enter]
•   第十四步:【在 system2 上】以 andy 身份访问共享目录
•   $ smbclient //172.24.8.11/common/ -U andy
# 遇到要输入andy访问密码,请手动键入redhat
•   redhat
•   ls
•   quit
# 按 Ctrl+d 等效
•   第十五步:【在 system1 上】验证samba共享服务是否已经配置成功
•   $ systemctl is-active smb nmb
•   $ systemctl is-enabled smb nmb
•   RHCE第九题:配置多用户SMB挂载【有坑!】
在 system1 通过 SMB 共享目录 /devops ,并满足下列要求:
 共享名为 devops
 共享目录 devops 只能 group8.example.com 域中的客户端使用
 共享目录 devops 必须可以被浏览
 用户 silene 必须能以读的方式访问此共享,访问密码是redhat
 用户 akira 必须能以读写的方式访问此共享,访问密码是redhat
 此共享永久挂载在 system2.group8.example.com 上的 /mnt/dev 目录,并使用用户 silene 作为认证任何用户,可以通过用户 akira 来临时获取写的权限

•   第一步:读题
•   由系统开机自动挂载共享目录
•   不同用户访问共享目录会有不同的权限
•   第二步:【在 system1 上】创建共享目录,并且为 akira 用户设置可读写的ACL权限
•   $ mkdir /devops
•   $ setfacl -m u:akira:rwx /devops/
•   第三步:【在 system1 上】设置共享目录的SELinux context值
•   $ semanage fcontext -a -t "samba_share_t" '/devops(/.*)?'
# 更改共享目录的SELinux默认值,方便使用restore还原context值
# 建议使用这种比较保险的方法!
•   $ restorecon -Rv /devops/
# 还原context值
•   $ ls -Zd /devops/
# 验证context值是否已经设置
•   第四步:【在 system1 上】编辑SMB服务的主配置文件,添加一段共享名为 devops 的配置项
•   $ cat >> /etc/samba/smb.conf << EOF
•   [devops]
•   comment = Magedu devops
# 描述
•   path = /devops/
# 共享目录
•   public = yes
# 设置为公开
•   hosts allow = 172.24.8.
# 仅允许 172.24.8.0/24 网段内的主机访问
•   writable = no
# 拒绝所有用户的写入操作
•   write list = akira
# 仅允许 akira 用户的写入操作
•   browseable = yes
# 设置为可浏览
•   EOF
•   第五步:【在 system1 上】添加两个共享访问用户,并设置密码
•   $ smbpasswd -a silene
•   redhat
# 输入两遍密码
•   redhat
•   $ smbpasswd -a akira
•   redhat
# 输入两遍密码
•   redhat
•   第六步:【在 system1 上】重启smb共享服务
•   $ systemctl restart smb nmb
•   第七步:【在 system2 上】以 akira 身份访问共享目录,测试目录是否可读写
•   $ smbclient //172.24.8.11/devops/ -U akira
# 遇到要输入andy访问密码,请手动键入redhat
•   redhat
•   put anaconda-ks.cfg
•   ls
•   quit
•   第八步:【在 system2 上】安装微软CIFS协议程序包,使 system2 支持CIFS挂载
•   $ yum install -y cifs-utils
•   第九步:【在 system2 上】创建用于挂载的目录
•   $ mkdir /mnt/dev/
•   第十步:【在 system2 上】在“文件系统开机自动挂载”配置文件追加一个新项
使用只读用户做自动挂载
ntlmssp 全称: NT LAN Manager (NTLM) Security Support Provider$ cat >> /etc/fstab << EOF
•   //172.24.8.11/devops/ /mnt/dev/ cifs defaults,multiuser,username=silene,password=redhat,sec=ntlmssp 0 0EOF
•   第十一步:【在 system2 上】使“文件系统开机自动挂载”配置文件中所有的挂载关系立即生效
•   $ mount -a
•   第十二步:【在 system2 上】测试 silene 用户对挂载的共享目录是否仅有只读权限
•   $ su - silene
•   $ cd /mnt/dev/
•   $ cifscreds add 172.24.8.11
# 必须先通过服务器的授权验证
# 注意:IP地址不要写错!
•   redhat
# 手动输入验证密码
•   $ ls -l
•   $ touch silenefile
# 没有写权限则配置成功
•   $ exit
•   第十三步:【在 system2 上】测试 akira 用户对挂载的共享目录是否具有可读可写权限
•   $ su - akira
•   $ cd /mnt/dev/
•   $ cifscreds add 172.24.8.11
# 必须先通过服务器的授权验证
# 注意:IP地址不要写错!
•   redhat
# 手动输入验证密码
•   $ ls -l
•   $ echo hello > akirafile
# 可以写入文件则配置成功
•   $ cat akirafile
•   $ exit
•   RHCE第十题:配置NFS服务【重点题目】
在 system1 配置NFS服务,要求如下:
 以只读的方式共享目录 /public ,同时只能被 group8.example.com 域中的系统访问
 以读写的方式共享目录 /protected ,同时只能被 group8.example.com 域中的系统访问
 访问 /protected 需要通过Kerberos安全加密,您可以使用下面URL提供的密钥
     http://server.group8.example.com/pub/keytabs/system1.keytab
 目录 /protected 应该包含名为 project 拥有人为 andres 的子目录
 用户 andres 能以读写方式访问 /protected/project

•   第一步:读题
•   group8.example.com 域的IP地址:172.24.8.0/24Kerberos安全加密:krb5p
•   所有操作都在system1上完整
•   默认都已经安装 nfs-utils 的啦,上来不管三七二十一,直接改配置文件!!
•   第二步:【在 system1 上】编辑NFS主配置文件
•   $ grep RPCNFSDARGS /etc/sysconfig/nfs
•   $ sed -ri 's/(RPCNFSDARGS=).*/\1"-V 4.2"/' /etc/sysconfig/nfs
# 注意:版本的 V 前面带有一个横杠!!!
# 是 -V 4.2
•   第三步:【在 system1 上】添加防火墙规则,允许NFS服务的访问
•   $ firewall-cmd --permanent --add-service nfs
•   $ firewall-cmd --permanent --add-service rpc-bind
•   $ firewall-cmd --permanent --add-service mountd
# 注意:服务名mount的守护进程,只带一个d,不带e!
•   $ firewall-cmd --reload
•   $ firewall-cmd --list-all
•   第四步:【在 system1 上】创建共享目录,并修改目录的SELinux context值
•   $ mkdir -pv /public /protected/project
•   $ chown andres /protected/project/
# 必须更改 /protecte/project 的属主为 andres ,否则 andres 用户无法在此目录下创建文件
•   $ semanage fcontext -a -t "public_content_t" '/public(/.*)?'$ semanage fcontext -a -t "public_content_t" '/protected(/.*)?'$ semanage fcontext -a -t "public_content_t" '/protected/project(/.*)?'$ restorecon -Rv /public/ /protected/ /protected/project/
•   $ ls -Zd /public/ /protected/ /protected/project/
•   第五步:【在 system1 上】下载证书
•   $ wget -O /etc/krb5.keytab http://server.group8.example.com/pub/keytabs/system1.keytab
-O 指明下载到哪里
•   $ ls -l /etc/krb5.keytab
•   第六步:【在 system1 上】编辑NFS服务的配置文件
•   $ cat >> /etc/exports << EOF
•   /public/ *.group8.example.com(ro,sec=sys,sync)
•   /protected/ *.group8.example.com(rw,sec=krb5p,sync)
•   EOF
•   第七步:【在 system1 上】启动NFS服务,并设置开机自启动
•   $ systemctl enable nfs-server nfs-secure-server
•   
•   第八步:【在 system1 上】刷新共享目录信息
•   $ exportfs -ra
•   $ exportfs
•   第九步:【在 system1 上】手动同步时间两次!
•   $ ntpdate server.group8.example.com 
•   $ ntpdate server.group8.example.com 
•   RHCE第十一题:挂载一个NFS服务【重点题目】
在 system2 上挂载一个来自 system1.group8.example.com 的NFS共享,并符合下列要求:
 /public 挂载在下面的目录上 /mnt/nfsmount
 /protected挂载在下面的目录上 /mnt/nfssecure 并使用安全的方式,密钥下载URL如下:
     http://server.group8.example.com/pub/keytabs/system2.keytab
 用户 andres 能够在 /mnt/nfssecure/project 上创建文件
 这些文件系统在系统启动时自动挂载

•   第一步:读题
•   第二步:【在 system2 上】手动同步时间两次!
•   $ ntpdate server.group8.example.com 
•   $ ntpdate server.group8.example.com 
•   第三步:【在 system2 上】
•   $ mkdir -pv /mnt/nfs{mount,secure}
•   第四步:【在 system2 上】下载证书
•   $ wget -O /etc/krb5.keytab http://server.group8.example.com/pub/keytabs/system2.keytab
•   $ ls -l /etc/krb5.keytab
•   第五步:【在 system2 上】
•   $ cat >> /etc/fstab << EOF172.24.8.11:/public/ /mnt/nfsmount/ nfs defaults 0 0172.24.8.11:/protected/ /mnt/nfssecure/ nfs defaults,sec=krb5p,v4.2 0 0EOF
•   第六步:【在 system2 上】
•   $ systemctl enable nfs-secure
•   $ systemctl start nfs-secure
•   第七步:【在 system2 上】
•   $ mount -a
•   $ df -h
•   第八步:【在 system2 上】验证写入操作,看andres用户能否写入文件
•   $ su - andres
•   $ kinit
# 获取票
•   redhat
# 输入验证密码
•   $ klist
# 查看获取到的票
•   $ cd /mnt/nfssecure/project/
•   $ touch hello
•   $ ls -l
•   $ exit
•   RHCE第十二题:实现一个Web服务器
在 system1 上配置一个站点 http://system1.group8.example.com/,然后执行下述步骤:
 从 http://server.group8.example.com/pub/system1.html 下载文件,并且将文件重名为 index.html 不要修改此文件的内容
 将文件 index.html 拷贝到您的 web 服务器的 DocumentRoot 目录下
 来自于 group8.example.com 域的客户端可以访问此web服务
 来自于my133t.org域的客户端拒绝访问此web服务

•   第一步:读题
•   第二步:【在 system1 上】
•   $ yum install -y httpd
•   $ systemctl enable httpd
•   $ systemctl start httpd
•   第三步:【在 system1 上】
•   $ cat >> /etc/httpd/conf.d/httpd-vhosts.conf << EOF
•   <VirtualHost *:80>
•   DocumentRoot "/var/www/html/"ServerName system1.group8.example.com
•   <Directory "/var/www/html/">
•   <RequireAll>
•   Require all granted
•   Require not host .my133.org
# 注意:此行的 not host 与 .my133.org 之间至少有一个空格
•   RequireAll>
•   Directory>
•   VirtualHost>
•   EOF
•   第四步:【在 system1 上】
•   $ wget -O /var/www/html/index.html http://server.group8.example.com/pub/system1.html
•   $ ls -Z /var/www/html/index.html
# 查看SELinux的context值是否为 httpd_sys_content_t
•   第五步:【在 system1 上】重启服务
•   $ systemctl restart httpd
•   $ ss -ntlp | grep :80
•   第六步:【在 system1 上】添加防火墙规则,允许http服务访问
•   $ firewall-cmd --permanent --add-service http
•   $ firewall-cmd --reload
•   $ firewall-cmd --list-all
•   第七步:【在 system2 上】测试网页访问
•   $ curl system1.group8.example.com 
•   RHCE第十三题:配置安全Web服务
为站点 http://system1.group8.example.com 配置TLS加密:
 一个已签名证书从 http://server.group8.example.com/pub/tls/certs/system1.crt 获取
 此证书的密钥从 http://server.group8.example.com/pub/tls/private/system1.key 获取
 此证书的签名授权信息从 http://server.group8.example.com/pub/tls/certs/ssl-ca.crt 获取

•   第一步:读题
•   第二步:【在 system1 上】
•   $ yum install -y mod_ssl
•   第三步:【在 system1 上】
•   $ cat >> /etc/httpd/conf.d/httpd-vhosts.conf << EOF
•   <VirtualHost *:443>
•   DocumentRoot "/var/www/html"ServerName system1.group8.example.com
•   <Directory "/var/www/html/">
•   <RequireAll>
•   Require all granted
•   Require not host .my133.org
•   RequireAll>
•   Directory>
•   SSLEngine on
•   SSLProtocol all -SSLv2 -SSLv3SSLCertificateFile /etc/pki/tls/certs/system1.crt
•   SSLCertificateKeyFile /etc/pki/tls/private/system1.key
•   SSLCACertificateFile /etc/pki/tls/certs/ssl-ca.crt
•   VirtualHost>
•   EOF
•   第四步:【在 system1 上】下载证书
•   $ wget -O /etc/pki/tls/certs/system1.crt http://server.group8.example.com/pub/tls/certs/system1.crt 
•   $ wget -O /etc/pki/tls/private/system1.key http://server.group8.example.com/pub/tls/private/system1.key 
•   $ wget -O /etc/pki/tls/certs/ssl-ca.crt http://server.group8.example.com/pub/tls/certs/ssl-ca.crt 
•   $ ls -l /etc/pki/tls/certs/ssl-ca.crt /etc/pki/tls/private/system1.key /etc/pki/tls/certs/ssl-ca.crt
•   第五题:【在 system1 上】添加防火墙规则,允许https访问
•   $ firewall-cmd --permanent --add-service https
•   $ firewall-cmd --reload
•   $ firewall-cmd --list-all
•   第六步:【在 system1 上】重启Apache服务
•   $ systemctl restart httpd
•   第七步:【在 system2 上】测试https网页访问
•   $ curl -k https://system1.group8.example.com 
•   RHCE第十四题:配置虚拟主机
在 system1 上扩展您的web服务器,为站点 http://www8.group8.example.com 创建一个虚拟主机,然后执行下述步骤:
 设置 DocumentRoot 为 /var/www/virtual
 从 http://server.group8.example.com/pub/www8.html 下载文件重名为 index.html ,不要对文件 index.html 的内容做任何修改
 将文件 index.html 放到虚拟主机的 DocumentRoot 目录下
 确保 andy 用户能够在 /var/www/virtual 目录下创建文件
注意:原站点 http://system1.group8.example.com 必须仍然能够访问,名称服务器 server.group8.example.com 已经提供对主机名 www8.group8.example.com 的域名解析
•   第一步:读题
•   第二步:【在 system1 上】
•   $ mkdir /var/www/virtual
•   $ cd /var/www/virtual/
•   $ wget -O /var/www/virtual/index.html http://server.group8.example.com/pub/www8.html 
•   $ ls -Z
•   第三步:【在 system1 上】
•   $ setfacl -m u:andy:rwx /var/www/virtual/
•   第四步:【在 system1 上】
•   $ cd /etc/httpd/conf.d/
•   $ cat >> httpd-vhosts.conf << EOF
•   <VirtualHost *:80>
•   DocumentRoot "/var/www/virtual"ServerName www8.group8.example.com
•   <Directory "/var/www/virtual/">
•   <RequireAll>
•   Require all granted
•   RequireAll>
•   Directory>
•   VirtualHost>
•   EOF
•   第五步:【在 system1 上】
•   $ systemctl restart httpd
•   第六步:【在 system2 上】测试网站是否可被访问,必须保证前面两个网站依然能被正常访问!
•   $ curl system1.group8.example.com 
•   $ curl -k https://system1.group8.example.com 
•   $ curl www8.group8.example.com
•   RHCE第十五题:配置Web内容的访问
在您的 system1 上的 web 服务器的 DocumentRoot 目录下,创建一个名为 private 的目录,要求如下:
 从 http://server.group8.example.com/pub/private.html 下载一个文件副本到这个目录,并且重命名为 index.html
 不要对这个文件的内容做任何修改
 从 system1 上,任何人都可以浏览 private 的内容,但是从其它系统不能访问这个目录的内容。

•   第一步:读题
•   第二步:【在 system1 上】
•   $ mkdir /var/www/{html,virtual}/private
•   $ wget -O /var/www/html/private/index.html http://server.group8.example.com/pub/private.html 
•   $ wget -O /var/www/virtual/private/index.html http://server.group8.example.com/pub/private.html 
•   $ ls -Z /var/www/{html,virtual}/private/index.html
•   第三步:【在 system1 上】
•   $ cd /etc/httpd/conf.d/
•   $ cat > httpd-vhosts.conf << EOF
•   <VirtualHost *:80>
•   DocumentRoot "/var/www/html"ServerName system1.group8.example.com
•   <Directory "/var/www/html">
•   <RequireAll>
•   Require all granted
•   Require not host .my133t.org
•   RequireAll>
•   Directory>
•   <Directory "/var/www/html/private">
•   <RequireAll>
•   Require local
•   RequireAll>
•   Directory>
•   VirtualHost>
•   <VirtualHost *:443>
•   DocumentRoot "/var/www/html"ServerName system1.group8.example.com
•   <Directory "/var/www/html">
•   <RequireAll>
•   Require all granted
•   Require not host .my133t.org
•   RequireAll>
•   Directory>
•   SSLEngine on
•   SSLProtocol all -SSLv2 -SSLv3SSLCertificateFile /etc/pki/tls/certs/system1.crt
•   SSLCertificateKeyFile /etc/pki/tls/private/system1.key
•   SSLCACertificateFile /etc/pki/tls/certs/ssl-ca.crt
•   VirtualHost>
•   <VirtualHost *:80>
•   DocumentRoot "/var/www/virtual"ServerName www8.group8.example.com
•   <Directory "/var/www/virtual">
•   <RequireAll>
•   Require all granted
•   RequireAll>
•   Directory>
•   <Directory "/var/www/virtual/private">
•   <RequireAll>
•   Require local
•   RequireAll>
•   Directory>
•   VirtualHost>
•   EOF
•   第四步:【在 system1 上】重启Apache服务
•   $ systemctl restart httpd
•   第五步:【在 system1 上】在本地访问测试
•   $ curl http://system1.group8.example.com/private/
•   $ curl http://www8.group8.example.com/private/
•   第六步:【在 system2 上】在非本地访问测试
•   $ curl http://system1.group8.example.com/private/
•   $ curl http://www8.group8.example.com/private/
•   RHCE第十六题:实现动态Web内容
在 system1 上配置提供动态web内容,要求:
 动态内容由名为 wsgi.group8.example.com 的虚拟主机提供
 虚拟主机侦听在端口 8909http://server.group8.example.com/pub/webinfo.wsgi 下载一个脚本,然后放在适当的位置,无论如何不要求修改此文件的内容
 客户端访问 http://wsgi.group8.example.com:8909/ 时,应该接收到动态生成的web页面
 此 http://wsgi.group8.example.com:8909/ 必须能被 group8.example.com 域内的所有系统访问

•   第一步:读题
•   第二步:【在 system1 上】
•   $ cd /etc/httpd/conf.d/
•   $ cat >> httpd-vhosts.conf << EOFListen 8909
•   <VirtualHost *:8909>
•   ServerName wsgi.group8.example.com
•   WSGIScriptAlias / /var/www/html/webinfo.wsgi
•   VirtualHost>
•   EOF
•   第三步:【在 system1 上】下载WSGI脚本文件到站点根目录下
•   $ wget -O /var/www/html/webinfo.wsgi http://server.group8.example.com/pub/webinfo.wsgi
•   第四步:【在 system1 上】安装WSGI模块
•   $ yum install -y mod_wsgi
•   第五步:【在 system1 上】添加防火墙规则,允许TCP 8909端口的访问
•   $ firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 port port=8909 protocol=tcp accept'
•   第六步:【在 system1 上】在SELinux上允许TCP 8909端口的访问
•   $ semanage port -a -t http_port_t -p tcp 8909
•   第七步:【在 system1 上】重启Apache服务
•   $ systemctl restart httpd
•   第八步:【在 system2 上】测试WSGI脚本的访问
•   $ curl http://wsgi.group8.example.com:8909RHCE第十七题:创建一个脚本
在system1上创建一个名为 /root/foo.sh 的脚本,让其提供下列特性:
 当运行 /root/foo.sh redhat ,输出为 fedora
 当运行 /root/foo.sh fedora ,输出为 redhat
 当没有任何参数或者参数不是 redhat 或者 fedora 时,其错误输出产生以下的信息: 
     /root/foo.sh redhat | fedora

•   第一步:读题
•   第二步:【在 system1 上】
•   $ cd
•   $ vim /root/foo.sh
•   #!/bin/bash
•   case $1 in
•   redhat)echo "fedora";;
•   fedora)echo "redhat";;
•   *)echo "/root/foo.sh redhat | fedora" 1>&2;;
•   esac
•   第三步:【在 system1 上】
•   $ chmod 755 /root/foo.sh
•   第四步:【在 system1 上】测试脚本是否符合题目要求
•   $ /root/foo.sh > /dev/null
# 使用标准输出重定向无法将显示结果丢入垃圾桶
•   $ /root/foo.sh 2> /dev/null
# 而使用错误输出重定向才能将显示结果丢入垃圾桶,则脚本书写正确
•   $ /root/foo.sh redhat
# 参数是redat,显示fedora,则脚本书写正确
•   $ /root/foo.sh fedora
# 参数是fedora,显示redhat,则脚本书写正确
•   RHCE第十八题:创建一个添加用户的脚本
在 system1 上创建一个脚本,名为 /root/batchusers ,此脚本能实现为系统 system1 创建本地用户,并且这些用户的用户名来自一个包含用户名列表的文件,同时满足下列要求:
 此脚本要求提供一个参数,此参数就是包含用户名列表的的文件
 如果没有提供参数,此脚本应该给出下面的提示信息 Usage: /root/batchusers userfile 然后退出并返回相应的值
 如果提供一个不存在的文件名,此脚本应该给出下面的提示信息 Input file not found 然后退出并返回相应的值
 创建的用户登录shell为 /bin/false
 此脚本不需要为用户设置密码
 您可以从下面的URL获取用户名列表作为测试用 http://server.group8.example.com/pub/userlist

•   第一步:读题
•   第二步:【在 system1 上】
•   $ cd
•   $ wget http://server.group8.example.com/pub/userlist
•   $ cat userlist
•   第三步:【在 system1 上】
•   $ vim /root/batchusers
•   #!/bin/bash
•   if [ $# -eq 1 ]; then
•   if [ -f $1 ]; then
•   while read username; do
•   useradd -s /bin/false ${username} &> /dev/null
•   done < $1
•   else
•   echo "Input file not found" 1>&2
•   exit 1
•   fi
•   else
•   echo "Usage: /root/batchusers userfile" 1>&2
•   exit 1
•   fi
•   第四步:【在 system1 上】
•   $ chmod 755 /root/batchusers
•   第五步:【在 system1 上】
•   $ /root/batchusers 
# 没有带参数,执行会显示:Usage: /root/batchusers userfile
•   $ /root/batchusers notExsitFile
# 参数带了一个不存在的文件,执行会显示:Input file not found
•   $ /root/batchusers /root/userlist
•   $ getent passwd | tail
# 检查新用户是否成功被创建
•   RHCE第十九题:配置iSCSI服务端
配置 system1 提供一个 ISCSI 服务 磁盘名为 iqn.2014-08.com.example.group8:system1 ,并符合下列要求:
 服务端口为 3260
 使用 iscsi_store 作其后端逻辑卷名称,其大小为 3G
 此服务只能被 system2.group8.example.com 访问

•   第一步:读题
•   第二步:【在 system1 上】
•   $ yum install -y targetcli
•   $ systemctl enable target
•   $ systemctl start target
•   第三步:【在 system1 上】
•   $ firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.24.8.12/32 port port=3260 protocol=tcp accept'$ firewall-cmd --reload
•   $ firewall-cmd --list-all
•   第四步:【在 system1 上】
•   $ fdisk /dev/sda
•   n
# 新建一个分区
•   p
# 使用主分区
•   [Enter]
# 默认是第3(个主分区)
•   [Enter]
# 使用默认的起始扇区数
•   +3G
# 指定分区大小为3G
•   t
# 更改一个分区的标签
•   [Enter]
# 默认是最后一个(刚创建的第3个)分区
•   8e
# 更改为 Linux LVM
•   w
# 存盘退出
•   $ partprobe
# 立即强制同步分区信息
•   第五步:【在 system1 上】
•   $ pvcreate /dev/sda3
•   $ vgcreate iscsi_vg /dev/sda3
•   $ lvcreate -n iscsi_store -l 100%FREE iscsi_vg
•   第六步:【在 system1 上】
•   $ targetcli
•   backstores/block create name=iscsi_store dev=/dev/iscsi_vg/iscsi_store
•   cd iscsi/
•   create iqn.2014-08.com.example.group8:system1
•   cd iqn.2014-08.com.example.group8:system1/tpg1/
•   luns/ create /backstores/block/iscsi_store
•   acls/ create iqn.2014-08.com.example.group8:system2
•   portals/ create 172.24.8.11 3260
# 此处的IP与端口号之间,不能添加冒号!!!
•   set attribute authentication=0
•   set attribute generate_node_acls=0
•   cd /
•   saveconfig
•   exit
•   RHCE第二十题:配置iSCSI客户端
配置 system2 使其能连接在 system1 上提供的 iqn.2014-08.com.example.group8:system1,并符合以下要求:
 iSCISI 设备在系统启动的期间自动加载
 块设备 iSCISI 上包含一个大小为 2100 MiB 的分区,并格式化为 ext4
 此分区挂载在 /mnt/data 上,同时在系统启动的期间自动挂载

•   第一步:读题
•   第二步:【在 system2 上】
•   $ yum install -y iscsi-initiator-utils
•   第三步:【在 system2 上】
•   $ cat > /etc/iscsi/initiatorname.iscsi << EOFInitiatorName=iqn.2014-08.com.example.group8:system2
•   EOF
•   第四步:【在 system2 上】
•   $ systemctl enable iscsi iscsid
•   $ systemctl start iscsi iscsid
•   第五步:【在 system2 上】发现
•   $ iscsiadm -m discovery -t st -p 172.24.8.11
•   第六步:【在 system2 上】
•   $ iscsiadm -m node -l
•   $ lsblk
# 查看分区情况,会发现多了一个3GB的sdb磁盘
•   第七步:【在 system2 上】在iSCSI块设备上创建一个2100MB大小的分区
•   $ fdisk /dev/sdb
•   n
•   [Enter]
•   [Enter]
•   [Enter]
•   +2100M
•   w
•   $ partprobe
•   第八步:【在 system2 上】将新创建的分区格式化为ext4格式
•   $ mkfs.ext4 /dev/sdb1
•   第九步:【在 system2 上】设置开机自动挂载
•   $ cat >> /etc/fstab << EOF
•   `blkid /dev/sdb1 | awk '{print $2}'` /mnt/data/ ext4 defaults,_netdev 0 0EOF$ mkdir /mnt/data
•   $ mount -a
•   $ df
•   RHCE第二十一题:配置一个数据库
在 system1上创建一个 MariaDB 数据库,名为 Contacts,要求: 数据库应该包含来自数据库复制的内容,复制文件的URLhttp://server.group8.example.com/pub/users.mdb ,数据库只能被 localhost 访问 除了 root 用户,此数据库只能被用户 Mary 查询,此用户密码为 redhat,root 用户的数据库密码为 redhat ,同时不允许空密码登录
•   第一步:读题
•   第二步:【在 system1 上】安装MariaDB,立即启动并且设置其在下一次系统重启后仍然保持开启状态
•   $ yum install -y mariadb-server
•   $ systemctl enable mariadb
•   $ systemctl start mariadb
•   第三步:【在 system1 上】进行MaiaDB数据库的初始化设置
•   $ mysql_secure_installation
•   [Enter]
# 当前root用户密码为空,按回车输入当前的“空密码”
•   y
# 确认要设置root密码
•   redhat
# 输入两遍root密码
•   redhat
# 输入两遍root密码
•   y
# 删除匿名用户
•   [Enter]
# 令其默认不允许root远程登录
•   [Enter]
# 删除测试数据库 test
•   [Enter]
# 刷新用户权限表(Reload privilege tables now)
•   第四步:【在 system1 上】下载考试给定的库备份
•   $ cd
•   $ wget http://server.group8.example.com/pub/users.mdb
# 注意:此处直接下载即可,(改名会导致下载过程出错!)
•   第五步:【在 system1 上】创建一个Contacts库,并且导入库备份
•   $ mysql -u root -predhat
•   > create database Contacts;
•   > use Contacts;
•   > source /root/users.mdb;
•   > show tables;
•   > quit;
•   第六步:【在 system1 上】授权Mary用户只能访问Contacts库中的所有表
•   $ mysql -u root -predhat
•   > grant select on Contacts.* to Mary@localhost identified by 'redhat';
•   > quit;
•   RHCE第二十二题:数据库查询
在 system1 上使用数据库 Contacts ,并使用相应的 SQL 查询以回答下列问题:
 密码是fadora 的人的名字是什么?
 有多少人的姓名是 John ,同时居住在 Santa Clara ?

•   第一步:读题
•   多表连接需要在from语句中写明多张表的表名
•   多表连接条件是第一张表的主键与第二张表的主键相关联
•   SQL语句中的 '字符串内容' 必须用单引号包含起来
•   第二步:【在 system1 上】查看Contacts库中包含哪些表,以及这些表的结构
•   $ mysql -u root -predhat
•   > use Contacts;
•   > show tables;
•   > desc u_name; 
•   > desc u_passwd;
•   > desc u_loc;
•   > quit;
•   第三步:【在 system1 上】连接 u_name 和 u_passwd 两张表,查询符合“密码是fadora 的人的名字”条件的所有记录
•   $ mysql -u root -predhat
•   > use Contacts;
•   > select u_name.firstname,u_name.lastname from u_name,u_passwd where u_name.userid=u_passwd.uid and u_passwd.password='fadora';
•   > quit;
•   第四步:【在 system1 上】连接 u_name 和 u_loc 两张表,查询符合“姓名是 John 并且居住在 Santa Clara ”条件的记录总数
•   $ mysql -u root -predhat
•   > use Contacts;
•   > select count(*) from u_name,u_loc where u_name.userid=u_loc.uid and u_name.firstname='John' and u_loc.location='Santa Clara';
•   > quit;
•   第五步:将第三步和第四步的查询结果提交到考试网页上的文本框中。

你可能感兴趣的:(下午RHCE7 备考)