2022红帽RHCSA考题解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 2022红帽RHCSA考题解析

1.配置网络设置

    将 node1 配置为具有以下网络配置:
        主机名:node1.domain250.example.com
        IP 地址:172.25.250.100
        子网掩码:255.255.255.0
        网关:172.25.250.254
        DNS服务器:172.25.250.254
1.1 nodel 1 配置网络
[root@clear ~]# nmcli connection modify Wired\ connection\ 1 ipv4.method manual ipv4.addresses 172.25.250.100/24 ipv4.gateway 172.25.250.254 ipv4.dns 172.25.250.254 connection.autoconnect yes
# ipv4.method manual            #指定是静态配置
# Wired\ connection\ 1            #默认网络连接名称,针对它进行配置
# connection.autoconnect          #自动连接
1.2 nmtui(图形界面配置ip,网关,dns)
2.重启网络
[root@clear ~]# nmcli connection down Wired\ connection\ 1
[root@clear ~]# nmcli connection up Wired\ connection\ 1
3.查看ip
[root@node1 ~]# ip a
4.查看网关:
[root@node1 ~]# ip route 
default via 172.25.250.254 dev eth0 proto static metric 100 
172.25.250.0/24 dev eth0 proto kernel scope link src 172.25.250.100 metric 100 
[root@clear ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.25.250.254  0.0.0.0         UG    100    0        0 eth0
172.25.250.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0
172.25.250.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0
5.查看DNS服务器
[root@node1 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search domain250.example.com
nameserver 172.25.250.254
#查看DNS服务器
[root@clear ~]# dig | grep SERVER
;; SERVER: 172.25.250.254#53(172.25.250.254)
6.Terminal永久设置主机名
[root@clear ~]# hostnamectl set-hostname node1.domain250.example.com
7.刷新主机名
[root@clear ~]# bash
[root@clear ~]# su -l
8.查看主机名
[root@node1 ~]# hostname
[root@node1 ~]# cat /etc/hostname 
node1.domain250.example.com

2.配置您的系统以使用默认存储库

    配置您 的系统以使用默认存储库
        YUM 存储库已可以从 http://foundation0.ilt.example.com/dvd/BaseOS 和 http://foundation0.ilt.example.com/dvd/AppStream 使用配置您的系统,以将这些位置用作默认存储库
1.安装yum-config-manager安装包
[root@clear ~]# rpm -ivh http://foundation0.ilt.example.com/dvd/BaseOS/Packages/yum-utils-4.0.12-3.el8.noarch.rpm
2. 仓库文件下载安装
# yum-config-manager      #仓库文件下载安装命令
# yum-config-manager -h     #列出可用命令( --add-repo )
[root@clear ~]# yum-config-manager --add-repo http://foundation0.ilt.example.com/dvd/BaseOS 
Adding repo from: http://foundation0.ilt.example.com/dvd/BaseOS
[root@clear ~]# yum-config-manager --add-repo http://foundation0.ilt.example.com/dvd/AppStream
Adding repo from: http://foundation0.ilt.example.com/dvd/AppStream
3.查看是否安装成功 
[root@clear ~]# cd /etc/yum.repos.d/
[root@clear yum.repos.d]# ls
foundation0.ilt.example.com_dvd_AppStream.repo  foundation0.ilt.example.com_dvd_BaseOS.repo
[root@clear yum.repos.d]# 
4.导入秘钥
[root@node1 ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 
4.1.搜索效验文件
[root@clear yum.repos.d]# find / -name *KEY*
/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta
/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
/usr/share/doc/gnupg2/KEYSERVER
添加效验文件
[root@clear yum.repos.d]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
5.测试
[root@clear yum.repos.d]# yum install -y ftp
Complete!

3.调试 SELinux(服务)

    非标准端口 82 上运行的 Web 服务器在提供内容时遇到问题。根据需要调试并解决问题,使其满足以下条件:
        系统上的 Web 服务器能够提供 /var/www/html 中所有现有的 HTML 文件(注:不要删除或以其他方式改动现有的文件内容)
        Web 服务器在端口 82 上提供此内容
        Web 服务器在系统启动时自动启动
#semanage命令是用来查询与修改SELinux默认目录的安全上下文
#apache属于http服务
1.查看httpd服务状态
[root@node1 ~]# systemctl status httpd
Active: failed (Result: exit-code)
2.查看HTML文件的安全上下文
# ls -Z   打印文件的安全上下文
[root@node1 html]# ls -Z /var/www/html/*
          system_u:object_r:default_t:s0 /var/www/html/file1
system_u:object_r:httpd_sys_content_t:s0 /var/www/html/file2
system_u:object_r:httpd_sys_content_t:s0 /var/www/html/file3
3.修改原来的/var/www/html/file1文件的安全上下文
man semange fcontext
-a 换成 -m(modify)
[root@node1 html]# semanage fcontext -m -t httpd_sys_content_t "/var/www/html/file1"
4.刷新安全上下文
man semange fcontext
[root@node1 html]# restorecon -R -v /var/www/html/file1
Relabeled /var/www/html/file1 from system_u:object_r:default_t:s0 to system_u:object_r:httpd_sys_content_t:s0
5.用semanage,放行82端口
man semanage port
[root@node1 ~]# semanage port -a -t http_port_t -p tcp 82
6.检查是否放行82端口
man semanage port
[root@node1 ~]# semanage port -l | grep http
http_port_t                    tcp      82, 80, 81, 443, 488, 8008, 8009, 8443, 9000
7.重启httpd服务,设置开机自启,检查服务是否开启
[root@node1 ~]# systemctl restart httpd
[root@node1 ~]# systemctl enable httpd
[root@node1 ~]# systemctl status httpd
8.访问验证
[root@node1 html]# curl http://172.25.250.100:82/file{1..3}
EX200 Testing
EX200 Testing
EX200 Testing
或者
[root@node1 ~]# curl localhost:82/file{1..3}
EX200 Testing
EX200 Testing
EX200 Testing

4.创建用户帐户

创建用户帐户
  创建下列用户、组和组成员资格:
    名为 sysmgrs 的组
        用户 natasha ,作为次要组从属于 sysmgrs
        用户 harry ,作为次要组还从属于 sysmgrs
        用户 sarah ,无权访问系统上的交互式 shell 且不是 sysmgrs 的成员
        natasha 、 harry 和 sarah 的密码应当都是 flectrag
[root@clear ~]# groupadd sysmgrs
[root@clear ~]# useradd natasha -G sysmgrs 
[root@clear ~]# useradd harry  -G sysmgrs 
[root@clear ~]# useradd sarah --shell /sbin/nologin
[root@clear ~]# echo "flectrag" | passwd --stdin natasha 
Changing password for user natasha.
passwd: all authentication tokens updated successfully.
[root@clear ~]# echo "flectrag" | passwd --stdin harry 
Changing password for user harry.
passwd: all authentication tokens updated successfully.
[root@clear ~]# echo "flectrag" | passwd --stdin sarah 
Changing password for user sarah.
passwd: all authentication tokens updated successfully.
测试登录
[root@node1 ~]# ssh natasha@localhost
[harry@node1 ~]$ ssh sarah@localhost
[harry@node1 ~]$ ssh sarah@localhost  #不可登录 /sbin/nologin

5.配置 cron 作业(服务)

    配置 cron 作业
    配置 cron 作业,该作业每隔 2 分钟运行并执行以下命令:
        logger "EX200 in progress",以用户 natasha 身份运行
1.查看并验证服务是否启动
[root@node1 ~]# systemctl status crond.service 
Active: active (running)
2.编辑计划任务
[root@node1 ~]# crontab -u natasha -e
[root@node1 ~]# crontab -u natasha -l
*/2 * * * * logger "EX200 in progress"
3.设置开机自启
[root@node1 ~]# systemctl enable crond.service
4.验证
#2分钟后验证
[root@node1 ~]# grep EX200 /var/log/messages
May 23 11:36:01 node1 natasha[28082]: EX200 in progress
May 23 11:38:02 node1 natasha[28086]: EX200 in progress
May 23 11:40:01 node1 natasha[28097]: EX200 in progress

6.创建协作目录

    创建具有以下特征的协作目录 /home/managers :
        /home/managers 的组用权是 sysmgrs
        目录应当可被 sysmgrs 的成员读取、写入和访问,但任何其他用户不具这些权限。(当然,root 用户有权访问系统上的所有文件和目录)
        /home/managers 中创建的文件自动将组所有权设置到 sysmgrs 组
检查目录是否存在
[root@node1 ~]# ll -d /home/managers
1.创建指定的目录文件
[root@node1 ~]# mkdir /home/managers
2.修改/home/managers 的组用权为 sysmgrs
[root@node1 ~]# ll -d /home/managers/
drwxr-xr-x. 2 root root 6 May 14 18:16 /home/managers/
[root@node1 ~]# chown root:sysmgrs /home/managers/
[root@node1 ~]# ll -d /home/managers/
drwxr-xr-x. 2 root sysmgrs 6 May 14 18:16 /home/managers/
3.修改目录文件,所属组的权限
[root@node1 ~]# chmod 070 /home/managers/
[root@node1 ~]# chmod g=rwx,o=- /home/managers
[root@node1 ~]# ll -d /home/managers/
d---rwx---. 2 root sysmgrs 6 May 14 18:16 /home/managers/
4.给/home/managers目录设置特殊权限,使其子目录继承父目录的所属组
[root@node1 ~]# chmod g+s /home/managers/
[root@node1 ~]# ll -d /home/managers/
d---rws---. 2 root sysmgrs 6 May 14 18:16 /home/managers/
5.验证g+s权限效果
[root@node1 managers]# touch file
[root@node1 managers]# ll
total 0
-rw-r--r--. 1 root sysmgrs 0 May 14 18:27 file

7.配置 NTP(时间同步服务)(服务)

    配置 NTP
    配置您的系统,使其成为 materials.example.com 的 NTP 客户端。(注:materials.example.com 是 classroom.example.com 的 DNS 别名)
# systemctl list-units 列出所有启动unit
# Unit 是 Systemd 管理系统资源的基本单位
# 客服端 向 服务器 同步
#   nodel是客户端 materials.example.com 的 NTP 是 服务器
1.查看NTP服务主配置文件名称
[root@node1 ~]# systemctl list-units | grep NTP
chronyd.service                                                                          loaded active running   NTP client/server    
2.确认服务是否启动
[root@node1 ~]# systemctl status chronyd.service 
Active: active (running)
3.修改服务配置文件,指定要添加的上游服务器地址
[root@node1 ~]# vim /etc/chrony.conf
#server _gateway iburst
server materials.example.com  iburst
4.重启服务,让配置文件的修改生效,并设置开机自启
[root@node1 ~]# systemctl restart chronyd.service 
[root@node1 ~]# systemctl enable chronyd.service 
5.验证
方法一:
[root@node1 ~]# chronyc sources -v      #查看同步时间状态
^* classroom.example.com 
方法一:
[root@node1 ~]# timedatectl
#查看NTP是否活跃,系统时钟是否同步
System clock synchronized: yes
              NTP service: active

8.配置 autofs(服务)

    配置 autofs
    配置 autofs ,以按照如下所述自动挂载远程用户的主目录:
        materials.example.com ( 172.25.254.254 ) NFS 导出 /rhome 到您的系统。此文件系统包含为用户 remoteuser1 预配置的主目录
        remoteuser1 的主目录是 materials.example.com:/rhome/remoteuser1
        remoteuser1 的主目录应自动挂载到本地 /rhome 下的 /rhome/remoteuser1
        主目录必须可供其用户写入
        remoteuser1 的密码是 flectrag
1.查找主配置文件
[root@node1 ~]# rpm -qc autofs 
/etc/auto.master    # 绝对路径配置文件
/etc/auto.misc      # 相对路径配置文件
2.配置主配置文件
[root@node1 ~]# vim /etc/auto.master
/misc   /etc/auto.misc
/rhome  /etc/auto.rhome     #相对路径配置文件
3.将相对路径配置文件复制到,主配置文件所编写的路径中
[root@node1 ~]# cp /etc/auto.misc /etc/auto.rhome
4.编辑相对路径配置文件
[root@node1 ~]# vim /etc/auto.rhome
remoteuser1     -rw materials.example.com:/rhome/remoteuser1
5.
重启服务
[root@node1 ~]# systemctl restart autofs.service 
查看状态
[root@node1 ~]# systemctl status autofs.service 
Active: active (running)
设置开机自启
[root@node1 ~]# systemctl enable autofs.service 
Created symlink /etc/systemd/system/multi-user.target.wants/autofs.service → /usr/lib/systemd/system/autofs.service.
6.登录测试
[root@node1 ~]# ssh remoteuser1@localhost
[remoteuser1@clear ~]$ pwd
/rhome/remoteuser1
检查写入权限
[remoteuser1@node1 ~]$ touch 1.txt
[remoteuser1@node1 ~]$ ll
total 0
-rw-rw-r--. 1 devops devops 0 May 27 12:04 1.txt

9.配置 /var/tmp/fstab 权限

    配置 /var/tmp/fstab 权限
    将文件 /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.文件复制
[root@node1 ~]# cp  /etc/fstab  /var/tmp/fstab
2.检查拥有人,拥有组,是否符合题意,且无执行权限
[root@node1 ~]# ll -d /var/tmp/fstab 
-rw-r--r--. 1 root root 534 May 23 12:27 /var/tmp/fstab
3.设置setfacl权限
man setfacl
[root@node1 ~]# setfacl -m u:natasha:rw-,u:harry:- /var/tmp/fstab 
4.验证
[root@node1 ~]# getfacl  /var/tmp/fstab
user:natasha:rw-
user:harry:---

10.配置用户帐户

配置用户帐号
    配置用户 manalo ,其用户 ID 为 3533。此用户的密码应当为 flectrag。
[root@clear ~]# useradd -u 3533 manalo
[root@clear ~]# echo "flectrag" | passwd --stdin manalo 
Changing password for user manalo.
passwd: all authentication tokens updated successfully.

11.查找文件

    查找文件
    查找归 jacques 所有的所有文件并将其副本放入 /root/findfiles 目录
1.创建目录
[root@clear ~]# mkdir /root/findfiles
2.查找
[root@clear ~]# find / -user jacques -exec cp -a {} /root/findfiles/ \;
3.验证
[root@clear ~]# ls /root/findfiles/
gamelan  jacques  libWedgeit.so.1.2.3

12. 查找字符串

查找字符串
  查找文件 /usr/share/xml/iso-codes/iso_639_3.xml 中包含字符串 ng 的所有行。将所有这些行的副本按原始顺序放在文件 /root/list 中。 /root/list 不得包含空行,且所有行必须是 /usr/share/xml/iso-codes/iso_639_3.xml 中原始行的确切副本。
1.查找字符串
[root@node1 ~]# grep ng /usr/share/xml/iso-codes/iso_639_3.xml | grep -v ^$ > /root/list
2.验证
[root@node1 ~]# cat -n  /root/list

13.创建存档

    创建存档
    创建一个名为 /root/backup.tar.gz 的 tar 存档,其应包含 /usr/local 的 tar 存档,其应包含 /usr/local 的内容。该 tar 存档必须使用 gzip 进行压缩。
1.打包
[root@clear ~]# tar -czvf /root/backup.tar.gz /usr/local
2.验证
[root@clear ~]# ls
anaconda-ks.cfg  findfiles
backup.tar.gz    original-ks.cfg
3.验证是否是gzip
[root@clear ~]# file backup.tar.gz 
backup.tar.gz: gzip compressed data, last modified: Sun May 22 17:10:03 2022, from Unix, original size 51200

14.配置容器使其自动启动(A卷)(后做)

    配置容器使其自动启动(A卷)
    利用注册服务器上的 rsyslog 镜像,创建一个名为  logserver 的容器
        面向 wallah 用户,配置一个 systemd 服务
        该服务命名为 container-logserver ,并在系统重启时自动启动,无需干预

微信截图_20221011211431.png

 
         

15.为容器配置持久存储(A卷)(先做)(服务)

    为容器配置持久存储(A卷)
    通过以下方式扩展上一个任务的服务
        配置主机系统的 journald 日志以在系统重启后保留数据,并重新启动日志记录服务
        将主机 /var/log/journal目录下任何以 *.journal 的文件复制到 /home/wallah/container_logfile 中
        将服务配置为在启动时自动将   /home/wallah/container_logfile 挂载到容器中的 /var/log/journal 下
1. 查看journald服务
[root@node1 ~]# systemctl list-unit-files | grep jou
systemd-journald.service                   static 
2.查看服务状态
[root@node1 ~]# systemctl status systemd-journald.service  
   Active: active (running) 
3.查找主配置文件
man systemd-journald.service 
/conf
/etc/systemd/journald.conf
或者
man journald.conf
/etc/systemd/journald.conf
4.编辑主配置文件,做永久储存
[root@node1 ~]# vim /etc/systemd/journald.conf
 14 [Journal]
 15 Storage=auto
5.查看临时目录
[root@node1 ~]# ls -ld /run/log/journal/
drwxr-sr-x. 4 root systemd-journal 80 May 24 16:51 /run/log/journal/
6.
检查 /var/log/journal目录是否存在
[root@node1 ~]# ls /var/log/journal
ls: cannot access '/var/log/journal': No such file or directory
不存在则,创建目录
[root@node1 ~]# mkdir /var/log/journal
查看日志文件权限,将 /var/log/journal文件权限及所属关系与其同步
[root@node1 ~]# ls -ld /run/log/journal/
drwxr-sr-x. 4 root systemd-journal 80 May 24 16:51 /run/log/journal/
[root@node1 ~]# ls -ld /var/log/journal/
drwxr-xr-x. 2 root root 6 May 24 18:41 /var/log/journal/
更改 /var/log/journal文件权限及所属关系与原日志文件同步
[root@node1 ~]# chmod 2755 /var/log/journal
或者
[root@node1 ~]# chmod g+s /var/log/journal
[root@node1 ~]# chown root:systemd-journal /var/log/journal
7.检查/var/log/journal目录,权限、所属关系,是否与日志文件相同
[root@node1 ~]# ls -ld /var/log/journal/
drwxr-sr-x. 3 root systemd-journal 46 May 24 18:58 /var/log/journal/
8.检查systemd-journald.service  服务状态、设置开机自启
[root@node1 ~]# systemctl status systemd-journald
[root@node1 ~]# systemctl restart systemd-journald
[root@node1 ~]# systemctl enable systemd-journald
检查是否是错误信息
[root@node1 ~]# echo $?
0       # 0 表示不是错误信息
9.将主机 /var/log/journal目录下任何以 *.journal 的文件复制到 /home/wallah/container_logfile 中
检查 /home/wallah/container_logfile目录是否存在
[root@node1 ~]# ls /home/wallah/container_logfile
[root@node1 ~]# cp /var/log/journal/*/*.journal /home/wallah/container_logfile  不带权限
或者
[root@node1 ~]# cp -a /var/log/journal/*/*.journal /home/wallah/container_logfile 带权限
10.将home(家目录)的权限改为自己的权限
# chown -R     递归处理所有的文件及子目录
[root@node1 ~]# chown -R wallah ~wallah/
11.切换至普通用户,普通用户做容器
# dorker容器  root用户运行
# podman容器  普通用户运行
[root@node1 ~]# ssh wallah@localhost
12.登录到容器
[wallah@node1 ~]$ podman login -u admin -p redhat321 registry.domain250.example.com
13.搜索镜像
[wallah@node1 ~]$ podman search registry.domain250.example.com/
example.com   registry.domain250.example.com/rhel8/rsyslog                     0    
14.运行容器,且自动挂载容器
[wallah@node1 ~]$ podman run -d --name logserver -v /home/wallah/container_logfile:/var/log/journal:Z registry.domain250.example.com/rhel8/rsyslog 
4b36ae21d7b1f77942d1e0c44409b2334cf940a813f10e801ce7fc4c9e1312ea
15.停止镜像,实现开机自启
[wallah@node1 ~]$ podman stop logserver 
4b36ae21d7b1f77942d1e0c44409b2334cf940a813f10e801ce7fc4c9e1312ea
16.启用滞留功能(退出用户的时候仍旧有效、好做开机自启)
[wallah@node1 ~]$ loginctl enable-linger 
17.查看是否开启滞留功能
[wallah@node1 ~]$ loginctl show-user wallah 
Linger=yes
18.
# 找systemd单元   
# -k 检索
[root@node1 ~]# man -k systemd
systemd.unit (5)     - Unit configuration
# 找用户家目录,在用户家目录配置单元文件,设置开机自启
[root@node1 ~]# man systemd.unit 
~/.config/systemd/user/   #用户家目录
19.查看用户家目录路径是否存在
[wallah@node1 ~]$ ls   ~/.config/systemd/user/
ls: cannot access '/home/wallah/.config/systemd/user/*': No such file or directory
20.递归创建用户家目录路径,进入家目录路径
[wallah@node1 ~]$ mkdir -p    ~/.config/systemd/user
[wallah@node1 *]$ cd ~/.config/systemd/user/
[wallah@node1 user]$ ls
21.在用户家目录配置(生成)单元文件
[wallah@node1 user]$ podman generate systemd --name logserver -f
#             生成    单元            生成文件
/home/wallah/.config/systemd/user/container-logserver.service
[wallah@node1 user]$ ls
container-logserver.service
22.添加面向用户的开机自启(只能做开机自启,不能查状态)
[wallah@node1 user]$ systemctl --user enable --now container-logserver.service
[wallah@node1 user]$ ls
default.target.wants  container-logserver.service   multi-user.target.wants
23.验证
[wallah@node1 user]$ podman exec logserver ls /var/log/journal
system.journal
user-1005.journal
[wallah@node1 user]$ ps -aux | grep podman
#  ps -aux 不区分终端,显示所有用户的所有进程
00 podman
/bin/podman 

16.配置容器使其自动启动(B卷)(服务)

    配置容器使其自动启动(B卷)
    利用注册服务器上的 rsyslog 镜像,创建一个名为  logger 的容器
        面向 wallah 用户,配置一个 systemd 服务
        该服务命名为 container-logger ,并在系统重启时自动启动,无需干预
        将服务配置为在启动时自动将   /home/wallah/var_log 挂载到容器中的 /var/log 下
        在容器中执行命令podman exec logger logger -p authpriv.info SUIBIAN
[root@node1 ~]# podman stop 容器ID / 名字 停止运行容器
[root@node1 ~]# podman ps          列出容器
[root@node1 ~]# podman rm 容器ID / 名字   删除容器
查看用户是否存在
[root@node1 ~]# id wallah 
uid=1004(wallah) gid=1004(wallah) groups=1004(wallah),10(wheel)
1.登录至wallah 用户
[root@node1 ~]# ssh wallah@localhost
2.登录到容器注册表
[wallah@node1 ~]$ podman login -u admin -p redhat321 registry.domain250.example.com
WARNING! Using --password via the cli is insecure. Please consider using --password-stdin
Login Succeeded!
3.搜索相关镜像,rsyslog 镜像
[wallah@node1 ~]$ podman search registry.domain250.example.com/
INDEX         NAME                                               DESCRIPTION   STARS   OFFICIAL   AUTOMATED
example.com   registry.domain250.example.com/rhel8/rsyslog                     0         
4.查看挂载源,挂载点,是否存在
[wallah@node1 var_log]$ cd /home/wallah/var_log
[wallah@node1 ~]$ cd /var/log
4.通过指定镜像,运行容器,指定容器名称,挂载
# -d 后台运行   -v 挂载 :Z selinux安全上下文
[wallah@node1 ~]$ podman run -d --name logger -v /home/wallah/var_log:/var/log:Z registry.domain250.example.com/rhel8/rsyslog 
ec3191dc92bad12a0332846540867b3000d599fde200764d08c534979ba58f02
5.停止镜像,实现开机自启
[wallah@node1 ~]$ podman stop logger 
ec3191dc92bad12a0332846540867b3000d599fde200764d08c534979ba58f02
6.开启普通用户滞留功能
[wallah@node1 ~]$ loginctl enable-linger 
7.查看验证是否,开启普通用户滞留功能
[wallah@node1 ~]$ loginctl show-user wallah 
Linger=yes
8.创建最高级的启动目录,便于配置容器开机自启
# mkdir -p 需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理
[wallah@node1 ~]$ mkdir -p ~/.config/systemd/user/
9.进入最高级的启动目录,做开机自启
[wallah@node1 ~]$ cd ~/.config/systemd/user/
[wallah@node1 user]$ 
10.生成单元文件
# -f 生成文件
[wallah@node1 user]$ podman generate systemd --name logger -f
/home/wallah/.config/systemd/user/container-logger.service
[wallah@node1 user]$ ls
container-logger.service
11.对单元文件做开机自启
[wallah@node1 user]$ systemctl --user enable --now container-logger.service 
Created symlink /home/wallah/.config/systemd/user/multi-user.target.wants/container-logger.service → /home/wallah/.config/systemd/user/container-logger.service.
Created symlink /home/wallah/.config/systemd/user/default.target.wants/container-logger.service → /home/wallah/.config/systemd/user/container-logger.service.
12.查看单元文件开机自启状态
[wallah@node1 user]$ systemctl --user status enable --now container-logger.service 
Active: active (running) 
[wallah@node1 user]$ systemctl --user is-enabled --now  container-logger.service
enable 
13.容器中执行命令podman exec logger logger -p authpriv.info SUIBIAN
[wallah@node1 user]$ podman exec logger logger -p authpriv.info SUIBIAN
14.验证
[root@node1 ~]# ps -aux | grep podman

17.容器nginx(附加题)

    容器nginx
    利用注册服务器上的 nginx 镜像,创建一个名为  nginx 的容器
        面向 wallah 用户,配置一个 systemd 服务
        该服务命名为 container-nginx ,并在系统重启时自动启动,无需干预
        在/home/wallah/www下创建文件index.html,内容为hello nginx
        将服务配置为在启动时自动将   /home/wallah/www 挂载到容器中的 /usr/share/nginx/html 下
        将容器主机上的端口 8080 映射到容器上的端口 80
1.登录wallah用户
[root@node1 ~]# ssh wallah@localhost
2.登录容器
[wallah@node1 ~]$ podman login -u admin -p redhat321 registry.domain250.example.com
3.查找容器镜像
[wallah@node1 ~]$ podman search registry.domain250.example.com/
example.com   registry.domain250.example.com/library/nginx                     0   
4.检查/home/wallah/www路径是否存在,不存在则创建
[wallah@node1 ~]$ ls /home/wallah/www
ls: cannot access '/home/wallah/www': No such file or directory
[wallah@node1 ~]$ mkdir /home/wallah/www
5.在/home/wallah/www下创建文件index.html,内容为hello nginx
[wallah@node1 ~]$ echo "hello nginx" > /home/wallah/www/index.html
6.运行容器,指定容器名称,挂载
[wallah@node1 ~]$ podman run -d --name nginx -v /home/wallah/www:/usr/share/nginx/html:Z -p 8080:80 registry.domain250.example.com/library/nginx
7a2ee7f0359fa4803d27b8f7953a4cdc75442c9da39bf2d175a17246478df9d5
7.停止镜像,实现开机自启
[wallah@node1 ~]$ podman stop nginx 
7a2ee7f0359fa4803d27b8f7953a4cdc75442c9da39bf2d175a17246478df9d5
8.开启普通用户滞留功能
[wallah@node1 ~]$ loginctl enable-linger 
[wallah@node1 ~]$ loginctl show-user wallah 
Linger=yes
9.进入最高级的启动目录,做开机自启
[wallah@node1 ~]$ cd ~/.config/systemd/user/
10.生成单元文件
# -f 生成文件
[wallah@node1 user]$ podman generate systemd --name nginx -f
/home/wallah/.config/systemd/user/container-nginx.service
11.对单元文件做开机自启、查看状态
[wallah@node1 user]$ systemctl --user enable --now container-nginx.service 
[wallah@node1 user]$ systemctl --user status --now container-nginx.service 
Active: active (running)
或者
[wallah@node1 user]$ systemctl --user is-enabled --now container-logserver.service
enabled
[wallah@node1 user]$ 
12.验证
#本地访问
[wallah@node1 user]$ curl localhost:8080
hello nginx
[wallah@node1 ~]$ curl localhost:8080
hello nginx
或者
[root@node1 ~]# curl http://172.25.250.100:8080
hello nginx

18.添加sudo免密操作(附加题)

添加sudo免密操作
  允许sysmgrs组成员sudo时不需要密码
1.做免密操作
[root@clear ~]# visudo 
/ALL #搜索
    109 ## Same thing without a password
    110 # %wheel        ALL=(ALL)       NOPASSWD: ALL
    111 %sysmgrs        ALL=(ALL)       NOPASSWD: ALL
2.验证
查看组成员
[root@clear ~]# tail -n 5 /etc/group
wallah:x:1004:
sysmgrs:x:1005:natasha,harry
natasha:x:1006:
harry:x:1007:
sarah:x:1008:
验证
[root@node1 ~]# ssh natasha@localhost
[natasha@node1 ~]$ sudo tail -n 3 /etc/passwd
natasha:x:1005:1006::/home/natasha:/bin/bash
harry:x:1006:1007::/home/harry:/bin/bash
sarah:x:1007:1008::/home/sarah:/sbin/nologin

19.配置创建新用户的密码策略(附加题)

    配置创建新用户的密码策略
        创建新用户时,默认密码策略为20天后,密码会过期
1.配置密码策略配置文件
[root@node1 ~]# vim /etc/login.defs 
/MAX
PASS_MAX_DAYS   20
2.验证
#创建用户
[root@node1 ~]# useradd qq
#查看最大天数
[root@node1 ~]# vim /etc/shadow
或者
[root@node1 ~]# chage -l qq
Last password change          : May 23, 2022
Password expires          : Jun 12, 2022
Password inactive         : never
Account expires           : never
Minimum number of days between password change    : 0
Maximum number of days between password change    : 20
Number of days of warning before password expires : 7

20.创建脚本(附加题)(A卷)

    创建脚本
        创建一个名为myresearch的脚本
        该脚本放置在/usr/bin下
        该脚本用来查找/usr下所有小于10m且具有修改SGID权限的文件,将这些文件放置于/root/myfiles下 
1.创建一个名称:myresearch 的脚本文件
[root@node1 ~]# vim /usr/bin/myresearch
=========================================================================================
#!/bin/bash     
        #注释行
if  [ ! -d /root/myfiles ]
then
        mkdir /root/myfiles
fi
find /usr -size -10M -perm /g=s -exec cp -a {} /root/myfiles \;
=========================================================================================
2.给脚本文件,添加执行权限
[root@node1 ~]# chmod +x /usr/bin/myresearch
[root@node1 ~]# ll /usr/bin/myresearch
-rwxr-xr-x. 1 root root 133 May 26 11:56 /usr/bin/myresearch
3.执行脚本
[root@node1 ~]# /usr/bin/myresearch
或者
[root@node1 ~]# bash /usr/bin/myresearch
4.验证
[root@node1 ~]# ll -h /root/myfiles/
total 708K
-rwx--s--x. 1 root slocate   47K Aug 12  2018 locate
-r-xr-sr-x. 1 root ssh_keys 619K Jan  8  2020 ssh-keysign
-rwx--s--x. 1 root utmp      13K Aug 12  2018 utempter
-rwxr-sr-x. 1 root tty       21K Dec 17  2019 write

21.创建脚本(附加题)(B卷)

    创建脚本
        创建一个名为newsearch的脚本
        该脚本放置在/usr/bin下
        该脚本用来查找/usr下所有大于30k,但是小于50k且具有SUID权限的文件,将这些文件放置于/root/newfiles下 
1.创建/usr/bin/newsearch脚本文件
[root@clear ~]# vim /usr/bin/newsearch
=========================================================================================
#!/bin/bash
if      [ ! -d /root/newfiles ]
then
        mkdir   /root/newfiles
fi
find /usr -size +30k -size -50k -perm /u=s -exec cp -a {} /root/newfiles \;        
=========================================================================================
2.给脚本文件,添加执行权限
[root@node1 ~]# chmod +x /usr/bin/newsearch
[root@node1 ~]# ll /usr/bin/newsearch
-rwxr-xr-x. 1 root root 147 May 26 12:17 /usr/bin/newsearch
3.验证
[root@node1 ~]# /usr/bin/newsearch
[root@node1 ~]# 
或者
[root@node1 ~]# ll -h /root/newfiles/
total 244K
-rws--x--x. 1 root root               33K Dec 17  2019 chfn
-rwsr-x---. 1 root cockpit-wsinstance 46K Mar 12  2020 cockpit-session
-rwsr-xr-x. 1 root root               33K Dec 13  2019 passwd
-rwsr-xr-x. 1 root root               33K Dec 17  2019 umount
-rwsr-xr-x. 1 root root               37K Dec 19  2019 unix_chkpwd
-rws--x--x. 1 root root               47K Nov 20  2018 userhelper

22.设置默认权限(增加)

    设置默认权限
        用户manalo在 node1 上,所有新创建的文件都应具有-r--r--r--的默认权限
        此用户的所有新创建目录应具有dr-xr-xr-x的默认权限
1.查看manalo用户是否存在
[root@node1 ~]# id manalo 
uid=3533(manalo) gid=3533(manalo) groups=3533(manalo)
2.切换用户
[root@node1 ~]# su - manalo 
[manalo@node1 ~]$ 
3.查看隐藏文件
[manalo@node1 ~]$ ls -a
.  ..  .bash_logout  .bash_profile  .bashrc
4.编辑脚本
#普通文件默认权限(666)
#目录默认权限(777)
[manalo@node1 ~]$ vim .bashrc 
umask 0222
5.执行脚本
[manalo@node1 ~]$ source .bashrc 
6.验证
[manalo@node1 ~]$ touch 1.txt
[manalo@node1 ~]$ mkdir test
[manalo@node1 ~]$ ll
total 0
-r--r--r--. 1 manalo manalo 0 May 23 05:04 1.txt
dr-xr-xr-x. 2 manalo manalo 6 May 23 05:07 test

node2.domain250.example.com 上执行以下任务

23.设置 root 密码

    设置 root 密码
    将 node2 的 root 密码设置为 flectrag 。您需要获得系统访问权限才能进行此操作。
mount -o      #指定加载文件系统时的选项
remount     #重新加载设备。通常用于改变设备的设置状态
ro        #以只读模式加载
rw        #以可读写模式加载
1.重启nodel2
ctrl+alt+delete
2.出现开机选项
按e 或者 按上下键
3.找到linux那一行,按end键跳到结尾(ro只读) 
4.按空格 输入rd.break
5.按 ctrl+x 进入单用户模式
6.查询权限是否为rw(非必须)
switch_root:/# mount | grep /sysroot
……(ro.)……
7.重新以只读的方式挂载(增加权限)
switch_root:/# mount -o remount,rw /sysroot
8.查询权限是否为rw(非必须)
switch_root:/# mount | grep /sysroot
……(rw.)……
9.更改路径,指向一个临时的根
switch_root:/# chroot /sysroot
10.更改root密码
sh-4.2# echo "redhat" | passwd --stdin root
# --stdin 让passwd可接受管道符前的命令
11.给selinux打标签
sh-4.2# touch /.autorelabel
12.退出 或者 (ctrl+d两次)
sh-4.2# exit
switch_root:/# reboot

24.配置您的系统以使用默认存储库

    配置您 的系统以使用默认存储库
        YUM 存储库已可以从 http://foundation0.ilt.example.com/dvd/BaseOS 和 http://foundation0.ilt.example.com/dvd/AppStream 使用配置您的系统,以将这些位置用作默认存储库

25.调整逻辑卷大小

    设置逻辑卷大小
    将逻辑卷 vo 及其文件系统的大小调整到 230 MiB。确保文件系统内容保持不变。注:分区大小很少与请求的大小完全相同,因此可以接受范围为 217 MiB 到 243 MiB 的大小。
1.查询逻辑卷vo
[root@node2 ~]# df -h
/dev/mapper/myvol-vo  175M  1.6M  160M   1% /reports
2.扩容
[root@node2 ~]# lvextend -L 230M /dev/mapper/myvol-vo    #扩展逻辑卷空间
  Logical volume myvol/vo successfully resized.
3.查询格式化类型(ext4)
[root@node2 ~]# blkid | grep vo
/dev/mapper/myvol-vo: UUID="67994f68-d3e1-4686-8393-8df05149883f" TYPE="ext4"
5.根据类型刷新
[root@node2 ~]# resize2fs /dev/mapper/myvol-vo 
6.验证
[root@node2 ~]# df -h
/dev/mapper/myvol-vo  221M  2.1M  204M   1% /reports

微信截图_20221011212509.png

26.添加交换分区

    添加交换分区
    向您的系统添加一个额外的交换分区 756MiB 。交换分区应在系统启动时自动挂载。不要删除或以任何方式改动系统上的任何现有交换分区。
1.列出所有的块设备
[root@node2 ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda             252:0    0   10G  0 disk 
├─vda1          252:1    0    1M  0 part 
├─vda2          252:2    0  100M  0 part /boot/efi
└─vda3          252:3    0  9.9G  0 part /
vdb             252:16   0    4G  0 disk 
├─vdb1          252:17   0  510M  0 part 
│ └─myvol-vo    253:1    0  232M  0 lvm  /reports
└─vdb2          252:18   0  512M  0 part 
  └─vgroup-swap 253:0    0  256M  0 lvm  [SWAP]
vdc             252:32   0   10G  0 disk 
2.创建磁盘分区
[root@node2 ~]# fdisk /dev/vdb
3.格式化
[root@node2 ~]# mkswap /dev/vdb3 
Setting up swapspace version 1, size = 756 MiB (792719360 bytes)
no label, UUID=ba522efa-8aa3-4e96-b8e2-39aafa20f3cb
4.永久挂载
[root@node2 ~]# vim /etc/fstab 
UUID=ba522efa-8aa3-4e96-b8e2-39aafa20f3cb  none swap defaults 0 0
5.验证
[root@node2 ~]# swapon -a     #刷新
[root@node2 ~]# swapon 
NAME      TYPE      SIZE USED PRIO
/dev/dm-0 partition 256M   0B   -2
/dev/vdb3 partition 756M   0B   -3

27.创建逻辑卷

    创建逻辑卷
    根据如下要求,创建新的逻辑卷:
        逻辑卷取名为 qa ,属于 qagroup 卷组,大小为 60 个扩展块
        qagroup 卷组中逻辑卷的扩展块大小应当为 16 MiB
        使用 ext3 文件系统格式化新逻辑卷。该逻辑卷应在系统启动时自动挂载到 /mnt/qa 下
1.创建磁盘分区
[root@node2 ~]# fdisk /dev/vdb
2.创建物理组(pv)
[root@node2 ~]#  pvcreate /dev/vdb4 
  Physical volume "/dev/vdb4" successfully created.
3.创建卷组(vg)
[root@node2 ~]# vgcreate qagroup -s 16M /dev/vdb4
#  -s 卷组上的物理卷的扩展块(PE)大小
  Volume group "qagroup" successfully created
4.创建逻辑卷(lv)
[root@node2 ~]# lvcreate -n qa -l 60 /dev/qagroup 
  Logical volume "qa" created.
5.格式化
[root@node2 ~]# mkfs.ext3 /dev/qagroup/qa 
6.查看UUID
[root@node2 ~]# blkid /dev/qagroup/qa
/dev/qagroup/qa: UUID="5ad7f2df-9749-4a46-adb6-853f3805d795" SEC_TYPE="ext2" TYPE="ext3"
7.创建/mnt/qa目录
[root@node2 ~]# mkdir /mnt/qa
8.做永久挂载
[root@node2 ~]# vim /etc/fstab 
UUID="5ad7f2df-9749-4a46-adb6-853f3805d795" /mnt/qa ext3 defaults 0 0
9.加载
[root@node2 ~]# mount -a      # 加载文件/etc/fstab中设置的所有设备
10.
[root@node2 ~]# df -h
/dev/mapper/qagroup-qa  929M  1.2M  880M   1% /mnt/qa

28.创建 VDO 卷(服务)

    创建 VDO 卷
    根据如下要求,创建新的 VDO 卷:
        使用未分区的磁盘
        该卷的名称为 vdough
        该卷的逻辑大小为 50G
        该卷使用 xfs 文件系统格式化
        该卷(在系统启动时)挂载到 /vbread 下
1.搜索安装包
[root@node2 ~]# yum search vdo
vdo.x86_64 
kmod-kvdo.x86_64 
2.检查安装
[root@node2 ~]# rpm -q vdo kmod
package vdo is not installed
kmod-25-16.el8.x86_64
3.安装
[root@node2 ~]# yum install -y vdo.x86_64 kmod-kvdo.x86_64 
Installed:
  kmod-kvdo-6.2.2.117-65.el8.x86_64                           
  vdo-6.2.2.117-13.el8.x86_64       
Complete!
4.man vdo查看格式
[root@node2 ~]# vdo create --name=vdough --device=/dev/vdc --vdoLogicalSize=50G
5.格式化
# -K 快速格式化(大写)
[root@node2 ~]# mkfs.xfs -K /dev/mapper/vdough
6.创建挂载点
[root@node2 ~]# mkdir /vbread
7.查找UUID
[root@node2 ~]# blkid
或者
[root@node2 ~]# blkid /dev/mapper/vdough 
/dev/mapper/vdough: UUID="a1f68c65-cf38-4cc8-b508-860a2e90397c" TYPE="xfs"
8.做永久挂载,网络通再挂载
[root@node2 ~]# vim /etc/fstab 
UUID="a1f68c65-cf38-4cc8-b508-860a2e90397c" /vbread xfs _netdev 0 0
9.加载
[root@node2 ~]# mount -a   # 加载文件/etc/fstab中设置的所有设备
10.
[root@node2 ~]# df -h
/dev/mapper/vdough       50G  390M   50G   1% /vbread
11.vdo是服务需要设置开机自启
[root@node2 ~]# systemctl restart vdo
[root@node2 ~]# systemctl enable vdo
[root@node2 ~]# systemctl status vdo

29.配置系统调优

    配置系统调优
    为您的系统选择建议的 tuned 配置集并将它设为默认设置。
[root@node2 ~]# tuned (tab两下,就会列出相关的命令)
tuned      tuned-adm(调优工具,进行管理和配置的命令)
[root@node2 ~]# tuned-adm      (tab两下,就会列出)
active     list       off        profile    recommend  verify  
1.查看系统默认推荐的调优策略:
[root@node2 ~]# tuned-adm recommend 
virtual-guest   #系统默认推荐的调优策略
2.将调优策略,配置为默认推荐:
[root@node2 ~]# tuned-adm profile virtual-guest
3.验证
[root@node2 ~]# tuned-adm active 
Current active profile: virtual-guest

微信截图_20221011212908.png

目录
相关文章
|
存储 弹性计算 负载均衡
阿里云计算工程师ACP考题归类解析
重点学习ECS、VPS、OSS三个部分
701 1
|
Linux 数据安全/隐私保护 流计算
【2022】RedHat最新RHCE中级认证考题解析
【2022】RedHat最新RHCE中级认证考题解析
843 0
|
Web App开发 网络协议 网络安全
|
10天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
39 2
|
1月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
70 0
|
1月前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
57 0
|
1月前
|
存储 Java C++
Collection-PriorityQueue源码解析
Collection-PriorityQueue源码解析
62 0
|
1月前
|
安全 Java 程序员
Collection-Stack&Queue源码解析
Collection-Stack&Queue源码解析
84 0
|
11天前
|
存储 安全 Linux
Golang的GMP调度模型与源码解析
【11月更文挑战第11天】GMP 调度模型是 Go 语言运行时系统的核心部分,用于高效管理和调度大量协程(goroutine)。它通过少量的操作系统线程(M)和逻辑处理器(P)来调度大量的轻量级协程(G),从而实现高性能的并发处理。GMP 模型通过本地队列和全局队列来减少锁竞争,提高调度效率。在 Go 源码中,`runtime.h` 文件定义了关键数据结构,`schedule()` 和 `findrunnable()` 函数实现了核心调度逻辑。通过深入研究 GMP 模型,可以更好地理解 Go 语言的并发机制。
|
23天前
|
消息中间件 缓存 安全
Future与FutureTask源码解析,接口阻塞问题及解决方案
【11月更文挑战第5天】在Java开发中,多线程编程是提高系统并发性能和资源利用率的重要手段。然而,多线程编程也带来了诸如线程安全、死锁、接口阻塞等一系列复杂问题。本文将深度剖析多线程优化技巧、Future与FutureTask的源码、接口阻塞问题及解决方案,并通过具体业务场景和Java代码示例进行实战演示。
40 3
下一篇
无影云桌面