RedHat LInux 认证工程师考试总结

原创
2020/02/09 19:31
阅读数 1K

环境准备

1、配置 YUM 软件仓库

      server 和 desktop 机器上做同样的操作!!!!
 
# // server:
$ vim /etc/yum.repos.d/base.repo
[rhce]
name = EX300
gpgcheck = 0
baseurl = http://classroom.example.com/content/rhel7.0/x86_64/dvd/

### 清空之前的软件仓库缓存
$ yum clean all
### 刷新软件仓库
$ yum repolist

### 拷贝到 desktop 上
$ scp /etc/yum.repos.d/base.repo root@172.25.0.10:/etc/yum.repos.d/

开始答题

1、配置 SELinux

     虚拟机 server 和 desktop 的 SELinux 必须运行在 Enforcing 模式。
 
$ vim /etc/selinux/config 
$ grep -v ^# /etc/selinux/config 
SELINUX=enforcing
SELINUXTYPE=targeted
### 修改当前模式为enforcing  
$ setenforcing 1
$ sestatus
...
Current mode:                   enforcing
Mode from config file:          enforcing
...

2、配置 ssh 访问

按以下要求配置 SSH 访问
用户能够从域 example.com 内的客户端通过 SSH 远程访问您的两个虚拟机系统
在域 my133t.org 内的客户端不能访问您的两个虚拟机
#//server
### 检查一下防火墙是否开启
$ systemctl status firewalld.service
...
Active : active (running)
...
$ firewall-cmd --permanent --add-service=ssh
$ firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.25.10.0/24 service name=ssh reject'
$ firewall-cmd --reload
### 检查
$ firewall-cmd --list-all

#//desktop 做同样的操作

3、自定义用户环境

在系统 server0 和 desktop0 上创建自定义命令为 qstat 此定义命令将执行以下命令:
/bin/ps -Ao pid,tt,user,fname,rsz
此命令对系统中所有用户有效。
 
#//server
$ echo "alias qstat='/bin/ps -Ao pid,tt,user,fname,rsz'" >> /etc/bashrc
$ source /etc/bashrc 
### 检查一下
$ qstat

#//desktop 做同样的操作

4、配置端口转发

在系统 server0 配置端口转发,要求如下:
在 172.25.0.0/24 网络中的系统,访问 server0 的本地端口 5423 将被转发到 80
此设置必须永久有效。
#//server
$ firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.25.0.0/24 forward-port port=5423 protocol=tcp to-prot=80'
$ firewall-cmd --reload
### 检查
firewall-cmd --list-all
或者执行
#//server
$ firewall-cmd --permanent --add-forward-port=port=5423:proto=tcp:toport=80
$ firewall-cmd --reload
### 检查
$ firewall-cmd --list-forward-ports 

5、配置链路聚合

在 server0.example.com 和 desktop0.example.com 之间按以下要求配置一个链接:
此链路使用接口 eth1 和 eth2
此链路在一个接口失效时仍然能工作
此链路 server0 使用下面的地址 172.16.1.65/255.255.255.0
此链路 desktop0 使用下面的地址 172.16.1.75/255.255.255.0
此链路在系统重启之后依然保持正常状态。
如果对命令不熟悉,可以使用帮助文件。如果熟悉则跳过帮助。
-----help---分割线--------
$ man nmcli-examples ---->用模板7
$ man teamd.conf ---> 这时两个核心的帮助
"runner":{"name":"activebackup"}  ---> 用这个帮助
$ cat /usr/share/doc/teamd-1.9/example_ifcfgs/ifcfgs-team_test0 --->查看这里也行
-----help---分割线--------
#//server
$ nmcli connection add type team con-name Team0 ifname team0 config '{"runner":  {"name":"activebackup"}}'
--->注意单引号和双引号
### 检查
$ ip a s
...
$ 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 
$ nmcli connection modify Team0 ipv4.addresses '172.16.1.65/24' ipv4.method manual 
$ nmcli connection reload 
$ nmcli connection up Team0 
### 验证
$ teamdctl team0 state
#//desktop ———>做同样的操作
注意ip地址:nmcli connection modify Team0 ipv4.addresses '172.16.1.75/24' ipv4.method manual

6、配置IPv6地址

在您的考试系统上配置接口 eth0 使用下列 IPv6 地址:
server0 上的地址应该是 2014:ac18::a/64
desktop0 上的地址应该是 2014:ac18::b/64
两个系统必须能与网络 2014:ac18/64 内的系统通信
地址必须在重启后依然生效
两个系统必须保持当前的IPv4地址并能通信。
#//server
$ nmcli connection modify 'System eth0' ipv6.addresses '2014:ac18::a/64' ipv6.method manual 
$ nmcli connection reload 
### 激活
$ nmcli connection up 'System eth0'

