前言:
root密码:tianyun
example.com: 172.25.0.0/24
cracker.com: 172.24.3.0/24 #my133t.org是在这个网络
YUM: http://content.example.com/rhel7.0/x86_64/dvd
实验提供了server和desktop模拟环境。
首先登录foundation0.ilt.example.com主机,打开终端界面,初始化环境
[kiosk@foundation0 ~]$ rht-vmctl fullreset server
[kiosk@foundation0 ~]$ rht-vmctl fullreset desktop
分别登录server0、desktop0
[kiosk@foundation0 ~]$ ssh -X root@server0
[kiosk@foundation0 ~]$ ssh -X root@desktop0
登录server0和desktop0,准备ldap、Kerberos环境
[root@server0 ~]#lab nfskrb5 setup
[root@desktop0 ~]# lab nfskrb5 setup
开启防火墙:
[root@server0 ~]# systemctl enable firewalld
[root@server0 ~]# systemctl restart firewalld
[root@desktop0 ~]# systemctl enable firewalld
[root@desktop0 ~]# systemctl restart firewalld
确认IP地址、hostname、密码、yum源

1、配置selinux
试题概述:确保server0和desktop0的selinux处于强制启用模式
[root@server0 ~]# vim /etc/selinux/config #修改SELinux主配置文件,重启后依然有效
[root@server0 ~]# getenforce
[root@desktop0 ~]# vim /etc/selinux/config
[root@desktop0 ~]# getenforce

2、配置SSH访问
试题叙述:
按以下要求配置 SSH 访问:
 用户能够从域 example.com 内的客户端 SSH 远程访问您的两个虚拟机系统
 在域 my133t.org 内的客户端不能访问您的两个虚拟机系统
[root@server0 ~]# vim /etc/hosts.allow
sshd : 172.25.0.0/24
[root@server0 ~]# vim /etc/hosts.deny
sshd : 172.24.3.0/24
[root@server0 ~]# yum -y install xinetd
[root@server0 ~]# systemctl restart xinetd
[root@server0 ~]# systemctl enable xinetd
[root@server0 ~]# systemctl restart sshd
[root@server0 ~]# systemctl enable sshd
[root@desktop0 ~]# vim /etc/hosts.allow
sshd : 172.25.0.0/24
[root@desktop0 ~]# vim /etc/hosts.deny
sshd : 172.24.3.0/24
[root@desktop0 ~]# yum -y install xinetd
[root@desktop0 ~]# systemctl restart xinetd
[root@desktop0 ~]# systemctl enable xinetd
[root@desktop0 ~]# systemctl restart sshd
[root@desktop0 ~]# systemctl enable sshd
添加防火墙规则:
字符方式:
[root@server0 ~]# firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.24.3.0/24 service name=ssh drop' #添加拒绝172.24.3.0/24网段内的主机对本机进行ssh访问的 防火墙规则
[root@server0 ~]# firewall-cmd –reload #重新载入,使配置的防火墙规则立即生效
[root@server0 ~]# firewall-cmd --list-all #查看配置的防火墙规则是否生效

[root@desktop0 ~]# firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.24.3.0/24 service name=ssh drop'
[root@desktop0 ~]# firewall-cmd –reload
[root@desktop0 ~]# firewall-cmd --list-all

3.自定义用户环境(别名设置)
试题概述:
在系统 server0 和 desktop0 上创建自定义命令为 qstat,此自定义命令将执行以下命令:
/bin/ps -Ao pid,tt,user,fname,rsz 此命令对系统中所有用户有效
[root@server0 ~]# vim /etc/bashrc
alias qtast='/bin/ps -Ao pid,tt,user,fname,rsz'
[root@server0 ~]# source /etc/bashrc #使全局配置文件对当前Bash进程立即生效
[root@server0 ~]# qtast #查看添加的别名配置是否生效
[root@desktop0 ~]# vim /etc/bashrc
alias qtast='/bin/ps -Ao pid,tt,user,fname,rsz'
[root@desktop0 ~]# source /etc/bashrc
[root@desktop0 ~]# qtast

