RHCSA8-EX200
更新日志
勘误:leancode@189.cn
建议完成时间:40分钟
合计共 25 题,已核验 25 题。
【更新】修正了几处错误,语言表达更为严谨
【更新】新增的题型
前置信息
您的机器是 domain10.example.com
域的一个成员。 domain10.example.com
域内的所有系统在 172.20.10.0/255.255.255.0
子网内,并且所有在这个子网内的系统都属于 domain10.example.com
域。
虚拟机的网络配置应该如下:
主机名: system1.domain10.example.com
IP地址: 172.24.10.150
子网掩码: 255.255.255.0
网关 :172.24.10.100
名称服务: 172.24.10.250
虚拟机的 root 密码是 migwhisk
请确保所有修改和服务配置在重新启动之后仍然能够生效,而无需人工干预。所有考试用的虚拟机实例必须能重启之后进入正确的多用户级别,而无需人工协助。如果考试用的虚拟机系统不能启动或不能正常启动,将被评零分。
Red Hat Enterprise Linux 操作系统版本对应的分发包可以通过YUM在下面的链接中找到: http://repo.domain1.example.com/rhel80
Root 密码破解
将光标标记到第四行末尾插入 console=tty0 rd.break
按下 Ctrl + X
进行启动
引导至如下界面
1 2 3 4 5 6 7 mount -orw,remount /sysroot chroot /sysroot echo 1104 | passwd --stdin root touch /.autorelabel exit exit
配置网络和主机名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 nmcli c s nmcli d s nmcli connection mod "Wired connection 1" ipv4.adderess 172.24.10.150/24 ipv4.gateway 172.24.10.100 ipv4.dns 172.24.10.250 method man autoconnect yes nmcli con up "Wired connection 1" nmcli con add con-name static ifname ens160 type ethernet ipv4.addresses 172.24.10.150/24 ipv4.gateway 172.24.10.100 ipv4.dns 172.24.10.250 ipv4.method man autoconnect yes nmcli con up static ip a show ens160 hostnamectl set-hostname system1.domain.example.com hostnamectl
配置 YUM 仓库
YUM 存储库已可以从 http://repo.domain10.example.com/rhel80/BaseOS
和 http://repo.domain10.example.com/rhel80/AppStream
使用配置您的系统,以将这些位置用作默认存储库。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 > cat > /etc/yum.repo.d/redhat.repo <<EOF [BaseOS] name = BaseOS enabled = 1 gpgcheck = 0 baseurl = http://repo.domain10.example.com/rhel80/BaseOS [AppStream] name = AppStream enabled = 1 gpgcheck = 0 baseurl = http://repo.domain10.example.com/rhel80/AppStream EOF > yum clean all > yum makecache > yum repolist
调试 SELINUX
非标准端口 82 上运行的 Web 服务器在提供内容时遇到问题。根据需要调试并解决问题,使其满足以下条件:
系统上的 Web 服务器能够提供 /var/www/html 中所有现有的 HTML 文件(注:不要删除或以其他方式改动现有的文件内容)
Web 服务器在端口 82 上提供此内容
Web 服务器在系统启动时自动启动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 > grep SELINUX /etc/selinux/config SELINUX=enforcing > setenforce 1 > yum provides semanage > yum -y install policycoreutils-python-utils > semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?" > restorecon -RvF /var/www/html/ > semanage port -l | grep http > semanage port -a -t http_port_t -p tcp 82 > systemctl enable httpd > systemctl restart httpd > curl localhost:82 firewall-cmd --add-port=82/tcp firewall-cmd --add-port=82/tcp --per > curl 172.24.10.150:82
创建用户账户
创建下列用户、组和组成员资格:
创建 sysmgrs 组
创建用户 natasha ,作为次要组从属于 sysmgrs
创建用户 harry ,作为次要组从属于 sysmgrs
创建用户 sarah ,无权访问系统上的交互式 Shell 且不是 sysmgrs 的成员
natasha,harry,sarah 的密码都是 123
1 2 3 4 5 6 7 groupadd sysmgrs useradd natasha -G sysmgrs useradd harry -G sysmgrs useradd sarah -s /sbin/nologin echo 123 | passwd --stdin natashaecho 123 | passwd --stdin harryecho 123 | passwd --stdin sarah
配置 Cron 计划任务
配置 cron 作业,该作业每隔 5 分钟运行并执行以下命令:
logger "EX200 in progress"
,以用户 natasha 身份运行
14:23分执行 /bin/echo enjia
1 2 3 4 5 6 7 8 > systemctl enable crond --now > crontab -e -u natasha */5 * * * * logger "EX200 in progress" 23 14 * * * /bin/echo enjia > crontab -l -u natasha
创建协作目录
创建目录 /home/managers
/home/managers 的所属组是 sysmgrs
目录可以被组成员读取,写入,访问,任何其他用户无权限
/home/managers 中创建的文件自动将组所有权设置到 sysmgrs 组
1 2 3 4 5 6 7 8 9 10 11 12 13 mkdir /home/managerschown :sysmgrs /home/managerschgrp sysmgrs /home/managerschmod g=rwx,p=--- /home/managerschmod g+s /home/managersll -d /home/managers
配置 NTP
配置 NTP 服务器为 host.domain10.example.com
1 2 3 4 5 6 7 8 9 10 11 cat >> /etc/chrony.conf <<EOF server host.domain10.example.com iburst EOF systemctl restart chronyd systemctl enable chronyd chronyc sources chronyc -n sources
配置 autofs
以按照如下所述自动挂载远程用户的主目录:
挂载远程用户的主目录
host.domain10.example.com NFS /rhel
此文件系统包含用户 user1 预配置的主目录
user1 的主目录是 xx.example.com:/rhel/user1
user1 的主目录应自动挂载到本地 /rhel 下的 /rhel/user1
主目录必须可提供其用户写入
user1 的密码是 123
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 yum -y install nfs-utils autofs cat >> /etc/auto.master <<EOF /rhel /etc/auto.user1 EOF cat > /etc/auto.user1 <<EOF user1 -rw host.domain10.example.com:/rhel/user1 EOF systemctl restart autofs systemctl enable autofs su - user1 df -Th /rhel/user1
配置文件权限
将文件 /etc/fstab 复制到 /var/tmp/fstab。配置/ var/tmp/fstab 的权限以满足如下条件:
文件 /var/tmp/fstab 自 root 用户所有
文件 /var/tmp/fstab 属于组 root
文件 /var/tmp/fstab 应不能被任何人执行
用户 natasha 能够读取和写入 /var/tmp/fstab
用户 harry 无法写入或读取 /var/tmp/fstab
所有其他用户(当前或未来)能够读取 /var/tmp/fstab
1 2 3 4 5 6 cp /etc/fstab /var/tmp/fstabchown root:root /var/tmp/fstabchmod a-x /var/tmp/fstabchmod o=r-- /var/tmp/fstabsetfacl -m u:natasha:rw /var/tmp/fstab setfacl -m u:harry:--- /var/tmp/fstab
配置用户账户
配置用户 user2,其用户 ID 为 3388。此用户的密码应当为 123。
1 2 useradd user2 -u 3388 echo 123 | passwd --stdin user2
查找文件
查找 owner 为 user3 的所有文件并将其副本放入 /root/dfiles 目录
在/usr/bin目录下创建 repwis 脚本
查找 /usr 目录下的所有文件并将文件名字的名字记录在 /root/myfiles/find-file1.txt 文本文件中 文件应该满足:
查找/usr目录下的所有文件并将文件名字的名字记录在/root/myfiles/find-file2.txt文本文件中 文件应该满足:
大于30k
小于50k
该文件有setuid特殊权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 mkdir /root/dfilesmkdir /root/myfilestouch /root/myfiles/find-file1.txttouch /root/myfiles/find-file2.txttouch /usr/bin/repwisfind / -user user3 -exec cp -a {} /root/dfiles \; cat > /usr/bin/repwis <<EOF #!/bin/sh find /usr -size +3M -size -5M -perm /g+s > /root/myfiles/find-file1.txt find /usr -size +30k -size -50k -perm /u+s > /root/myfiles/find-file2.txt EOF cat > /usr/bin/repwis <<EOF #!/bin/sh find /usr -size +3M -size -5M -perm /g+s -exec basename {} > /root/myfiles/find-file1.txt find /usr -size +30k -size -50k -perm /u+s -exec basename {} > /root/myfiles/find-file2.txt EOF chmod +x /usr/bin/repwis/usr/bin/repwis ll /root/dfiles cat /root/myfiles/find-file1.txtcat /root/myfiles/find-file2.txt
查找字符串
查找文件 /usr/share/rhel.xml 中包含字符串 re 的所有行。将所有这些行的副本按原始顺序放在文件 /root/files 中
1 2 3 touch /root/filesgrep re /usr/share/rhel.xml > /root/files cat /root/files
文件归档
1 2 3 4 yum -y install tar bzip2 tar -zcvf /root/books.tar.gz /usr/local tar -jcvf /root/books.tar.bz2 /usr/local ll
调整逻辑卷大小
将逻辑卷 vo 及其文件系统的大小调整到 180MiB。确保文件系统内容保持不变。
注:分区大小很少与请求的大小完全相同,因此可以接受范围为 167MiB 到 193MiB的大小
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 lvs vgs lvextend /dev/vg-exam/vo1 -L 180M lvextend /dev/vg-exam/vo2 -L 180M lvs df -Th /mnt/vo2 /mnt/vo1resize2fs /dev/vg-exam/vo1 xfs_growfs /mnt/vo2 df -Th /mnt/vo2 /mnt/vo1
添加交换分区
向您的系统添加一个额外的交换分区 567MiB。交换分区应在系统启动挂载。不要删除或以任何方式改动系统上的任何现有交换分区。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 fdisk /dev/vdb n p +567M t 82 w ls /dev/vdb*partprobe mkswap /dev/vdb2 cat >> /etc/fstab <<EOF /dev/vdb2 swap swap defaults 0 0 EOF swapon -a free -m
创建逻辑卷
根据如下要求,创建新的逻辑卷
逻辑卷取名为 np
属于 npgroup 卷组
大小为 45 个扩展块
npgroup 卷组中逻辑卷的扩展块大小应当为 20MiB
使用 ext3 文件系统格式化新逻辑卷
该逻辑卷应在系统启动时自动挂载到 /mnt/np下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 fdsik /dev/vdb n p 3 +1G w ls /dev/vdb*pvcreate /dev/vdb3 vgcreate -s 20M nproup /dev/vdb3 vgs lvcreate -n np -l 45 npgroup lvs mkdir /mnt/npmkfs.ext3 /dev/npgroup/np cat >> /etc/fstab <<EOF /dev/npgroup/np /mnt/np ext3 defaults 0 0 EOF mount -a df -Th
创建 VDO 卷
根据如下要求,创建新的 VDO 卷:
使用未分区的磁盘
该卷的名称为 vdoname
该卷的逻辑大小为 80G
该卷使用 xfs文系统格式化
该卷挂载到 /vbark下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 yum -y install vdo vdo create --name=vdoname --device=/dev/vdc --vdoLogicalSize=80G mkfs.xfs /dev/mapper/vdoname mkdir /vbarkcat >> /etc/fstab <<EOF /dev/mapper/vdoname /vbark xfs _netdev 1 2 EOF mount -a df -Th
配置系统调优
为您的系统选择建议的 tuned 配置集并将它设为默认设置
1 2 3 4 5 6 tuned-adm recommend tuned-adm profile virtual-guest tuned-adm list
容器(2合1)
配置容器以使其自启动
用 registry 服务器提供的 rlogserver 镜像创建容器
容器仓库服务器为http://utility.example.com:5000
配容器使其以 systemd 服务形式运行,并只面向用户 elovodo
服务名为 container_logserver.service,并在系统重新引导后自动启动
配置持久存储
配置主机系统日志使在系统重新引导后保留数据并自动重新启动日志记录服务
将 /var/log/journal 目录及任何子目录下的任何 .journal 复制到 /home/elovodo/container_journal
配置服务使其在主机系统重新引导后自动挂载 /home/elovodo/container_journal到 /var/log/journal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 grep Storage /etc/systemd/journald.conf systemctl restart systemd-journald find /var/log/journal/ -name "*.journal" -exec cp -a {} /home/elovodo/container_journal/ \; chown -R elovodo:elovodo /home/elovodo/container_journal/ssh elovodo@localhost podman login http://utility.example.com:5000 podman search rlogserver podman pull utility.example.com:5000/rlogserver podman run -itd -v /home/elovodo/container_journal:/var/log/journal:Z --name container_logserver utility.example.com:5000/rlogserver mkdir ~/.config/systemd/user -pcd ~/.config/systemd/userpodman generate systemd --new --files --name container_logserver mv container-container_logserver.service container_logserver.servicepodman stop container_logserver podman rm container_logserver loginctl enable-linger systemctl --user daemon-reload systemctl --user enable container_logserver --now podman ps -a
配置 UMASK
**附加:**修改 umask,让elovodo用户创建普通文件的权限为rw-------,让普通用户创建目录的权限为rwx------
1 2 3 4 5 6 7 echo "umask 0077" >> ~/.bashrcsource .bashrctouch test1mkdir test2ls -l
修改密码有效期
修改 glsgreat 用户密码信息,设置最大有效期为120天,最小有效期为7天
1 2 chage -m 7 -M 120 glsgreat chage -l glsgreat
配置超级用户
创建 glsgood 用户,要求 glsgood 用户可以像 root 那样执行管理员命令且不需要输入任何密码
1 2 3 4 5 6 7 8 9 10 > vim /etc/sudoers glsgood ALL=(ALL) ALL glsgood ALL=(ALL) NOPASSWD: ALL su - glsgood sudo id
修改新用户密码有效期
修改所有新用户的密码有效期为20天
1 2 3 4 5 6 grep /etc/login.defs PASS_MAX_DAYS 20 useradd test123 chage -l test123