#//server
### 验证 
$ ping 172.25.0.10
#//desktop 
$ nmcli connection modify 'System eth0' ipv6.addresses '2014:ac18::b/64' ipv6.method manual 
$ nmcli connection reload 
### 激活
$ nmcli connection up 'System eth0'

#//desktop
### 验证 
$ ping6 2014:ac18::a

7、配置本地邮件服务

在系统 server0 和 desktop0 上配置邮件服务,满足以下要求:
这些系统不接收外部发送来的邮件
在这些系统上发送的任何邮件都会自动路由到 classroom.example.com
从这些系统上发送的邮件显示来自于 example.com
您可以通过发送邮件到本地用户 hal 来测试您的配置,系统 classroom.example.com 已经配置把此用户的邮件转到下列 URL:
http://classroom.example.com/cgi-bin/recevied_mail
### 查看题目要求,一个是做邮件转发,另一个是做邮件别名
#//server
$ cd /etc/postfix/
$ cp -a main.cf{,.bak} 

修改配置文件 /etc/postfix/main.cf 修改以下几行:
$ vim /etc/postfix/main.cf
83 mydomain = example.com                      --->域
99 myorigin = $mydomain                        --->配置邮件来源域
164 mydestination = ""                         --->配置邮件目的地
316 relayhost = [classroom.example.com]       --->配置邮件路由主机

$ systemctl restart postfix.service 

### 测试
$ echo "$HOSTNAME" |mail -s "nullclient" hal@classroom.example.com 
$ mailq 
Mail queue is empty --->没有,表示成功了
#//desktop
$ scp /etc/postfix/main.cf root@desktop0:/etc/postfix/
--->yes,然后输入root密码

### 测试
$ echo "$HOSTNAME" |mail -s "nullclient" hal@classroom.example.com 
$ mailq 

8、通过 SMB 共享目录

在 server0 上配置 SMB 服务
您的 SMB 服务器必须是 STAFF 工作组的一个成员
共享 /groupdir 目录共享名必须为 common
只有 example.com 域内的客户端可以访问 common 共享
common 必须是可以浏览的
用户 barney 必须能够读取共享中的内容,如果需要的,验证的密码是 flectrag
#//server
$ yum -y install samba samba-client 
$ systemctl enable smb nmb        --->开机启动

$ mkdir /groupdir 
$ setfacl -m u:barney:rx   /groupdir     --->注意这里是 rx ,如果写成 rw 执行 ls 会提示没有权限

$ chcon -t samba_share_t /groupdir        --->此行及下一行,可在/etc/samba/smb.conf文件中找到 SELINUX 的位置查看
$ setsebool -P samba_export_all_ro 1

$ cp -a /etc/samba/smb.conf{,.bak}        --->备份很重要,要加 -a 把权限位也复制上
$ vim /etc/samba/smb.conf
89    workgroup = STAFF 
95    hosts allow = 127.   172.25.0.     --->允许访问的域 ,172.25.0. 是 example.com 域内所有客户端
321   [common]                           --->共享名
322   path = /groupdir                   --->共享的目录
323   browseable = yes                   --->可浏览

$ systemctl start smb nmb     --->启动

$ smbpasswd -a barney 
New SMB password: [flectrag]
Retype new SMB password: [flectrag]
$ pdbedit -L
barney : 1001 :
###测试
$ smbclient //server0.example.com/common -U barney
Enter barney's password: [flectrag]
Domain=[STAFF] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls 
...
40913 blocks of size 262144. 28449 blocks available
smb: \> exit

9、配置多用户 SMB 挂载

在 server0 共享通过 SMB 目录 /data 满足以下要求:
共享名为 data
共享目录 data 只能被 example.com 域中的客户端使用
共享目录 data 必须可以被浏览
用户 manager 必须能以读的方式访问此共享,访问密码是 flectrag
用户 wolferyne 必须能以读写的方式访问此共享,访问密码是 flectrag
此共享永久挂载在 desktop0.example.com 上的 /mnt/multi 目录,并使用用户 manager 作为认证,任何用户可以通过用户 wolferyne 来临时获取写的权限。
#//server 
$ mkdir /data 
$ setfacl -m u:manager:rx /data 
$ setfacl -m u:wolferyne:rwx /data   --->注意这里是 rwx ,一定要加 x 执行权限

$ chcon -t samba_share_t /data          --->此行及下一行,可在/etc/samba/smb.conf文件中找到 SELINUX 的位置查看
$ setsebool -P samba_export_all_rw 1 

$ cp -a /etc/samba/smb.conf{,.bak2}
$ vim /etc/samba/smb.conf 
324      [data]
325      path = /data 
326     public = yes 
327     writable = yes
328     write list = wolferyne 

$ smbpasswd -a manager              --->设置smb用户密码
New SMB password: [flectrag]
Retype new SMB password: [flectrag]
$ smbpasswd -a wolferyne            --->设置smb用户密码
New SMB password: [flectrag]
Retype new SMB password: [flectrag]