可以使用echo
[root@server0 ~]# echo "alias qtast='/bin/ps -Ao pid,tt,user,fname,rsz'" >> /etc/bashrc
[root@desktop0 ~]# echo "alias qtast='/bin/ps -Ao pid,tt,user,fname,rsz'" >> /etc/bashrc

4.配置防火墙端口转发
试题概述:
 在系统 server0 配置端口转发,要求如下:
 在 172.25.0.0/24 网络中的系统,访问 server0 的本地端口 5423 将被转发到 80 此设置必须永久有效
[root@server0 ~]# firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.25.0.0/24 forward-port port=5423 protocol=tcp to-port=80'
[root@server0 ~]# firewall-cmd –reload
[root@server0 ~]# firewall-cmd --list-all

5.配置链路聚合
试题概述:
在 server0 和 desktop0 之间按以下要求配置一个链路:
 此链路使用接口 eth1 和 eth2
 此链路在一个接口失效时仍然能工作
 此链路在 server0 使用的地址 172.16.X.20/255.255.255.0
 此链路在 desktop0 使用的地址 172.16.X.25/255.255.255.0
 此链路在系统重启之后依然保持正常状态
[root@server0 ~]# nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}' #创建网卡绑定
[root@server0 ~]# nmcli connection add type team-slave con-name team0-eth1 ifname eth1 master team0 #将网卡添加到网卡绑定
[root@server0 ~]# nmcli connection add type team-slave con-name team0-eth2 ifname eth2 master team0
[root@server0 ~]# vim /etc/sysconfig/network-scripts/ifcfg-team0
BOOTPROTO=static
IPADDR=172.16.0.20
NETMASK=255.255.255.0
[root@server0 ~]# systemctl restart network
[root@server0 ~]# teamdctl team0 stat

[root@desktop0 ~]# nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'
[root@desktop0 ~]# nmcli connection add type team-slave con-name team0-eth1 ifname eth1 master team0
[root@desktop0 ~]# nmcli connection add type team-slave con-name team0-eth2 ifname eth2 master team0
[root@desktop0 ~]# vim /etc/sysconfig/network-scripts/ifcfg-team0
BOOTPROTO=static
IPADDR=172.16.0.25
NETMASK=255.255.255.0
[root@desktop0 ~]# systemctl restart network
[root@desktop0 ~]# teamdctl team0 stat

6.配置 IPv6 地址
试题概述:
在您的考试系统上配置接口 eth0 使用下列 IPv6 地址:
 server0上的地址应该是 2003:ac18::305/64
 desktop0 上的地址应该是 2003:ac18::306/64
 两个系统必须能与网络 2003:ac18/64 内的系统通信
 地址必须在重启后依旧生效
 两个系统必须保持当前的 IPv4 地址并能通信
[root@server0 ~]# nmcli connection show
[root@server0 ~]# nmcli connection modify 'System eth0' connection.autoconnect yes ipv6.method manual +ipv6.address '2003:ac18::305/64'
[root@server0 ~]# nmcli connection up 'System eth0'
[root@server0 ~]# ifconfig

[root@desktop0 ~]# nmcli connection show
[root@desktop0 ~]# nmcli connection modify 'System eth0' connection.autoconnect yes ipv6.method manual +ipv6.address '2003:ac18::306/64'
[root@desktop0 ~]# nmcli connection up 'System eth0'
[root@desktop0 ~]# ifconfig
[root@server0 ~]# ping6 2003:ac18::306 #使用ping6测试是否可以连通

7.配置本地邮件服务
试题概述:
在系统 server0 和 desktop0 上配置邮件服务,满足以下要求:
 这些系统不接收外部发送来的邮件
 在这些系统上本地发送的任何邮件都会自动路由到 server1.groupX.example.com
 从这些系统上发送的邮件显示来自于groupX.example.com
 您可以通过发送邮件到本地用户student来测试您的配置,系统
 server1.groupX.example.com 已经配置把此用户的邮件转到下列
URL : http://server1.groupX.example.com/received_mail/3
参考/usr/share/doc/postfix-2.10.1/README_FILES/STANDARD_CONFIGURATION_README,搜索null client

