考试说明
您在考试过程中将使用的两个系统的信息如下:
- server0.example.com(ServerX) 是一个主要的服务器
- desktop0.example.com(DesktopX)主要用作客户端
两个系统的root密码为redhat
系统的IP地址由DHCP提供,您可以视其正常,或者您可以按以下信息重新设置为静态IP:
- server0.example.com :172.25.0.11
- desktop0.example.com :172.25.0.10
- 子网掩码为:255.255.255.0
- 默认网关为:172.25.0.254
您的系统是DNS域 .example.com 的成员,所有在DNS域 .example.com 中的系统都在子网172.25.0.0/24中,同样在这个子网中的系统都在DNS域 .example.com 中。除非特别指明,所有要求配置的网络都必须能被 .example.com 域中的系统访问。
classroom.example.com 提供了集中认证的服务域 .example.com,两个系统 server0 和 desktop0 已经预先配置成此域的客户端,此域提供了下列用户帐号(模拟环境酌情创建):
- ldapuser0 (密码:kerberos)
- fleyd (密码:redhat)
- sergio (密码:redhat)
- krishna (密码:redhat)
防火墙默认是打开的,在您认为是适当的时候可以关闭。其他的关于防火墙的设置可能在单独的要求中。
在评分之前您的系统会被重新启动,所以请您确保您所做的所有修改和服务配置在重新启动之后仍然能够生效,而无需人工干预。所有考试用的虚拟机实例必须能重启之后进入正确的用户级别,而无需人工协助。如果考试用的虚拟机不能启动或不能正常启动,将被评零分。
您在考试中使用的Red Hat Enterprise Linux操作系统版本对应的分发包可以通过YUM在下面的链接中找到:http://content.example.com/rhel7.0/x86_64/dvd
一部分要求包含了主机安全、确定您的对主机安全限制没有阻挡要求允许的主机或网络。虽然您正确配置了网络服务但本来允许访问的主机或网络被阻挡。这样也不会得分。
您将会注意到一些要求明确不允许服务被域 my133t.org 访问,这个域的系统在 172.34.0.0/255.255.255.0 子网中,并且这些子网中的系统都属于域 my133t.org 。
注意一些考试题目可能依赖于其他考试题目。比如说,在考试题目中可能要求您针对一个用户执行一系列的限制,但是这个用户的创建可能是在其他题目中要求的。
为了方便您的标识,每个考试题目都有一些选取按钮以协助您去标识哪个题目您已经完成了,哪些还没有。当然,如果您觉得用不着,您也可以不去理会这些按钮。
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
考前请详细阅读
1、配置SELinux
确保您的两个虚拟机的SELinux处于强制启用模式
[root@server0 ~]# vim /etc/selinux/config
SELINUX=enforcing
[root@server0 ~]# getenforce
Enforcing
2、配置SSH访问
按以下要求配置 SSH 访问:
用户能够从域 example.com 内的客户端 SSH 远程访问您的两个虚拟机系统
在域 my133t.org 内的客户端不能访问您的两个虚拟机系统
[root@server0 ~]# vim /etc/ssh/ssh_config
denyusers *@my133t.org
3、自定义用户环境
在系统 server0 和 desktop0 上创建自定义命令为 qstat:
此自定义命令将执行以下命令:/bin/ps -Ao pid,tt,user,fname,rsz
此命令对系统中所有用户有效
[root@server0 ~]# vim /etc/bashrc
alias qstat='/bin/ps -Ao pid,tt,user,fname,rsz'
[root@server0 ~]# source /etc/bashrc
4、配置防火墙端口转发
在系统 server0 上配置端口转发,要求如下:
在 172.25.0.0/24 网络中的系统,访问 server0 的本地端口 5423 将被转发到80
此设置必须永久有效
[root@server0 ~]# firewall-cmd --set-default-zone=trusted
success
[root@server0 ~]# firewall-cmd --permanent --zone=trusted --add-forward-port=port=5423:proto=tcp:toport=80
success
[root@server0 ~]# firewall-cmd --permanent --zone=block --add-source=172.34.0.0/24
success
[root@server0 ~]# firewall-cmd --reload
success
[root@server0 ~]# systemctl restart firewalld.service
5、配置链路聚合
在 server0.example.com 和 desktop0.example.com 之间按以下要求配置一个链路team0:
此链路使用接口 eth1 和 eth2
此链路在一个接口失效时仍然能工作
此链路在 server0 使用下面的地址 172.16.3.20/255.255.255.0
此链路在 desktop0 使用下面的地址 172.16.3.25/255.255.255.0
此链路在系统重启之后依然保持正常状态
[root@server0 ~]# nmcli connection add type team con-name team0 ifname team0 autoconnect yes config '{"runner": {"name": "activebackup"}}'
[root@server0 ~]# nmcli connection add type team-slave con-name team0-1 ifname eth1 master team0
[root@server0 ~]# nmcli connection add type team-slave con-name team0-2 ifname eth2 master team0
[root@server0 ~]# nmcli connection modify team0 ipv4.method manual ipv4.addresses 172.16.3.20/24 connection.autoconnect yes
[root@server0 ~]# nmcli connection up team0
[root@server0 ~]# nmcli connection up team0-1
[root@server0 ~]# nmcli connection up team0-2
[root@server0 ~]# teamdctl team0 state
setup:
runner: activebackup
ports:
eth2
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
eth1
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
runner:
active port: eth1
6、配置IPv6地址
在您的两个考试系统上配置接口 eth0 使用下列 IPv6 地址:
server0 上的地址应该是 2003:ac18::305/64
desktop0 上的地址应该是 2003:ac18::306/64
两个系统必须能与网络 2003:ac18/64 内的系统通信
地址必须在重启系统后依旧生效
两个系统必须保持当前的 IPv4 地址并仍然能够通信
[root@server0 ~]# nmcli connection modify "System eth0" ipv6.method manual ipv6.addresses 2003:ac18::305/64
[root@server0 ~]# nmcli connection up "System eth0"
7、配置本地邮件服务
在系统 server0 和 desktop0 上配置邮件服务,满足以下要求:
这些系统不接收外部发送来的邮件
在这些系统上本地发送的任何邮件都会自动路由到 smtp0.example.com
从这些系统上发送的邮件显示来自于 desktop0.example.com
您可以通过在 server0.example.com 发送邮件到本地用户 student 来测试您的配置,并将系统 desktop0.example.com 配置为后端邮件服务器,确保可接收并投递来自 server0 的邮件
lab smtp-nullclient setup //配置lab环境 考试不需要!!!
[root@server0 ~]# vim /etc/postfix/main.cf
....
98 myorigin = desktop0.example.com
116 inet_interfaces = loopback-only
164 mydestination =
264 mynetworks = 127.0.0.0/8 [::1]/128
317 relayhost = [smtp0.example.com]
680 local_transport = error:local delivery disabled //此项提供拒绝报错,练习使用,考试无需!
[root@server0 ~]# systemctl restart postfix.service
[root@server0 ~]# echo 'Mail Data.' | mail -s student "Test"
[root@desktop0 ~]# mail -u student
8-1、通过 Samba 发布共享目录(两题可以一起做)
在 server0 通过 SMB 共享/common 目录:
您的 SMB 服务器必须是 STAFF 工作组的一个成员
共享名必须为 common
只有 example.com 域内的客户端可以访问 common 共享
common 必须是可以浏览的
用户 harry 必须能够读取共享中的内容,如果需要的话,验证的密码是 migwhisk
8-2、配置多用户Samba挂载
在 server0 通过 SMB 共享目录/devops,并满足以下要求:
共享名为 devops
共享目录 devops 只能被 example.com 域中的客户端使用
共享目录 devops 必须可以被浏览
用户 kenji 必须能以读的方式访问此共享,该问密码是 atenorth
用户 chihiro 必须能以读写的方式访问此共享,访问密码是 atenorth
此共享永久挂载在 desktop0.example.com 上的/mnt/dev 目录,并使用用户 kenji 作为认证。任何用户可以通过用户 chihiro 来临时获取写的权限
[root@server0 ~]# yum -y install samba
[root@server0 ~]# mkdir /common /devops
[root@server0 ~]# useradd kenji
[root@server0 ~]# useradd harry
[root@server0 ~]# useradd chihiro
[root@server0 ~]# pdbedit -a harry
new password:
.....
[root@server0 ~]# getsebool -a | grep samba
[root@server0 ~]# setsebool -P samba_export_all_ro on
[root@server0 ~]# setsebool -P samba_export_all_rw on
[root@server0 ~]# vim /etc/samba/smb.conf
89 workgroup = STAFF
95 hosts allow = 172.25.0.0/24
321 [common]
322 path= /common
323 [devops]
324 path= /devops
325 write list = chihiro
[root@server0 ~]# systemctl restart smb
[root@server0 ~]# systemctl enable smb
[root@server0 ~]# setfacl -R -m u:chihiro:rwx /devops/
[root@server0 ~]# getfacl /devops/
getfacl: Removing leading '/' from absolute path names
#file: devops/
#owner: root
#group: root
user::rwx
user:chihiro:rwx
group::r-x
mask::rwx
other::r-x
[root@desktop0 ~]# yum -y install cifs-utils.x86_64
[root@desktop0 ~]# mkdir /mnt/dev
[root@desktop0 ~]# vim /etc/fstab
....
10 //server0.example.com/devops /mnt/dev cifs defaults,user=kenji,pass=atenorth,_netdev,multiuser,sec=ntlmssp 0 0
....
[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df -h
//server0.example.com/devops 10G 3.1G 7.0G 31% /mnt/dev
9-1、配置NFS共享服务(两题可以一直做)
在 server0 配置 NFS 服务,要求如下:
以只读的方式共享目录 /public,只能被 example.com 域中的系统访问
以读写的方式共享目录 /protected,只能被 example.com 域中的系统访问
访问 /protected 需要通过 Kerberos 安全加密,您可以使用下面 URL 提供的密钥:http://classroom.example.com/pub/keytabs/server0.keytab
目录 /protected 应该包含名为 project 拥有人为 ldapuser0 的子目录
用户 ldapuser0 能以读写方式访问 /protected/project
9-2、挂载NFS共享
在 desktop0 上挂载一个来自 server0.example.com 的共享,并符合下列要求:
/public 挂载在下面的目录上 /mnt/nfsmount
/protected 挂载在下面的目录上 /mnt/nfssecure 并使用安全的方式,密钥下载 URL:http://classroom.example.com/pub/keytabs/desktop0.keytab
用户 ldapuser0 能够在/mnt/nfssecure/project 上创建文件
这些文件系统在系统启动时自动挂载
[root@server0 ~]# lab nfskrb5 setup //配置lab环境 考试不需要!!!
[root@desktop0 ~]# lab nfskrb5 setup
[root@server0 ~]# id ldapuser0
uid=1700(ldapuser0) gid=1700(ldapuser0) 组=1700(ldapuser0)
[root@server0 ~]# mkdir -p /public /protected/project
[root@server0 ~]# chown ldapuser0 /protected/project/
[root@server0 ~]# ls -ld /protected/project/
drwxr-xr-x. 2 ldapuser0 root 6 4月 6 09:39 /protected/project/
[root@server0 ~]# wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/server0.keytab
[root@server0 ~]# vim /etc/sysconfig/nfs
13 RPCNFSDARGS="-V 4"
[root@server0 ~]# vim /etc/exports
1 /public 172.25.0.0/24(ro)
2 /protected 172.25.0.0/24(rw,sec=krb5p)
[root@server0 ~]# systemctl restart nfs-server nfs-secure-server
[root@server0 ~]# systemctl enable nfs-server nfs-secure-server
客户机挂载
[root@desktop0 ~]# mkdir /mnt/nfsmount /mnt/nfssecure
[root@desktop0 ~]# wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/desktop0.keytab
[root@desktop0 ~]# systemctl restart nfs-secure
[root@desktop0 ~]# systemctl enable nfs-secure
[root@desktop0 ~]# vim /etc/fstab
11 server0.example.com:/public /mnt/nfsmount nfs _netdev 0 0
12 server0.example.com:/protected /mnt/nfssecure nfs v4,sec=krb5p,_netdev 0 0
[root@desktop0 ~]# df -h
server0.example.com:/public 10G 3.1G 7.0G 31% /mnt/nfsmount
server0.example.com:/protected 10G 3.1G 7.0G 31% /mnt/nfssecure
10、实现一个Web服务器
为 http://server0.example.com 配置 Web 服务器:
从URL地址 http://classroom.example.com/pub/materials/station.html 下载一个主页文件,并将该文件重命名为 index.html
将文件 index.html 拷贝到您的 web 服务器的 DocumentRoot 目录下
不要对文件 index.html 的内容进行任何修改
[root@server0 ~]# yum -y install httpd
[root@server0 ~]# cd /var/www/html/
[root@server0 html]# wget http://classroom.example.com/pub/materials/station.html
[root@server0 html]# mv station.html index.html
[root@server0 html]# vim /etc/httpd/conf.d/web.conf
1 <VirtualHost *:80>
2 ServerName server0.example.com
3 DocumentRoot /var/www/html
4 </VirtualHost>
[root@server0 html]# systemctl restart httpd
[root@server0 html]# systemctl enable httpd
[root@desktop0 ~]# curl server0.example.com
11、配置安全Web服务
为站点 http://server0.example.com 配置TLS加密:
一个已签名证书从 http://classroom.example.com/pub/tls/certs/server0.crt 获取
此证书的密钥从 http://classroom.example.com/pub/tls/private/server0.key 获取
此证书的签名授权信息从 http://classroom.example.com/pub/example-ca.crt 获取
[root@server0 ~]# yum -y install mod_ssl.x86_64
[root@server0 ~]# cd /etc/pki/tls/certs/
[root@server0 certs]# wget http://classroom.example.com/pub/tls/certs/server0.crt
[root@server0 certs]# wget http://classroom.example.com/pub/example-ca.crt
[root@server0 certs]# cd /etc/pki/tls/private/
[root@server0 private]# wget http://classroom.example.com/pub/tls/private/server0.key
[root@server0 private]# vim /etc/httpd/conf.d/ssl.conf
....
59 DocumentRoot "/var/www/html"
60 ServerName www.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
....
[root@server0 private]# systemctl restart httpd
[root@desktop0 private]# firefox https://server0.example.com
12、配置虚拟主机
在 server0 上扩展您的 web 服务器,为站点 http://www0.example.com 创建一个虚拟主机,然后执行下述步骤:
设置 DocumentRoot 为/var/www/virtual
从 http://classroom.example.com/pub/materials/www.html 下载文件并重命名为index.html
不要对文件 index.html 的内容进行任何修改
将文件 index.html 放到虚拟主机的 DocumentRoot 目录下
确保 fleyd 用户能够在/var/www/virtual 目录下创建文件
注意:原始站点 http://server0.example.com 必须仍然能够访问,名称服务器 example.com 提供对主机名 www0.example.com 的域名解析。
[root@server0 ~]# mkdir /var/www/virtual
[root@server0 ~]# cd /var/www/virtual
[root@server0 virtual]# wget http://classroom.example.com/pub/materials/www.html
[root@server0 virtual]# mv www.html index.html
[root@server0 virtual]# vim /etc/httpd/conf.d/web.conf
5 <VirtualHost *:80>
6 ServerName www0.example.com
7 DocumentRoot /var/www/virtual
8 </VirtualHost>
[root@server0 virtual]# systemctl restart httpd
[root@desktop0 ~]# curl www0.example.com
13、配置Web内容访问
在您的 server0 web服务器的 DocumentRoot 目录下创建一个名为 private 的目录,要求如下:
从 http://classroom.example.com/pub/materials/private.html 下载一个文件副本到这个目录,并且命名为 index.html
不要对这个文件的内容做任何修改
从 server0 上,任何人都可以浏览 private 的内容,但是从其他系统不能访问这个目录的内容
[root@server0 ~]# mkdir /var/www/html/private
[root@server0 ~]# cd /var/www/html/private
[root@server0 private]# wget http://classroom.example.com/pub/materials/private.html
[root@server0 private]# mv private.html index.html
1 <Directory "/var/www/html/private">
2 Require ip 127.0.0.1 172.25.0.11
3 </Directory>
[root@server0 private]# systemctl restart httpd
[root@server0 private]# curl server0.example.com/private
14、实现动态Web内容
在 server0 上配置提供动态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 域内的所有系统访问
[root@server0 ~]# yum -y install mod_wsgi.x86_64
[root@server0 ~]# mkdir /var/www/webapp0
[root@server0 ~]# cd /var/www/webapp0
[root@server0 webapp0]# wget http://classroom.example.com/pub/materials/webinfo.wsgi
[root@server0 webapp0]# vim /etc/httpd/conf.d/web.conf
9 listen 8909
10 <VirtualHost *:8909>
11 ServerName webapp0.example.com
12 DocumentRoot /var/www/webapp0
13 WsgiScriptAlias / /var/www/webapp0/webinfo.wsgi
14 </VirtualHost>
[root@server0 webapp0]# semanage port -l | grep http
[root@server0 webapp0]# semanage port -a -t http_port_t -p tcp 8909
[root@server0 webapp0]# systemctl restart httpd
[root@desktop0 ~]# curl webapp0.example.com:8909
15、创建一个脚本
在 server0 上创建一个名为/root/foo.sh 的脚本,让其提供下列特性:
当运行/root/foo.sh redhat,输出为 fedora
当运行/root/foo.sh fedora,输出为 redhat
当没有任何参数或者参数不是 redhat 或者 fedora 时,其错误输出产生以下的信息:/root/foo.sh redhat|fedora
[root@server0 ~]# vim /root/foo.sh
1 #!/bin/bash
2 if [ $# == 0 ];then
3 echo "/root/foo.sh redhat|fedora" >&2
4 exit 1
5 fi
6 if [ $1 == redhat ];then
7 echo fedora
8 elif [ $1 == fedora ];then
9 echo redhat
10 else
11 echo '/root/foo.sh redhat|fedora' >&2
12 exit 2
13 fi
[root@server0 ~]# chmod +x /root/foo.sh
16、创建一个添加用户的脚本
在 server0 上创建一个脚本,名为/root/batchusers,此脚本能实现为系统 server0 创建本地用户,并且这些用户的用户名来自一个包含用户名的文件,同时满足下列要求:
此脚本要求提供一个参数,此参数就是包含用户名列表的文件
如果没有提供参数,此脚本应该给出下面的提示信息 Usage: /root/batchusers 然后退出并返回相应的值
如果提供一个不存在的文件名,此脚本应该给出下面的提示信息 Input file not found 然后退出并返回相应的值
创建的用户登陆Shell为/bin/false,此脚本不需要为用户设置密码
您可以从下面的 URL 获取用户名列表作为测试用:http://classroom.example.com/pub/materials/userlist
[root@server0 ~]# wget http://classroom.example.com/pub/materials/userlist
[root@server0 ~]# vim /root/batchusers
1 #!/bin/bash
2 if [ $# -eq 0 ];then
3 echo 'Usage: /root/batchusers <userfile>'
4 exit 1
5 fi
6 if [ ! -f $1 ];then
7 echo 'Input file not found'
8 exit 2
9 fi
10 for name in `cat $1`
11 do
12 useradd -s /bin/false $name
13 done
[root@server0 ~]# /root/batchusers userlist
17、配置iSCSI服务端
配置 server0 提供一个 iSCSI 服务,磁盘名为 iqn.2016-02.com.example:server0,并符合下列要求:
服务端口为 3260
使用 iscsi_store 作其后端卷,其大小为 3GiB
此服务只能被 desktop0.example.com 访问
[root@server0 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 10G 0 disk
└─vda1 253:1 0 10G 0 part /
vdb 253:16 0 10G 0 disk
[root@server0 ~]# fdisk /dev/vdb
....
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+3G
....
[root@server0 ~]# partprobe
ls[root@server0 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 10G 0 disk
└─vda1 253:1 0 10G 0 part /
vdb 253:16 0 10G 0 disk
└─vdb1 253:17 0 3G 0 part
[root@server0 ~]# yum -y install targetcli.noarch
[root@server0 ~]# targetcli
targetcli shell version 2.1.fb34
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/> /backstores/block create iscsi_store /dev/vdb1
Created block storage object iscsi_store using /dev/vdb1.
/> iscsi/ create iqn.2016-02.com.example:server0
Created target iqn.2016-02.com.example:server0.
Created TPG 1.
/> iscsi/iqn.2016-02.com.example:server0/tpg1/luns create /backstores/block/iscsi_store
Created LUN 0.
/> iscsi/iqn.2016-02.com.example:server0/tpg1/acls create iqn.2016-02.com.example:desktop0
Created Node ACL for iqn.2016-02.com.example:desktop0
Created mapped LUN 0.
/> iscsi/iqn.2016-02.com.example:server0/tpg1/portals create 172.25.0.11
Using default IP port 3260
Created network portal 172.25.0.11:3260.
/> saveconfig
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
[root@server0 ~]# systemctl restart target
[root@server0 ~]# systemctl enable target
18、配置iSCSI客户端
配置 desktop0 使其能连接 server0 上提供的 iqn.2016-02.com.example:server0,并符合以下要求:
iSCSI设备在系统启动的期间自动加载
块设备iSCSI上包含一个大小为 2100MiB 的分区,并格式化为ext4文件系统
此分区挂载在 /mnt/data 上,同时在系统启动的期间自动挂载
[root@desktop0 ~]# yum -y install iscsi-initiator-utils.i686
[root@desktop0 ~]# vim /etc/iscsi/initiatorname.iscsi
1 InitiatorName=iqn.2016-02.com.example:desktop0
[root@desktop0 ~]# vim /etc/iscsi/initiatorname.iscsi
[root@desktop0 ~]# systemctl daemon-reload
[root@desktop0 ~]# systemctl restart iscsid
[root@desktop0 ~]# systemctl enable iscsid
[root@desktop0 ~]# man iscsiadm
[root@desktop0 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 172.25.0.11 --discover
172.25.0.11:3260,1 iqn.2016-02.com.example:server0
[root@desktop0 ~]# systemctl restart iscsi
[root@desktop0 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 3G 0 disk
....
[root@desktop0 ~]# fdisk /dev/sda
Last 扇区, +扇区 or +size{K,M,G} (8192-6291455,默认为 6291455):+2100M
[root@desktop0 ~]# partprobe
[root@desktop0 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 3G 0 disk
└─sda1 8:1 0 2.1G 0 part
....
[root@desktop0 ~]# mkfs.ext4 /dev/sda1
....
Writing superblocks and filesystem accounting information: 完成
[root@desktop0 ~]# mkdir /mnt/data
[root@desktop0 ~]# blkid
/dev/sda1: UUID="2037c967-b29c-4488-ac02-b2b6d43b7574" TYPE="ext4"
[root@desktop0 ~]# vim /etc/fstab
....
13 UUID="2037c967-b29c-4488-ac02-b2b6d43b7574" /mnt/data ext4 _netdev 0 0
[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
....
/dev/sda1 2.0G 6.2M 1.9G 1% /mnt/data
[root@desktop0 ~]# vim /etc/rc.d/rc.local
69 for i in {1..20}
70 do
71 mount -a
72 sleep 5
73 done &
[root@desktop0 ~]# source /etc/rc.d/rc.local
[root@desktop0 ~]# reboot -f
19、配置一个数据库
在 server0 上创建一个 MariaDB 数据库,名为 Contacts,并符合以下条件:
数据库应该包含来自数据库复制的内容,复制文件的 URL 为:http://classroom.example.com/pub/materials/users.sql
数据库只能被 localhost 访问
除了root用户,此数据库只能被用户 Raikon 查询,此用户密码为 atenorth
root用户的密码为 atenorth,同时不允许空密码登陆
[root@server0 ~]# yum -y install mariadb-server.x86_64
[root@server0 ~]# vim /etc/my.cnf
1 [mysqld]
2 skip-networking
....
[root@server0 ~]# systemctl restart mariadb
[root@server0 ~]# systemctl enable mariadb
[root@server0 ~]# mysqladmin -uroot password 'atenorth'
[root@server0 ~]# mysql -uroot -patenorth
MariaDB [(none)]> create database contacts;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> delete from mysql.user where password='';
Query OK, 5 rows affected (0.00 sec)
MariaDB [(none)]> grant all on contacts.* to raikon@localhost identified by 'atenorth';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
[root@server0 ~]# mysql -uroot -patenorth contacts < userlist
[root@server0 ~]# wget http://classroom.example.com/pub/materials/users.sql
[root@server0 ~]# mysql -uroot -patenorth contacts < users.sql
[root@server0 ~]# mysql -uroot -patenorth
MariaDB [contacts]> use contacts
MariaDB [contacts]> show tables;
+--------------------+
| Tables_in_contacts |
+--------------------+
| base |
| location |
+--------------------+
2 rows in set (0.00 sec)
20、数据库查询
在系统 server0 上使用数据库 Contacts,并使用相应的 SQL 查询以回答下列问题:
密码是 solicitous 的人的名字?
有多少人的姓名是 Barbara 同时居住在 Sunnyvale?
MariaDB [contacts]> select name from base where password='solicitous';
+-------+
| name |
+-------+
| James |
+-------+
1 row in set (0.00 sec)
MariaDB [contacts]> select count(*) from base,location where base.name="Barbara" and location.city='Sunnyvale' and base.id=location.id;
+----------+
| count(*) |
+----------+
| 1 |
+----------+
1 row in set (0.00 sec)
[root@server0 ~]# reboot -f
环境已做验脚本:物理机执行 rht-labcheck
[root@client 桌面]# rht-labcheck
######## Check-Report for server0 #######
01. checking selinux status .... pass
02. checking ssh access .... pass
03. checking alias .... pass
04. checking firewall configuration .... pass
05. checking teambridge .. ..pass
06. checking ipv6 address .. .. pass
07. checking smtp-nullclient mail .. .. pass
....
######## Check-Report for desktop0 #######
01. checking selinux status .... pass
02. checking ssh access .... pass
03. checking alias .... pass
04. checking firewall configuration .... pass
05. checking teambridge .. ..pass
06. checking ipv6 address .. .. pass
....
######## ######## ######## ######## ######## #######
Lab-Check finished,
your pass-rate is 100.00%,except skiped item.
注:可反复重置虚拟机进行练习
[root@client 桌面]# rht-vmctl reset classroom
classroom [OK]
域 classroom 已开始
[root@client 桌面]# rht-vmctl reset server
server [OK]
域 server 已开始
[root@client 桌面]# rht-vmctl reset desktop
desktop [OK]
域 desktop 已开始
练习环境已打包百度网盘,注意模拟考试环境与实际考试环境题型相似,但不代表100%完全一样。
网盘地址:
链接:https://pan.baidu.com/s/130L8oe4yNS0MI7nnVyg95A
提取码:6k5v