$ systemctl restart smb nmb 

//添加防火墙策略
$ firewall-cmd --permanent --add-service=samba
$ firewall-cmd --reload
客户端配置
#//desktop 
$ yum -y install samba-client cifs-utils
$ mkdir /mnt/multi

--->查看mount的帮助 执行 man -k mount ,找到 mount.cifs 查看具体
$ vim /root/mysmb    --->新建smb的 credentials 认证文件
username=manager
password=flectrag

$ vim /etc/fstab    --->设置开机自动挂载
//server0.example.com/data    /mnt/multi     cifs     defaults,credentials=/root/mysmb,multiuser   0     0

$ mount -a   --->将/etc/fstab的所有内容重新加载
//一定要去先去server0上添加samba防火墙策略,不然提示 Unable to find suitable address.
//或者提示:Connection to server0.example.com failed(Error NT_STATUS_HOST_UNREACHABLE)
###测试
$ su - wolferyne 
$ cifscreds add server0 
Password: [flectrag]
$ cd /mnt/multi/
$ touch a 
$ exit 

10、配置 NFS 服务

在 server0 配置 NFS 服务,要求如下:
以只读的方式共享目录 /public 能被 example.com 域中的系统访问
以读写的方式共享目录 /protected 能被 example.com 域中的系统访问
访问 /protected 需要通过 Kerberos 安全加密,您可以使用下面 URL 提供的密钥:
http://classroom.example.com/pub/keytabs/server0.keytab
目录 /protected 应该包含名为 restricted 拥有人为 ldapuser0 的子目录
用户 ldapuser0 能以读写方式访问 /protected/restricted
#//server 
$ wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/server0.keytab  
 --->下载到/etc/krb5.keytab 对应/etc/exports 配置中的sec=krb5p
 ---> kerberos 需要时间同步 $ system-config-date -—->$ chronyc sources -v 
 ---> 不然mount -a会提示被拒绝访问。
 
$ mkdir /public 
$ chown nfsnobody /public 

$ vim /etc/exports 
/public  *.example.com(ro)   --->以只读的方式共享目录 /public 能被 example.com 域中的系统访问

$ mkdir -p /protected/restricted
$ chown nfsnobody /protected
$ chown ldapuser0 /protected/restricted  --->目录 /protected/restricted 拥有人为 ldapuser0

$ vim /etc/exports 
/protected  *.example.com(rw,sync,sec=krb5p)  --->以读写的方式共享目录 /protected 能被 example.com 域中的系统访问
/public  *.example.com(ro)

$ exportfs -avr      --->启动共享

$ systemctl enable nfs-server nfs-secure-server 
$ systemctl start nfs-server nfs-secure-server 
--->如果 rpcbind 这个服务不启动,nfs服务会启动失败, nfs-secure-server 依赖 /etc/krb5.keytab   

$ showmount -e       --->查看共享

#添加防火墙
$ firewall-cmd --permanent --add-service=nfs 
$ firewall-cmd --permanent --add-service=mountd    --->通过mountd服务(如果不开启,不能远程showmount)
$ firewall-cmd --permanent --add-service=rpc-bind  --->通过rpc服务(如果不开启,rpcinfo就不能扫描)
$ firewall-cmd --reload

11、挂载一个 NFS 共享

在 desktop0 上挂载一个来自 server0.example.com 的 NFS 共享,并符合以下要求:
/public 挂载在下面的目录上 /mnt/nfsmount
/protected 挂载在下面的目录上 /mnt/nfssecure 并使用安全的方式,密钥下载 URL 如下:
http://classroom.example.com/pub/keytabs/desktop0.keytab
用户 ldapuser0 能够在 /mnt/nfssecure/restricted 上创建文件
这些文件系统在系统启动时自动挂载。
#//desktop 
$ wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/desktop0.keytab
  --->下载到/etc/krb5.keytab 对应 /etc/fstab 配置中的sec=krb5p, nfs-secure 依赖 /etc/krb5.keytab 

$ systemctl enable nfs-secure
$ systemctl start nfs-secure

$ mkdir /mnt/nfsmount 
$ mkdir /mnt/nfssecure 

$ vim /etc/fstab 
server0.example.com:/public   /mnt/nfsmount  nfs   defaults    0  0
server0.example.com:/protected   /mnt/nfssecure  nfs   defaults,sec=krb5p    0  0
$ mount -a  --->将/etc/fstab的所有内容重新加载

$ df -Th 
Filesystem                       Type  Size  Used  Avail    Use%  Mounted on 
server0.example.com:/public      nfs4  11G   3.4G  7.5G     31%   /mnt/nfsmount
server0.example.com:/protected   nfs4  11G   3.4G  7.5G     31%   /mnt/nfssecure

$ su - ldapuser0 
-bash-4.2$ kinit ldapuser0 
Password for ldapuser0@EXAMPLE.COM: [kerberos]
-bash-4.2$ klist 
...
-bash-4.2$ cd /mnt/nfssecure/restricted 
-bash-4.2$ touch a