[root@server0 ~]# vim /etc/postfix/main.cf
relayhost = [smtp0.example.com]
myorigin = example.com
mydestination =
inet_interfaces = loopback-only #只接收来自本地发来的邮件
local_transport = error:local mail delivery is disabled
[root@server0 ~]# systemctl restart postfix.service
[root@server0 ~]# systemctl enable postfix.service
[root@server0 ~]# firewall-cmd --permanent --add-service=smtp
[root@server0 ~]# firewall-cmd –-reload
[root@server0 ~]# firewall-cmd --list-all

[root@desktop0 ~]# vim /etc/postfix/main.cf
relayhost = [smtp0.example.com]
myorigin = example.com
mydestination =
inet_interfaces = loopback-only
local_transport = error:local mail delivery is disabled
[root@desktop0 ~]# systemctl restart postfix.service
[root@desktop0 ~]# systemctl enable postfix.service
[root@desktop0 ~]# firewall-cmd --permanent --add-service=smtp
[root@desktop0 ~]# firewall-cmd –-reload
[root@desktop0 ~]# firewall-cmd --list-all
验证;
[root@server0 ~]# mail root
[root@server0 ~]# tail /var/log/maillog
考试时候验证方式,将链接复制到浏览器中验证。

8.通过 Samba 发布共享目录
试题概述:
 在 server0 上通过 SMB 共享/common 目录:
 您的 SMB 服务器必须是 STAFF 工作组的一个成员
 共享名必须为 common
 只有 example.com 域内的客户端可以访问 common 共享
 common 必须是可以浏览的
 用户ldapuser1必须能够读取共享中的内容,如果需要的话,验证的密码是kerberos
[root@server0 ~]# yum -y install samba*
[root@server0 ~]# mkdir /common #创建目录
[root@server0 ~]# setsebool -P samba_export_all_rw=on
[root@server0 ~]# id ldapuser1
[root@server0 ~]# pdbedit -a ldapuser1
[root@server0 ~]# vim /etc/samba/smb.conf
查找workgroup,修改一下
workgroup = STAFF
跳到最后一行增加以下内容
[common]
path = /common
hosts allow = 172.25.0.0/24
[root@server0 ~]# firewall-cmd --permanent --add-service=samba
[root@server0 ~]# firewall-cmd –-reload
[root@server0 ~]# firewall-cmd --list-all
[root@server0 ~]# systemctl restart smb nmb
[root@server0 ~]# systemctl enable smb nmb

验证:在desktop安装Samba客户端
[root@desktop0 ~]# yum -y install samba-client cifs-utils
[root@desktop0 ~]# smbclient -L server0 -U ldapuser1
不输入密码或输入正确密码可以显示,输入错误密码不显示

9.配置多用户 Samba 挂载
试题概述:
在 server0 通过 SMB 共享目录/devops,并满足以下要求:
 共享名为 devops
 共享目录 devops 只能被example.com 域中的客户端使用
 共享目录 devops 必须可以被浏览
 用户 ldapuser2 必须能以读的方式访问此共享,该问密码是kerberos
 用户 ldapuser3 必须能以读写的方式访问此共享,访问密码是kerberos
 此共享永久挂载在 desktop0 上的/mnt/dev 目录,并使用用户ldapuser2 作为认证,任何用户可以通过用户 ldapuser3 来临时获取写的权限
服务端配置:
[root@server0 ~]# mkdir /devops
[root@server0 ~]# id ldapuser2
[root@server0 ~]# id ldapuser3
[root@server0 ~]# pdbedit -a ldapuser2
[root@server0 ~]# pdbedit -a ldapuser3
[root@server0 ~]# setfacl -m u:ldapuser3:rwx /devops/
[root@server0 ~]# vim /etc/samba/smb.conf
[devops]
path = /devops
write list = ldapuser3
valid users = ldapuser2,ldapuser3
hosts allow = 172.25.0.0/24
[root@server0 ~]# systemctl restart smb nmb
[root@server0 ~]# systemctl enable smb nmb

