一、RHCSA题目详解
0.虚拟机root用户密码,启动时停留在引导界面
0.1进入如下菜单时按e进入编辑模式
0.2光标向下移动,在linux16一行的末尾追加rd.break,打断系统正常进入程序
0.3然后按ctrl+x启动,最终会停留在修复模式
输入指令mount,查看当前sysroot(根目录)的挂载,发现是ro只读的,为了让一会我们执行的修改密码指令能够录入系统,我们需要把此sysroot挂载改为rw
mout -o remount,rw /sysroot/
输入指令chroot /sysroot,修改根目录位置,进入sh指令集功能。
输入passwd修改密码,退回修复模式,reboot重启系统,修改root密码操作完毕
passwd root
xxx
sh-4.2# touch /.autorelabel
sh-4.2# sync
exit
switch_root:/# reboot
1. IP地址配置(主机名和IP地址参数以考题为准,)
主机名:system.group3.example.com
IP: 172.25.3.10/255.255.255.0
网关: 172.25.3.254
DNS: 172.25.3.250
使用nmtui图形方式配置IP,DNS
然后选择Edit a connection
然后Edit编辑eth0接口
光标移动到右下角,选ok,
Quit退出编辑
在bash中输入指令重启网络服务 采用ifconfig命令可以查看ip是否已经修改成功
然后设置主机名 #nmtui
2. 配置SElinux开机默认为Enforcing模式
vim /etc/sysconfig/selinux SELINEX=enforcing setenforce 1 验证:getenforce -> Enforcing
3. 为您的系统配置一个默认的软件仓库,软件仓库的地址以考试实际数据为主。
vim /etc/yum.repos.d/rhel.repo
004:调整逻辑卷容量
请按以下要求调整本地逻辑卷lvm1 的容量:
调整后的逻辑卷及文件系统大小为770MB
调整后确保文件中已经存在的内容不能被破坏
调整后的容量可能出现误差,只要在730M~805M 之间都是允许的
调整后,保证其挂载目录不改变,文件系统完成
解题:
[root@server ~]# df -Th 查看题目指定的逻辑卷lvm1 的现有容量
[root@server ~]# fdisk /dev/sdb 建立新分区
[root@server ~]# pvcreate /dev/sdb2 添加到lvm1
[root@server ~]# vgextend vg1 /dev/sdb2
[root@server ~]# lvextend -L 770M /dev/vg1/lvm1
[root@server ~]#
[root@server ~]# xfs_growfs /dev/vg1/lvm1 # 针对xfs 文件系统
[root@server ~]# resize2fs /dev/vg1/lvm1 # 针对ext4 文件系统
[root@server ~]# df -Th
5. 添加3个用户,用户harry,natasha,tom,要求harry,natasha用户的附加组为admin组,tom用户的登陆shell为非交互式shell,3个账号密码均为redhat
6. 在/home 下创建一个目录,名为 admins,要求所属组为 admin 组,组成员可以读写, 其它用户没有任何权限,同组成员在目录下创建的文件的所属组也为 admin 组
备注:大家记住如果一个用户对目录有读写权限,一定也要设置执行权限,对目录来说,如果一个用户对目录没有执行权限,那么这个人就不能 cd 进该目录了
mkdir -p /home/admins
chgrp admin /home/admins
chmod 770 /home/admins
chmod g+s /home/admins
检查 ls -ld /home/admins
7. 拷贝文件/etc/fstab 到/var/tmp/fstab,配置文件/var/tmp/fstab 的权限
1) 文件/var/tmp/fstab 的拥有者是 root 用户
2) 文件/var/tmp/fstab 属于 root 组
3) 文件/var/tmp/fstab 对任何人都不可执行
4) 用户 natasha 能够对文件/var/tmp/fstab 具有读和写的权限
5) 用户 harry 对文件/var/tmp/fstab 既不能读,也不能写
6) 所有其他用户(当前的和将来的)能够对文件/var/tmp/fstab 进行读操作。
cp /etc/fstab /var/tmp/
chown root:root /var/tmp/fstab
chmod rgo-x /var/tmp/fstab
setfacl -m u:natasha:rw /var/tmp/fstab
setfacl -m u:harry:--- /var/tmp/fstab
chmod o+r /var/tmp/fstab
8. 配置 harry 任务计划每天的 14:23 分,执行 echo hello 命令
[root@mail ~]# crontab -e -u harry
34 23 * * * /bin/echo hello
然后保存退出
可以用下面的方法验证
crontab -l -u harry
34 23 * * * /bin/echo hello
9. 配置一个共享目录 nfs 服务器,将/common 目录共享给 group3.example.com 域, 要求/common 可以读写。
mkdir -p /common
vim /etc/exports
/common 172.25.3.0/255.255.255.0(rw,sync)
systemctl enable nfs-server-service
systemctl restart nfs-server-service
10. 升级内核为 2.6.32-71.7.1 ,内核软件包在ftp://172.25.3.254/pub/rhel6/Errata/rhel-x86_64-server-6/kernel-2.6.3
2-71.7.1.el6.x86_64.rpm,并保留旧的内核通过 wget 或者 Firefox 浏览器下载 rpm 安装包,双击或通过 rpm 命令执行安装即可。重启
后内核自动更新为最新的,并保留以往的内核。
11. 配置你的主机账号和密码验证方式为 LDAP 方式
Basedn:dc=example ,dc=com
Ldapserver: instructor.example.com
通过 ldapuser15可以登录成功,ldapuser15密码为:password。证书可以从以下目录下载:http://instructor.example.com/pub/ EXAMPLE-CA-CERT,用户登录后是没有宿主目录
的,除非你配置了后续题目中的 autofs
然后点击下载 CA 证书
然后点确定
如上图然后点应用
然后用下面命令测试
(也可以使用 id ldapuser15检查是否学习到用户信息)
因为没有做 autofs,所以是没有加目录的。
12. 配置 autofs,实现 ldapuser15登录成功后,有家目录/home/guests/ldapuser15。家目录
在 instructor.example.com 上被 nfs 共享为:/home/guests/ldapuser15。(额外要求,其
它的 ldap 用户登录成功后也能正常使用宿主目录,这条要看考试里问不问)
13. 配置 NTP
方法一:
填写完点击确定
方法二
[root@server ~]# Yum -y install chrony
[root@server ~]# Vim /etc/chrony.conf
Server classroom.example.com iburst # add server
[root@server ~]# System restart chronyd
[root@server ~]# System enable chronyd
[root@server ~]# chronyc sources
[root@server ~]# chronyc waitsync
[root@server ~]#
[root@server ~]# timedatectl
Local time: Sun 2015-07-19 10:30:59 CST
Universal time: Sun 2015-07-19 02:30:59 UTC
RTC time: Sun 2015-07-19 02:30:59
Timezone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
[root@server ~]# timedatectl --help
[root@server ~]# timedatectl set-ntp true
14. 创建一个用户 alex,用户 ID 为 1234,用户密码为 alex111
15. 创建一个 2G 的交换分区,并开机自动生效,但不影响原有的 swap 分区
19:创建逻辑卷
请按下列要求创建一个新的逻辑卷
创建一个名为 exam 的卷组,卷组的 PE 尺寸为 16MB
逻辑卷的名字为 lvm2,所属卷组为 exam,该逻辑卷由 8 个 PE 组成
将新建的逻辑卷格式化为 xfs 文件系统,要求系统启动时,该逻辑卷能被自动挂载到/exam/lvm2 目录
[root@server ~]# fdisk /dev/sdb
[root@server ~]#
[root@server ~]# pvcreat /dev/sdb5
[root@server ~]# vgcreat -s 16M exam /dev/sdb5
[root@server ~]# vgdisplay exam
PE SZIE 16.00MiB
[root@server ~]# lvcreat -l 8 -n lvm2 exam
[root@server ~]# mkfs.xfs /dev/exam/lvm2
[root@server ~]# blkid
UUID=50de7615-5950-4b97-99e3-8c463dc6671c
[root@server ~]# vim /etc/fstab
[root@server ~]# mkdir -p /exam/lvm2
二、RHCE题目详解
1、配置selinux
在system1和system2上要求 selinux状态为enforcing,
重启后生依然生效解题:略
2、配置防火墙对ssh的限制在server0和desktop0上设置防火墙,对ssh实现访问限制
允许 example.com的客户对 server0 和desktop0进行ssh访问
禁止my133t.org的客户对 server0 和desktop0进行ssh访问备注:
My133t.org 172.17.10.0/24 (根据考试实际提供的网段配置)
Example.com 172.25.0.0/24
解题:
Systemctl disable iptables ip6tables ebtables Systemctl enable firewalld
Firewall-cmd --get-default-zone #查看默认zone
Firewall-cmd --list-all #查看默认zone所有规则
Firewall-cmd --permanent --add-rich-rule=’rule family=”ipv4” source address=”172.25.0.0/24” serice name=”ssh” accept’
Firewall-cmd --permanent --add-rich-rule=’rule family=”ipv4” source address=”172.17.10.0/24” service name=”ssh” reject’
Firewall-cmd --reload
3、配置IPv6地址在系统上配置接口eth0使用以下 ipv6地址
Server0 fddb:fe2a:ab1e::c0a8:1/64
Desktop0 fddb:fe2a:ab1e::c0a8:2/64 要确保两个系统能与网络 fddb:fe2a:ab1e/64内的系统通信地址重启依旧有效两个系统IPv4地址保持不变
解题:
a. 手工修改ifcfg-ethX文件
b. 图形化界面修改 nm-connection-editor
c. 使用ip命令:(临时性的修改)
ip addr add 2001:0db8:85a3::0370:7334/64 dev eth1
d. 使用nmcli命令行添加地址后,自动生效
Nmcin con mod 命令行模式
Nmcli con edit 命令行交互模式
Nmcli con show
Nmcli connection modify eth0 <ipv6.method manual> <ipv6.addresses fddb:fe2a:ab1e::c0a8:1/64>
Nmcli connection up eth0 #需要启动eth0,使配置文件生效
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1) Systemctl restart network
4、配置链路聚合
在server0与desktop0上按以下要求配置
此链路使用接口eth1和eth2 此链路在一个接口失效时仍然能工作
此链路在server0使用下面的地址 192.168.0.101/255.255.255.0 此链路在desktop0使用下面的地址 192.168.0.102/255.255.255.0 此链路在系统重启后依然保持正常状态解题:
#添加team0设备并建立 team0连接
# 配置链路聚合时,至少有2张网卡;网卡没有活动的连接
Nmcli con add type team con-name team0 ifname team0 config ‘{“runner”:{“name”:”activebackup”}}’
#添加team设备IPv4地址
Nmlci con mod team0 ipv4.address ‘192.168.0.101/24’ ipv4.method manual
#关联team设备从设备(接口)
team0-port1
team0-prot2
Nmcli con add type team-slave con-nameifname eth1 master team0
Nmcli con add type team-slave con-nameifname eth2 master team0 Nmcli con up team0-port1; Nmcli con up team0-port2
#查看 team0工作状态: yum install teamd -y Teamdctl team0 state
#测试,开启一个ping,并禁用team0其中的一块网卡;原则上ping数据不会掉包
Nmcli device disconnect eth1
5、 自定义用户环境
在系统server0和desktop0上创建自定义命令 qstat,此命令执行以下命令:/bin/ps -Ao pid,tt,user,fname,rsz
此命令对系统中的所有用户有效
解题:
Vim /etc/bashrc
Alias qstat=’/bin/ps -Ao pid,tt,user,fname,rsz’
6、 配置本地邮件服务在server0和desktop0上配置邮件服务,要求:
这些系统不接收外部发来的邮件
这些系统上本地发送的邮件都会自动路由到 classroom.example.com
这些系统上发送的邮件都显示来自 example.com
你可以通过发送邮件到本地用户student来测试你的配置,classroom.example.com已经配置好。把此用户的邮件转到下列URL
http://classroom.example.com/cgi-bin/recevied_mail
解题:
Yum install -y postfix
Systemctl enable postfix
Systemctl restart postfix
Postconf -e “inet_interfaces = loopback-only” # 设定postfix监听的接口 loopback-only|all
Postconf -e “mynetworks = 127.0.0.1/8,[::1]/128” # 指定受信任主机,使用逗号分割的IP列表通过服务器中继到任何地方
Postconf -e “myorigin = example.com” # 显示 ‘mail from’ 发件人
Postconf -e “relayhost = [classroom.example.com]” # 转发所有消息到外部邮件服务器,[ MX记录classroom.example.com ]
Postconf -e “mydestination = ” # 指定“能收信的主机”(对方的mail to需要填写的名字)
Postconf -e “local_transport = error: local delivery disabled” # default: local:$myhostname 禁用本地交付
Postconf -e “local_transport = error:err”
Firewall-cmd --permanent --add-services=smtp
Firewall-cmd --reload
Systemctl restart postfix
#测试发送
null client”
Mail -s “server0student@classroom.example.com #脚本判断主题关键字 null client
Null client test .
#查看邮件队列
mailq
Curl http://classroom.example.com/cgi-bin/recevied_mail
7、配置端口转发在server0上配置端口转发,要求:
在172.25.0.0/24网络中的系统,访问 server0的本地端口5423将被转发到端口80
此设置必须永久有效
开启-端口转发-关键字 本地端口 协议 映射端口 映射地址
forward-port port=xxx Protocol=tcp|udp to-port to-addr
Forward-port port=”<PORT VALUE1>” protocol=”TCP|UDP” to-port=”<PORT VALUE2>” to-addr=”<ADDRESS>”
解题:
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’
8、通过SMB共享目录在 server0上配置SMB服务
SMB服务器必须是STAFF工作组的一个成员
共享/common目录,共享名必须为 common
只有example.com域内的客户端可以访问 common共享
用户rob,samba密码为redhat,只读权限访问common共享 用户brian,samba密码为redhat,读写权限访问common共享
解题:
Yum install samba samba-client -y
Systemctl enable nmb smb
Id rob
Id brian
Useradd -s /sbin/nologin rob; userad -s /sbin/nologin brian
Mkdir /common
Chgrp brian /common/
Chmod 2775 /common
Smbpasswd -a rob
Smbpasswd -a brian
Vim /etc/samba/smb.conf Workgroup = STAFF [common] Path=/common
Write list = brian
Browseable = yes
Hosts allow = 172.25.0. #/common只允许example客户端访问
Testparm # 测试 smb.conf 文件语法
Systemctl restart smb nmb
# chcon -R -t samba_share_t /common
Semanage fcontext -a -t samba_share_t ‘/common(/.*)?’
Restorecon -vFR /common
Firewall-cmd --permanent --add-service=sabma Fireall-cmd --reload
测试:
Smbclient -L //server0.exmaple.com/common -U rob
Smbclient -L //server0.exmaple.com/common -U brian
9、配置多用户SMB挂载在desktop0上完成以下要求的配置
Desktop0把server0的common共享通过多用户的方式挂载到配置的/mnt/multiuser(实际的共享和挂载点请根据考试题目设定)
用户rob,samba密码为redhat,只读权限访问common共享
用户brian,samba密码为redhat,读写权限访问common共享
该共享要求在系统启动时自动挂载
解题:
Yum install cifs-utils -y
Yum install samba-client -y
Mkdir /mnt/multiuser
Echo ‘username=rob’ > /root/smb-multiuser.txt
Echo ‘password=redhat’ >> /root/smb-multiuser.txt
Su - brian
# cifs认证,使用/root/smb-multiuser文件认证
Cifscreds add server0 Pasword:
Echo “multiuser” > /mnt/multiuser/brian.txt
Cat /mnt/multiuser/brian.txt
Exit
Su - rob
Cifscreds add server0 Password:
Cat /mnt/multiuser/brian.txt
Echo “rob” > /mnt/multiuser/rob.txt
10、配置NFS服务在server0配置NFS服务,要求如下: 以只读的形式共享目录/public同时只能被example.com域中的系统访问。
以读写的形式共享目录/protected同时只能被example.com域中的系统访问。
访问/protected需要通过Kerberos安全加密,您可以使用下面提供的密钥:http://classroom.example.com/pub/keytabs/server0.keytab
目录/protected应该包含名为project拥有人为ldapuser0的子目录
用户ldapuser0能以读写形式访问/protected/project
解题:
Yum install nfs-utils -y
Systemctl enable nfs-server
Mkdir /public
Chown nfsnobody /public
Mkdir -p /protected/project
Chmod o+w /protected
Chown ldapuser0 /protected/project
Chcon -R -t public_content_t /protected/
Vim /etc/exports
/protected *.example.com(rw,sec=krb5p) /public *.example.com(ro)
# 查看Showmount -e localhost
Exportfs -arv
#配置NFS加密共享
Wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/server0.keytab
Vim /etc/syscofnig/nfs
RPCNFSDARGS=”-V 4.2”
Systemctl enable nfs-secure-server.service
Systemctl restart nfs-secure-server.service
Firewall-cmd --permanent --add-service=nfs
Firewall-cmd --permanent --add-service=mountd
rpc-bind
Firewall-cmd --permanent --add-service=
Firewall-cdm --reload
11、挂载一个NFS共享
在desktop0上挂载一个来自server0上的NFS共享,并符合下列要求: /pulbic共享挂载到本地的/mnt/nfsmount。
/protected挂载到本地的/mnt/nfssecure,并使用安全的方式,密钥下载地址:http://classroom.example.com/pub/keytabs/desktop0.keytab 用户ldapuser0能够在/mnt/nfssecure/project上创建文件。
这些文件系统在系统启动时自动挂载。
解题:
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
Wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/desktop0.keytab
#记得启动 nfs-secure,krb5加密需要它的支持
#记得启动 nfs-secure,krb5加密需要它的支持
Systemctl enable nfs-secure.service
Systemctl restart nfs-secure.service
测试:
Ls /mnt/nfssecure
# password: kerberos
Ssh ldapuser0@localhost
Ls /mnt/nfssecure/
Echo “test” > /mnt/nfssecure/project/test.txt
12、实现一个WEB服务器
在server0上配置一个站点http://server0.example.com,然后执行以下步骤:
从http://classroom.example.com/materials/station.html下载文件,并且将文件重命名为index.html,绝对不能修改此文件的内容。
将index.html拷贝到你的web服务器的DocumentRoot目录下。
来自example.com域的客户端可以访问此web站点。
“/var/www/html”
来自my133t.org域的客户端拒绝访问此web站点。备注:网站的DocumentRoot如果题目没有指定,那么随意。
Yum install httpd
Vim /etc/httpd/conf.d/vhost-server0.conf
<VirtualHost *:80>
ServerName server0.example.com
DocumentRoot
CustomLog “logs/server0_vhost_log” combined
“/var/www/html
<Directory”>
<RequireAll>
Require all granted
Rqeuire not host .my133t.org
</RequireAll>
</Directory>
</VirtualHost>
Wget -o /var/www/html/index.html http://classroom.example.com/materials/station.html
Systemctl enable httpd
Systemctl restart httpd
Firewall-cmd --permanent --add-service=http
Firewall-cmd --reload
13、配置安全WEB服务 443
站点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获取
解题:
Yum instlal -y mod_ssl
Wget -O /etc/pki/tls/certs/server0.crt http://classroom.example.com/pub/tls/certs/server0.crt
Wget -O /etc/pki/tls/private/server0.key http://classroom.example.com/pub/tls/private/server0.key
Wget -O /etc/pki/tls/certs/example-ca.crt http://classroom.example.com/pub/example-ca.crt
Vim /etc/httpd/conf.d/ssl.conf #修改如下几个地方
DocumentRoot “/var/www/html/”
ServerName server0.example.com
SSLCertificateFile /etc/pki/tls/certs/server0.crt
SSLCertificateKeyFile /etc/pki/tls/private/server0.key SSLCACertificateFile /etc/pki/tls/certs/example-ca.crt <Directory “/var/www/html”> <RequireAll>
Require all granted
#脚本可能判断字符为 my133t.com
Require not host .my133t.org
</RequireAll>
</Directory>
Systemctl restart httpd
Firewall-cmd --permanent --add-serice=https
Firewall-cmd --reload
14、配置虚拟主机
在server0上扩展你的web服务器,为站点http://www0.example.com创建一个虚拟主机,然后执行以下步骤: a. 设置DocumentRoot为 /var/www/virtual
b. 从http://classroom.example.com/materials/www.html下载文件并重命名为index.html,不要对文件index.html内容做任何修改。
c. 将index.htm文件放到虚拟主机的DocumentRoot目录下
d. 确保floyd用户能够在/var/www/virtual目录下创建文件注意:原始站点http://server0.example.com必须仍然能够访问。站点的所用的域名网络中已有DNS服务器解析。
解题:
Vim /etc/httpd/conf.d/vhost-www0.conf
<VirtualHost *:80>
ServerName www0.exmaple.com DocumentRoot “/var/www/virtual” customLog “logs/www0_virtual_log” combined
<Directory “/var/www/virtual”> Require all granted
</Directory>
</VirtualHost>
Mkdir -p /var/www/virtual
Wget -O /var/www/virtual/index.html http://classroom.example.com/materials/www.html
Id floyd
Useradd floyd
Setfacl -m u:floyd:rwx /var/www/virtual/
Systemctl restart httpd
15、配置WEB内容的访问
在你的server0上的web服务器的DocumentRoot目录下创建一个名为private的目录,要求如下:
从http://classroom.example.com/materials/private.html下载一个文件副本到这个目录,并且重命名为index.html。不要对这个文件的内容作任何修改。
从server0上,任何人都可以浏览private的内容,但是从其他系统就不能访问这个目录的内容。(注意题目要求谁可以访问,灵活变化) 备注:此题目是接着上一题,所以这里的DocumentRoot指的就是上面的 /var/www/virtual/。
解题:
Mkdir /var/www/virtual/private
Wget -O /var/www/virtual/private/index.html http://classroom.example.com/materials/private.html
Vim /etc/httpd/conf.d/vhost-www0.conf
<VirtualHost *:80>
ServerName www0.exmaple.com DocumentRoot “/var/www/virtual” customLog “logs/www0.virtual_log” combined
<Directory “/var/www/virtual”> Require all granted
</Directory>
<Directory “/var/www/virtual/private”> Require all denied
Require local
</Directory>
</VirtualHost>
Systemctl restart httpd
#测试
====Desktop====
Curl http://www0.example.com/
# ok
Curl http://www0.example.com/private
# denied
16、实现动态WEB内容在server0上配置提供动态web内容,要求如下:
动态内容由名为webapp0.example.com的虚拟主机提供, 虚拟主机监听在端口8908
从http://classroom.example.com/materials/webinfo.wsgi下载一个脚本,然后放在适当的位置,无论如何不要修改此文件的内容。
客户端访问http://webapp0.example.com:8908/时应该接收到动态生成的web页面。
必须能够被example.com域内的所有系统访问。
此站点
解题:
Yum install mod_wsgi -y
Mkdir -p /var/www/webapp
Wget -O /var/www/webapp/webinfo.wsgi http://classroom.example.com/materials/webinfo.wsgi
Vim /etc/httpd/conf.d/vhost-webapp0.conf
Listen 8908
<VirtaulHost *:8908>
ServerName webapp0.exmaple.coms
DocumentRoot “/var/www/webapp”
CustomLog “logs/webap0_vhost_log” combined
<Directory “/var/www/webapp”> Require all granted
</Directory>
WSGIScriptAlias / /var/www/webapp/webinfo.wsgi #注意安装 mod_wsgi 模块
</VirtualHost>
Semanage port -l | grep http
Semanage port -a -t http_port_t -p tcp 8908
Firewall-cdm --add-rich-rule ‘rule family=ipv4 source address=”172.25.0.0/24” port port=8908 protocol=tcp accept’
Firewall-cmd --reload
Systemctl restart httpd
#测试
ss -ntlp | grep :8908
Curl http://webapp0.example.com:8908
17、创建一个脚本
在server0上创建一个名为/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
case $1 in
redhat) echo “fedora”
;; fedora) echo “redhat”
;;
*) echo “/root/foo.sh redhat|fedora” esac
# chmod 755 /root/foo.sh # /root/foo.sh adfadfa
18、创建一个添加用户的脚本在server0上创建一个名为/root/batchusers,此脚本能够实现为系统server0创建本地用户,并且这些用户的用户名来自一个包含用户名列表的文件,同时满足下列要求:
此脚本要求提供一个参数,此参数就是包含用户名列表的文件
如果没有提供参数,此脚本应该给出下面的提示信息Usage: /root/batchusers userfile ,并且退出返回相应的值
如果提供一个不存在的文件名,此脚本应该给出下面的提示信息 Input file not found然后退出并返回相应的值
创建的用户登录shell为/bin/false
此脚本不需要为用户设置密码 (注意:有得时候需要设置统一密码为redhat)
您可以从下面的URL获取用户列表作为测试用 http://classroom.example.com/materials/userlist
Vim /root/batchusers
#!/bin/bash
# 首先判断脚本的所有参数数量等于1否
# $1是否存在且是文件
if [ $# -eq 1 ]; then
if [ -f “$1” ];then
while read username do
useradd -s /bin/false $username &> /dev/null
# 以参数1文件重定向输入
done < $1
else
echo “Input file not found” exit 1
fi
else
echo “usage: /root/batchusers userfile” exit 2
fi
chmod 755 /root/batchusers wget -o /root/userlist http://classroom.example.com/materials/userlist
/root/batchusers /root/userlist
tail /etc/passwd
19、配置iSCSI服务端配置server0提供一个iSCSI服务磁盘名为iqn.2014-11.com.example:server0,并符合下列要求:
服务端口为3260
使用iscsi_store作为其后端卷,其大小为3G(题意含糊,其实iscsi_store是一个逻辑卷,需要自己建立) 此服务只能被desktop0.example.com访问。
解题:
Yum install targetcli -y
Systemctl enable target
Fdsik /dev/sdb # 分区并修改类型为8e LVM逻辑卷
Pvcreate /dev/sdb1
Vgcreate iSCSI_vg /dev/sdb1
Lvcreate -n iscsi_store -L 3G iSCSI_vg
# targetcli
/> cd backstores/block
/> backstores/block create name=server0.iscsi_store dev=/dev/iSCSI_vg/iscsi_store Created block storage object server0.iscsi_store using /dev/iSCSI_vg/iscsi_store.
/> cd /iscsi
/iscsi> create iqn.2015-09.com.example:server0 Created target iqn.2015-09.com.example.com:server0.
Created TPG 1.
/iscsi> cd iqn.2015-09.com.example:server0/tpg1/portals
/iscsi/iqn.2015-09.../tpg1/portals> create 172.25.0.11 3260
Using default IP port 3260
Created network portal 172.25.0.11:3260.
/iscsi/iqn.2015-09.../tpg1/portals> cd ../luns
/iscsi/iqn.2015-09.../tpg1/luns create /backstores/block/server0.iscsi_store Created LUN 0.
/iscsi/iqn.2015-09.../tpg1/portals> cd ../acls
/iscsi/iqn.2015-09.../tpg1/acls create iqn.2015-09.com.example:desktop0 Created Node ACL for iqn.2015-09.com.example.com:desktop0 Created mapped LUN 0.
/iscsi/iqn.2015-09.../tpg1/acls> cd ..
/iscsi/iqn.2015-09.../tpg1 set attribute authentication=0 Parameter authentication is now '0'.
/iscsi/iqn.2015-09.../tpg1 set attribute generate_node_acls=0
Parameter generate_node_acls is now '0'.
/iscsi/iqn.2015-09.../tpg1> cd /
/> saveconfig
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
/> ls
/> exit
Firewall-cmd --permanent --add-port=3260/tcp Firewall-cmd --reload
Systemctl start target
20、配置iSCSI的客户端
配置desktop0使其能连接在server0上提供的iqn.2014-11.com.example:server0并符合以下要求:
iSCSI设备在系统启动的时候自动加载
块设备iSCSI上包含一个大小为2100 MiB的分区,并格式化为ext4。
此分区挂载在/mnt/data上同时在系统启动的期间自动挂载。
Yum install iscsi-initiator-utils
Vim /etc/iscsi/initiatorname.iscsi
iqn.2014-11.com.example:desktop0
InitiatorName=
Systemctl enable iscsi
Systemctl restart iscsi
Iscsiadm -m discovery -t sendtargets -p 172.25.0.11 #发现target -t st
Iscsiadm -m node -l #登录target
Fdisk /dev/sdc # 添加2100M
Mkfs.ext4 /dev/sdc1
Mkdir /mnt/data # 格式化系统格式ext4
Blkid /dev/sdc1
Vim /etc/fstab
XXXX
UUID=/mnt/data ext4 defaults,_netdev 0 0
Mount -a Df -h
#记得 logout后再重启
Iscsiadm --mode node --targetname iqn.2014-09.com.example:server0 --portal 172.25.0.11:3260 --logout
20、部署MariaDB数据库在server0上部署MariaDB。要求如下:
仅允许从server0系统上使用登陆到数据库。
登陆数据库所用的账号为root,密码为root_password。
从http://content.example.com/courses/rhce/rhel7.0/materials/mariadb/mariadb.dump上下载文件,并将其恢复为legacy库。
并设置数据库访问:
用户名 密码 权限
Mary mary_password 对legacy库的所有数据有选择操作权限
Legacy legacy_password 对legacy库的所有数据有选择、插入、更新、删除操作权限
Report report_password 对legacy库的所有数据有选择操作权限
解题: A.安装数据库并初始化
# yum instlal mariadb*
# systemctl enable mariadb
# systemctl start mariadb
# mysql_secure_installation
B.恢复数据库
# wget -O /root/mariadb.dump Mysql -uroot -proot_password
Create database legacy;
Use legacy
Source /root/mariadb.dump
Show tables;
C.设置用户权限
grant select on legacy.* to mary@'localhost' identified by ‘mary_password’; grant select,insert,update,delete on legacy.* to legacy@'localhost' identified by ‘legacy_password’; grant select on legacy.* to report@'localhost" identified by ‘report_password’;
21、数据查询填空
在server0上登陆数据库,查看XXX库进行查询,并将结果填入相应的框格中。
Q1在product表中,查询RT-AC68U的产品id() Q2查询类别为Servers的产品的数量()
模拟考环境请在http://classroom.example.com/cgi-bin/mariadb提交
# mysql -uroot -proot_password
#
# mysql -u legacy -p
MariaDB [legacy]> use legacy
MariaDB [legacy]> status; 查看当前数据库使用状态