RHCE试题解析
环境准备
yum-config-manager --add-repo=ADDREPO
vim /etc/yum.conf
gpgcheck=0(1=on,0=off)
增加指定repo源,关闭签名合法性检查。
试题及答案
一、配置SELINUX
试题概述:
确保两个虚拟机的 SELinux 处于强制启用模式。
vim /etc/selinux/config
SELINUX=enforcing
setenforce 1 (usage: setenforce [ Enforcing | Permissive | 1 | 0 ])
二、配置SSH访问
试题概述:
按以下要求配置 SSH 访问:
- 用户能够从域内example.com的客户端SSH远程访问您的两个虚拟机系统;
- 在域my133t.org内的客户端不能访问您的两个虚拟机系统。
vim /etc/ssh/sshd_config
DenyUsers *@*.my133t.org *@172.25.0.*
也可以使用防火墙规则进行限制,后面会提到。
三、自定义用户环境(别名设置)
试题概述:
在系统system1 和 system2上创建自定义命令为 qstat,此自定义命令将执行以下命令: /bin/ps -Ao pid,tt,user,fname,rsz;
此命令对系统中所有用户有效。
vim /etc/profile
qstat='/bin/ps -Ao pid,tt,user,fname,rsz'
source /etc/profile
四、配置防火墙端口转发
试题概述:
在系统 system1 配置端口转发,要求如下:
- 在 172.25.0.0/24 网络中的客户机,访问 server0 的本地端口 5423 将被转发到 80
- 此设置必须永久有效。
firewall-cmd --set-default-zone=trusted (将默认区域设置为默认模式)
firewall-cmd --permanent --add-source=172.25.0.0/24 --zone=block (防火墙拒绝my133t.org访问)
firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.24.0.0/24 forward-port port=5423 protocol=tcp to-port=80'
firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.24.0.0/24 forward-port port=5423 protocol=udp to-port=80'
五、配置链路聚合
试题概述:
在system1.example.com 和 system2.example.com 之间配置一个链路 team0: 此链路使用接口 eth1和eth2:
- 此链路在一个接口失效时仍然能工作;
- 此链路在system1使用下面的地址172.24.4.30/255.255.255.0;
- 此链路在system2使用下面的地址172.24.4.40/255.255.255.0;
- 此链路在系统重启之后依然保持正常状态。
nmcli connection add type team con-name team0 ifname team0 connection.autoconnect yes config '{"runner":{"name":"activebackup"}}'
nmcli connection add type team-slave con-name eth1 ifname eth1 connection.autoconnect yes master team0
nmcli connection add type team-slave con-name eth2 ifname eth2 connection.autoconnect yes master team0
nmcli connection modify team0 ipv4.method manual ipv4.address "172.24.4.30/24" connection.autoconnect yes
nmcli connection up team0
teamdctl team0 state
接口启动后测试本机到新增IP是否可以正常通信,如果不通可以重启网络服务后再次测试systemctl restart network
。
六、配置IPv6地址
试题概述:
在您的考试系统上配置接口 eth0 使用下列 IPv6 地址:
- system1上的地址应该是 2003:ac18::305/64:
- system2上的地址应该是 2003:ac18::306/64;
- 两个系统必须能与网络 2003:ac18/64 内的系统通信 ;
- 地址必须在重启后依旧生效;
- 两个系统必须保持当前的 IPv4 地址并能通信。
nmcli connection modify eth0 ipv6.method manual ipv6.address "2003:ac18::305/64"
nmcli connection up eth0
如果不能ping通同上所述。
七、配置本地邮件服务器
试题概述:
在系统system1上配置邮件服务,满足以下要求:
- 这些系统不接收外部发送来的邮件;
- 在这些系统上本地发送的任何邮件都会自动路由到smtp0.example.com;
- 从这些系统上发送的邮件显示来自于system1.example.com;
您可以通过在system1上发送邮件到本地用户 student 来测试您的配置,系统system2.example.com 上的用户 student 将会收到这封邮件。
:配置文件修改
vim /etc/postfix/main.cf
relayhost = smtp0.example.com //自动路由配置
inet_interfaces = loopback-only //监听在回环网卡
myorigin = system1.example.com //邮件显示
mynetworks = 127.0.0.0/8 [::1]/28
local_transport = error:local
:启动服务
systemctl restart postfix
systemctl enalbe postfix
:测试
echo 'test' | mail -s 'Test1' student
如果防火墙默认域非trusted需要开启smtp服务访问权限。
八、通过SMB发布共享目录
试题概述:
在system1上通过 SMB 共享/common 目录:
- 您的 SMB 服务器必须是 STAFF 工作组的一个成员;
- 共享名必须为 common;
- 只有 example.com 域内的客户端可以访问 common 共享;
- common 必须是可以浏览的;
- 用户 harry 必须能够读取共享中的内容,如果需要的话,验证的密码是 migwhisk。
:安装及基本设置
yum -y install samba
mkdir /common
setsebool -P samba_export_all_rw=on
smbpasswd -a harry
:修改配置文件
vim /etc/samba/smb.conf
[global]
workgroup = STAFF
[common]
path = /common
hosts allow = 172.24.0.0/24
browseable = yes
:重启并设置开机自启
systemctl restart smb nmb
systemctl enable smb nmb
九、配置多用户Samba挂载
试题概述:
在system1通过 SMB 共享目录/devops,并满足以下要求:
- 共享名为 devops;
- 共享目录 devops 只能被 example.com 域中的客户端使用;
- 共享目录 devops 必须可以被浏览;
- 用户 kenji 必须能以读的方式访问此共享,该问密码是 atenorth;
- 用户 chihiro 必须能以读写的方式访问此共享,访问密码是 atenorth;
- 此共享永久挂载在 system2.example.com 上的/mnt/dev 目录,并使用用户 kenji 作为认证,任何用户可以通过用户 chihiro 来临时获取写的权限。
:基本准备
mkdir /devops
smbpasswd -a kenji
smbpasswd -a chihiro
setfacl -m u:chihiro:rwx /devops
:修改配置文件
vim /etc/samba/smb.conf
[devops]
path = /devops
hosts allow = 172.24.0.0/24
write list = chihiro
:重启服务
systemctl restart smb nmb
:system2操作
:准备基本环境
yum -y install samba-client cifs-utils
smbclient -L system1.example.com -U chihiro
mkdir /mnt/dev
:修改配置文件
vim /etc/fstab
//system1.example.com/devops /mnt/dev cifs defaults,multiuser,username=kenji,password=atenorth,sec=ntlmssp,_netdev 0 0
:挂载配置
mount -a
:验证临时权限
su - other
cifscreds add -u chihiro system1.example.com
touch /mnt/dev/1.txt
十、配置NFS共享服务
试题概述:
在system1配置 NFS 服务,要求如下:
- 以只读的方式共享目录/public,同时只能被 example.com 域中的系统访问;
- 以读写的方式共享目录/protected,能被 example.com 域中的系统访问;
- 访问/protected 需要通过 Kerberos 安全加密,您可以使用下面 URL 提供的密钥:http://classroom.example.com/pub/keytabs/system1.keytab;
- 目录/protected 应该包含名为 project 拥有人为 ldapuser0 的子目录;
- 用户 ldapuser0 能以读写方式访问/protected/project。
:环境准备
mkdir -p /public /protected/project
chown ldapuser0 /protected/project
wget -O /etc/krb5.keytab http://classroom/pub/keytabs/system1.keytab
:修改配置
vim /etc/exports
/public 172.24.4.0/24(ro)
/protected 172.24.4.0/24(rw,sec=krb5p)
:启动服务并设置为开机自启
systemctl start nfs-secure-server nfs-server
systemctl enable nfs-secure-server nfs-server
十一、挂载NFS共享
试题概述:
在system2上挂载一个来自 system1.exmaple.com 的共享,并符合下列要求:
- /public 挂载在下面的目录上/mnt/nfsmount;
- /protected挂载在下面的目录上/mnt/nfssecure 并使用安全的方式,密钥下载 URL:http://classroom.example.com/pub/keytabs/system2.keytab;
- 用户 ldapuser0 能够在/mnt/nfssecure/project 上创建文件;
- 这些文件系统在系统启动时自动挂载。
:环境准备
mkdir -p /mnt/nfsmount /mnt/nfssecure
wget -O /etc/krb5.keytab http://classroom/pub/keytabs/system1.keytab
systemctl start nfs-secure
systemctl enable nfs-secure
showmount -e system1.example.com
:修改配置文件
vim /etc/fstab
system1.example.com:/public /mnt/nfsmount nfs _netdev 0 0
system1.example.com:/protected /mnt/nfssecure nfs sec=krb5p,_netdev 0 0
:挂载
mount -a
十二、实现一个web服务器
试题概述:
为 http://system1.example.com 配置 Web 服务器:
- 从 http://classroom.example.com/pub/materials/station.html 下载一个主页文件,并将该文件重命名为 index.html;
- 将文件 index.html 拷贝到您的 web 服务器的 DocumentRoot 目录下;
- 不要对文件 index.html 的内容进行任何修改;
- 来自于 example.com 域的客户端可以访问此 Web 服务;
- 来自于 my133t.org 域的客户端拒绝访问此 Web 服务。
:安装Apache服务
yum -y install httpd
:修改配置文件
vim /etc/httpd/conf.d/rhce.conf
<VirtualHost *:80>
ServerName system1.example.com
DocumentRoot /var/www/html
</VirtualHost>
:下载网页文件
wget -O /var/www/html/index.html http://classroom.example.com/pub/materials/station.html
:重启Apache服务并设置为开机自启
systemctl restart httpd
systemctl enable httpd
十三、配置安全web服务
试题概述:
为站点 http://server0.example.com 配置 TLS 加密:
- 已签名证书从http://classroom.example.com/pub/tls/certs/system1.crt 获取 ;
- 证书的密钥从http://classroom.example.com/pub/tls/private/system1.key获取;
- 证书的签名授权信息从http://classroom.example.com/pub/example-ca.crt获取。
:安装所需认证模块
yum -y install mod_ssl
:下载所需文件
cd /etc/pki/tls/certs/
wget http://classroom.example.com/pub/example-ca.crt
http://classroom.example.com/pub/tls/certs/system1.crt
cd etc/pki/tls/private/
wget http://classroom.example.com/pub/tls/private/system1.key
:修改配置文件
vim /etc/httpd/conf.d/ssl.conf
<VirtualHost _default_:443>
DocumentRoot /var/www/html
ServerName system1.example.com:443
SSLCertificateFile /etc/pki/tls/certs/system1.crt
SSLCertificateKeyFile /etc/pki/tls/private/system1.key
SSLCACertificateFile /etc/pki/tls/certs/example-ca.crt
</VirtualHost>
:重启Apache服务
systemclt restart httpd
十四、配置虚拟主机
试题概述:
在system1上扩展您的 web 服务器,为站点 http://www0.example.com创建一个虚拟主机,然后执行下述步骤:
- 设置 DocumentRoot 为/var/www/virtual;
- 从 http://classroom.example.com/pub/materials/www.html 下载文件并重命名为index.html;
- 不要对文件 index.html 的内容做任何修改;
- 将文件 index.html 放到虚拟主机的 DocumentRoot 目录下;
- 确保 student 用户能够在/var/www/virtual 目录下创建文件;
:环境准备
mkdir /var/www/virtual
setfacl -m u:student:rwx /var/www/virtual
wget -O /var/www/virtual/index.html http://classroom.example.com/pub/materials/www.html
:修改配置文件
vim /etc/httpd/conf.d/rhce.conf
<VirtualHost *:80>
ServerName www0.example.com
DocumentRoot /var/www/virtual
</VirtualHost>
:重启Apache服务
systemctl restart httpd
十五、配置web内容访问
试题概述:
在您的system1上的 web 服务器的 DocumentRoot 目录下创建一个名为private 的目录,要求如下:
- 从 http://classroom.example.com/pub/materails/private.html 下载一个文件副本到这个目录,并且得命名为 index.html;
- 不要对这个文件的内容做任何修改;
- 从 server0 上,任何人都可以浏览 private 的内容,但是从其他系统不能访问这个目录的内容。
:环境准备
mkdir /var/www/html/private
wget -O /var/www/html/private/index.html http://classroom.example.com/pub/materails/private.html
:修改配置
vim /etc/httpd/conf.d/rhce.conf
<Directory /var/www/html/private>
Require ip 127.0.0.1
</Directory>
十六、实现动态web访问
试题概述:
在system1上配置提供动态 Web 内容,要求如下:
- 动态内容由名为 webapp0.example.com 的虚拟主机提供
- 虚拟主机侦听在端口 8909
- 从 http://classroom.example.com/pub/materials/webinfo.wsgi 下载一个脚本,然后放在适当的位置,无论如何不要修改此文件的内容
- 客户端访问 http://webapp0.example.com:8909 可接收到动态生成的 Web 页
- 此 http://webapp0.example.com:8909 必须能被 example.com 域内的所有系统访问
:安装所需模块
yum -y install mod_wsgi
:准备环境
cd /var/www/html
wget http://classroom.example.com/pub/materials/webinfo.wsgi
semanage port -a -t http_port_t -p tcp 8909
:修改配置
vim /etc/httpd/conf.d/rhce.conf
Listen 8909
<VirtualHost *:8909>
ServerName webapp0.example.com:8909
DocumentRoot /var/www/html
WSGIScriptAlias / /var/www/html/webinfo.wsgi
</VirtualHost>
:重启Apache服务
systemctl restart httpd
十七、创建一个脚本
试题概述:
在 system1上创建一个名为/root/foo.sh 的脚本,让其提供下列特性:
- 当运行/root/foo.sh redhat,输出为 fedora;
- 当运行/root/foo.sh fedora,输出为 redhat;
- 当没有任何参数或者参数不是 redhat 或者 fedora 时,其错误输出产生以下的信息:/root/foo.sh redhat|fedora。
vim /root/foo.sh
#!/bin/bash
if [ "$1" = "redhat" ] ; then
echo "fedora"
elif [ "$1" = "fedora" ] ; then
echo "redhat"
else
echo "/root/foo.sh redhat|fedora"
fi
chmod +x /root/foo.sh
十八、创建一个添加用户的脚本
试题概述:
在 system1上创建一个脚本,名为/root/batchusers,此脚本能实现为系统system1创建本地用户,并且这些用户的用户名来自一个包含用户名的文件,同时满足下列要求:
- 此脚本要求提供一个参数,此参数就是包含用户名列表的文件;
- 如果没有提供参数,此脚本应该给出下面的提示信息 Usage: /root/batchusers
然后退出并返回相应的值; - 如果提供一个不存在的文件名,此脚本应该给出下面的提示信息 Input file not found 然后退出并返回相应的值;
- 创建的用户登陆 Shell 为/bin/false,此脚本不需要为用户设置密码;
- 您可以从下面的 URL 获取用户名列表作为测试用:http://classroom.example.com/pub/materials/userlist。
vim /root/batchusers
#!/bin/bash
if [ $# -eq 0 ] ; then
echo "Usage: /root/batchusers <userfile>"
exit 1
fi
if [ ! -f $1 ] ; then
echo "Input file not found"
exit 2
fi
for name in $(cat $1)
do
useradd -s /bin/false $name
done
chmod +x /root/batchusers
十九、配置iSCSI服务端
试题概述:
配置 server0 提供 iSCSI服务,磁盘名为 iqn.2016-02.com.example:system1,并符合下列要求:
- 服务端口为 3260;
- 使用iscsi_store作其后端卷,其大小为 3GiB 访问;
- 此服务只能被system2.example.com访问。
:准备磁盘空间
fdisk /dev/vda
Command (m for help): n
Partition number (1-128, default 1): First sector (34-20971486, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-20971486, default 20971486): +3G
Command (m for help): w
partprobe /dev/vda
:安装并配置iSCSI
yum -y install targetcli
targetcli
/> backstores/block create block1 /dev/vda1
/> /iscsi create iqn.2016-02.com.example:system1
/> /iscsi/iqn.2016-02.com.example:system1/tpg1/acls create iqn.2016-02.com.example:system2
/> /iscsi/iqn.2016-02.com.example:system1/tpg1/luns create /backstores/block/block1
/> /iscsi/iqn.2016-02.com.example:system1/tpg1/portals create 172.24.4.30 3260
/> saveconfig
/> exit
:重启并设置开机自启
systemctl restart target
systemctl enable target
二十、配置iSCSI客户端
试题概述:
配置system2使其能连接 system1上提供的 iqn.2016-02.com.example:system1,并符合以下要求:
- iSCSI 设备在系统启动的期间自动加载;
- 块设备 iSCSI 上包含一个大小为 2100MiB 的分区,并格式化为 ext4 文件系统 此分区挂载在/mnt/data 上,同时在系统启动的期间自动挂载。
:安装iSCSI客户端
yum -y install iscsi-initiator-utils
:修改iSCSI本机iqn名称
vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2016-02.com.example:system2
:重启服务
systemctl restart iscsid
systemctl enalbe iscsid
:查找、连接磁盘
iscsiadm -m discovery -t st -p system1
iscsiadm -m node -L all
:分区设置
lsblk (查看新磁盘)
fdisk /dev/sda
Command (m for help): n
Partition number (1-128, default 1): First sector (34-20971486, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-20971486, default 20971486): +2100M
Command (m for help): w
partprobe /dev/sda
mkfs.ext4 /dev/sda1
:挂载设置
mkdir /mnt/data
vim /etc/fstab
/dev/sda1 /mnt/data ext4 defaults,_netdev 0 0
mount - a
二十一、配置一个数据库
试题概述:
在system1上创建一个 MariaDB 数据库,名为 Contacts,并符合以下条件: 数据库应该包含来自数据库复制的内容,复制文件的 URL 为:http://classroom.example.com/pub/materials/users.sql:
- 数据库只能被 localhost 访问;
- 除了 root 用户,此数据库只能被用户 Raikon 查询,此用户密码为 atenorth root 用户的密码为 atenorth,同时不允许空密码登陆。
:安装、配置、启动MariaDB
yum -y install mariadb mariadb-server
vim /etc/my.cnf
[mysqld]
skip-networking
systemctl restart mariadb
systemctl enable mariadb
:数据库基本操作
wget http://classroom.example.com/pub/materials/users.sql
mysqladmin -u root password 'atenorth'
mysql -u root -patenorth
CREATE DATABASE Contacts;
USE Contacts;
SOURCE /root/users.sql
GRANT select ON Contacts.* to Raikon@localhost IDENTIFIED BY 'atenorth';
DELETE FROM mysql.user WHERE Password='';
二十二、数据库查询
试题概述:
在系统 system1上使用数据库 Contacts,并使用相应的 SQL 查询以回答下列问题:
- 密码是 solicitous 的人的名字?
- 有多少人的姓名是 Barbara 同时居住在 Sunnyvale?
SELECT name FROM base WHERE password='solicitous';
SELECT count(*) FROM base,location WHERE base.name='Barbara' AND location.city='Sunnyvale' AND base.id=location.id ;
博客地址:https://www.cnblogs.com/Cherry-Linux
座右铭:人总是这么痛苦吗?还是只有小时候这样?总是如此。