12、实现一个 Web 服务器

在 server0 上配置一个站点 http://server0.example.com 然后执行下述步骤:
从 http://classroom.example.com/materials/station.html 下载文件,并且将文件重命名为 index.html 不要修改此文件的内容
将文件 index.html 拷贝到您的 web 服务器的 DocumentRoot 目录下
来自于 example.com 域的客户端可以访问此 web 服务
来自于 my133t.org 域的客户端拒绝访问此 web 服务
#//server
$ yum -y install httpd 
$ systemctl enable httpd
$ systemctl start httpd

$ wget -O /var/www/html/index.html http://classroom.example.com/materials/station.html
$ rpm -qd httpd          --->查找帮助
$ vim /etc/httpd/conf.d/site1.conf 
<VirtualHost _default_:80>
   ServerName server0.example.com    --->设置站点名称
   <Directory "/var/www/html">       --->/var/www/html 是默认的DocumentRoot目录
      <RequireAll>
         Require all granted 
         Require not ip 172.15.10.0/24
      </RequireAll>
   </Directory>
</VirtualHost>

$ systemctl restart httpd
添加firewalld策略
$ firewall-cmd --permanent --add-service=http 
$ firewall-cmd --reload
###到desktop测试
测试方式一
$ firefox http://server0.example.com& 
测试方式二
$ yum -y install links 
$ links http://server0.example.com

13、配置安全的 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 获取此证书的签名授权信息
#//server
$ yum -y install mod_ssl    --->安装完成会产生 /etc/httpd/conf.d/ssl.conf

$ wget -P /etc/pki/tls/certs/ http://classroom.example.com/pub/tls/certs/server0.crt
$ wget -P /etc/pki/tls/private/ http://classroom.example.com/pub/tls/private/server0.key 
$ wget -P /etc/pki/tls/certs/ http://classroom.example.com/pub/example-ca.crt 

$ vim /etc/httpd/conf.d/ssl.conf ---> :%s/localhost/server0/g ---用server0替换localhost
100   SSLCertificateFile      /etc/pki/tls/certs/server0.crt 
107   SSLCertificateKeyFile   /etc/pki/tls/private/server0.key 

$ systemctl restart httpd 
如果使用 firewalld ,添加策略 
$ firewall-cmd --permanent --add-service=https
$ firewall-cmd --reload
#//desktop
测试
$ firefox https://server0.example.com & 
---> 点击 验证按钮 确认

14、配置虚拟主机

在 server0 上扩展您的 web 服务器,为站点 http://www0.example.com 创建一个虚拟主机,然后执行以下步骤:
设置 DocumentRoot 为 /var/www/virtual
从 http://classroom.example.com/materials/www.html 下载文件并重命名为 index.html 不要对文件 index.html 的内容做任何修改
将文件 index.html 放到虚拟主机的 DocumentRoot 目录下
确保 barney 用户能够在 /var/www/virtual 目录下创建文件
注意:原始站点 http://server0.example.com 必须仍然能够访问,名称服务器 example.com 提供对主机名 www0.example.com 的域名解析。
#//server
$ mkdir /var/www/virtual 
$ setfacl -m u:barney:rwx  /var/www/virtual     --->确保 barney 用户能够在 /var/www/virtual 目录下创建文件

$ wget -O /var/www/virtual/index.html http://classroom.example.com/materials/www.html 

$ rpm -qd httpd --->查找帮助

$ vim /etc/httpd/conf.d/vhost-www0.conf 
<VirtualHost *:80>
   ServerName   www0.example.com 
   DocumentRoot /var/www/virtual 
</VirtualHost>

$ systemctl restart httpd
#//desktop
测试
$ firefox http://www0.example.com &

15、配置 web 内容的访问

在您的 server0 上的 web 服务器的 DocumentRoot 目录下创建一个名为 confidential 的目录,要求如下:
从 http://classroom.example.com/materials/private.html 下载一个文件副本到这个目录,并且重命名为 index.html
不要对这个文件的内容做任何修改
从 server0 上,任何人都可以浏览 confidential 的内容,但是从其他系统不能访问这个目录的内容
#//server
$ mkdir /var/www/html/confidential 
$ cd /var/www/html/confidential 
$ wget -O index.html http://classroom.example.com/materials/private.html

编辑配置文件 /etc/httpd/conf.d/site1.conf 添加如下几行
<Directory “/var/www/html/confidential”>
   Require local 
</Directory>

$ vim /etc/httpd/conf.d/site1.conf 
<VirtualHost _default_:80>
   ServerName server0.example.com    --->设置站点名称
   <Directory "/var/www/html">       --->/var/www/html 是默认的DocumentRoot目录
      <RequireAll>
         Require all granted 
         Require not ip 172.15.10.0/24
      </RequireAll>
   </Directory>
   <Directory “/var/www/html/confidential”>
       Require local 
    </Directory>