客户端配置:
[root@desktop0 ~]# smbclient -L server0
[root@desktop0 ~]# mkdir /mnt/dev
[root@desktop0 ~]# vim /etc/fstab
//172.25.0.11/devops /mnt/dev cifs username=ldapuser2,password=kerberos,multiuser,sec=ntlmssp,_netdev 0 0

[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df –hT
验证:
[root@desktop0 ~]# su - ldapuser2
[ldapuser2@desktop0 ~]$ cd /mnt/dev
[ldapuser2@desktop0 dev]$ cifscreds add -u ldapuser2 172.25.0.11
[root@desktop0 ~]# su - ldapuser3
[ldapuser3@desktop0 ~]$ cifscreds add -u ldapuser3 172.25.0.11
[ldapuser3@desktop0 ~]$ touch a
[ldapuser3@desktop0 ~]$ ls
[ldapuser3@desktop0 ~]$ rm -rf a
[ldapuser3@desktop0 ~]$ ls

10.配置 NFS 共享服务
试题概述:
 在 server0 配置 NFS 服务,要求如下:
 以只读的方式共享目录/public,同时只能被example.com 域中的系统访问
 以读写的方式共享目录/protected,能被example.com 域中的系统访问
 访问/protected 需要通过 Kerberos 安全加密,您可以使用下面 URL 提供的密钥:http://cla***oom/pub/keytabs/server0.keytab
 目录/protected 应该包含名为 project 拥有人为 ldapuser0 的子目录
 用户 ldapuser4 能以读写方式访问/protected/project
[root@server0 ~]# mkdir -p /public /protected/project
[root@server0 ~]# chown ldapuser0 /protected/project/
[root@server0 ~]# setfacl -m u:ldapuser4:rwx /protected/project/
[root@server0 ~]# wget -O /etc/krb5.keytab http://cla***oom/pub/keytabs/server0.keytab
[root@server0 ~]# vim /etc/exports
/public 172.25.0.0/24(ro)
/protected 172.25.0.0/24(rw,sec=krb5p)
[root@server0 ~]# vim /etc/sysconfig/nfs
修改第十三行
RPCNFSDARGS="-V4.2"
[root@server0 ~]# systemctl start nfs-secure-server nfs-server
[root@server0 ~]# systemctl enable nfs-secure-server nfs-server
[root@server0 ~]# exportfs –rv
[root@server0 ~]# firewall-cmd --permanent --add-service=nfs
[root@server0 ~]# firewall-cmd --permanent --add-service=mountd
[root@server0 ~]# firewall-cmd --permanent --add-service=rpc-bind
[root@server0 ~]# firewall-cmd –reload
[root@server0 ~]# firewall-cmd --list-all

11.挂载 NFS 共享
试题概述:
在 desktop0 上挂载一个来自 server0 的共享,并符合下列要求:
 /public 挂载在下面的目录上/mnt/nfsmount
 /protected 挂载在下面的目录上/mnt/nfssecure 并使用安全的方式,密钥下载 URL:http://cla***oom/pub/keytabs/desktop0.keytab
 用户 ldapuser4 能够在/mnt/nfssecure/project 上创建文件
 这些文件系统在系统启动时自动挂载
[root@desktop0 ~]# showmount -e 172.25.0.11 查看server查看端
[root@desktop0 ~]# mkdir -p /mnt/nfsmount /mnt/nfssecure
[root@desktop0 ~]# wget -O /etc/krb5.keytab http://cla***oom/pub/keytabs/desktop0.keytab
[root@desktop0 ~]# systemctl start nfs-secure
[root@desktop0 ~]# systemctl enable nfs-secure
[root@desktop0 ~]# vim /etc/fstab
server0.example.com:/public /mnt/nfsmount nfs _netdev 0 0
server0.example.com:/protected /mnt/nfssecure nfs sec=krb5p,v4.2,_netdev 0 0
[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df –hT
验证:
[root@desktop0 ~]# ssh ldapuser4@localhost
密码为kerberos
[ldapuser4@desktop0 ~]$ cd /mnt/nfssecure/project/
[ldapuser4@desktop0 project]$ ls
[ldapuser4@desktop0 project]$ touch a
[ldapuser4@desktop0 project]$ ls
[ldapuser4@desktop0 project]$ rm -rf a
[ldapuser4@desktop0 project]$ ls

12.实现一个 web 服务器
试题概述:
 为 http://server0.example.com 配置 Web 服务器:
 从http://server1.groupX.example.com/materials/station.html下载一个主页文件,并将该文件重命名为 index.html (自己vim编辑)
 将文件 index.html 拷贝到您的 web 服务器的 DocumentRoot 目录下
 不要对文件 index.html 的内容进行任何修改
 来自于 example.com 域的客户端可以访问此 Web 服务
 来自于 my133t.org 域的客户端拒绝访问此 Web 服务

[root@server0 ~]# yum -y install httpd
[root@server0 ~]# cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/
[root@server0 ~]# vim /etc/httpd/conf.d/httpd-vhosts.conf
在最后一行添加

DocumentRoot /var/www/html
ServerName server0.example.com



Require not ip 172.24.3.0/24
Require all granted


[root@server0 ~]# cd /var/www/html/
[root@server0 html]# wget http://cla***oom/pub/materials/station.html -O index.html
[root@server0 html]# vim index.html
http test1
[root@server0 html]# systemctl restart httpd
[root@server0 html]# systemctl enable httpd
[root@server0 html]# firewall-cmd --permanent --add-service=http
[root@server0 html]# firewall-cmd --permanent --add-service=https
[root@server0 html]# firewall-cmd –reload
[root@server0 html]# firewall-cmd --list-all
验证:
[root@server0 html]# firefox
输入server0.example.com

13.配置安全 web 服务试题概述:
 为站点 http://server0.example.com 配置 TLS 加密:
 一个已签名证书从 http://cla***oom/pub/example-ca.crt 获取 100行
 此证书的密钥从 http://cla***oom/pub/tls/certs/server0.crt 获取 122行
 此证书的签名授权信息从 http://cla***oom/pub/tls/private/server0.key 获取 107行
[root@server0 ~]# yum -y install mod_ssl
[root@server0 ~]# cd /etc/pki/tls/certs/
[root@server0 certs]# wget http://cla***oom/pub/example-ca.crt
[root@server0 certs]# wget http://cla***oom/pub/tls/certs/server0.crt
[root@server0 certs]# cd ../private/
[root@server0 private]# wget http://cla***oom/pub/tls/private/server0.key
[root@server0 private]# chmod 600 server0.key
[root@server0 private]# vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/server0.crt 修改第100行
SSLCertificateKeyFile /etc/pki/tls/private/server0.key 修改第107行
SSLCACertificateFile /etc/pki/tls/certs/example-ca.crt 修改第122行
[root@server0 private]# systemctl restart httpd.service
[root@server0 private]# systemctl enable httpd.service
验证:
打开火狐浏览器
[root@server0 private]# firefox

按F5刷新网页

14.配置虚拟主机
试题概述:
在 server0 上扩展您的 web 服务器,为站点 http://www0.example.com 创建一
个虚拟主机,然后执行下述步骤:
 设置 DocumentRoot 为/var/www/virtual
 从 http://cla***oom/pub/materials/www.html下载文件并重命名为index.html(自己vim创建index文件)
 不要对文件 index.html 的内容做任何修改
 将文件 index.html 放到虚拟主机的 DocumentRoot 目录下
 确保 harry 用户能够在/var/www/virtual 目录下创建文件
 注意:原始站点 http://server0.example.com 必须仍然能够访问,名称服务器
 example.com 提供对主机名 www0.example.com 的域名解析。

[root@server0 ~]# cd /var/www/virtual
[root@server0 ~]# mkdir /var/www/virtual
[root@server0 ~]# useradd harry
[root@server0 ~]# setfacl -m u:harry:rwx /var/www/virtual/
[root@server0 ~]# cd /var/www/virtual/
[root@server0 virtual]# wget http://cla***oom/pub/materials/www.html -O index.html
[root@server0 virtual]# vim index.html
http test2
[root@server0 virtual]# vim /etc/httpd/conf.d/01-www0.conf

ServerName www0.example.com
DocumentRoot /var/www/virtual

[root@server0 virtual]# systemctl restart httpd
[root@server0 virtual]# systemctl enable httpd
验证:
[root@server0 virtual]# su - harry
[harry@server0 ~]$ cd /var/www/virtual/
[harry@server0 virtual]$ touch a
[harry@server0 virtual]$ ls
[harry@server0 virtual]$ rm -rf a
[harry@server0 virtual]$ ls
[harry@server0 virtual]$ exit
打开火狐浏览器
[root@server0 virtual]# firefox
输入www0.example.com

15.配置 web 内容的访问
试题概述:
 在您的 server0上的 web 服务器的 DocumentRoot 目录下创建一个名为 private 的目录,要求如下:
 从 http://cla***oom/pub/materials/private.html下载一个文件副本到这个目录,并且得命名为 index.html (vim手动创建)
 不要对这个文件的内容做任何修改
 从 server0上,任何人都可以浏览 private 的内容,但是从其他系统不能访问这个目录的内容
[root@server0 ~]# mkdir /var/www/html/private
[root@server0 ~]# cd /var/www/html/private/
[root@server0 private]# wget http://cla***oom/pub/materials/private.html -O index.html
[root@server0 private]# vim index.html
http test3
[root@server0 private]# vim /etc/httpd/conf.d/00-default.conf

Require ip 127.0.0.1 ::1 172.25.0.11

[root@server0 private]# systemctl restart httpd
[root@server0 private]# systemctl enable httpd
验证:
[root@server0 private]# firefox
在server0和desktop0浏览器输入http://server0.example.com/private
server0可以打开,desktop0不可以打开

16.实现动态 WEB 内容
试题概述:
 在 server0 上配置提供动态 Web 内容,要求如下:
 动态内容由名为webapp0.example.com 的虚拟主机提供
 虚拟主机侦听在端口 8909
 从http://claoom/pub/materials/webinfo.wsgi下载一个脚本, 然后放在适当的位置,无论如何不要修改此文件的内容(需要手动vim编辑)
 客户端访问 http:// webapp0.example.com:8909 可接收到动态生成的 Web 页
 此 http:// webapp0.example.com:8909/必须能被example.com 域内的所有系统访问
[root@server0 ~]# yum -y install mod_wsgi
[root@server0 ~]# mkdir /var/www/webapp0
[root@server0 webapp0]# cd /var/www/webapp0/
[root@server0 webapp0]# wget http://claoom/pub/materials/webinfo.wsgi
[root@server0 webapp0]# vim webinfo.wsgi
#!/usr/bin/env python
import time

def application (environ, start_response):
response_body = 'UNIX EPOCH time is now: %s\n' % time.time()
status = '200 OK'
response_headers = [('Content-Type', 'text/plain'),
('Content-Length', '1'),
('Content-Length', str(len(response_body)))]
start_response(status, response_headers)
return [response_body]
[root@server0 webapp0]# vim /etc/httpd/conf.d/02-wsgi.conf
Listen 8909

ServerName webapp0.example.com
DocumentRoot /var/www/webapp0
WSGIScriptAlias / /var/www/webapp0/webinfo.wsgi

[root@server0 webapp0]# semanage port -a -t http_port_t -p tcp 8909
[root@server0 webapp0]# firewall-cmd --permanent --add-port=8909/tcp
[root@server0 webapp0]# firewall-cmd –reload
[root@server0 webapp0]# firewall-cmd --list-all
[root@server0 webapp0]# systemctl restart httpd
[root@server0 webapp0]# systemctl enable httpd
验证:
在server0和desktop0分别打开浏览器
输入http:// webapp0.example.com:8909
Server0端:

17.创建一个脚本
试题概述:
在 server0 上创建一个名为/root/test1.sh 的脚本,让其提供下列特性:
 当运行/root/test.sh cat,输出为 dog
 当运行/root/test.sh dog,输出为 cat
 当没有任何参数或者参数不是 cat 或者 dog 时,其错误输出产生以下的信息:
/root/test.sh dog|cat
[root@server0 ~]# cd /root
[root@server0 ~]# vim test1.sh
#!/bin/bash
case $1 in
cat)
echo 'dog'
;;
dog)
echo 'cat'
;;
*)
echo '/root/test1.sh cat|dog'
esac
[root@server0 ~]# chmod +x test1.sh
[root@server0 ~]# sh test1.sh cat