</VirtualHost>

$ systemctl restart httpd.service
#//desktop
测试
$ firefox http://server0.example.com/confidential & 

 

16、实现动态 web 内容

在 server0 上配置提供动态 web 内容,要求如下:
动态内容由名为 transitive.example.com 的虚拟机提供
虚拟机侦听在端口 8989
从 http://classroom.example.com/materials/script.wsgi 下载一个脚本,然后放在适当的位置,无论如何不要修改此文件的内容
客户端访问 http://transitive.example.com:8989/ 时应该接收到动态生成的 web 页面
此 http://transitive.example.com:8989/ 必须能被 example.com 域内的所有系统访问
#//server
$ yum -y install mod_wsgi 

$ rpm -qd mod_wsgi  --->查询帮助
/usr/share/doc/mod_wsgi-3.4/LICENCE
/usr/share/doc/mod_wsgi-3.4/README

编辑配置文件 /etc/httpd/conf.d/site2.conf 
$ vim /etc/httpd/conf.d/site2.conf 
Listen 8989
<VirtualHost *:8989>
   ServerName   transitive.example.com:8989
   WSGIScriptAlias  /     /var/www/cgi-bin/script.wsgi 
</VirtualHost>

$ wget -P /var/www/cgi-bin/ http://classroom.example.com/materials/script.wsgi 

$ semanage port -l |grep 80
...
http_port_t       tcp 80,81,443,488,8008,8009,8443,9000
...
$ semanage port -a -t http_port_t -p tcp 8989
$ systemctl restart httpd.service

### 添加防火墙策略
$ firewall-cmd --permanent --add-port=8989/tcp
$ firewall-cmd --reload 

### 检查
$ firefox http://transitive.example.com:8989/ & 

17、创建一个脚本

在 server0 上创建一个名为 /root/script.sh 的脚本,让其提供下列特性:
当运行 /root/script.sh all 输出为 none
当运行 /root/script.sh none 输出为 all
当没有任何参数或参数不是 all 或者 none 时,其错误输出产生以下的信息:
/root/script.sh all|none
#//server
$ touch /root/script.sh 
$ chmod u+x /root/script.sh 
$ vim /root/script.sh 
#!/bin/bash 
#/root/script.sh 
case "$1" in 
      all)
      echo "none"
      ;;
      none)
      echo "all"
      ;;
      *)
      echo "/root/script.sh all|none"
      ;;
esac
### 验证
$ /root/script.sh all
none
$ /root/script.sh none
all 

18、创建一个添加用户的脚本

在 server0 上创建一个脚本,名为 /root/makeusers ,此脚本能实现为系统 server0 创建本地用户,并且这些用户的用户名来自一个包含用户名列表的文件。
同时满足下列要求:
此脚本要求提供一个参数,此参数就是包含用户列表的文件
如果没有提供参数,此脚本应该给出下面的提示信息 Usage:/root/makeusers <userfile> 然后退出并返回相应的值
如果提供一个不存在的文件名,此脚本应该给出下面的提示信息 Iuput file not found 然后退出并返回相应的值
创建的用户登录 shell 为 /bin/false
此脚本不需要为用户设置密码
您可以从下面的 URL 获取用户列表作为测试用 http://classroom.example.com/materials/ulist
#//server
$ touch /root/makeusers
$ chmod u+x /root/makeusers
方法一:
$ vim /root/makeusers
#!/bin/bash
#/root/makeusers
if [ $# -ne 1 ];then 
   echo 'Usage:/root/makeusers <userfile>'
   exit 1
elif [ ! -f "$1" ];then 
   echo 'Iuput file not found'
   exit 2
else 
   for USER in $(cat "$1");do 
      useradd -s /bin/false $USER 
   done 
fi
### 验证
$ wget http://classroom.example.com/materials/ulist
$ ./makeusers
$ ./makeusers ulist
$ tail -n 10 /etc/passwd |grep /bin/false
方法二:
$ vim /root/makeusers
#!/bin/bash
#/root/makeusers
if [ $# -eq 1 ];then 
   if [ -f "$1" ];then 
      while read username;do 
         useradd -s /bin/false $username &>/dev/null 
      done<$1
   else
      echo 'Iuput file not found'
   fi
else  
   echo 'Usage:/root/makeusers <userfile>'
fi

19、配置 iscsi 服务端

配置 server0 提供一个 iscsi 服务磁盘名为 iqn.2014-11.com.example:server0 ,并符合下列要求:
        服务端口为 3260
        使用 iscsi_data 作为其后端卷,其大小为 3G
        此服务只能被 desktop0.example.com 访问
#//server
$ yum -y install targetcli 
### 创建分区、初始化为物理卷、逻辑卷组、逻辑卷
$ fdisk /dev/vdb   --->使用 vdb ,考试的时候使用的是 vda ,一定要注意
Command (m fro help) : n
Partition type : 
p  primary (0 primary, 0 extended, 4 free)
e  extended
Select (default p) : p
Partition number (1-4,default 1) : [Enter]
First sector (2048-20971519,default 2048): [Enter]
Last sector, +serctos or +seize{K,M,G} (2048-20971519,default 20971519) : +3100M
Command (m fro help) : p
...
    Device Boot        Start        End        Blocks      Id        System
      /dev/vdb1        2048     6555647       3276800      83        Linux
... 
Command (m fro help) : t        ---> 更改文件系统类型
Selected partition 1
Hex code (Type L to list all codes): 8e   ---> (83)Linux 更改为 (8e)Linux LVM 
Command (m fro help) : p
...
    Device Boot        Start        End        Blocks      Id        System
      /dev/vdb1        2048     6555647       3276800      8e        Linux LVM
... 
Command (m fro help) : w 

$ partprobe /dev/vdb          ---> 不重启的情况下重读分区
$ pvcreate /dev/vdb1          ---> 将物理硬盘分区初始化为物理卷
$ vgcreate myvg /dev/vdb1     ---> 创建卷组
 
$ vgdisplay                  ---> 查看 Free PE 数
...
Free PE / Size    774 / 3.02 GiB
...
$ lvcreate -n mylv -l 774 myvg  ---> 创建逻辑卷 mylv 使用myvg的全部大小
$ lsblk 
...
vdb
|--vdb1
    |--myvg-mylv    252:0   0   3.1G  0  lvm
#//server
$ targetcli 
/> ls 
o-       /............................................[...]
   o- backstores .....................................[...]
   |  o- block   .......................[Storage Objects:0]
   |  o- fileio  .......................[Storage Objects:0]
   |  o- pacsi   .......................[Storage Objects:0]
   o- iscsi ....................................[Targets:0]
   o- loopback .................................[Targets:0]
/> /backstores/block create iscsi_data /dev/myvg/mylv         
--->创建一个名为iscsi_data的后端存储,在/dev/myvg/mylv 设备上。
Create block storage object iscsi_data using /dev/myvg/mylv
/> iscsi/
/iscsi> create wwn=iqn.2014-11.com.example:server0         
--->创建一个target 
//注意:IQN 的格式为:iqn.年份-月份.反向域名:自定义标识,如:iqn.2014-11.com.example:server0;
//其中的字母均应为小写,即使输入时包含大写,命令执行后,系统会自动转换成小写。 
Create targe iqn.2014-11.com.example:server0.
Create TPG 1.
/iscsi> cd iqn.2014-11.com.example:server0/tpg1/
/iscsi/iqn.20...::server0/tpg1> luns/ create storage_object=/backstores/block/iscsi_data  
--->创建一个lun逻辑单元
Create LUN 0.

###---------------
到desktop上拿到
$ cat /etc/iscsi/initiatorname.iscsi 
InitiatiorName=iqn.1994-05.com.redhat:d15b2c548ac
###----------------

/iscsi/iqn.20...::server0/tpg1> acls/ create ign.1994-05.com.redhat:d15b2c548ac   
--->配置acl访问控制(设置访问服务时客户端声明的名字) 
Create Node ACL for ign.1994-05.com.redhat:d15b2c548ac
Create maped LUN 0.
/iscsi/iqn.20...::server0/tpg1> portals/ create 172.25.0.11 3260   
--->配置客户端IP地址及端口
//注:若要添加新的 IP 和端口,必须先删除系统默认的 0.0.0.0:3260 这个设置
Using default IP port 3260
Create network portal 172.25.0.11:3260.
/iscsi/iqn.20...::server0/tpg1> cd /
/> ls
o- / ..................................................................... [...]
  o- backstores .......................................................... [...]
  | o- block .............................................. [Storage Objects: 1]
  | | o- iscai_data ............. [/dev/myvg/mylv (3.1GiB) write-thru activated]
  | o- fileio ............................................. [Storage Objects: 0]
  | o- pscsi .............................................. [Storage Objects: 0]
  | o- ramdisk ............................................ [Storage Objects: 0]
  o- iscsi ........................................................ [Targets: 1]
  | o- iqn.2014-11.com.example:server0 ............................... [TPGs: 1]
  |   o- tpg1 ........................................... [no-gen-acls, no-auth]
  |     o- acls ...................................................... [ACLs: 1]
  |     | o- iqn.1994-05.com.redhat:d15b2c548ac ............... [Mapped LUNs: 1]
  |     |   o- mapped_lun0 ........................ [lun0 block/iscai_data (rw)]
  |     o- luns ...................................................... [LUNs: 1]
  |     | o- lun0 .......................... [block/iscai_data (/dev/myvg/mylv)]
  |     o- portals ................................................ [Portals: 1]
  |       o- 172.25.0.11:3260 ............................................. [OK]
  o- loopback ..................................................... [Targets: 0]
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
### 设置开启启动
$ systemctl enable target.service
启动target服务
$ systemctl start target.service

添加防火墙策略
$ firewall-cmd --permanent --add-port=3260/tcp 
$ firewall-cmd --reload 

20、配置 iscsi 客户端

配置 desktop0 使其能链接在 server0 上的提供 iqn.2014-11.com.example:server0 并符合以下要求:
iscsi 设备在系统启动的期间自动加载
块设备 iscsi 上包含一个大小为 1900M 的分区,并格式化为 xfs
此分区挂载在 /mnt/data 上同时在系统启动的期间自动挂载
#//desktop
$ systemctl enable iscsi
--->先设置iscsi开机启动,然后到server端搜索帮助 $ man iscsiadm --->搜索 /examples 
--->复制尾行为 --discover 和 --login 的修改 portal 为server的ip ,targetname 为 iqn 的值

$ iscsiadm --mode discoverydb --type sendtargets --portal 172.25.0.11 --discover
...172.25.0.11:3260,1 iqn.2014-11.com.example:server0 
$ iscsiadm --mode node --targetname iqn.2014-11.com.example:server0 --portal 172.25.0.11:3260 --login
## 在块设备iscsi上创建一个大小为1900M的分区,并格式化为xfs
$ fdisk /dev/sda 
Command (m fro help) : n
Partition type : 
p  primary (0 primary, 0 extended, 4 free)
e  extended
Select (default p) : p
Partition number (1-4,default 1) : [Enter]
First sector (8192-6291455,default 8192): [Enter]
Last sector, +serctos or +seize{K,M,G} (8192-6291455,default 6291455) : +1900M
Command (m fro help) : w 

$ mkfs.xfs /dev/sda1     --->一定要进行文件系统格式化
$ mkdir /mnt/data    --->创建挂载目录
$ blkid /dev/sda1 >> /etc/fstab     --->把uuid写到/etc/fstab里,并修改
$ vim /etc/fstab     --->设置自动挂载
#/dev/sda1
UUID="84f35497-e55c-4flt-b937-b0f7e115edee"   /mnt/data    xfs     defaults,_netdev     0     0
$ mount -a    ---> 加载挂载配置
$ df -Th |grep data

21、配置一个数据库

在 server0 上创建一个 MariaDB 数据库,名为 Contacts ,并符合以下条件:
数据库应该包含来自数据库复制的内容,复制文件的 URL 为 http://classroom.example.com/materials/users.mdb
数据库只能被 localhost 访问
除了 root 用户,此数据库只能被用户 Luigi 查询。此用户密码为 flectrag
root 用户的密码为 flectrag ,同时不允许空密码登录
#//server
$ yum -y groups install mariadb mariadb-client
$ systemctl enable mariadb.service
$ systemctl start mariadb.service
$ mysql_secure_installation    --->一定要使用安全模式安装,并设置root用户的密码 
Enter current password for root (enter for none) : [Enter]
Set root password ? [Y/n] : Y 
New password : [flectrag]
Re-enter new password: [flectrag]
Remove anonymous users? [Y/n] : Y 
Disallow root login remotely? [Y/n] : Y 
Remove rest database and access to it ? [Y/n] : Y 
Reload privilege tables now ? [Y/n] : Y 

$ systemctl restart mariadb.service
$ wget -P /root/ http://classroom.example.com/materials/users.mdb 

$ mysql -p 
Enter password: [flectrag]
MariaDB [(none)]> create database Contacts ;
MariaDB [(none)]> use Contacts ;
database chanaged.
MariaDB [(Contacts)]> source /root/users.mdb    --->也可以使用 $ mysql -p Contacts < users.mdb  ---># 然后输入密码就可以了
...
MariaDB [(Contacts)]> CREATE USER Luigi@'localhost' IDENTIFIED BY 'flectrag';
MariaDB [(Contacts)]> GRANT SELECT ON Contacts.* to Luigi@'localhost' ;
MariaDB [(Contacts)]> FLUSH PRIVILEGES ;
MariaDB [(Contacts)]> 
### 添加防火墙策略
$ firewall-cmd --permanent --add-service=mysql
$ firewall-cmd --reload 

22、数据库查询

在系统 server0 上使用数据库 Contacts ,并使用相应的 SQL 查询以回答下列问题:
点击链接,提交答案: http://classroom.example.com/cgi-bin/mariadb
密码是 forsook 的人的名字: ?
SELECT a.first_name,a.last_name FROM User_Names a 
    JOIN User_Logins b 
        ON a.user_id = b.id 
where b.User_Pass = ' forsook';
有多少人的姓名是 Alan 同时居住在 Cupertino ?
select count(*) FROM User_Contacts 
    JOIN User_Names b 
        ON a.id = b.user_id
where b.first_name = 'Alan' and a.Location = 'Cupertino';

关机并重启
$ rht-vmctl poweroff server
$ rht-vmctl start server
$ rht-vmctl view server
$ rht-vmctl poweroff desktop
$ rht-vmctl start desktop
$ rht-vmctl view desktop
检查server端服务和防火墙
$ ssh root@server0 -X
# 检查服务状态
$ systemctl is-active httpd smb nmb nfs-server nfs-secure-server target mariadb postfix
# 检查防火墙
$ firewall-cmd --list-all
检查desktop端挂载和服务防火墙
$ ssh root@desktop0 -X
# 显示挂载
$ df -Th
# 检查服务状态
$ systemctl is-active nfs-secure postfix iscsi
# 检查防火墙
$ firewall-cmd --list-all

附件:

初始化环境脚本:

#!/bin/bash
#rhce-setup.sh
#配置EX300环境脚本
echo '请同时在foundation0上使用ssh root@classroom登录classroom并下载smtp-nullclient-classroom.sh并执行,一分钟后该脚本继续执行...'
sleep 60
VMNAME=$(hostname -s)
case $VMNAME in
	server0)
	echo "配置$VMNAME的网络信息..."
	hostnamectl set-hostname server0.example.com
	cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<-EOF
	DEVICE=eth0
	BOOTPROTO=none
	ONBOOT=yes
	TYPE=Ethernet
	USERCTL=yes
	IPV6INIT=no
	PERSISTENT_DHCLIENT=1
	IPADDR0=172.25.0.11
	PREFIX0=24
	GATEWAY0=172.25.0.254
	DNS1=172.25.254.254
	DEFROUTE=yes
	IPV4_FAILURE_FATAL=no
	NAME="System eth0"
	EOF

        echo  "设置SELINUX的值Permissive..."
        sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

	echo "配置$VMNAME的ldap和kerberos..."
	lab nfskrb5 setup

	echo "添加主机解析..."
	echo '172.25.0.11 transitive.example.com' >> /etc/hosts

        echo  "删除YUM软件仓库..."
        rm -f /etc/yum.d/*.repo

        echo  "添加一个普通用户jacques..."
        useradd -p '$6$AbYxIBj0$hj9GzOvTm83fJW7W2ki3tdyPI4jwyT2tRPF8DKZ8mBDMrgKafW5XPX9Yt/49bvzQxw0WMWDBDPjGmjxpZsgrA.' manager
        useradd -p '$6$AbYxIBj0$hj9GzOvTm83fJW7W2ki3tdyPI4jwyT2tRPF8DKZ8mBDMrgKafW5XPX9Yt/49bvzQxw0WMWDBDPjGmjxpZsgrA.' wolferyne
        
	echo "同步时间..."
	ntpdate 172.25.254.254

        echo  "取消图形界面模式..."
        systemctl set-default multi-user.target &>/dev/null &&history -c
        
	echo "系统已设置完毕并关机..."
        systemctl poweroff
        ;;
	desktop0)
	echo "配置$VMNAME的网络信息..."
	hostnamectl set-hostname desktop0.example.com
	cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<-EOF
	DEVICE=eth0
	BOOTPROTO=none
	ONBOOT=yes
	TYPE=Ethernet
	USERCTL=yes
	IPV6INIT=no
	PERSISTENT_DHCLIENT=1
	IPADDR0=172.25.0.10
	PREFIX0=24
	GATEWAY0=172.25.0.254
	DNS1=172.25.254.254
	DEFROUTE=yes
	IPV4_FAILURE_FATAL=no
	NAME="System eth0"
	EOF

        echo  "设置SELINUX的值Permissive..."
        sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

	echo "配置$VMNAME的ldap和kerberos..."
	lab nfskrb5 setup

	echo "添加主机解析..."
	echo '172.25.0.11 transitive.example.com' >> /etc/hosts

        echo  "删除YUM软件仓库..."
        rm -f /etc/yum.d/*.repo

        echo  "添加一个普通用户manager、wolferyne..."
        useradd -p '$6$AbYxIBj0$hj9GzOvTm83fJW7W2ki3tdyPI4jwyT2tRPF8DKZ8mBDMrgKafW5XPX9Yt/49bvzQxw0WMWDBDPjGmjxpZsgrA.' manager
        useradd -p '$6$AbYxIBj0$hj9GzOvTm83fJW7W2ki3tdyPI4jwyT2tRPF8DKZ8mBDMrgKafW5XPX9Yt/49bvzQxw0WMWDBDPjGmjxpZsgrA.' wolferyne
        
	echo "同步时间..."
	ntpdate 172.25.254.254

        echo  "取消图形界面模式..."
        systemctl set-default multi-user.target &>/dev/null &&history -c
        
	echo "系统已设置完毕并关机"
        systemctl poweroff
        ;;
	*)
	echo "请在您的虚拟机server0和desktop0上运行该脚本"
        ;;
esac

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部