18.创建一个添加用户的脚本
试题概述:
在 server0 上创建一个脚本,名为/root/test2.sh,此脚本能实现为系统 server0 创
建本地用户,并且这些用户的用户名来自一个包含用户名的文件,同时满足下列要求:
 此脚本要求提供一个参数,此参数就是包含用户名列表的文件
 如果没有提供参数,此脚本应该给出下面的提示信息 Usage:/root/batchusers 然后退出并返回相应的值
 如果提供一个不存在的文件名,此脚本应该给出下面的提示信息 In put file not found 然后退出并返回相应的值
 创建的用户登陆 Shell 为/bin/false,此脚本不需要为用户设置密码
 您可以从下面的 URL 获取用户名列表作为测试用: http://server1.groupX.example.com/materials/userlist(自己本地创建测试)
[root@server0 ~]# cd /root
[root@server0 ~]# vim test2.sh
#!/bin/bash
if [ $# -eq 0 ];then
echo 'Usage: /root/batchusers userfile'
exit 1
fi
if [ ! -f $1 ];then
echo 'Input file not found'
exit 1
fi
while read line
do
useradd -s /bin/false $line
done < $1
[root@server0 ~]# vim userlist
mk
cd
dir
[root@server0 ~]# sh test2.sh userlist

19.配置 iSCSI 服务端
试题概述:
配置 server0 提供 iSCSI 服务,磁盘名为 iqn.2016-02.com.example.:server0,并符合下列要求:
 服务端口为 3260
 使用 iscsi_store 作其后端卷,其大小为 3GiB
 此服务只能被 desktop0.example.com 访问
[root@server0 ~]# fdisk /dev/vdb
Command (m for help): p
Command (m for help): n
Select (default p): p
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +3G
Command (m for help): p
Command (m for help): w
[root@server0 ~]# ls /dev/vdb*
[root@server0 ~]# yum -y install targetcli
[root@server0 ~]# targetcli
/> ls
/> /backstores/block create iscsi_store /dev/vdb1
/> ls
/> iscsi/ create iqn.2016-02.com.example:server0
/> ls
/> /iscsi/iqn.2016-02.com.example:server0/tpg1/acls create iqn.2016-02.com.example:desktop0
/> ls
/> /iscsi/iqn.2016-02.com.example:server0/tpg1/luns create /backstores/block/iscsi_store
/> /iscsi/iqn.2016-02.com.example:server0/tpg1/portals create 172.25.0.11
/> ls
/> saveconfig
/> exit
[root@server0 ~]# systemctl restart target
[root@server0 ~]# systemctl enable target
[root@server0 ~]# firewall-cmd --permanent --add-port=3260/tcp
[root@server0 ~]# firewall-cmd –reload
[root@server0 ~]# firewall-cmd --list-all

20.配置 iSCSI 客户端
试题概述:
 配置 desktop0 使其能连接 server0 上提供的 iqn.2016-02.com.example.groupX:system1,
 并符合以下要求:
 iSCSI 设备在系统启动的期间自动加载
 块设备 iSCSI 上包含一个大小为 2100MiB 的分区,并格式化为 ext4 文件系统
 此分区挂载在/mnt/data 上,同时在系统启动的期间自动挂载
[root@desktop0 ~]# yum -y install iscsi-initiator-utils
[root@desktop0 ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2016-02.com.example:desktop0
[root@desktop0 ~]# systemctl restart iscsid iscsi
[root@desktop0 ~]# systemctl enable iscsid iscsi
[root@desktop0 ~]# iscsiadm -m discovery -t st -p server0
[root@desktop0 ~]# iscsiadm -m node -T iqn.2016-02.com.example:server0 -p 172.25.0.11 –l
[root@desktop0 ~]# lsblk

[root@desktop0 ~]# mkdir /mnt/data
[root@desktop0 ~]# fdisk /dev/sda
Command (m for help): p
Command (m for help): n
Select (default p): p
Last sector, +sectors or +size{K,M,G} (8192-6291455, default 6291455): +2100M
Command (m for help): p
Command (m for help): w
[root@desktop0 ~]# mkfs.ext4 /dev/sda1
[root@desktop0 ~]# blkid /dev/sda1
[root@desktop0 ~]# vim /etc/fstab
UUID="a4c1b6a5-6abc-4c92-a330-71fd40be67bd" /mnt/data ext4 _netdev 0 0
[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df –h
[root@desktop0 ~]# iscsiadm -m discovery -t st -p server0
[root@desktop0 ~]# iscsiadm -m node -T iqn.2016-02.com.example:server0 -p 172.25.0.11 –l
[root@desktop0 ~]# sync ; reboot –f

21.配置一个数据库
试题概述:
 在 server0 上创建一个 MariaDB 数据库,名为 Contacts,并符合以下条件:
 数据库应该包含来自数据库复制的内容,复制文件的 URL 为: http://server1.groupX.example.com/materials/users.sql(需要vim手写)
 数据库只能被 localhost 访问
 除了 root 用户,此数据库只能被用户 Raikon 查询,此用户密码为 redhat
 root 用户的密码为 redhat,同时不允许空密码登陆。

[root@server0 ~]# yum -y install mariadb-server mariadb
[root@server0 ~]# vim /etc/my.cnf
skip-networking
[root@server0 ~]# systemctl restart mariadb
[root@server0 ~]# systemctl enable mariadb
[root@server0 ~]# mysqladmin –u root -p password 'redhat'
Enter password: #直接回车 默认密码为空
[root@server0 ~]# mysql -u root –p
MariaDB [(none)]> create database Contacts;
MariaDB [(none)]> grant select on Contacts.* to Raikon@localhost identified by 'redhat';
MariaDB [(none)]> show databases;
MariaDB [(none)]> delete from mysql.user where password='';
MariaDB [(none)]> quit
[root@server0 ~]# vim users.sql
use Contacts;

create table if not exists base (id INT PRIMARY KEY auto_increment NOT NULL, name VARCHAR(100), password VARCHAR (100));
create table if not exists location (id INT PRIMARY KEY auto_increment NOT NULL, name VARCHAR(100), city VARCHAR (100));

insert into base(name,password) values ('bobo','123');
insert into base(name,password) values ('harry','456');
insert into base(name,password) values ('natasha','789');
insert into base(name,password) values ('Barbara','solicitous');
insert into location(name,city )values ('bobo','beijing');
insert into location(name,city )values ('harry','shanghai');
insert into location(name,city )values ('natasha','tianjin');
insert into location(name,city )values ('Barbara','Sunnyvale');
[root@server0 ~]# mysql -u root -p Contacts < users.sql
[root@server0 ~]# mysql -uroot –predhat
MariaDB [(none)]> use Contacts;
MariaDB [Contacts]> show tables;
或者使用source命令导入
MariaDB [Contacts]> source /root/users.sql
MariaDB [Contacts]> show tables;

22.数据库查询(填空)
试题概述:
在系统 server0 上使用数据库 Contacts,并使用相应的 SQL 查询以回答下列问题:
 密码是 solicitous 的人的名字?

 有多少人的姓名是 Barbara 同时居住在 Sunnyvale?

[root@server0 ~]# mysql -u root –predhat
MariaDB [(none)]> use Contacts;
MariaDB [Contacts]> show tables;
MariaDB [Contacts]> desc base;
MariaDB [Contacts]> desc location;
MariaDB [Contacts]> select name from base where password='solicitous';
MariaDB [Contacts]> select count(*) from base,location where base.name='Barbara' and location.city='Sunnyvale' and base.id=location.id;